aboutsummaryrefslogtreecommitdiffstats
path: root/test/functional/util/dummy_killer.py
blob: 0a052fb3ee071722008811b4cdcf0fb826db94b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import signal
import os
import atexit
import tempfile

def setup_killer(server, method = None):
    def default_method():
        server.server_close()

    if method is None:
        method = default_method

    def alarm_handler(signum, frame):
        method()

    signal.signal(signal.SIGALRM, alarm_handler)
    signal.signal(signal.SIGTERM, alarm_handler)
    signal.alarm(120)


def write_pid(path):
    with tempfile.NamedTemporaryFile(mode='w', delete=False) as f:
        f.write(str(os.getpid()))
        f.close()
        os.rename(f.name, path)

    def cleanup():
        os.remove(path)

    atexit.register(cleanup)