public void SingleThreadForSpecifiedTimeStrategy() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); tt.AddThreadAction( delegate { c.Increment(); }); tt.RunBehavior = ThreadRunBehavior.RunForSpecificTime; tt.StartAllThreads(500); Assert.IsTrue(tt.LastRunTime >499,"runtime was "+ tt.LastRunTime); }
public void SingleThreadWithVerifier() { CounterEx c = new CounterEx(); ThreadTester tt = new ThreadTester(); tt.AddThreadAction( delegate { c.Increment(); }); tt.RunBehavior=ThreadRunBehavior.RunUntilAllThreadsFinish; tt.StartAllThreads(500); Assert.IsTrue(tt.LastRunTime<tt.TimeOut); }
public void SingleThread() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); tt.AddThreadAction( delegate { c.Increment(); }); tt.RunBehavior = ThreadRunBehavior.RunUntilAllThreadsFinish; tt.StartAllThreads(500); Assert.IsTrue(tt.LastRunTime < tt.TimeOut); }
public void SingleThreadForSpecifiedTimeStrategy() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); tt.AddThreadAction( delegate { c.Increment(); }); tt.RunBehavior = ThreadRunBehavior.RunForSpecificTime; tt.StartAllThreads(500); Assert.IsTrue(tt.LastRunTime > 499, "runtime was " + tt.LastRunTime); }
public void Singlton_MultiThreaded_SameInstance() { ThreadTester tt = new ThreadTester(); Guid guid1 = Guid.Empty, guid2 = Guid.Empty; tt.AddThreadAction(delegate { guid1 = Singlton.Instance.guid; }); tt.AddThreadAction(delegate { guid2 = Singlton.Instance.guid; }); tt.StartAllThreads(1000); Assert.AreEqual(guid1.ToString(), guid2.ToString()); }
public void HundredThreads() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); for (int i = 0; i < 100; i++) { tt.AddThreadAction(delegate { for (int j = 0; j < 10; j++) { c.Increment(); Thread.Sleep(new Random(j+1).Next(100,300)); } }); } //this test will run for 22.5 seconds tt.RunBehavior=ThreadRunBehavior.RunForSpecificTime; tt.StartAllThreads(22500); }
public void HundredThreads() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); for (int i = 0; i < 100; i++) { tt.AddThreadAction(delegate { for (int j = 0; j < 10; j++) { c.Increment(); Thread.Sleep(new Random(j + 1).Next(100, 300)); } }); } //this test will run for 22.5 seconds tt.RunBehavior = ThreadRunBehavior.RunForSpecificTime; tt.StartAllThreads(22500); }
public void CanExecuteUsingMultipleThreads() { int threadCount = 50; int totalFailureCount = 0; // Create 10 sets of 50 threads to execute operation for (int j = 0; j < 10; j++) { ThreadTester tt = new ThreadTester(); for (int i = 0; i < threadCount; i++) { tt.AddThreadAction(delegate { try { cb.Execute(new ThreadStart(MockService)); } catch (OperationFailedException) { Interlocked.Increment(ref totalFailureCount); } catch (OpenCircuitException) { Interlocked.Increment(ref openCircuitCount); } Interlocked.Increment(ref executeCount); }); } tt.StartAllThreads(22500); tt.RunBehavior = ThreadRunBehavior.RunUntilAllThreadsFinish; // Wait 50 milliseconds before next thread cycle Thread.Sleep(500); } Assert.AreEqual(500, executeCount, "All 10 50-thread cycles should have executed operation"); Assert.AreEqual(20, totalFailureCount, "Service should fail 20 times"); Assert.AreEqual(50, openCircuitCount, "Should encounter 50 open circuits as one whole thread cycle will be rejected"); Assert.AreEqual(1, openStateChangeCount, "Should change to open state once"); Assert.AreEqual(1, halfOpenStateChangeCount, "Should change to half-open state once"); Assert.AreEqual(1, closedStateChangeCount, "Should change to closed state once"); Assert.AreEqual(CircuitBreakerState.Closed, cb.State, "Circuit breaker should end up closed"); Assert.AreEqual(100, cb.ServiceLevel, "Service level should be 100"); }
public void TryToCreateARaceCondition() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); for (int i = 0; i < 1000; i++) { tt.AddThreadAction( delegate { // Console.WriteLine(Thread.CurrentThread.Name); for (int j = 0; j < 1000; j++) { c.Increment(); } }); } tt.StartAllThreads(15000); Assert.AreEqual(1000000, c.Count); }
public void Singlton_MultiThreaded_SameInstance() { ThreadTester tt = new ThreadTester(); Guid guid1 = Guid.Empty, guid2 = Guid.Empty; tt.AddThreadAction(delegate { guid1 = Singlton.Instance.guid; }); tt.AddThreadAction(delegate { guid2 = Singlton.Instance.guid; }); tt.StartAllThreads(1000); Assert.AreEqual(guid1.ToString(),guid2.ToString()); }
public void TryToCreateARaceCondition() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); for (int i = 0; i < 1000; i++) { tt.AddThreadAction( delegate { // Console.WriteLine(Thread.CurrentThread.Name); for (int j = 0; j < 1000; j++) { c.Increment(); } }); } tt.StartAllThreads(15000); Assert.AreEqual(1000000,c.Count); }