예제 #1
0
 def test_spawnWorkers_calls__spawnWorker_for_missing_workers(self):
     worker_count = random.randint(2, 16)
     service = WorkersService(reactor, worker_count=worker_count)
     self.patch(service, '_spawnWorker')
     pid = random.randint(1, 500)
     service.workers[pid] = {}
     service.spawnWorkers()
     self.assertEquals(worker_count - 1, service._spawnWorker.call_count)
예제 #2
0
 def test_spawnWorkers_calls__spawnWorker_for_missing_workers(self):
     worker_count = random.randint(2, 16)
     service = WorkersService(reactor, worker_count=worker_count)
     self.patch(service, "_spawnWorker")
     pid = random.randint(1, 500)
     service.workers[pid] = WorkerProcess(service)
     service.spawnWorkers()
     calls = [call(runningImport=True)
              ] + [call() for _ in range(worker_count - 2)]
     self.assertThat(service._spawnWorker, MockCallsMatch(*calls))
예제 #3
0
    def test_killWorker_spawns_another(self):
        service = WorkersService(reactor, worker_count=1, worker_cmd="cat")

        dv = DeferredValue()
        original_unregisterWorker = service.unregisterWorker

        def mock_unregisterWorker(*args, **kwargs):
            original_unregisterWorker(*args, **kwargs)
            dv.set(None)

        self.patch(
            service, "unregisterWorker"
        ).side_effect = mock_unregisterWorker

        try:
            service.startService()

            self.assertEquals(1, len(service.workers))
            pid = list(service.workers.keys())[0]
            service.killWorker(pid)
            yield dv.get(timeout=2)
            self.assertNotIn(pid, service.workers)
            self.assertEquals(1, len(service.workers))
        finally:
            service.stopService()
예제 #4
0
    def test_defaults_to_max_workers_and_argv_zero(self):
        worker_count = random.randint(1, 8)
        set_max_workers_count(worker_count)
        service = WorkersService(reactor)

        from maasserver.workers import MAX_WORKERS_COUNT
        self.assertEquals(MAX_WORKERS_COUNT, service.worker_count)
        self.assertEquals(sys.argv[0], service.worker_cmd)
예제 #5
0
    def test_stopService_doesnt(self):
        service = WorkersService(reactor, worker_count=1, worker_cmd="cat")

        dv = DeferredValue()
        original_unregisterWorker = service.unregisterWorker

        def mock_unregisterWorker(*args, **kwargs):
            original_unregisterWorker(*args, **kwargs)
            dv.set(None)

        self.patch(service,
                   "unregisterWorker").side_effect = mock_unregisterWorker

        try:
            service.startService()
            self.assertEqual(1, len(service.workers))
        finally:
            service.stopService()

        yield dv.get(timeout=2)
        self.assertEqual({}, service.workers)
예제 #6
0
def make_WorkersService():
    from maasserver.workers import WorkersService
    return WorkersService(reactor)
예제 #7
0
 def test_calls_spawnWorkers_on_start(self):
     service = WorkersService(reactor)
     self.patch(service, "spawnWorkers")
     service.startService()
     self.assertThat(service.spawnWorkers, MockCalledOnceWith())