Example #1
0
 def setUp(self):
     self.workers = WorkersStatistics()
Example #2
0
 def setUp(self):
     self.workers = WorkersStatistics()
Example #3
0
class WorkerStatisticsTests(TestCase):

    def setUp(self):
        self.workers = WorkersStatistics()

    def test_worker_created(self):
        self.workers.worker_created("a worker")

        self._verify(starting=1, idle=0, busy=0, shutdown=0)
        self._verify(utilisation=0.)

    def test_worker_idle(self):
        self.workers.worker_created("a worker")
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))

        self._verify(starting=0, idle=1, busy=0, shutdown=0)
        self._verify(utilisation=0.)

    def test_worker_idle_rejects_idle_workers(self):
        with self.assertRaises(ValueError):
            self.workers.worker_idle(a_worker(WorkerStatus.IDLE))

    def test_worker_busy(self):
        self.workers.worker_created("a worker")
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))
        self.workers.worker_busy(a_worker(WorkerStatus.IDLE))

        self._verify(starting=0, idle=0, busy=1, shutdown=0)
        self._verify(utilisation=100.)

    def test_worker_busy_only_accepts_idle_workers(self):
        def do_test(status):
            with self.assertRaises(ValueError):
                self.workers.worker_busy(a_worker(status))

        for each_status in [WorkerStatus.STARTING, WorkerStatus.BUSY]:
            do_test(each_status)

    def test_worker_idle_again(self):
        self.workers.worker_created(a_worker(WorkerStatus.STARTING))
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))
        self.workers.worker_busy(a_worker(WorkerStatus.IDLE))
        self.workers.worker_idle(a_worker(WorkerStatus.BUSY))

        self._verify(starting=0, idle=1, busy=0, shutdown=0)
        self._verify(utilisation=0.)

    def test_worker_idle_rejects_idle_workers(self):
        with self.assertRaises(ValueError):
            self.workers.worker_idle(a_worker(WorkerStatus.IDLE))

    def test_worker_shutdown(self):
        self.workers.worker_created(a_worker(WorkerStatus.STARTING))
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))
        self.workers.worker_busy(a_worker(WorkerStatus.IDLE))
        self.workers.worker_idle(a_worker(WorkerStatus.BUSY))
        self.workers.worker_shutdown(a_worker(WorkerStatus.IDLE))

        self._verify(starting=0, idle=0, busy=0, shutdown=1)
        self._verify(utilisation=None)

    def test_worker_shutdown_only_accepts_idle_workers(self):
        def do_test(status):
            with self.assertRaises(ValueError):
                self.workers.worker_shutdown(a_worker(status))

        for each_status in [WorkerStatus.STARTING, WorkerStatus.BUSY]:
            do_test(each_status)


    def _verify(self, **counters):
        for (counter_name, expected_value) in counters.items():
            self.assertEqual(expected_value, getattr(self.workers, counter_name))
Example #4
0
class WorkerStatisticsTests(TestCase):
    def setUp(self):
        self.workers = WorkersStatistics()

    def test_worker_created(self):
        self.workers.worker_created("a worker")

        self._verify(starting=1, idle=0, busy=0, shutdown=0)
        self._verify(utilisation=0.)

    def test_worker_idle(self):
        self.workers.worker_created("a worker")
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))

        self._verify(starting=0, idle=1, busy=0, shutdown=0)
        self._verify(utilisation=0.)

    def test_worker_idle_rejects_idle_workers(self):
        with self.assertRaises(ValueError):
            self.workers.worker_idle(a_worker(WorkerStatus.IDLE))

    def test_worker_busy(self):
        self.workers.worker_created("a worker")
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))
        self.workers.worker_busy(a_worker(WorkerStatus.IDLE))

        self._verify(starting=0, idle=0, busy=1, shutdown=0)
        self._verify(utilisation=100.)

    def test_worker_busy_only_accepts_idle_workers(self):
        def do_test(status):
            with self.assertRaises(ValueError):
                self.workers.worker_busy(a_worker(status))

        for each_status in [WorkerStatus.STARTING, WorkerStatus.BUSY]:
            do_test(each_status)

    def test_worker_idle_again(self):
        self.workers.worker_created(a_worker(WorkerStatus.STARTING))
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))
        self.workers.worker_busy(a_worker(WorkerStatus.IDLE))
        self.workers.worker_idle(a_worker(WorkerStatus.BUSY))

        self._verify(starting=0, idle=1, busy=0, shutdown=0)
        self._verify(utilisation=0.)

    def test_worker_idle_rejects_idle_workers(self):
        with self.assertRaises(ValueError):
            self.workers.worker_idle(a_worker(WorkerStatus.IDLE))

    def test_worker_shutdown(self):
        self.workers.worker_created(a_worker(WorkerStatus.STARTING))
        self.workers.worker_idle(a_worker(WorkerStatus.STARTING))
        self.workers.worker_busy(a_worker(WorkerStatus.IDLE))
        self.workers.worker_idle(a_worker(WorkerStatus.BUSY))
        self.workers.worker_shutdown(a_worker(WorkerStatus.IDLE))

        self._verify(starting=0, idle=0, busy=0, shutdown=1)
        self._verify(utilisation=None)

    def test_worker_shutdown_only_accepts_idle_workers(self):
        def do_test(status):
            with self.assertRaises(ValueError):
                self.workers.worker_shutdown(a_worker(status))

        for each_status in [WorkerStatus.STARTING, WorkerStatus.BUSY]:
            do_test(each_status)

    def _verify(self, **counters):
        for (counter_name, expected_value) in list(counters.items()):
            self.assertEqual(expected_value, getattr(self.workers,
                                                     counter_name))