X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FTestMain.py;h=3fa68163ba0a65a54fa9f88e085d617ec0668576;hb=86a4fa16fea07411dc6613750c10eb539fe453d9;hp=70fae6b4fe21c1cbe567fe9c9832e6c8a9703c65;hpb=d502e1d5482497fd083e028d21f25091a469355b;p=tests.git diff --git a/system/TestMain.py b/system/TestMain.py index 70fae6b..3fa6816 100755 --- a/system/TestMain.py +++ b/system/TestMain.py @@ -90,7 +90,8 @@ class TestMain: subversion_id = "Now using git -- version tracker broken" default_config = [ 'default' ] - default_rspec_styles = [ 'pl', 'pg' ] +# default_rspec_styles = [ 'pl', 'pg' ] + default_rspec_styles = [ 'pg' ] default_build_url = "git://git.onelab.eu/tests" @@ -173,10 +174,6 @@ steps refer to a method in TestPlc or to a step_* module help="Specify the set of hostnames for the boxes that host the nodes") parser.add_option("-N","--nodes",action="append", dest="ips_vnode", default=[], help="Specify the set of hostname/IP's to use for vnodes") - parser.add_option ('-X', "--lxc",action='store_true',dest='plcs_use_lxc',default=True, - help='use lxc-enabled plc boxes instead of vs-enabled ones') - parser.add_option ('-S', "--vs",action='store_false',dest='plcs_use_lxc', - help='use lxc-enabled plc boxes instead of vs-enabled ones') parser.add_option("-s","--size",action="store",type="int",dest="size",default=1, help="sets test size in # of plcs - default is 1") parser.add_option("-q","--qualifier",action="store",type="int",dest="qualifier",default=None, @@ -228,7 +225,6 @@ steps refer to a method in TestPlc or to a step_* module ('personality','arg-personality',"linux64",None), ('pldistro','arg-pldistro',"onelab",None), ('fcdistro','arg-fcdistro','f14',None), - ('plcs_use_lxc','arg-plcs-use-lxc',False,None), ) : # print 'handling',recname path=filename @@ -286,7 +282,7 @@ steps refer to a method in TestPlc or to a step_* module if self.options.list_steps: self.init_steps() self.list_steps() - return True + return 'SUCCESS' # steps if not self.options.steps: @@ -299,6 +295,7 @@ steps refer to a method in TestPlc or to a step_* module self.options.exclude = [ step.replace('-','_') for step in self.options.exclude ] self.options.ignore = [ step.replace('-','_') for step in self.options.ignore ] + # technicality, decorate known steps to produce the '_ignore' version TestPlc.create_ignore_steps() # exclude @@ -336,7 +333,6 @@ steps refer to a method in TestPlc or to a step_* module raise # provision on local substrate - if self.options.plcs_use_lxc: LocalSubstrate.local_substrate.rescope (plcs_on_vs=False, plcs_on_lxc=True) all_plc_specs = LocalSubstrate.local_substrate.provision(all_plc_specs,self.options) # remember substrate IP address(es) for next run @@ -346,7 +342,7 @@ steps refer to a method in TestPlc or to a step_* module ips_bplc_file.close() ips_vplc_file=open('arg-ips-vplc','w') for plc_spec in all_plc_specs: - ips_vplc_file.write("%s\n"%plc_spec['PLC_API_HOST']) + ips_vplc_file.write("%s\n"%plc_spec['settings']['PLC_API_HOST']) ips_vplc_file.close() # ditto for nodes ips_bnode_file=open('arg-ips-bnode','w') @@ -372,7 +368,7 @@ steps refer to a method in TestPlc or to a step_* module # pass options to utils as well utils.init_options(self.options) - overall_result = True + overall_result = 'SUCCESS' all_step_infos=[] for step in self.options.steps: if not TestPlc.valid_step(step): @@ -399,7 +395,7 @@ steps refer to a method in TestPlc or to a step_* module except : utils.header("********** FAILED step %s (NOT FOUND) -- won't be run"%step) traceback.print_exc() - overall_result = False + overall_result = 'FAILURE' if self.options.dry_run: self.show_env(self.options,"Dry run") @@ -441,7 +437,7 @@ steps refer to a method in TestPlc or to a step_* module skip_step=True elif answer in ['q','b']: # quit/bye print 'Exiting' - return + return 'FAILURE' elif answer in ['d']: # dry_run dry_run=self.options.dry_run self.options.dry_run=True @@ -469,20 +465,26 @@ steps refer to a method in TestPlc or to a step_* module else: step_result = method(plc_obj,across_plcs) if isinstance (step_result,Ignored): step_result=step_result.result - msg="OK" if step_result else "KO" + if step_result: + msg="OK" + else: + msg="KO" + # do not overwrite if FAILURE + if overall_result=='SUCCESS': + overall_result='IGNORED' utils.header('********** %d IGNORED (%s) step %s on %s'%(plc_counter,msg,stepname,plcname)) - status="I[%s]"%msg + status="%s[I]"%msg elif step_result: utils.header('********** %d SUCCESSFUL step %s on %s'%(plc_counter,stepname,plcname)) status="OK" else: - overall_result = False + overall_result = 'FAILURE' spec['failed_step'] = stepname utils.header('********** %d FAILED Step %s on %s (discarded from further steps)'\ %(plc_counter,stepname,plcname)) status="KO" except: - overall_result=False + overall_result='FAILURE' spec['failed_step'] = stepname traceback.print_exc() utils.header ('********** %d FAILED (exception) Step %s on %s (discarded from further steps)'\ @@ -512,19 +514,25 @@ steps refer to a method in TestPlc or to a step_* module return overall_result # wrapper to run, returns a shell-compatible result + # retcod: + # 0: SUCCESS + # 1: FAILURE + # 2: SUCCESS but some ignored steps failed + # 3: OTHER ERROR def main(self): try: success=self.run() - if success: - return 0 - else: - return 1 + if success == 'SUCCESS': return 0 + elif success == 'IGNORED': return 2 + else: return 1 except SystemExit: print 'Caught SystemExit' - raise + return 3 except: traceback.print_exc() - return 2 + return 3 if __name__ == "__main__": - sys.exit(TestMain().main()) + exit_code = TestMain().main() + print "TestMain exit code",exit_code + sys.exit(exit_code)