Пример #1
0
        public void Test_RegionFull()
        {
            ThrottledRegion tr      = new ThrottledRegion(1, 1, Timeout.Infinite);
            bool            waiting = false;

            new Thread(() => {
                try
                {
                    Assert.IsTrue(tr.TryEnter(1));
                    waiting = true;
                    tr.Leave(1);
                }
                catch (Exception e)
                {
                    exceptions.Add(e);
                }
            }).Start();
            while (!waiting)
            {
                ;
            }
            int start = Environment.TickCount;

            Assert.IsTrue(tr.TryEnter(1));
            int elapsed = Environment.TickCount - start;

            tr.Leave(1);
            Assert.AreEqual(0, exceptions.Count);
        }
Пример #2
0
        public void Test_InterruptedThread()
        {
            ThrottledRegion tr = new ThrottledRegion(1, 1, Timeout.Infinite);

            Assert.IsTrue(tr.TryEnter(1));

            Thread t1 = new Thread(() => {
                try
                {
                    tr.TryEnter(1);
                }
                catch (ThreadInterruptedException e)
                {
                    exceptions.Add(e);
                }
            });

            t1.Start();
            t1.Interrupt();
            t1.Join();

            Assert.AreEqual(1, exceptions.Count);
        }
Пример #3
0
        public void Test_MultipleThreadsInside()
        {
            ThrottledRegion tr = new ThrottledRegion(2, 1, Timeout.Infinite);

            Thread t1 = new Thread(() => {
                try
                {
                    Assert.IsTrue(tr.TryEnter(1));
                    Thread.Sleep(150);
                    tr.Leave(1);
                }
                catch (Exception e)
                {
                    exceptions.Add(e);
                }
            });

            t1.Start();
            Assert.IsTrue(tr.TryEnter(1));
            tr.Leave(1);
            t1.Join();

            Assert.AreEqual(0, exceptions.Count);
        }
Пример #4
0
 private void doWork(ThrottledRegion tregion, int threadId, bool expected)
 {
     try
     {
         bool res = tregion.TryEnter(key);
         Console.WriteLine("thread " + threadId + " returned " + res);
         if (expected)
         {
             Assert.IsTrue(res);
         }
         else
         {
             Assert.IsFalse(res);
         }
     } catch (ThreadInterruptedException e)
     {
         Console.WriteLine("thread " + threadId + " returned " + e.Message);
         Assert.Fail();
     }
 }
Пример #5
0
 public void TryEnterSuccess(ThrottledRegion region, int key)
 {
     Assert.IsTrue(region.TryEnter(key));
 }
Пример #6
0
 public void TryEnterFail(ThrottledRegion region, int key)
 {
     Assert.IsFalse(region.TryEnter(key));
 }