Ejemplo n.º 1
0
        public async Task TestConcurrency_Fail()
        {
            var key = "concurrency_fail";

            Assert.ThrowsAsync <TimeoutException>(() => runGenericTest(key, 1));
            await DirectoryQueue <SampleObject> .CleanUpAsync(key);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public async Task TestConcurrency_Success()
        {
            var key = "concurrency_success";

            Assert.DoesNotThrowAsync(() => runGenericTest(key, 2000));
            await DirectoryQueue <SampleObject> .CleanUpAsync(key);
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 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);
         }
     }
 }
Ejemplo n.º 8
0
 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);
         }
     }
 }
Ejemplo n.º 9
0
 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!");
             }
         }
     });
 }
Ejemplo n.º 10
0
 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!");
             }
         }
     });
 }
Ejemplo n.º 11
0
 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");
         }
     }
 }
Ejemplo n.º 12
0
        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();
        }
Ejemplo n.º 13
0
        private DirectoryQueue GetDirectoryQueue(string queueName)
        {
            DirectoryQueue queue = new DirectoryQueue(queueRootPath, queueName);

            return(queue);
        }
Ejemplo n.º 14
0
 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");
         }
     }
 }
Ejemplo n.º 15
0
 public void SetUp()
 {
     EmptyDirs(_dir, _deepDir);
     _queue = new DirectoryQueue(_dir);
 }
Ejemplo n.º 16
0
 public void SetUp()
 {
     EmptyDirs(_dir, _deepDir);
     _queue = new DirectoryQueue(_dir);
 }