blob: b7fa426c0efe83662f2d7eda59beccc45c699ee7 [file] [log] [blame]
# Script that registers signal handlers and creates a file
# to signal readiness when registration is complete.
# It then waits for a short period, printing any signals received.
import signal
import time
import sys
import pathlib
def receiveSignal(signalNumber, frame):
print("Received:", signalNumber)
return
if __name__ == "__main__":
# Check for readiness file argument
if len(sys.argv) < 2:
print("Error: Readiness file path argument required.", file=sys.stderr)
sys.exit(1)
readiness_file_path = pathlib.Path(sys.argv[1])
# Ensure the directory exists (it should, being the test's tmp path)
readiness_file_path.parent.mkdir(parents=True, exist_ok=True)
# Register the signals to be caught
signal.signal(signal.SIGHUP, receiveSignal)
signal.signal(signal.SIGINT, receiveSignal)
signal.signal(signal.SIGQUIT, receiveSignal)
signal.signal(signal.SIGILL, receiveSignal)
signal.signal(signal.SIGTRAP, receiveSignal)
signal.signal(signal.SIGABRT, receiveSignal)
signal.signal(signal.SIGBUS, receiveSignal)
signal.signal(signal.SIGFPE, receiveSignal)
# signal.signal(signal.SIGKILL, receiveSignal)
signal.signal(signal.SIGUSR1, receiveSignal)
signal.signal(signal.SIGSEGV, receiveSignal)
signal.signal(signal.SIGUSR2, receiveSignal)
signal.signal(signal.SIGPIPE, receiveSignal)
signal.signal(signal.SIGALRM, receiveSignal)
signal.signal(signal.SIGTERM, receiveSignal)
# Signal readiness by creating the file
print(f"Creating readiness file: {readiness_file_path}", flush=True)
try:
readiness_file_path.touch()
print("Readiness file created.", flush=True)
except Exception as e:
print(f"Error creating readiness file: {e}", file=sys.stderr, flush=True)
sys.exit(1)
bail = 0
# Wait in an endless loop for signals
while bail < 15:
time.sleep(1)
bail += 1