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)); }
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); } }
public void NullOrEmptyLockValTest() { Assert.Throws <ArgumentNullException>(() => { string lockVal = null; var lockObj = new VBDisposableLock(lockVal); }); Assert.Throws <ArgumentNullException>(() => { string lockVal = ""; var lockObj = new VBDisposableLock(lockVal); }); }
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); }