[test-suite] r264501 - lit: Log all executed commands in test.log

Chris Matthews via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 5 08:22:58 PDT 2016


Thank you!

> On Mar 25, 2016, at 9:05 PM, Matthias Braun via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Author: matze
> Date: Fri Mar 25 23:05:55 2016
> New Revision: 264501
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=264501&view=rev
> Log:
> lit: Log all executed commands in test.log
> 
> This should make all steps transparent and reproducible without using
> the lit tool.
> 
> This also changed hash.py to use the "-o" option of strip instead of
> using a shutil.copyfile() operation which would not be reproducible from
> the log file.
> 
> Modified:
>    test-suite/trunk/lit.cfg
>    test-suite/trunk/litsupport/codesize.py
>    test-suite/trunk/litsupport/hash.py
>    test-suite/trunk/litsupport/testplan.py
> 
> Modified: test-suite/trunk/lit.cfg
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/lit.cfg?rev=264501&r1=264500&r2=264501&view=diff
> ==============================================================================
> --- test-suite/trunk/lit.cfg (original)
> +++ test-suite/trunk/lit.cfg Fri Mar 25 23:05:55 2016
> @@ -1,6 +1,7 @@
> import site
> import os
> import json
> +import logging
> site.addsitedir(os.path.dirname(__file__))
> from litsupport import test
> 
> @@ -18,3 +19,13 @@ if previous_results_file:
>     config.previous_results = json.load(open(previous_results_file))
> else:
>     config.previous_results = None
> +
> +logger = logging.getLogger()
> +logger.setLevel(logging.DEBUG)
> +file_log = logging.FileHandler("%s/test.log" % config.test_source_root,
> +                               mode="w")
> +file_log.setLevel(logging.DEBUG)
> +logger.addHandler(file_log)
> +console_log = logging.StreamHandler()
> +console_log.setLevel(logging.WARNING)
> +logger.addHandler(console_log)
> 
> Modified: test-suite/trunk/litsupport/codesize.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/codesize.py?rev=264501&r1=264500&r2=264501&view=diff
> ==============================================================================
> --- test-suite/trunk/litsupport/codesize.py (original)
> +++ test-suite/trunk/litsupport/codesize.py Fri Mar 25 23:05:55 2016
> @@ -1,7 +1,7 @@
> import lit.Test
> import logging
> import os.path
> -import subprocess
> +import testplan
> 
> 
> def _getCodeSize(context):
> @@ -15,7 +15,7 @@ def _getCodeSize(context):
>     if llvm_size:
>         # -format=sysv is easier to parse than darwin/berkeley.
>         cmdline = [llvm_size, '-format=sysv', context.executable]
> -        out = subprocess.check_output(cmdline)
> +        out = testplan.check_output(cmdline)
>         lines = out.splitlines()
>         # First line contains executable name, second line should be a
>         # "section   size    addr" header, numbers start after that.
> 
> Modified: test-suite/trunk/litsupport/hash.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/hash.py?rev=264501&r1=264500&r2=264501&view=diff
> ==============================================================================
> --- test-suite/trunk/litsupport/hash.py (original)
> +++ test-suite/trunk/litsupport/hash.py Fri Mar 25 23:05:55 2016
> @@ -2,8 +2,7 @@ from lit.Test import toMetricValue
> import lit.Test
> import hashlib
> import logging
> -import subprocess
> -import shutil
> +import testplan
> import platform
> import shellcommand
> 
> @@ -14,11 +13,11 @@ def compute(context):
>         # Darwin's "strip" doesn't support these arguments.
>         if platform.system() != 'Darwin':
>             stripped_executable = executable + '.stripped'
> -            shutil.copyfile(executable, stripped_executable)
> -            subprocess.check_call([context.config.strip_tool,
> -                                   '--remove-section=.comment',
> -                                   "--remove-section='.note*'",
> -                                   stripped_executable])
> +            testplan.check_call([context.config.strip_tool,
> +                                 '--remove-section=.comment',
> +                                 "--remove-section='.note*'",
> +                                 '-o', stripped_executable,
> +                                 executable])
>             executable = stripped_executable
> 
>         h = hashlib.md5()
> 
> Modified: test-suite/trunk/litsupport/testplan.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/testplan.py?rev=264501&r1=264500&r2=264501&view=diff
> ==============================================================================
> --- test-suite/trunk/litsupport/testplan.py (original)
> +++ test-suite/trunk/litsupport/testplan.py Fri Mar 25 23:05:55 2016
> @@ -7,6 +7,7 @@ import lit.TestRunner
> import logging
> import os
> import shellcommand
> +import subprocess
> 
> 
> class TestPlan(object):
> @@ -93,6 +94,7 @@ def executeScript(context, script, useEx
>         execdir = os.getcwd()
>         executeFunc = lit.TestRunner.executeScriptInternal
> 
> +    logging.info("\n".join(script))
>     res = executeFunc(context.test, context.litConfig, context.tmpBase, script,
>                       execdir)
>     # The executeScript() functions return lit.Test.Result in some error
> @@ -113,9 +115,25 @@ def executeScript(context, script, useEx
>         context.result_output += "\n" + out
>         context.result_output += "\n" + err
> 
> +    logging.info(out)
> +    logging.info(err)
> +    if exitCode != 0:
> +        logging.info("ExitCode: %s" % exitCode)
>     return (out, err, exitCode, timeoutInfo)
> 
> 
> +def check_output(commandline, *aargs, **dargs):
> +    """Wrapper around subprocess.check_output that logs the command."""
> +    logging.info(" ".join(commandline))
> +    return subprocess.check_output(commandline, *aargs, **dargs)
> +
> +
> +def check_call(commandline, *aargs, **dargs):
> +    """Wrapper around subprocess.check_call that logs the command."""
> +    logging.info(" ".join(commandline))
> +    return subprocess.check_call(commandline, *aargs, **dargs)
> +
> +
> def executePlan(context, plan):
>     """This is the main driver for executing a benchmark."""
>     # Execute RUN: part of the test file.
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list