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);
                    }
                }
            }
        }
Exemple #2
0
 public void TestCores(int numCores)
 {
     threadTester = new ThreadTester(numCores);
     threadTester.Run();
     Thread.Sleep(5000);
     threadTester.Stop();
     threadTester.Output();
 }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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();
                }
            }
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        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());
        }
Exemple #15
0
        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);
        }