Beispiel #1
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);
        }
Beispiel #2
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);
        }
Beispiel #3
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);
        }
Beispiel #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);
        }
Beispiel #5
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());
        }
Beispiel #6
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);
        }
Beispiel #7
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");
        }
Beispiel #9
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);
        }
Beispiel #10
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());
        }
Beispiel #11
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);
        }