From d950973f0dee5bce4bac9de1e8e9d40c24d98663 Mon Sep 17 00:00:00 2001 From: fawce Date: Tue, 24 Jul 2012 17:43:49 -0400 Subject: [PATCH] added a proc join to ensure we block on the simulation fully exiting all processes. --- tests/test_finance.py | 2 +- zipline/utils/test_utils.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/test_finance.py b/tests/test_finance.py index cf777154..37686805 100644 --- a/tests/test_finance.py +++ b/tests/test_finance.py @@ -147,7 +147,7 @@ class FinanceTestCase(TestCase): zipline.simulate(blocking=False) - output, transaction_count = drain_zipline(self) + output, transaction_count = drain_zipline(self, zipline) self.assertTrue(zipline.sim.ready()) self.assertFalse(zipline.sim.exception) diff --git a/zipline/utils/test_utils.py b/zipline/utils/test_utils.py index 80e243ed..cf9924da 100644 --- a/zipline/utils/test_utils.py +++ b/zipline/utils/test_utils.py @@ -1,7 +1,7 @@ import zmq import zipline.protocol as zp -def drain_zipline(test): +def drain_zipline(test, zipline): assert test.ctx, "method expects a valid zmq context" assert test.zipline_test_config, "method expects a valid test config" assert isinstance(test.zipline_test_config, dict) @@ -24,11 +24,18 @@ def drain_zipline(test): len(update['payload']['daily_perf']['transactions']) del test.receiver + + # some processes will exit after the message stream is + # finished. We block here to avoid collisions with subsequent + # ziplines. + for process in zipline.sim.subprocesses: + process.join() + return output, transaction_count def assert_single_position(test, zipline): - output, transaction_count = drain_zipline(test) + output, transaction_count = drain_zipline(test, zipline) test.assertTrue(zipline.sim.ready()) test.assertFalse(zipline.sim.exception)