Пример #1
0
 def test_restart_workers(self):
     worker1 = MagicMock(queues="testqueues", pid="testpid1")
     worker2 = MagicMock(queues="testqueues", pid=None)
     master = WorkerMaster()
     master._start_worker = MagicMock(return_value="testpid2")
     master.workers = [worker1, worker2]
     master._restart_workers()
     master._start_worker.assert_called_once_with(worker2)
Пример #2
0
 def test_check_workers_other_oserror(self, waitpid_mock):
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster()
     master.workers = [worker]
     waitpid_mock.side_effect = OSError(99, 'Something else')
     self.assertRaises(OSError, master._check_workers)
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual('testpid', worker.pid)
Пример #3
0
 def test_check_workers_other_oserror(self, waitpid_mock):
     worker = MagicMock(queues="testqueues", pid="testpid")
     master = WorkerMaster()
     master.workers = [worker]
     waitpid_mock.side_effect = OSError(99, "Something else")
     self.assertRaises(OSError, master._check_workers)
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual("testpid", worker.pid)
Пример #4
0
 def test_check_workers_no_children(self, waitpid_mock):
     worker = MagicMock(queues="testqueues", pid="testpid")
     master = WorkerMaster()
     master.workers = [worker]
     waitpid_mock.side_effect = OSError(errno.ECHILD, "No child processes")
     self.assertFalse(master._check_workers())
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual(None, worker.pid)
Пример #5
0
 def test_check_workers_no_children(self, waitpid_mock):
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster()
     master.workers = [worker]
     waitpid_mock.side_effect = OSError(errno.ECHILD, 'No child processes')
     self.assertFalse(master._check_workers())
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual(None, worker.pid)
Пример #6
0
 def test_check_workers(self, waitpid_mock):
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster()
     master.workers = [worker]
     waitpid_mock.return_value = ('testpid', 0)
     self.assertTrue(master._check_workers())
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual(None, worker.pid)
Пример #7
0
 def test_check_workers(self, waitpid_mock):
     worker = MagicMock(queues="testqueues", pid="testpid")
     master = WorkerMaster()
     master.workers = [worker]
     waitpid_mock.return_value = ("testpid", 0)
     self.assertTrue(master._check_workers())
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual(None, worker.pid)
Пример #8
0
 def test_check_workers_other_oserror(self, waitpid_mock):
     exit_cb = MagicMock()
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster('testapp', exit_callback=exit_cb)
     master.workers = [worker]
     waitpid_mock.side_effect = OSError(99, 'Something else')
     self.assertRaises(OSError, master._check_workers)
     waitpid_mock.assert_called_with(0, 0)
     self.assertEqual('testpid', worker.pid)
Пример #9
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())
Пример #10
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)
Пример #11
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()
Пример #12
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)
Пример #13
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()
Пример #14
0
 def test_restart_workers(self):
     start_cb = MagicMock()
     worker1 = MagicMock(queues='testqueues', pid='testpid1')
     worker2 = MagicMock(queues='testqueues', pid=None)
     master = WorkerMaster('testapp', start_callback=start_cb)
     master._start_worker = MagicMock(return_value='testpid2')
     master.workers = [worker1, worker2]
     master._restart_workers()
     master._start_worker.assert_called_once_with(worker2)
     start_cb.assert_called_with('testqueues', 'testpid2')
Пример #15
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())
Пример #16
0
 def test_check_workers_no_children(self, waitpid_mock):
     exit_cb = MagicMock()
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster('testapp', exit_callback=exit_cb)
     master.workers = [worker]
     waitpid_mock.side_effect = OSError(errno.ECHILD, 'No child processes')
     self.assertFalse(master._check_workers())
     waitpid_mock.assert_called_with(0, 0)
     exit_cb.assert_called_with('testqueues', 'testpid', None)
     self.assertEqual(None, worker.pid)
Пример #17
0
 def test_check_workers(self, waitpid_mock):
     exit_cb = MagicMock()
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster('testapp', exit_callback=exit_cb)
     master.workers = [worker]
     waitpid_mock.return_value = ('testpid', 0)
     self.assertTrue(master._check_workers())
     waitpid_mock.assert_called_with(0, 0)
     exit_cb.assert_called_with('testqueues', 'testpid', 0)
     self.assertEqual(None, worker.pid)
Пример #18
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)
Пример #19
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)
Пример #20
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)
Пример #21
0
 def test_get_worker_data(self, exit_mock, fork_mock):
     app = MagicMock()
     worker = _WorkerProcess(app, ['testqueue'], None, None, None, False)
     worker._run = MagicMock()
     master = WorkerMaster('testapp', worker_data={'test': 'data'})
     fork_mock.return_value = 0
     self.assertRaises(RuntimeError, get_worker_data, 'test')
     master._start_worker(worker)
     self.assertEquals('data', get_worker_data('test'))
     fork_mock.assert_called_with()
     worker._run.assert_called_with()
     exit_mock.assert_called_with(os.EX_OK)
Пример #22
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)
Пример #23
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)
Пример #24
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('testapp')
     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)
Пример #25
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)
Пример #26
0
 def test_wait(self, waitpid_mock):
     exit_cb = MagicMock()
     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('testapp', exit_callback=exit_cb)
     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)
     exit_cb.assert_any_call(None, 'testpid1', 0)
     exit_cb.assert_any_call(None, 'testpid2', None)
Пример #27
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)
Пример #28
0
 def test_restart_workers(self):
     worker1 = MagicMock(queues='testqueues', pid='testpid1')
     worker2 = MagicMock(queues='testqueues', pid=None)
     master = WorkerMaster()
     master._start_worker = MagicMock(return_value='testpid2')
     master.workers = [worker1, worker2]
     master._restart_workers()
     master._start_worker.assert_called_once_with(worker2)
Пример #29
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)
Пример #30
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()
Пример #31
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()
Пример #32
0
 def test_exit_callback(self):
     cb = MagicMock(side_effect=Exception)
     worker = MagicMock(queues='testqueues', pid='testpid')
     master = WorkerMaster('testapp', exit_callback=cb)
     master.exit_callback(worker, 'teststatus')
     cb.assert_called_with('testqueues', 'testpid', 'teststatus')