new address
[tests.git] / system / TestMain.py
index 0d4e2a7..e5989e1 100755 (executable)
@@ -50,15 +50,18 @@ class TestMain:
             for (scope,steps) in scopes:
                 print '--------------------',scope
                 for step in [step for step in steps if TestPlc.valid_step(step)]:
+                    try:        (step,qualifier)=step.split('@')
+                    except:     pass
                     stepname=step
-                    if step.find("force_") == 0:
-                        stepname=step.replace("force_","")
-                        force=True
+                    for special in ['force']:
+                        stepname = stepname.replace(special+'_',"")
                     print '*',step,"\r",4*"\t",
                     try:
-                        print testplc_method_dict[stepname].__doc__
+                        doc=testplc_method_dict[stepname].__doc__
                     except:
-                        print "*** no doc found"
+                        doc=None
+                    if doc: print doc
+                    else:   print "*** no doc found"
 
     def run (self):
         self.init_steps()
@@ -105,7 +108,7 @@ steps refer to a method in TestPlc or to a step_* module
         parser.add_option("-k","--keep-going",action="store",dest="keep_going",default=False,
                           help="proceeds even if some steps are failing")
         parser.add_option("-D","--dbname",action="store",dest="dbname",default=None,
-                           help="Used by db_dump and db_restore")
+                           help="Used by plc_db_dump and plc_db_restore")
         parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False, 
                           help="Run in verbose mode")
         parser.add_option("-i","--interactive",action="store_true",dest="interactive",default=False,
@@ -113,7 +116,7 @@ steps refer to a method in TestPlc or to a step_* module
         parser.add_option("-n","--dry-run", action="store_true", dest="dry_run", default=False,
                           help="Show environment and exits")
         parser.add_option("-r","--restart-nm", action="store_true", dest="forcenm", default=False, 
-                          help="Force the NM to restart in check_slices step")
+                          help="Force the NM to restart in ssh_slices step")
         parser.add_option("-t","--trace", action="store", dest="trace_file", default=None,
                           #default="logs/trace-@TIME@.txt",
                           help="Trace file location")
@@ -301,7 +304,7 @@ steps refer to a method in TestPlc or to a step_* module
                     names.sort()
                     all_step_infos += [ ("%s.%s"%(step,name),module_dict[name],force,cross,qualifier) for name in names ]
                 except :
-                    print '********** step %s NOT FOUND -- ignored'%(step)
+                    utils.header("********** FAILED step %s (NOT FOUND) -- won't be run"%step)
                     traceback.print_exc()
                     overall_result = False
             
@@ -324,7 +327,7 @@ steps refer to a method in TestPlc or to a step_* module
 
         # do all steps on all plcs
         TIME_FORMAT="%H-%M-%S"
-        TRACE_FORMAT="TRACE: beg=%(beg)s end=%(end)s status=%(status)s step=%(stepname)s plc=%(plcname)s force=%(force)s\n"
+        TRACE_FORMAT="TRACE: %(plc_counter)d %(beg)s->%(end)s status=%(status)s step=%(stepname)s plc=%(plcname)s force=%(force)s\n"
         for (stepname,method,force,cross,qualifier) in all_step_infos:
             plc_counter=0
             for (spec,plc_obj) in all_plcs:
@@ -369,7 +372,7 @@ steps refer to a method in TestPlc or to a step_* module
                         continue
                     try:
                         force_msg=""
-                        if force and spec['failed_step']: force_msg=" (forced after %s has failed)"
+                        if force and spec['failed_step']: force_msg=" (forced after %s has failed)"%spec['failed_step']
                         utils.header("********** %d RUNNING step %s%s on plc %s"%(plc_counter,stepname,force_msg,plcname))
                         if not cross:   step_result = method(plc_obj)
                         else:           step_result = method(plc_obj,across_plcs)