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

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Fri Sep 11 12:10:26 UTC 2009


Good one.

Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1252022738 25200
> # Node ID 2d852ba88fd24102ec988145e464a13f5faae5c0
> # Parent  db3af9cb2c9affb0a32a8ea3a2c23648c5efe91e
> [TEST] Add timestamps to main.py to calculate run time of tests
>
> 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 db3af9cb2c9a -r 2d852ba88fd2 suites/libvirt-cim/main.py
> --- a/suites/libvirt-cim/main.py	Thu Sep 03 13:03:52 2009 -0700
> +++ b/suites/libvirt-cim/main.py	Thu Sep 03 17:05:38 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,27 @@
>
>      return PASS
>
> +def print_exec_time(testsuite, exec_time):
> +
> +    #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)
> +
> +    testsuite.debug("  Execution time: %sh %smin %ssec %smsec" %
> +                    (h, m, s, msec)) 
>   
You can remove the blank space from the above log, so that the message 
is aligned with the test case log messages.
You can also include some delimiters between the time values to make 
more clear, also we can print the hr , min, sec in H, MIN, SEC would be 
good.
something like this:

testsuite.debug(" ---------------------------")
testsuite.debug("Execution time: %sh | %smin |%ssec |%smsec|" %
(h, m, s, msec))

This will print the information in the following format.
Starting test suite: libvirt-cim

--------------------------------------------------------------------
ComputerSystem - 04_defineStartVS.py: PASS
---------------------------
Execution time: 0H | 0MIN |1SEC |638MSEC|
--------------------------------------------------------------------

Total test execution:
---------------------------
Execution time: 0H | 0MIN |1SEC |638MSEC|
Testing KVM hypervisor
--------------------------------------------------------------------
ComputerSystem - 04_defineStartVS.py: PASS
---------------------------
Execution time: 0h | 0min |1sec |663msec|
--------------------------------------------------------------------

Total test execution:
---------------------------
Execution time: 0h | 0min |1sec |663msec|

Do we require milliseconds information ?
Can we print the total time as part of the Summary information in the 
test run report, otherwise we will have to go to the bottom of the 
results to know the total time details.

> +
>  def main():
>      (options, args) = parser.parse_args()
>      to_addr = None
> @@ -213,6 +238,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 +249,25 @@
>                                                    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)
> +
>      testsuite.debug("%s\n" % div) 
> +    testsuite.debug("Total test execution: ") 
> +    print_exec_time(testsuite, test_run_time_total)
> +    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