diff options
author | nkozlovskiy <nmk@ydb.tech> | 2023-10-02 18:57:38 +0300 |
---|---|---|
committer | nkozlovskiy <nmk@ydb.tech> | 2023-10-02 19:39:06 +0300 |
commit | 6295ef4d23465c11296e898b9dc4524ad9592b5d (patch) | |
tree | fc0c852877b2c52f365a1f6ed0710955844338c2 /contrib/deprecated/python/subprocess32/testdata/sigchild_ignore.py | |
parent | de63c80b75948ecc13894854514d147840ff8430 (diff) | |
download | ydb-6295ef4d23465c11296e898b9dc4524ad9592b5d.tar.gz |
oss ydb: fix dstool building and test run
Diffstat (limited to 'contrib/deprecated/python/subprocess32/testdata/sigchild_ignore.py')
-rw-r--r-- | contrib/deprecated/python/subprocess32/testdata/sigchild_ignore.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/contrib/deprecated/python/subprocess32/testdata/sigchild_ignore.py b/contrib/deprecated/python/subprocess32/testdata/sigchild_ignore.py new file mode 100644 index 0000000000..ba5ccf2cf0 --- /dev/null +++ b/contrib/deprecated/python/subprocess32/testdata/sigchild_ignore.py @@ -0,0 +1,18 @@ +import signal, subprocess32, sys, time +# On Linux this causes os.waitpid to fail with OSError as the OS has already +# reaped our child process. The wait() passing the OSError on to the caller +# and causing us to exit with an error is what we are testing against. +sig_child = getattr(signal, 'SIGCLD', None) +if sig_child is None: + sig_child = getattr(signal, 'SIGCHLD') +signal.signal(sig_child, signal.SIG_IGN) +subprocess32.Popen([sys.executable, '-c', 'print("albatross")']).wait() +# Also ensure poll() handles an errno.ECHILD appropriately. +p = subprocess32.Popen([sys.executable, '-c', 'print("albatross")']) +num_polls = 0 +while p.poll() is None: + # Waiting for the process to finish. + time.sleep(0.01) # Avoid being a CPU busy loop. + num_polls += 1 + if num_polls > 3000: + raise RuntimeError('poll should have returned 0 within 30 seconds') |