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

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Wed Oct 7 09:01:26 UTC 2009


+1

Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1254854080 25200
> # Node ID 324d7caaa53c8a3287053155342fdbdea85b1209
> # Parent  be6620706891d4ff7863ad7e9f7e14ae2c71b6d0
> [TEST] #3 Add timestamps to main.py to calculate run time of tests
>
> Updates from 2 to 3:
>   -Only print execution time if --print-exec-time is specified
>   -In the test run summary, only print the execution time in the report header
>
> Updates from 1 to 2:
>   -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 be6620706891 -r 324d7caaa53c suites/libvirt-cim/lib/XenKvmLib/reporting.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/reporting.py	Tue Oct 06 10:46:31 2009 -0700
> +++ b/suites/libvirt-cim/lib/XenKvmLib/reporting.py	Tue Oct 06 11:34:40 2009 -0700
> @@ -125,7 +125,9 @@
>
>      fd = open(log_file, "r")
>
> +    exec_time = "Total test execution: Unknown\n"
>      run_output = ""
> +
>      for line in fd.xreadlines():
>          for type, val in rvals.iteritems():
>              if type in line:
> @@ -133,11 +135,15 @@
>                      continue
>                  rvals[type] += 1
>                  tstr[type] += "%s" % line
> -        run_output += line
> +
> +        if line.find("Total test execution") >= 0:
> +            exec_time = line 
> +        else:
> +            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 +174,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 be6620706891 -r 324d7caaa53c suites/libvirt-cim/main.py
> --- a/suites/libvirt-cim/main.py	Tue Oct 06 10:46:31 2009 -0700
> +++ b/suites/libvirt-cim/main.py	Tue Oct 06 11:34:40 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,26 @@
>                                                    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) 
> +
> +    if options.print_exec_time:
> +        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