summaryrefslogtreecommitdiff
path: root/lib/python2.7/test/test_fork1.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/test/test_fork1.py')
-rw-r--r--lib/python2.7/test/test_fork1.py71
1 files changed, 0 insertions, 71 deletions
diff --git a/lib/python2.7/test/test_fork1.py b/lib/python2.7/test/test_fork1.py
deleted file mode 100644
index 3930667..0000000
--- a/lib/python2.7/test/test_fork1.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""This test checks for correct fork() behavior.
-"""
-
-import imp
-import os
-import signal
-import sys
-import time
-
-from test.fork_wait import ForkWait
-from test.test_support import run_unittest, reap_children, get_attribute, import_module
-threading = import_module('threading')
-
-#Skip test if fork does not exist.
-get_attribute(os, 'fork')
-
-
-class ForkTest(ForkWait):
- def wait_impl(self, cpid):
- for i in range(10):
- # waitpid() shouldn't hang, but some of the buildbots seem to hang
- # in the forking tests. This is an attempt to fix the problem.
- spid, status = os.waitpid(cpid, os.WNOHANG)
- if spid == cpid:
- break
- time.sleep(1.0)
-
- self.assertEqual(spid, cpid)
- self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
-
- def test_import_lock_fork(self):
- import_started = threading.Event()
- fake_module_name = "fake test module"
- partial_module = "partial"
- complete_module = "complete"
- def importer():
- imp.acquire_lock()
- sys.modules[fake_module_name] = partial_module
- import_started.set()
- time.sleep(0.01) # Give the other thread time to try and acquire.
- sys.modules[fake_module_name] = complete_module
- imp.release_lock()
- t = threading.Thread(target=importer)
- t.start()
- import_started.wait()
- pid = os.fork()
- try:
- if not pid:
- m = __import__(fake_module_name)
- if m == complete_module:
- os._exit(0)
- else:
- os._exit(1)
- else:
- t.join()
- # Exitcode 1 means the child got a partial module (bad.) No
- # exitcode (but a hang, which manifests as 'got pid 0')
- # means the child deadlocked (also bad.)
- self.wait_impl(pid)
- finally:
- try:
- os.kill(pid, signal.SIGKILL)
- except OSError:
- pass
-
-def test_main():
- run_unittest(ForkTest)
- reap_children()
-
-if __name__ == "__main__":
- test_main()