Exemplo n.º 1
0
 def test_run(self):
     master = WorkerMaster()
     master._restart_workers = MagicMock(side_effect=[None, ValueError])
     master._check_workers = MagicMock()
     master._stop_workers = MagicMock()
     self.assertRaises(ValueError, master.run)
     master._restart_workers.assert_any_call()
     master._restart_workers.assert_called_with()
     master._check_workers.assert_called_with()
     master._stop_workers.assert_called_with()
Exemplo n.º 2
0
 def test_start_worker_child(self, exit_mock, fork_mock):
     app = MagicMock()
     worker = WorkerProcess(app, ['testqueue'])
     worker._run = MagicMock()
     master = WorkerMaster()
     fork_mock.return_value = 0
     master._start_worker(worker)
     fork_mock.assert_called_with()
     worker._run.assert_called_with()
     exit_mock.assert_called_with(os.EX_OK)
Exemplo n.º 3
0
 def test_add_local_worker(self):
     master = WorkerMaster()
     self.assertEqual([], master.workers)
     func = MagicMock(return_value='retval')
     master.add_local_worker(func, 2)
     self.assertEqual(2, len(master.workers))
     self.assert_(isinstance(master.workers[0], _LocalProcess))
     self.assert_(isinstance(master.workers[1], _LocalProcess))
     self.assertEqual('retval', master.workers[0]._func())
     self.assertEqual('retval', master.workers[1]._func())
Exemplo n.º 4
0
 def test_get_worker_app(self, exit_mock, fork_mock):
     app = MagicMock()
     worker = WorkerProcess(app, ['testqueue'])
     worker._run = MagicMock()
     master = WorkerMaster()
     fork_mock.return_value = 0
     self.assertRaises(RuntimeError, get_worker_app)
     master._start_worker(worker)
     self.assertEquals(app, get_worker_app())
     fork_mock.assert_called_with()
     worker._run.assert_called_with()
     exit_mock.assert_called_with(os.EX_OK)
Exemplo n.º 5
0
 def test_wait(self, waitpid_mock):
     waitpid_mock.side_effect = [('testpid1', 0),
                                 OSError(errno.ESRCH, 'No such pid'),
                                 OSError(99, 'Something else')]
     worker1 = MagicMock(queues=None, pid='testpid1')
     worker2 = MagicMock(queues=None, pid='testpid2')
     worker3 = MagicMock(queues=None, pid='testpid3')
     master = WorkerMaster()
     master.workers = [worker1, worker2, worker3]
     self.assertRaises(OSError, master.wait)
     waitpid_mock.assert_any_call('testpid1', 0)
     waitpid_mock.assert_any_call('testpid2', 0)
     waitpid_mock.assert_any_call('testpid3', 0)
Exemplo n.º 6
0
 def test_stop_workers(self, kill_mock):
     kill_mock.side_effect = [
         None,
         OSError(errno.ESRCH, 'No such pid'),
         OSError(99, 'Something else')
     ]
     worker1 = MagicMock(pid='testpid1')
     worker2 = MagicMock(pid='testpid2')
     worker3 = MagicMock(pid='testpid3')
     master = WorkerMaster()
     master.workers = [worker1, worker2, worker3]
     self.assertRaises(OSError, master._stop_workers)
     kill_mock.assert_any_call('testpid1', signal.SIGTERM)
     kill_mock.assert_any_call('testpid2', signal.SIGTERM)
     kill_mock.assert_any_call('testpid3', signal.SIGTERM)
Exemplo n.º 7
0
 def test_add_worker(self):
     master = WorkerMaster()
     self.assertEqual([], master.workers)
     master.add_worker('testapp', ['queue1'], exclusive=True)
     self.assertEqual(1, len(master.workers))
     self.assertEqual('testapp', master.workers[0].app)
     self.assertEqual(['queue1'], master.workers[0].queues)
     self.assertEqual(None, master.workers[0].pid)
     master.add_worker('testapp', ['queue2'], num_processes=2)
     self.assertEqual(3, len(master.workers))
     self.assertEqual('testapp', master.workers[0].app)
     self.assertEqual(['queue1'], master.workers[0].queues)
     self.assertTrue(master.workers[0].exclusive)
     self.assertEqual('testapp', master.workers[1].app)
     self.assertEqual(['queue2'], master.workers[1].queues)
     self.assertFalse(master.workers[1].exclusive)
     self.assertEqual('testapp', master.workers[2].app)
     self.assertEqual(['queue2'], master.workers[2].queues)
     self.assertFalse(master.workers[2].exclusive)
Exemplo n.º 8
0
 def test_start_worker_parent(self, fork_mock):
     worker = MagicMock()
     master = WorkerMaster()
     fork_mock.return_value = 13
     self.assertEqual(13, master._start_worker(worker))
     fork_mock.assert_called_with()