From 552a2b6824a9e07fa6a5189bc7404fed12378d55 Mon Sep 17 00:00:00 2001 From: Claudio-Daniel Freire Date: Tue, 3 May 2011 13:05:55 +0200 Subject: [PATCH] Sometimes when controller process cleanup happens concurrently with testbed teardown, exceptions may ensue in shutil.rmtree. Just catch them and retry, sidestepping the issue. Proper synchronization is not easy, and not worth the amount of work for mere testing. --- test/core/integration.py | 7 ++++++- test/testbeds/netns/execute.py | 7 ++++++- test/testbeds/netns/integration.py | 7 ++++++- test/testbeds/ns3/execute.py | 7 ++++++- test/testbeds/ns3/execute2.py | 7 ++++++- test/testbeds/ns3/integration.py | 7 ++++++- test/testbeds/planetlab/execute.py | 7 ++++++- test/testbeds/planetlab/integration.py | 7 ++++++- test/util/server.py | 8 +++++++- 9 files changed, 55 insertions(+), 9 deletions(-) diff --git a/test/core/integration.py b/test/core/integration.py index d58dc863..3618c870 100755 --- a/test/core/integration.py +++ b/test/core/integration.py @@ -25,7 +25,12 @@ class ExecuteTestCase(unittest.TestCase): self.root_dir = tempfile.mkdtemp() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) def make_testbed(self, exp_desc, testbed_id, testbed_version): provider = FactoriesProvider(testbed_id, testbed_version) diff --git a/test/testbeds/netns/execute.py b/test/testbeds/netns/execute.py index 319de37f..d37d84f1 100755 --- a/test/testbeds/netns/execute.py +++ b/test/testbeds/netns/execute.py @@ -164,7 +164,12 @@ class NetnsExecuteTestCase(unittest.TestCase): instance.shutdown() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) if __name__ == '__main__': unittest.main() diff --git a/test/testbeds/netns/integration.py b/test/testbeds/netns/integration.py index 16f336c0..a18cdb08 100755 --- a/test/testbeds/netns/integration.py +++ b/test/testbeds/netns/integration.py @@ -187,7 +187,12 @@ class NetnsIntegrationTestCase(unittest.TestCase): controller.shutdown() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) if __name__ == '__main__': unittest.main() diff --git a/test/testbeds/ns3/execute.py b/test/testbeds/ns3/execute.py index ffefbfcf..be7a432f 100755 --- a/test/testbeds/ns3/execute.py +++ b/test/testbeds/ns3/execute.py @@ -78,7 +78,12 @@ class Ns3ExecuteTestCase(unittest.TestCase): instance.shutdown() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) if __name__ == '__main__': unittest.main() diff --git a/test/testbeds/ns3/execute2.py b/test/testbeds/ns3/execute2.py index 1a24e709..52ac5264 100755 --- a/test/testbeds/ns3/execute2.py +++ b/test/testbeds/ns3/execute2.py @@ -114,7 +114,12 @@ class Ns3ExecuteTestCase(unittest.TestCase): instance.shutdown() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) if __name__ == '__main__': unittest.main() diff --git a/test/testbeds/ns3/integration.py b/test/testbeds/ns3/integration.py index 61df6ae0..f0926da9 100755 --- a/test/testbeds/ns3/integration.py +++ b/test/testbeds/ns3/integration.py @@ -152,7 +152,12 @@ class Ns3IntegrationTestCase(unittest.TestCase): controller.shutdown() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) if __name__ == '__main__': unittest.main() diff --git a/test/testbeds/planetlab/execute.py b/test/testbeds/planetlab/execute.py index 4d0fa75d..627e256a 100755 --- a/test/testbeds/planetlab/execute.py +++ b/test/testbeds/planetlab/execute.py @@ -17,7 +17,12 @@ class PlanetLabExecuteTestCase(unittest.TestCase): self.root_dir = tempfile.mkdtemp() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) def make_instance(self): testbed_version = "01" diff --git a/test/testbeds/planetlab/integration.py b/test/testbeds/planetlab/integration.py index e7e34d3a..0edcb1e3 100755 --- a/test/testbeds/planetlab/integration.py +++ b/test/testbeds/planetlab/integration.py @@ -18,7 +18,12 @@ class PlanetLabIntegrationTestCase(unittest.TestCase): self.root_dir = tempfile.mkdtemp() def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) def make_experiment_desc(self): testbed_id = "planetlab" diff --git a/test/util/server.py b/test/util/server.py index f1bdd1c3..7e4c6f1c 100755 --- a/test/util/server.py +++ b/test/util/server.py @@ -9,6 +9,7 @@ import sys import tempfile import test_util import unittest +import time class ServerTestCase(unittest.TestCase): def setUp(self): @@ -161,7 +162,12 @@ class ServerTestCase(unittest.TestCase): self.assertEqual(reply, "Stopping server") def tearDown(self): - shutil.rmtree(self.root_dir) + try: + shutil.rmtree(self.root_dir) + except: + # retry + time.sleep(0.1) + shutil.rmtree(self.root_dir) if __name__ == '__main__': unittest.main() -- 2.43.0