X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FTestPlc.py;h=f2fe14b5c120b53976ed931ca69ece97ca16ec0d;hb=95ace562fefce4140e955f86467c56e403d5654f;hp=490ddd7b012c05cc78064fd1f4e2d496c5e4551b;hpb=c05187b73f49c2ec7361f20a062bb17e33dbe5ed;p=tests.git diff --git a/system/TestPlc.py b/system/TestPlc.py index 490ddd7..f2fe14b 100644 --- a/system/TestPlc.py +++ b/system/TestPlc.py @@ -38,14 +38,11 @@ def standby_generic (func): return actual def node_mapper (method): - def actual(self): + def actual(self,*args, **kwds): overall=True node_method = TestNode.__dict__[method.__name__] - for site_spec in self.plc_spec['sites']: - test_site = TestSite (self,site_spec) - for node_spec in site_spec['nodes']: - test_node = TestNode (self,test_site,node_spec) - if not node_method(test_node): overall=False + for test_node in self.all_node(): + if not node_method(test_node, *args, **kwds): overall=False return overall # restore the doc text actual.__doc__=method.__doc__ @@ -101,7 +98,7 @@ class TestPlc: 'ssh_node_debug@1', 'plcsh_stress_test@1', SEP, 'ssh_node_boot@1', 'ssh_slice', 'check_initscripts', SEP, 'ssh_slice_sfa@1', 'sfa_delete_slice@1', 'sfa_delete_user@1', SEPSFA, - 'check_tcp', SEP, + 'check_tcp', 'check_netflow', SEP, 'force_gather_logs', SEP, ] other_steps = [ @@ -571,7 +568,7 @@ class TestPlc: pkgs_list.append ("slicerepo-%s"%nodefamily) pkgs_list.append ("myplc") pkgs_list.append ("noderepo-%s"%nodefamily) - pkgs_list.append ("bootstrapfs-%s-plain"%nodefamily) + pkgs_list.append ("nodeimage-%s-plain"%nodefamily) pkgs_string=" ".join(pkgs_list) return self.yum_install (pkgs_list) @@ -846,6 +843,15 @@ class TestPlc: overall=False return overall + # a list of TestNode objs + def all_nodes (self): + nodes=[] + for site_spec in self.plc_spec['sites']: + test_site = TestSite (self,site_spec) + for node_spec in site_spec['nodes']: + nodes.append(TestNode (self,test_site,node_spec)) + return nodes + # return a list of tuples (nodename,qemuname) def all_node_infos (self) : node_infos = [] @@ -911,7 +917,7 @@ class TestPlc: return True def nodes_booted(self): - return self.nodes_check_boot_state('boot',timeout_minutes=30,silent_minutes=20) + return self.nodes_check_boot_state('boot',timeout_minutes=30,silent_minutes=28) def check_nodes_ssh(self,debug,timeout_minutes,silent_minutes,period=15): # compute timeout @@ -960,11 +966,11 @@ class TestPlc: def ssh_node_debug(self): "Tries to ssh into nodes in debug mode with the debug ssh key" - return self.check_nodes_ssh(debug=True,timeout_minutes=10,silent_minutes=5) + return self.check_nodes_ssh(debug=True,timeout_minutes=10,silent_minutes=8) def ssh_node_boot(self): "Tries to ssh into nodes in production mode with the root ssh key" - return self.check_nodes_ssh(debug=False,timeout_minutes=40,silent_minutes=15) + return self.check_nodes_ssh(debug=False,timeout_minutes=40,silent_minutes=35) @node_mapper def qemu_local_init (self): @@ -1111,6 +1117,31 @@ class TestPlc: overall=False return overall + # painfully enough, we need to allow for some time as netflow might show up last + def check_netflow (self): + "all nodes: check that the netflow slice is alive" + return self.check_systemslice ('netflow') + + # we have the slices up already here, so it should not take too long + def check_systemslice (self, slicename, timeout_minutes=5, period=15): + timeout = datetime.datetime.now()+datetime.timedelta(minutes=timeout_minutes) + test_nodes=self.all_nodes() + while test_nodes: + for test_node in test_nodes: + if test_node.check_systemslice (slicename): + utils.header ("ok") + test_nodes.remove(test_node) + else: + print '.', + if not test_nodes: + return True + if datetime.datetime.now () > timeout: + for test_node in test_nodes: + utils.header ("can't find system slice %s in %s"%(slicename,test_node.name())) + return False + time.sleep(period) + return True + def plcsh_stress_test (self): "runs PLCAPI stress test, that checks Add/Update/Delete on all types - preserves contents" # install the stress-test in the plc image