From 8ad475645e1fe47c3c0a2eb8afb19a2ff79bf08e Mon Sep 17 00:00:00 2001 From: Claudio-Daniel Freire Date: Wed, 3 Aug 2011 18:33:58 +0200 Subject: [PATCH] Fix shutdown to use the proper stop procedure (schedule the stop event thread-safely) and wait for the simulator thread to stop. --- src/nepi/testbeds/ns3/execute.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/nepi/testbeds/ns3/execute.py b/src/nepi/testbeds/ns3/execute.py index 15acf133..ce93a268 100644 --- a/src/nepi/testbeds/ns3/execute.py +++ b/src/nepi/testbeds/ns3/execute.py @@ -164,23 +164,17 @@ class TestbedController(testbed_impl.TestbedController): # graceful shutdown of locally-implemented objects element.Cleanup() if self.ns3: - self.ns3.Simulator.Stop() + if not self.ns3.Simulator.IsFinished(): + self.stop() - # Wait for it to stop, with a 30s timeout - for i in xrange(300): - if self.ns3.Simulator.IsFinished(): - break - time.sleep(0.1) - #self._stop_simulation("0s") - - self._elements.clear() - - if self.ns3: # TODO!!!! SHOULD WAIT UNTIL THE THREAD FINISHES - # if self._simulator_thread: - # self._simulator_thread.join() + if self._simulator_thread: + self._simulator_thread.join() + self.ns3.Simulator.Destroy() + self._elements.clear() + self._ns3 = None sys.stdout.flush() sys.stderr.flush() -- 2.47.0