Commit 9410d0f5 authored by Tom Niget's avatar Tom Niget

Add more resource cleanups to remove ResourceWarnings

parent 69c4e60a
...@@ -266,8 +266,8 @@ def main(): ...@@ -266,8 +266,8 @@ def main():
def call(cmd): def call(cmd):
logging.debug('%r', cmd) logging.debug('%r', cmd)
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, with subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE) stderr=subprocess.PIPE) as p:
stdout, stderr = p.communicate() stdout, stderr = p.communicate()
if p.returncode: if p.returncode:
raise EnvironmentError("%r failed with error %u\n%s" raise EnvironmentError("%r failed with error %u\n%s"
......
...@@ -42,6 +42,7 @@ class TestRegistryClientInteract(unittest.TestCase): ...@@ -42,6 +42,7 @@ class TestRegistryClientInteract(unittest.TestCase):
def tearDown(self): def tearDown(self):
self.server.proc.terminate() self.server.proc.terminate()
self.server.proc.__exit__()
def test_1_main(self): def test_1_main(self):
""" a client interact a server, no re6stnet node test basic function""" """ a client interact a server, no re6stnet node test basic function"""
......
...@@ -62,7 +62,7 @@ class NetManager: ...@@ -62,7 +62,7 @@ class NetManager:
""" """
for reg, nodes in self.registries.items(): for reg, nodes in self.registries.items():
for node in nodes: for node in nodes:
app0 = node.Popen(["ping", "-c", "1", reg.ip], stdout=PIPE) with node.Popen(["ping", "-c", "1", reg.ip], stdout=PIPE) as app0:
ret = app0.wait() ret = app0.wait()
if ret: if ret:
raise ConnectableError( raise ConnectableError(
......
...@@ -136,6 +136,7 @@ class Re6stRegistry: ...@@ -136,6 +136,7 @@ class Re6stRegistry:
try: try:
logging.debug("teminate process %s", self.proc.pid) logging.debug("teminate process %s", self.proc.pid)
self.proc.destroy() self.proc.destroy()
self.proc.__exit__()
except: except:
pass pass
...@@ -262,6 +263,7 @@ class Re6stNode: ...@@ -262,6 +263,7 @@ class Re6stNode:
"""stop running re6stnet process""" """stop running re6stnet process"""
logging.debug("%s teminate process %s", self.name, self.proc.pid) logging.debug("%s teminate process %s", self.name, self.proc.pid)
self.proc.destroy() self.proc.destroy()
self.proc.__exit__()
def __del__(self): def __del__(self):
"""teminate process and rm temp dir""" """teminate process and rm temp dir"""
......
...@@ -31,6 +31,14 @@ def deploy_re6st(nm, recreate=False): ...@@ -31,6 +31,14 @@ def deploy_re6st(nm, recreate=False):
nodes.append(node) nodes.append(node)
return nodes, registries return nodes, registries
def clean_re6st(nodes, registries):
for node in nodes:
node.node.destroy()
node.stop()
for reg in registries:
reg.__del__()
def wait_stable(nodes, timeout=240): def wait_stable(nodes, timeout=240):
"""try use ping6 from each node to the other until ping success to all the """try use ping6 from each node to the other until ping success to all the
other nodes other nodes
...@@ -94,12 +102,14 @@ class TestNet(unittest.TestCase): ...@@ -94,12 +102,14 @@ class TestNet(unittest.TestCase):
"""create a network in a net segment, test the connectivity by ping """create a network in a net segment, test the connectivity by ping
""" """
nm = network_build.net_route() nm = network_build.net_route()
nodes, _ = deploy_re6st(nm) nodes, registries = deploy_re6st(nm)
wait_stable(nodes, 40) wait_stable(nodes, 10)
time.sleep(10) time.sleep(10)
self.assertTrue(wait_stable(nodes, 30), " ping test failed") self.assertTrue(wait_stable(nodes, 10), " ping test failed")
clean_re6st(nodes, registries)
@unittest.skip("usually failed due to UPnP problem") @unittest.skip("usually failed due to UPnP problem")
def test_reboot_one_machine(self): def test_reboot_one_machine(self):
...@@ -107,9 +117,9 @@ class TestNet(unittest.TestCase): ...@@ -107,9 +117,9 @@ class TestNet(unittest.TestCase):
then test if network recover, this test seems always failed then test if network recover, this test seems always failed
""" """
nm = network_build.net_demo() nm = network_build.net_demo()
nodes, _ = deploy_re6st(nm) nodes, registries = deploy_re6st(nm)
wait_stable(nodes, 100) wait_stable(nodes, 10)
# stop on machine randomly # stop on machine randomly
index = int(random.random() * 7) + 1 index = int(random.random() * 7) + 1
...@@ -119,16 +129,18 @@ class TestNet(unittest.TestCase): ...@@ -119,16 +129,18 @@ class TestNet(unittest.TestCase):
machine.run("-i" + machine.node.iface.name) machine.run("-i" + machine.node.iface.name)
logging.info("restart %s", machine.name) logging.info("restart %s", machine.name)
self.assertTrue(wait_stable(nodes, 400), "network can't recover") self.assertTrue(wait_stable(nodes, 10), "network can't recover")
clean_re6st(nodes, registries)
def test_reboot_one_machine_router(self): def test_reboot_one_machine_router(self):
"""create a network router, wait the net stable, reboot on machine, """create a network router, wait the net stable, reboot on machine,
then test if network recover, then test if network recover,
""" """
nm = network_build.net_route() nm = network_build.net_route()
nodes, _ = deploy_re6st(nm) nodes, registries = deploy_re6st(nm)
wait_stable(nodes, 40) wait_stable(nodes, 10)
# stop on machine randomly # stop on machine randomly
index = int(random.random() * 2) + 1 index = int(random.random() * 2) + 1
...@@ -138,7 +150,9 @@ class TestNet(unittest.TestCase): ...@@ -138,7 +150,9 @@ class TestNet(unittest.TestCase):
machine.run("-i" + machine.node.iface.name) machine.run("-i" + machine.node.iface.name)
logging.info("restart %s", machine.name) logging.info("restart %s", machine.name)
self.assertTrue(wait_stable(nodes, 100), "network can't recover") self.assertTrue(wait_stable(nodes, 10), "network can't recover")
clean_re6st(nodes, registries)
......
...@@ -103,7 +103,7 @@ def decrypt(pkey, incontent): ...@@ -103,7 +103,7 @@ def decrypt(pkey, incontent):
with open("node.key", 'w') as f: with open("node.key", 'w') as f:
f.write(pkey.decode()) f.write(pkey.decode())
args = "openssl rsautl -decrypt -inkey node.key".split() args = "openssl rsautl -decrypt -inkey node.key".split()
p = subprocess.Popen( with subprocess.Popen(
args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as p:
outcontent, err = p.communicate(incontent) outcontent, err = p.communicate(incontent)
return outcontent return outcontent
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment