Exemplo n.º 1
0
 def test_max_workload(self):
     max_workload = 2
     workq = WorkQueue(self.worker, max_work_load=max_workload)
     self.assertFalse(workq.runner().running())
     num_iterations = 3
     total_work_items = max_workload * num_iterations
     self.enqueue_entries(workq, total_work_items)
     self.assertEqual(total_work_items, workq.size())
     self.assertEqual(total_work_items, workq.num_enqueues())
     # verify that only max_work_load is executed per cycle
     num_dequeues = 0
     num_work_items = total_work_items
     for i in range(num_iterations):
         self.assertTrue(workq.runner().running())
         gevent.sleep()
         num_work_items -= max_workload
         num_dequeues += max_workload
         self.assertEqual(num_work_items, workq.size())
         self.assertEqual(num_dequeues, workq.num_dequeues())
     self.assertFalse(workq.runner().running())
     self.assertEqual(0, workq.size())
     self.assertEqual(total_work_items, workq.num_dequeues())
 def test_max_workload(self):
     max_workload = 2
     workq = WorkQueue(self.worker, max_work_load=max_workload)
     self.assertFalse(workq.runner().running())
     num_iterations = 3
     total_work_items = max_workload*num_iterations
     self.enqueue_entries(workq, total_work_items)
     self.assertEqual(total_work_items, workq.size())
     self.assertEqual(total_work_items, workq.num_enqueues())
     # verify that only max_work_load is executed per cycle
     num_dequeues = 0
     num_work_items = total_work_items
     for i in range(num_iterations):
         self.assertTrue(workq.runner().running())
         gevent.sleep()
         num_work_items -= max_workload
         num_dequeues += max_workload
         self.assertEqual(num_work_items, workq.size())
         self.assertEqual(num_dequeues, workq.num_dequeues())
     self.assertFalse(workq.runner().running())
     self.assertEqual(0, workq.size())
     self.assertEqual(total_work_items, workq.num_dequeues())
Exemplo n.º 3
0
    def test_runner(self):
        # Don't set start_runner
        # verify runner is executed and worker() is invoked
        workq = WorkQueue(self.worker)
        self.assertFalse(workq.runner().running())
        self.enqueue_entries(workq, 5)
        self.assertEqual(5, workq.size())
        self.assertEqual(5, workq.num_enqueues())
        self.assertTrue(workq.runner().running())
        gevent.sleep()
        self.assertEqual(0, workq.size())
        self.assertEqual(5, workq.num_dequeues())
        self.assertEqual(5, self.worker_count)

        # set start_runner to return False
        # verify that runner doesn't start
        workq._start_runner = self.start_runner_never
        self.assertFalse(workq.runner().running())
        self.enqueue_entries(workq, 3)
        self.assertFalse(workq.runner().running())
        self.assertEqual(3, workq.size())
        self.assertEqual(8, workq.num_enqueues())
        gevent.sleep()
        self.assertEqual(3, workq.size())
        self.assertEqual(5, workq.num_dequeues())
        self.assertEqual(5, self.worker_count)

        # set start_runner to return True
        # verify that runner gets executed
        workq._start_runner = self.start_runner_always
        workq.may_be_start_runner()
        self.assertTrue(workq.runner().running())
        gevent.sleep()
        self.assertEqual(0, workq.size())
        self.assertEqual(8, workq.num_dequeues())
        self.assertEqual(8, self.worker_count)
    def test_runner(self):
        # Don't set start_runner
        # verify runner is executed and worker() is invoked
        workq = WorkQueue(self.worker)
        self.assertFalse(workq.runner().running())
        self.enqueue_entries(workq, 5)
        self.assertEqual(5, workq.size())
        self.assertEqual(5, workq.num_enqueues())
        self.assertTrue(workq.runner().running())
        gevent.sleep()
        self.assertEqual(0, workq.size())
        self.assertEqual(5, workq.num_dequeues())
        self.assertEqual(5, self.worker_count)

        # set start_runner to return False
        # verify that runner doesn't start
        workq._start_runner = self.start_runner_never
        self.assertFalse(workq.runner().running())
        self.enqueue_entries(workq, 3)
        self.assertFalse(workq.runner().running())
        self.assertEqual(3, workq.size())
        self.assertEqual(8, workq.num_enqueues())
        gevent.sleep()
        self.assertEqual(3, workq.size())
        self.assertEqual(5, workq.num_dequeues())
        self.assertEqual(5, self.worker_count)

        # set start_runner to return True
        # verify that runner gets executed
        workq._start_runner = self.start_runner_always
        workq.may_be_start_runner()
        self.assertTrue(workq.runner().running())
        gevent.sleep()
        self.assertEqual(0, workq.size())
        self.assertEqual(8, workq.num_dequeues())
        self.assertEqual(8, self.worker_count)