[Libvirt-cim] [PATCH] [TEST] #2 Add timestamps to main.py to calculate run time of tests

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Tue Oct 6 11:44:09 UTC 2009


The total execution time is getting printed twice.
Once in the summary and the second time at the bottom of the test run.
We can remove the total execution time printed at the bottom of the test 
run.
Otherwise looks good.

Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1254421148 25200
> # Node ID d7e6caafb254ada1c41307ed218e753f781cf512
> # Parent  e627b9efe5ebdb776baef0c504706fb03d1ac0e0
> [TEST] #2 Add timestamps to main.py to calculate run time of tests
>
> Updates:
>   -Add deliniation between mins, sec, etc.
>   -Add total execution time to top of test report
>
> These changes allow the user to specify the --print-exec-time flag, which will
> print the execution time of each test.  If this flag isn't specified, the
> total run time of the test is still printed.
>
> Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>
>
> diff -r e627b9efe5eb -r d7e6caafb254 suites/libvirt-cim/lib/XenKvmLib/reporting.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/reporting.py	Thu Oct 01 10:37:39 2009 -0700
> +++ b/suites/libvirt-cim/lib/XenKvmLib/reporting.py	Thu Oct 01 11:19:08 2009 -0700
> @@ -125,7 +125,9 @@
>
>      fd = open(log_file, "r")
>
> +    exec_time = "Unknown"
>      run_output = ""
> +
>      for line in fd.xreadlines():
>          for type, val in rvals.iteritems():
>              if type in line:
> @@ -133,11 +135,14 @@
>                      continue
>                  rvals[type] += 1
>                  tstr[type] += "%s" % line
> +
> +        if line.find("Total test execution") >= 0:
> +           exec_time = line 
>          run_output += line
>
>      fd.close()
>
> -    return rvals, tstr, run_output
> +    return rvals, tstr, run_output, exec_time
>
>  def build_report_body(rvals, tstr, div):
>      results = ""
> @@ -168,13 +173,13 @@
>
>      divider = "=================================================\n"
>
> -    rvals, tstr, run_output = parse_run_output(log_file)
> +    rvals, tstr, run_output, exec_time = parse_run_output(log_file)
>
>      res, res_total, test_block = build_report_body(rvals, tstr, divider)
>
> -    report = divider + heading + "\n" + divider + sys_env + divider + res \
> -             + res_total + divider + test_block + "Full report:\n" \
> -             + run_output
> +    report = divider + heading + "\n" + divider + sys_env + exec_time \
> +             + divider + res + res_total + divider + test_block \
> +             + "Full report:\n" + run_output
>
>      fd = open(log_file, "w")
>      rc = fd.write(report)
> diff -r e627b9efe5eb -r d7e6caafb254 suites/libvirt-cim/main.py
> --- a/suites/libvirt-cim/main.py	Thu Oct 01 10:37:39 2009 -0700
> +++ b/suites/libvirt-cim/main.py	Thu Oct 01 11:19:08 2009 -0700
> @@ -22,6 +22,7 @@
>  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
>  #
>
> +from time import time
>  from optparse import OptionParser
>  import os
>  import sys
> @@ -64,6 +65,9 @@
>                    help="Duplicate the output to stderr")
>  parser.add_option("--report", dest="report",
>                    help="Send report using mail info: --report=<recipient addr>")
> +parser.add_option("--print-exec-time", action="store_true", 
> +                  dest="print_exec_time",
> +                  help="Print execution time of each test")
>
>  TEST_SUITE = 'cimtest'
>  CIMTEST_RCFILE = '%s/.cimtestrc' % os.environ['HOME']
> @@ -146,6 +150,30 @@
>
>      return PASS
>
> +def print_exec_time(testsuite, exec_time, prefix=None):
> +
> +    #Convert run time from seconds to hours
> +    tmp = exec_time / (60 * 60)
> +    h = int(tmp)
> +
> +    #Subtract out hours and convert remainder to minutes
> +    tmp = (tmp - h) * 60 
> +    m = int(tmp)
> +
> +    #Subtract out minutes and convert remainder to seconds
> +    tmp = (tmp - m) * 60 
> +    s = int(tmp)
> +
> +    #Subtract out seconds and convert remainder to milliseconds
> +    tmp = (tmp - s) * 1000
> +    msec = int(tmp)
> +
> +    if prefix is None:
> +        prefix = " "
> +
> +    testsuite.debug("%s %sh | %smin | %ssec | %smsec" %
> +                    (prefix, h, m, s, msec)) 
> +
>  def main():
>      (options, args) = parser.parse_args()
>      to_addr = None
> @@ -213,6 +241,8 @@
>
>      print "\nTesting " + options.virt + " hypervisor"
>
> +    test_run_time_total = 0
> +
>      for test in test_list: 
>          testsuite.debug(div) 
>          t_path = os.path.join(TEST_SUITE, test['group'])
> @@ -222,13 +252,24 @@
>                                                    options.virt, dbg,
>                                                    options.t_url)
>          cmd = cdto + ' && ' + ' ' + run
> +        start_time = time()
>          status, output = commands.getstatusoutput(cmd)
> +        end_time = time()
>
>          os_status = os.WEXITSTATUS(status)
>
>          testsuite.print_results(test['group'], test['test'], os_status, output)
>
> +        exec_time = end_time - start_time
> +        test_run_time_total = test_run_time_total + exec_time
> +
> +        if options.print_exec_time:
> +            print_exec_time(testsuite, exec_time, "  Test execution time:")
> +
>      testsuite.debug("%s\n" % div) 
> +    print_exec_time(testsuite, test_run_time_total, "Total test execution:")
> +    testsuite.debug("\n") 
> +
>      testsuite.finish()
>
>      status = cleanup_env(options.ip, options.virt)
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>   

-- 
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list