private async void StartButton_Click(object sender, RoutedEventArgs e) { if (LibCheckBox.IsChecked is bool check) { if (check) { Debug.WriteLine("run in shared"); await Run(); await PrintQueue(); } else { Debug.WriteLine("run in lib"); var tester = new ThreadTester(); await tester.Run(); while (tester.TestQueue.IsEmpty == false) { var s = string.Empty; var b = tester.TestQueue.TryDequeue(out s); messageTextBlock.Text = (s);; await Task.Delay(1000); } } } }
public void TestCores(int numCores) { threadTester = new ThreadTester(numCores); threadTester.Run(); Thread.Sleep(5000); threadTester.Stop(); threadTester.Output(); }
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 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 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()); }
private async void CancelTaskButton_Clicked(object sender, RoutedEventArgs e) { if (threadTester == null) { threadTester = new ThreadTester(); threadTester.TextChanged += (s, args) => { Debug.WriteLine("text changed"); TaskTextBlock.Text = threadTester.OutputText; skiaView.Invalidate(); }; } if (LibCheckBox.IsChecked is bool check) { if (check) { Debug.WriteLine("in shared"); if (runTask) { Debug.WriteLine("StartLongRunningTask"); runTask = false; source1 = new CancellationTokenSource(); token1 = source1.Token; StartLongRunningTask(EnqueueThings, token1); } else { Debug.WriteLine("Cancel StartLongRunningTask"); source2 = new CancellationTokenSource(); token2 = source2.Token; source1.Cancel(); StartLongRunningTask(DequeueThings, token2); runTask = true; } } else { Debug.WriteLine("in lib"); threadTester.StartTask(); } } }
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 TestCores(int numCores) { for (var i = 0; i < numCores; i++) { threadTesters[i] = new ThreadTester(i + 1); var tester = threadTesters[i]; tester.Run(); } var stopwatch = Stopwatch.StartNew(); var sum = 0L; for (var i = 0; i < numCores; i++) { var tester = threadTesters[i]; tester.Join(); sum += tester.Output(); } var milliseconds = stopwatch.ElapsedMilliseconds; var result = (double)sum / milliseconds; Console.Out.WriteLine("Milliseconds " + milliseconds + ", operations per millisecond " + result); }
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); }