mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
22bfad4b6f
Adds test to test synchronizing between master repos and to test the prevention of non-push/pull transactions (such as commit and strip). Adds tests/getdb.sh to the ignored list. This is a script that provides the database host, port, and name for the test. It must be in the form "ip:port:databasename". The test assumes that the database name is unique and doesn't already exist each time getdb.sh is called.
55 lines
1.5 KiB
Python
Executable File
55 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os, sys, time, errno, signal
|
|
|
|
if os.name =='nt':
|
|
import ctypes
|
|
def kill(pid, logfn, tryhard=True):
|
|
logfn('# Killing daemon process %d' % pid)
|
|
PROCESS_TERMINATE = 1
|
|
handle = ctypes.windll.kernel32.OpenProcess(
|
|
PROCESS_TERMINATE, False, pid)
|
|
ctypes.windll.kernel32.TerminateProcess(handle, -1)
|
|
ctypes.windll.kernel32.CloseHandle(handle)
|
|
else:
|
|
def kill(pid, logfn, tryhard=True):
|
|
try:
|
|
os.kill(pid, 0)
|
|
logfn('# Killing daemon process %d' % pid)
|
|
os.kill(pid, signal.SIGTERM)
|
|
if tryhard:
|
|
for i in range(10):
|
|
time.sleep(0.05)
|
|
os.kill(pid, 0)
|
|
else:
|
|
time.sleep(0.1)
|
|
os.kill(pid, 0)
|
|
logfn('# Daemon process %d is stuck - really killing it' % pid)
|
|
os.kill(pid, signal.SIGKILL)
|
|
except OSError, err:
|
|
if err.errno != errno.ESRCH:
|
|
raise
|
|
|
|
def killdaemons(pidfile, tryhard=True, remove=False, logfn=None):
|
|
if not logfn:
|
|
logfn = lambda s: s
|
|
# Kill off any leftover daemon processes
|
|
try:
|
|
fp = open(pidfile)
|
|
for line in fp:
|
|
try:
|
|
pid = int(line)
|
|
except ValueError:
|
|
continue
|
|
kill(pid, logfn, tryhard)
|
|
fp.close()
|
|
if remove:
|
|
os.unlink(pidfile)
|
|
except IOError:
|
|
pass
|
|
|
|
if __name__ == '__main__':
|
|
path, = sys.argv[1:]
|
|
killdaemons(path)
|
|
|