def test_loop_reload_pidchange_signals(self, open_mock, process_mock,
                                           sleep_mock):
        proc1 = MagicMock()
        proc2 = MagicMock()
        proc1.pid = 123
        proc2.pid = 456

        h = Herder()

        open_mock.return_value.read.return_value = '123\n'
        process_mock.return_value = proc1
        ret = h._loop_inner()
        assert_equal(ret, True)

        # Simulate SIGHUP
        h._handle_HUP(signal.SIGHUP, None)

        open_mock.return_value.read.return_value = '456\n'
        process_mock.return_value = proc2
        ret = h._loop_inner()
        assert_equal(ret, True)

        sleep_mock.assert_any_call(120)  # Check for the default overlap

        expected_calls = [call.send_signal(signal.SIGUSR2),
                          call.send_signal(signal.SIGWINCH),
                          call.send_signal(signal.SIGQUIT)]
        assert_equal(proc1.mock_calls, expected_calls)
 def test_loop_nonexistent_pidfile_terminating(self, open_mock, sleep_mock):
     def _fail():
         raise IOError()
     open_mock.return_value.read.side_effect = _fail
     h = Herder()
     h.terminating = True
     assert_equal(h._loop_inner(), False)
Esempio n. 3
0
 def test_loop_nonexistent_pidfile_terminating(self, open_mock, sleep_mock):
     def _fail():
         raise IOError()
     open_mock.return_value.read.side_effect = _fail
     h = Herder()
     h.terminating = True
     assert_equal(h._loop_inner(), False)
    def test_configurable_overlap(self, open_mock, process_mock, sleep_mock):
        h = Herder(overlap=17)

        # Set up an initial dummy master process for the herder to kill later
        open_mock.return_value.read.return_value = '123\n'
        process_mock.return_value = MagicMock(pid=123)
        h._loop_inner()

        # Simulate a reloaded Unicorn
        open_mock.return_value.read.return_value = '456\n'
        process_mock.return_value = MagicMock(pid=456)

        # Simulate SIGHUP, so the Herder thinks it's reloading
        h._handle_HUP(signal.SIGHUP, None)

        h._loop_inner()
        sleep_mock.assert_any_call(17)
Esempio n. 5
0
    def test_configurable_overlap(self, open_mock, process_mock, sleep_mock):
        h = Herder(overlap=17)

        # Set up an initial dummy master process for the herder to kill later
        open_mock.return_value.read.return_value = '123\n'
        process_mock.return_value = MagicMock(pid=123)
        h._loop_inner()

        # Simulate a reloaded Unicorn
        open_mock.return_value.read.return_value = '456\n'
        process_mock.return_value = MagicMock(pid=456)

        # Simulate SIGHUP, so the Herder thinks it's reloading
        h._handle_HUP(signal.SIGHUP, None)

        h._loop_inner()
        sleep_mock.assert_any_call(17)
    def test_loop_detects_pidchange(self, open_mock, process_mock, sleep_mock):
        proc1 = MagicMock()
        proc2 = MagicMock()
        proc1.pid = 123
        proc2.pid = 456

        h = Herder()

        open_mock.return_value.read.return_value = '123\n'
        process_mock.return_value = proc1
        ret = h._loop_inner()
        assert_equal(ret, True)

        open_mock.return_value.read.return_value = '456\n'
        process_mock.return_value = proc2
        ret = h._loop_inner()
        assert_equal(ret, True)

        expected_calls = []
        assert_equal(proc1.mock_calls, expected_calls)
Esempio n. 7
0
    def test_loop_detects_pidchange(self, open_mock, process_mock, sleep_mock):
        proc1 = MagicMock()
        proc2 = MagicMock()
        proc1.pid = 123
        proc2.pid = 456

        h = Herder()

        open_mock.return_value.read.return_value = '123\n'
        process_mock.return_value = proc1
        ret = h._loop_inner()
        assert_equal(ret, True)

        open_mock.return_value.read.return_value = '456\n'
        process_mock.return_value = proc2
        ret = h._loop_inner()
        assert_equal(ret, True)

        expected_calls = []
        assert_equal(proc1.mock_calls, expected_calls)
 def test_loop_valid_pid(self, open_mock, process_mock, sleep_mock):
     open_mock.return_value.read.return_value = '123\n'
     h = Herder()
     ret = h._loop_inner()
     assert_equal(ret, True)
     process_mock.assert_called_once_with(123)
Esempio n. 9
0
 def test_loop_valid_pid(self, open_mock, process_mock, sleep_mock):
     open_mock.return_value.read.return_value = '123\n'
     h = Herder()
     ret = h._loop_inner()
     assert_equal(ret, True)
     process_mock.assert_called_once_with(123)