예제 #1
0
        public void ManagedQueue_WithSingleWorker_Ok()
        {
            // Shared results
            List <WorkItem> results = new List <WorkItem>();

            Func <ICollection <WorkItem> > producerAction = () =>
            {
                List <WorkItem> initialValues = new List <WorkItem> {
                    new WorkItem(10),
                    new WorkItem(20),
                    new WorkItem(30),
                    new WorkItem(40)
                };

                return(initialValues);
            };

            Action <WorkItem> consumerAction = (item) =>
            {
                results.Add(new WorkItem(item.Value + 2));
            };

            var queue = new ManagedQueue <WorkItem>(1, producerAction, consumerAction);

            queue.Start();

            // TODO: Remove thread sleep. Add logic to check queue status and wait for it to finish
            Thread.Sleep(300);

            queue.Stop();

            Assert.IsTrue(results.Count > 0);
        }
예제 #2
0
        public void ManagedQueue_InstanceInitialized_FirstItemIsDequeued()
        {
            IEnumerable <int> queuedList = Enumerable.Range(0, 100);

            ManagedQueue <int> queue = new ManagedQueue <int>(queuedList);

            Assert.AreEqual(queuedList.ElementAt(0), queue.Front);
        }
예제 #3
0
        public void ManagedQueue_Dequeue_FrontDoesNotEqualExceptParameter_CollectionNotDequeued()
        {
            IEnumerable <int> queuedList = Enumerable.Range(0, 100);

            ManagedQueue <int> queue = new ManagedQueue <int>(queuedList);

            queue.Dequeue(queuedList.ElementAt(2));

            Assert.AreEqual(queuedList.ElementAt(0), queue.Front);
        }
예제 #4
0
        public void LastDequeueTest()
        {
            var q = new ManagedQueue <GenericClass>();

            Console.WriteLine("---------Queue Created---------");
            Thread.Sleep(5000);
            Console.WriteLine(q.WaitingTime);
            q.Enqueue(new GenericClass());
            Thread.Sleep(5000);
            q.Enqueue(new GenericClass());
            Thread.Sleep(10000);
            Console.WriteLine(q.WaitingTime); //output should be ~15 seconds
            q.TryDequeue(out _);
            Thread.Sleep(5000);
            Console.WriteLine(q.WaitingTime); //output should be ~5 seconds
            Thread.Sleep(5000);
            q.TryDequeue(out _);
            Thread.Sleep(5000);
            Console.WriteLine(q.WaitingTime);//output should be ~5 seconds
        }
예제 #5
0
        public void GrowthRateTest()
        {
            var q = new ManagedQueue <GenericClass>();

            for (int i = 0; i < 375600; i++)
            {
                switch (new Random().Next(1, 3))
                {
                case 1:
                    q.Enqueue(new GenericClass());
                    break;

                case 2:
                    q.TryDequeue(out _);
                    break;
                }
                Console.WriteLine(q.GrowthRate);
                //Thread.Sleep(500);
            }
        }
예제 #6
0
 public GithubContext(IEnumerable <string> accessTokens)
 {
     this.accessTokens = new ManagedQueue <string>(accessTokens);
 }