Exemplo n.º 1
0
        public void LockValueTest()
        {
            Random    r          = new Random();
            string    lockVal    = "testLockVal" + r.Next(1000) + 1000;
            int       waitTimeMs = 9000;
            Stopwatch sw         = new Stopwatch();

            sw.Start();

            var task1 = Task.Run(() => {
                using (var lockObj = new VBDisposableLock(lockVal))
                {
                    Thread.Sleep(waitTimeMs);
                }
            });

            var task2 = Task.Run(() => {
                using (var lockObj = new VBDisposableLock(lockVal))
                {
                    Thread.Sleep(waitTimeMs);
                }
            });

            Task.WaitAll(new Task[] { task1, task2 });
            sw.Stop();
            long elapsedMs = sw.ElapsedMilliseconds;

            Assert.False((elapsedMs < 2 * waitTimeMs));
        }
Exemplo n.º 2
0
 internal static void ProcessInvoice(BranchInvoiceData invoiceData)
 {
     // Apply VBLock to queue requests from the same branches
     using (var lockObj = new VBDisposableLock(invoiceData.BranchId))
     {
         InvoiceConsumer.Consume(invoiceData);
     }
 }
Exemplo n.º 3
0
        public void NullOrEmptyLockValTest()
        {
            Assert.Throws <ArgumentNullException>(() =>
            {
                string lockVal = null;
                var lockObj    = new VBDisposableLock(lockVal);
            });

            Assert.Throws <ArgumentNullException>(() =>
            {
                string lockVal = "";
                var lockObj    = new VBDisposableLock(lockVal);
            });
        }
Exemplo n.º 4
0
        public void GetLockedValuesListTest()
        {
            Random        r = new Random();
            List <string> lockedValsInUsingScope = new List <string>();
            string        lockVal = "testLockVal" + r.Next(1000);

            using (var lockObj = new VBDisposableLock(lockVal))
            {
                lockedValsInUsingScope = VBLock.Utils.GetLockedValuesList();
            }

            List <string> lockedValsAfterUsing = VBLock.Utils.GetLockedValuesList();

            Assert.Contains <string>(lockVal, lockedValsInUsingScope);
            Assert.DoesNotContain <string>(lockVal, lockedValsAfterUsing);
        }