public async Task TestConcurrency_Fail() { var key = "concurrency_fail"; Assert.ThrowsAsync <TimeoutException>(() => runGenericTest(key, 1)); await DirectoryQueue <SampleObject> .CleanUpAsync(key); }
static void Main(string[] args) { Console.WriteLine("Started"); var items = CreateItem(ItemsLength).ToList(); for (int i = 0; i < EnqueueThreads; i++) { Task.Run(async () => { var en = new Enqueuer(); await en.Enqueue(items); }); } for (int i = 0; i < DequeueThreads; i++) { Task.Run(async () => { var de = new Dequeuer(); await de.Dequeue(); }); } Task.Run(async () => { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { await Task.Delay(2000); var info = q.GetQueueInfo(); Console.WriteLine($"-> Queue -> Enqueued: {info.Enqueued} Error: {info.Error} Total: {Program.Dequeued}"); } } }); StartQueueCleaner(); Console.WriteLine("Running"); Console.ReadLine(); Console.WriteLine("Stopping"); Running = false; Console.ReadLine(); }
private async Task runGenericTest(string queueName, int timeout) { var tasks = new Task[2]; var queue1 = new DirectoryQueue <SampleObject>(queueName); for (int i = 0; i < 10; i++) { await queue1.Enqueue(new SampleObject()); } tasks[0] = Task.Run(async() => { TestContext.Out.WriteLine("Starting Test 1"); while (queue1.Count > 0) { TestContext.Out.WriteLine($"Count: {queue1.Count}"); await queue1.DequeueAsync(); } }); tasks[1] = Task.Run(async() => { TestContext.Out.WriteLine("Starting Test 2"); var queue = new DirectoryQueue <SampleObject>(queueName, timeout); TestContext.Out.WriteLine("Dequeue 1"); await queue.DequeueAsync(); TestContext.Out.WriteLine("Dequeue done"); }); TestContext.Out.WriteLine("Starting Test"); await Task.WhenAll(tasks); }
public async Task TestConcurrency_Success() { var key = "concurrency_success"; Assert.DoesNotThrowAsync(() => runGenericTest(key, 2000)); await DirectoryQueue <SampleObject> .CleanUpAsync(key); }
public void Mutex_names_dont_allow_backslash() { _queue = new DirectoryQueue(_deepDir); _queue.Enqueue("test"); var filename = GetFirstDirFile(_deepDir); var text = File.ReadAllText(Path.Combine(_deepDir, filename)); Assert.AreEqual("\"test\"", text); }
public void Mutex_names_dont_allow_backslash() { _queue = new DirectoryQueue(_deepDir); _queue.Enqueue("test"); var filename = GetFirstDirFile(_deepDir); var text = File.ReadAllText(Path.Combine(_deepDir, filename)); Assert.AreEqual("\"test\"", text); }
public async Task Enqueue(List<Item> items) { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { try { q.Enqueue(items); } catch (Exception ex) { Console.WriteLine("Enqueue error: " + ex); } await Task.Delay(5000); } } }
public async Task Enqueue(List <Item> items) { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { try { q.Enqueue(items); } catch (Exception ex) { Console.WriteLine("Enqueue error: " + ex); } await Task.Delay(5000); } } }
private static void StartQueueCleaner() { Task.Run(async () => { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { await Task.Delay(5000); try { q.CleanQueue(); } catch (Exception ex) { Console.WriteLine("Error cleaning the queue!"); } Console.WriteLine("Queue CLEANED!"); } } }); }
private static void StartQueueCleaner() { Task.Run(async() => { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { await Task.Delay(5000); try { q.CleanQueue(); } catch (Exception ex) { Console.WriteLine("Error cleaning the queue!"); } Console.WriteLine("Queue CLEANED!"); } } }); }
public async Task Dequeue() { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { try { var item = q.Dequeue <List <Item> >(); lock (Program._syncRoot) { Program.Dequeued++; } await Task.Delay(_random.Next(1, 4) * 1); } catch (Exception ex) { Console.WriteLine("Dequeue error: " + ex); } //Console.WriteLine("Dequeued: " + item ?? "null"); } } }
static void Main(string[] args) { Console.WriteLine("Started"); var items = CreateItem(ItemsLength).ToList(); for (int i = 0; i < EnqueueThreads; i++) { Task.Run(async() => { var en = new Enqueuer(); await en.Enqueue(items); }); } for (int i = 0; i < DequeueThreads; i++) { Task.Run(async() => { var de = new Dequeuer(); await de.Dequeue(); }); } Task.Run(async() => { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { await Task.Delay(2000); var info = q.GetQueueInfo(); Console.WriteLine($"-> Queue -> Enqueued: {info.Enqueued} Error: {info.Error} Total: {Program.Dequeued}"); } } }); StartQueueCleaner(); Console.WriteLine("Running"); Console.ReadLine(); Console.WriteLine("Stopping"); Running = false; Console.ReadLine(); }
private DirectoryQueue GetDirectoryQueue(string queueName) { DirectoryQueue queue = new DirectoryQueue(queueRootPath, queueName); return(queue); }
public async Task Dequeue() { using (var q = new DirectoryQueue("queue")) { while (Program.Running) { try { var item = q.Dequeue<List<Item>>(); lock(Program._syncRoot) { Program.Dequeued++; } await Task.Delay(_random.Next(1, 4) * 1); } catch (Exception ex) { Console.WriteLine("Dequeue error: " + ex); } //Console.WriteLine("Dequeued: " + item ?? "null"); } } }
public void SetUp() { EmptyDirs(_dir, _deepDir); _queue = new DirectoryQueue(_dir); }
public void SetUp() { EmptyDirs(_dir, _deepDir); _queue = new DirectoryQueue(_dir); }