예제 #1
0
def test_self_reload(pyscript):
    script = pyscript("""
        import os
        from daemonocle import Daemon

        daemon = Daemon(name='foo', pid_file='foo.pid', detach=False)

        def worker():
            print('here is my pid: {}'.format(os.getpid()))
            if not os.environ.get('DAEMONOCLE_RELOAD'):
                daemon.reload()

        daemon.worker = worker
        daemon.do_action('start')
    """)
    result = script.run()
    assert result.returncode == 0
    match = re.match((
        br'^Starting foo \.\.\. OK\n'
        br'here is my pid: (\d+)\n'
        br'Reloading foo \.\.\. OK\n'
        br'here is my pid: (\d+)\n'
        br'All children are gone\. Parent is exiting\.\.\.\n$'),
        result.stdout)
    assert match
    assert match.group(1) != match.group(2)
    assert result.stderr == b''

    daemon = Daemon()
    with pytest.raises(DaemonError):
        # Don't allow calling reload like this
        daemon.reload()
예제 #2
0
def test_self_reload(pyscript):
    script = pyscript(
        """
        import os
        from daemonocle import Daemon

        daemon = Daemon(prog='foo', pidfile='foo.pid', detach=False)

        def worker():
            print('here is my pid: {}'.format(os.getpid()))
            if not os.environ.get('DAEMONOCLE_RELOAD'):
                daemon.reload()

        daemon.worker = worker
        daemon.do_action('start')
    """
    )
    result = script.run()
    assert result.returncode == 0
    match = re.match(
        (
            br"^Starting foo \.\.\. OK\n"
            br"here is my pid: (\d+)\n"
            br"Reloading foo \.\.\. OK\n"
            br"here is my pid: (\d+)\n"
            br"All children are gone\. Parent is exiting\.\.\.\n$"
        ),
        result.stdout,
    )
    assert match
    assert match.group(1) != match.group(2)
    assert result.stderr == b""

    daemon = Daemon()
    with pytest.raises(DaemonError):
        # Don't allow calling reload like this
        daemon.reload()