|
From: <fab...@us...> - 2008-08-16 06:10:27
|
Revision: 3709
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3709&view=rev
Author: fabiomaulo
Date: 2008-08-16 06:10:38 +0000 (Sat, 16 Aug 2008)
Log Message:
-----------
Test for NH-1251 (bug recreated)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs
trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs
Modified: trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs 2008-08-16 05:03:56 UTC (rev 3708)
+++ trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs 2008-08-16 06:10:38 UTC (rev 3709)
@@ -11,6 +11,7 @@
private readonly Random rnd = new Random();
private bool running;
private int timeout = 1000;
+ private int timeoutBetweenThreadStart = 30;
public MultiThreadRunner(int numThreads, ExecuteAction[] actions)
{
@@ -37,6 +38,12 @@
set { timeout = value; }
}
+ public int TimeoutBetweenThreadStart
+ {
+ get { return timeoutBetweenThreadStart; }
+ set { timeoutBetweenThreadStart = value; }
+ }
+
public void Run(T subjectInstance)
{
running = true;
@@ -47,7 +54,7 @@
t[i].Name = i.ToString();
t[i].Start(subjectInstance);
if (i > 2)
- Thread.Sleep(30);
+ Thread.Sleep(timeoutBetweenThreadStart);
}
Thread.Sleep(timeout);
Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs 2008-08-16 05:03:56 UTC (rev 3708)
+++ trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs 2008-08-16 06:10:38 UTC (rev 3709)
@@ -1,4 +1,7 @@
using System;
+using System.Threading;
+using log4net;
+using log4net.Repository.Hierarchy;
using NHibernate.Type;
using NUnit.Framework;
@@ -10,6 +13,13 @@
[TestFixture]
public class TypeFactoryFixture
{
+ public TypeFactoryFixture()
+ {
+ log4net.Config.XmlConfigurator.Configure();
+ }
+
+ private static readonly ILog log = LogManager.GetLogger(typeof(TypeFactoryFixture));
+
/// <summary>
/// Test that calling GetGuidType multiple times returns the
/// exact same GuidType object by reference.
@@ -62,5 +72,44 @@
set { _genericLong = value; }
}
}
+
+ private readonly Random rnd = new Random();
+ private int totalCall;
+
+ [Test, Explicit]
+ public void MultiThreadAccess()
+ {
+ ((Logger) log.Logger).Level = log4net.Core.Level.Debug;
+ MultiThreadRunner<object>.ExecuteAction[] actions = new MultiThreadRunner<object>.ExecuteAction[]
+ {
+ delegate(object o)
+ {
+ TypeFactory.GetStringType(rnd.Next(1, 50));
+ totalCall++;
+ },
+ delegate(object o)
+ {
+ TypeFactory.GetBinaryType(rnd.Next(1, 50));
+ totalCall++;
+ },
+ delegate(object o)
+ {
+ TypeFactory.GetSerializableType(rnd.Next(1, 50));
+ totalCall++;
+ },
+ delegate(object o)
+ {
+ TypeFactory.GetTypeType(rnd.Next(1, 20));
+ totalCall++;
+ },
+ };
+ MultiThreadRunner<object> mtr = new MultiThreadRunner<object>(100, actions);
+ mtr.EndTimeout = 2000;
+ mtr.TimeoutBetweenThreadStart = 2;
+ mtr.Run(null);
+ log.DebugFormat("{0} calls", totalCall);
+ TypeFactory.GetTypeType(rnd.Next());
+ }
+
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|