From 5fccade75725fb82d3fb96d501f91ffea1d5b3f9 Mon Sep 17 00:00:00 2001 From: Claudio-Daniel Freire Date: Fri, 22 Jul 2011 10:57:38 +0200 Subject: [PATCH] Various fixes: - Parallelization fix: sync before post-actions - Fix port randomization in PL tests --- src/nepi/core/testbed_impl.py | 4 ++++ src/nepi/testbeds/planetlab/application.py | 21 +++++++++++++++----- src/nepi/util/parallel.py | 3 +++ test/testbeds/planetlab/execute.py | 3 ++- test/testbeds/planetlab/integration.py | 3 ++- test/testbeds/planetlab/integration_cross.py | 4 +++- test/testbeds/planetlab/integration_multi.py | 4 +++- test/testbeds/planetlab/integration_ns3.py | 3 ++- 8 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/nepi/core/testbed_impl.py b/src/nepi/core/testbed_impl.py index 465a557e..84cab891 100644 --- a/src/nepi/core/testbed_impl.py +++ b/src/nepi/core/testbed_impl.py @@ -257,6 +257,10 @@ class TestbedController(execute.TestbedController): else: logger.debug("Performing %s on %s", action, guid) perform_action(guid) + + # sync + if runner: + runner.sync() # post hook if poststep: diff --git a/src/nepi/testbeds/planetlab/application.py b/src/nepi/testbeds/planetlab/application.py index 7cdd7233..5dcd263e 100644 --- a/src/nepi/testbeds/planetlab/application.py +++ b/src/nepi/testbeds/planetlab/application.py @@ -483,7 +483,7 @@ class Dependency(object): # Install application try: self._popen_ssh_command( - "cd %(home)s && cd build && ( %(command)s ) > ${HOME}/%(home)s/installlog 2>&1 || ( tail ${HOME}/%(home)s/installlog >&2 && false )" % \ + "cd %(home)s && cd build && ( %(command)s ) > ${HOME}/%(home)s/installlog 2>&1 || ( tail ${HOME}/%(home)s/{install,build}log >&2 && false )" % \ { 'command' : self._replace_paths(self.install), 'home' : server.shell_escape(self.home_path), @@ -804,10 +804,21 @@ class NS3Dependency(Dependency): " test -f lib/libns3.so " " ) || ( " # Not working, rebuild - "wget -q -c -O pybindgen-src.zip %(pybindgen_source_url)s && " # continue, to exploit the case when it has already been dl'ed - "wget -q -c -O pygccxml-1.0.0.zip %(pygccxml_source_url)s && " - "wget -q -c -O passfd-src.tar.gz %(passfd_source_url)s && " - "wget -q -c -O ns3-src.tar.gz %(ns3_source_url)s && " + # Archive SHA1 sums to check + "echo '7158877faff2254e6c094bf18e6b4283cac19137 pygccxml-1.0.0.zip' > archive_sums.txt && " + "echo 'ddc7c5d288e1bacb1307114878956762c5146fac pybindgen-src.zip' >> archive_sums.txt && " + " ( " # check existing files + " sha1sum -c archive_sums.txt && " + " test -f passfd-src.tar.gz && " + " test -f ns3-src.tar.gz " + " ) || ( " # nope? re-download + " rm -f pybindgen-src.zip pygccxml-1.0.0.zip passfd-src.tar.gz ns3-src.tar.gz && " + " wget -q -c -O pybindgen-src.zip %(pybindgen_source_url)s && " # continue, to exploit the case when it has already been dl'ed + " wget -q -c -O pygccxml-1.0.0.zip %(pygccxml_source_url)s && " + " wget -q -c -O passfd-src.tar.gz %(passfd_source_url)s && " + " wget -q -c -O ns3-src.tar.gz %(ns3_source_url)s && " + " sha1sum -c archive_sums.txt " # Check SHA1 sums when applicable + " ) && " "unzip -n pybindgen-src.zip && " # Do not overwrite files, to exploit the case when it has already been built "unzip -n pygccxml-1.0.0.zip && " "mkdir -p ns3-src && " diff --git a/src/nepi/util/parallel.py b/src/nepi/util/parallel.py index 15e1bb2a..b5869b9c 100644 --- a/src/nepi/util/parallel.py +++ b/src/nepi/util/parallel.py @@ -61,6 +61,9 @@ class ParallelMap(object): if self.delayed_exceptions: typ,val,loc = self.delayed_exceptions[0] raise typ,val,loc + + def sync(self): + self.queue.join() def worker(self): while True: diff --git a/test/testbeds/planetlab/execute.py b/test/testbeds/planetlab/execute.py index 15e69b7e..137b2585 100755 --- a/test/testbeds/planetlab/execute.py +++ b/test/testbeds/planetlab/execute.py @@ -25,7 +25,7 @@ class PlanetLabExecuteTestCase(unittest.TestCase): def setUp(self): self.root_dir = tempfile.mkdtemp() - self.port_base = self.port_base + 100 + self.__class__.port_base = self.port_base + 100 def tearDown(self): try: @@ -52,6 +52,7 @@ class PlanetLabExecuteTestCase(unittest.TestCase): instance.defer_configure("authUser", pl_user) instance.defer_configure("authPass", pl_pwd) instance.defer_configure("plcHost", plchost) + instance.defer_configure("tapPortBase", self.port_base) return instance diff --git a/test/testbeds/planetlab/integration.py b/test/testbeds/planetlab/integration.py index 8163a72b..b5b28370 100755 --- a/test/testbeds/planetlab/integration.py +++ b/test/testbeds/planetlab/integration.py @@ -29,7 +29,7 @@ class PlanetLabIntegrationTestCase(unittest.TestCase): def setUp(self): self.root_dir = tempfile.mkdtemp() - self.port_base = self.port_base + 100 + self.__class__.port_base = self.port_base + 100 def tearDown(self): try: @@ -57,6 +57,7 @@ class PlanetLabIntegrationTestCase(unittest.TestCase): pl_desc.set_attribute_value("authUser", pl_user) pl_desc.set_attribute_value("authPass", pl_pwd) pl_desc.set_attribute_value("plcHost", plchost) + pl_desc.set_attribute_value("tapPortBase", self.port_base) return pl_desc, exp_desc diff --git a/test/testbeds/planetlab/integration_cross.py b/test/testbeds/planetlab/integration_cross.py index 5477911e..e20ad973 100755 --- a/test/testbeds/planetlab/integration_cross.py +++ b/test/testbeds/planetlab/integration_cross.py @@ -33,7 +33,7 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase): def setUp(self): self.root_dir = tempfile.mkdtemp() - self.port_base = self.port_base + 100 + self.__class__.port_base = self.port_base + 100 def tearDown(self): try: @@ -66,6 +66,7 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase): pl_desc.set_attribute_value("authUser", pl_user) pl_desc.set_attribute_value("authPass", pl_pwd) pl_desc.set_attribute_value("plcHost", plchost1) + pl_desc.set_attribute_value("tapPortBase", self.port_base) pl_desc2 = exp_desc.add_testbed_description(pl_provider) pl_desc2.set_attribute_value("homeDirectory", self.root_dir+"v2") @@ -74,6 +75,7 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase): pl_desc2.set_attribute_value("authUser", pl_user) pl_desc2.set_attribute_value("authPass", pl_pwd) pl_desc2.set_attribute_value("plcHost", plchost2) + pl_desc2.set_attribute_value("tapPortBase", self.port_base+100) return pl_desc, pl_desc2, exp_desc diff --git a/test/testbeds/planetlab/integration_multi.py b/test/testbeds/planetlab/integration_multi.py index eaa05431..b8e85276 100755 --- a/test/testbeds/planetlab/integration_multi.py +++ b/test/testbeds/planetlab/integration_multi.py @@ -33,7 +33,7 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase): def setUp(self): self.root_dir = tempfile.mkdtemp() - self.port_base = self.port_base + 100 + self.__class__.port_base = self.port_base + 100 def tearDown(self): try: @@ -66,6 +66,7 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase): pl_desc.set_attribute_value("authUser", pl_user) pl_desc.set_attribute_value("authPass", pl_pwd) pl_desc.set_attribute_value("plcHost", plchost1) + pl_desc.set_attribute_value("tapPortBase", self.port_base) pl_desc2 = exp_desc.add_testbed_description(pl_provider) pl_desc2.set_attribute_value("homeDirectory", self.root_dir+"v2") @@ -74,6 +75,7 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase): pl_desc2.set_attribute_value("authUser", pl_user) pl_desc2.set_attribute_value("authPass", pl_pwd) pl_desc2.set_attribute_value("plcHost", plchost2) + pl_desc.set_attribute_value("tapPortBase", self.port_base+100) return pl_desc, pl_desc2, exp_desc diff --git a/test/testbeds/planetlab/integration_ns3.py b/test/testbeds/planetlab/integration_ns3.py index 5671f1ab..80914683 100755 --- a/test/testbeds/planetlab/integration_ns3.py +++ b/test/testbeds/planetlab/integration_ns3.py @@ -28,7 +28,7 @@ class PlanetLabCrossIntegrationTestCase(unittest.TestCase): def setUp(self): self.root_dir = tempfile.mkdtemp() - self.port_base = self.port_base + 100 + self.__class__.port_base = self.port_base + 100 def tearDown(self): try: @@ -56,6 +56,7 @@ class PlanetLabCrossIntegrationTestCase(unittest.TestCase): pl_desc.set_attribute_value("authUser", pl_user) pl_desc.set_attribute_value("authPass", pl_pwd) pl_desc.set_attribute_value("plcHost", plchost) + pl_desc.set_attribute_value("tapPortBase", self.port_base) return pl_desc, exp_desc -- 2.43.0