summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2015-12-10 20:02:05 +0100
committerArmin Ronacher <armin.ronacher@active-4.com>2015-12-10 20:02:05 +0100
commit90b920532c84cc4522942c8dddf60818685d698a (patch)
tree34ff7613703a00949c0091a26c87eb431eedfa51
parentf758cc2f40b990f55bd225808f226736e7fd07d4 (diff)
downloadraven-feature/pid-check.tar.gz
Added test for spawning new threads after forkfeature/pid-check
-rw-r--r--tests/transport/threaded/tests.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/transport/threaded/tests.py b/tests/transport/threaded/tests.py
index cbd74f0..f63dc71 100644
--- a/tests/transport/threaded/tests.py
+++ b/tests/transport/threaded/tests.py
@@ -64,6 +64,29 @@ class ThreadedTransportTest(TestCase):
self.assertEqual(len(transport.events), 1)
+ def test_fork_spawns_anew(self):
+ url = urlparse(self.url)
+ transport = DummyThreadedScheme(url)
+ transport.send_delay = 0.5
+
+ data = self.client.build_msg('raven.events.Message', message='foo')
+
+ pid = os.fork()
+ if pid == 0:
+ time.sleep(0.1)
+
+ transport.async_send(data, None, None, None)
+
+ # this should wait for the message to get sent
+ transport.get_worker().main_thread_terminated()
+
+ self.assertEqual(len(transport.events), 1)
+ # Use os._exit here so that py.test gets not confused about
+ # what the hell we're doing here.
+ os._exit(0)
+ else:
+ os.waitpid(pid, 0)
+
def test_fork_with_active_worker(self):
# Test threaded transport when forking with an active worker.
# Forking a process doesn't clone the worker thread - make sure