[test-suite] r263534 - lit: Skip RunSafely.sh and invoke timeit directly

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 14 22:26:40 PDT 2016


The Makefiles still use it and I don't plan to change the Makefiles. I leave the discussion when to switch everyone from the Makefiles to cmake/lit in the testsuite is for another day :)

- Matthias

> On Mar 14, 2016, at 10:23 PM, David Blaikie via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> 
> 
> On Mon, Mar 14, 2016 at 10:12 PM, Matthias Braun via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
> Author: matze
> Date: Tue Mar 15 00:12:28 2016
> New Revision: 263534
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=263534&view=rev <http://llvm.org/viewvc/llvm-project?rev=263534&view=rev>
> Log:
> lit: Skip RunSafely.sh and invoke timeit directly
> 
> At what point can we remove RunSafely? (last time I played with the test-suite there were a bunch of intermediate layers - would be great to remove some of them)
>  
> 
> This also allows us to split run_under and remove device handling into
> separate modules.
> 
> Added:
>     test-suite/trunk/litsupport/remote.py
>     test-suite/trunk/litsupport/run_under.py
> Removed:
>     test-suite/trunk/litsupport/runsafely.py
> Modified:
>     test-suite/trunk/lit.cfg
>     test-suite/trunk/litsupport/test.py
>     test-suite/trunk/litsupport/timeit.py
> 
> Modified: test-suite/trunk/lit.cfg
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/lit.cfg?rev=263534&r1=263533&r2=263534&view=diff <http://llvm.org/viewvc/llvm-project/test-suite/trunk/lit.cfg?rev=263534&r1=263533&r2=263534&view=diff>
> ==============================================================================
> --- test-suite/trunk/lit.cfg (original)
> +++ test-suite/trunk/lit.cfg Tue Mar 15 00:12:28 2016
> @@ -8,6 +8,7 @@ config.name <http://config.name/> = 'test-suite'
>  config.test_format = test.TestSuiteTest()
>  config.suffixes = ['.test']
>  config.excludes = ['ABI-Testsuite']
> +config.remote_flags = ""
>  config.traditional_output = True
>  if 'SSH_AUTH_SOCK' in os.environ:
>      config.environment['SSH_AUTH_SOCK'] = os.environ['SSH_AUTH_SOCK']
> 
> Added: test-suite/trunk/litsupport/remote.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/remote.py?rev=263534&view=auto <http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/remote.py?rev=263534&view=auto>
> ==============================================================================
> --- test-suite/trunk/litsupport/remote.py (added)
> +++ test-suite/trunk/litsupport/remote.py Tue Mar 15 00:12:28 2016
> @@ -0,0 +1,30 @@
> +import logging
> +import testplan
> +
> +
> +def mutateCommandline(context, commandline):
> +    shfilename = context.tmpBase + ".sh"
> +    shfile = open(shfilename, "w")
> +    shfile.write(commandline + "\n")
> +    logging.info <http://logging.info/>("Created shfile '%s'", shfilename)
> +    shfile.close()
> +
> +    config = context.config
> +    remote_commandline = config.remote_client
> +    if config.remote_user:
> +        remote_commandline += " -l %s" % config.remote_user
> +    if config.remote_port:
> +        remote_commandline += " -rp %s" % config.remote_port
> +    if config.remote_flags:
> +        remote_commandline += config.remote_flags
> +    remote_commandline += " %s" % config.remote_host
> +    remote_commandline += " /bin/sh %s" % shfilename
> +    return remote_commandline
> +
> +
> +def mutateScript(context, script):
> +    return testplan.mutateScript(context, script, mutateCommandline)
> +
> +
> +def mutatePlan(context, plan):
> +    plan.runscript = mutateScript(context, plan.runscript)
> 
> Added: test-suite/trunk/litsupport/run_under.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/run_under.py?rev=263534&view=auto <http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/run_under.py?rev=263534&view=auto>
> ==============================================================================
> --- test-suite/trunk/litsupport/run_under.py (added)
> +++ test-suite/trunk/litsupport/run_under.py Tue Mar 15 00:12:28 2016
> @@ -0,0 +1,13 @@
> +import shellcommand
> +import testplan
> +
> +
> +def mutateCommandLine(context, commandline):
> +    return context.config.run_under + commandline
> +
> +
> +def mutatePlan(context, plan):
> +    run_under = context.config.run_under
> +    if run_under:
> +        plan.runscript = testplan.mutateScript(context, plan.runscript,
> +                                               mutateCommandLine)
> 
> Removed: test-suite/trunk/litsupport/runsafely.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/runsafely.py?rev=263533&view=auto <http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/runsafely.py?rev=263533&view=auto>
> ==============================================================================
> --- test-suite/trunk/litsupport/runsafely.py (original)
> +++ test-suite/trunk/litsupport/runsafely.py (removed)
> @@ -1,72 +0,0 @@
> -import lit.Test
> -import shellcommand
> -import testplan
> -import timeit
> -
> -
> -def mutateCommandline(context, commandline):
> -    outfile = context.tmpBase + ".out"
> -    timefile = outfile + ".time"
> -    config = context.config
> -    cmd = shellcommand.parse(commandline)
> -
> -    runsafely = "%s/RunSafely.sh" % config.test_suite_root
> -    runsafely_prefix = []
> -    if cmd.workdir is not None:
> -        runsafely_prefix += ["-d", cmd.workdir]
> -        cmd.workdir = None
> -    timeit = "%s/tools/timeit" % config.test_source_root
> -    if config.remote_host:
> -        timeit = "%s/tools/timeit-target" % config.test_source_root
> -        runsafely_prefix += ["-r", config.remote_host]
> -        if config.remote_user:
> -            runsafely_prefix += ["-l", config.remote_user]
> -        if config.remote_client:
> -            runsafely_prefix += ["-rc", config.remote_client]
> -        if config.remote_port:
> -            runsafely_prefix += ["-rp", config.remote_port]
> -    if config.run_under:
> -        runsafely_prefix += ["-u", config.run_under]
> -    if not config.traditional_output:
> -        runsafely_prefix += ["-n"]
> -        if cmd.stdout is not None:
> -            runsafely_prefix += ["-o", cmd.stdout]
> -            cmd.stdout = None
> -        if cmd.stderr is not None:
> -            runsafely_prefix += ["-e", cmd.stderr]
> -            cmd.stderr = None
> -    else:
> -        if cmd.stdout is not None or cmd.stderr is not None:
> -            raise Exception("Separate stdout/stderr redirection not " +
> -                            "possible with traditional output")
> -    timeout = "7200"
> -    if cmd.stdin is not None:
> -        stdin = cmd.stdin
> -        cmd.stdin = None
> -    else:
> -        stdin = "/dev/null"
> -    runsafely_prefix += ["-t", timeit, timeout, stdin, outfile]
> -
> -    context.timefiles.append(outfile + ".time")
> -
> -    cmd.wrap(runsafely, runsafely_prefix)
> -    return cmd.toCommandline()
> -
> -
> -def mutateScript(context, script):
> -    return testplan.mutateScript(context, script, mutateCommandline)
> -
> -
> -def _getTime(context, timefiles, metric_name='exec_time'):
> -    time = 0.0
> -    for timefile in timefiles:
> -        time += timeit.getUserTime(timefile)
> -    return {metric_name: lit.Test.toMetricValue(time)}
> -
> -
> -def mutatePlan(context, plan):
> -    context.timefiles = []
> -    plan.runscript = mutateScript(context, plan.runscript)
> -    plan.metric_collectors.append(
> -        lambda context: _getTime(context, context.timefiles)
> -    )
> 
> Modified: test-suite/trunk/litsupport/test.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/test.py?rev=263534&r1=263533&r2=263534&view=diff <http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/test.py?rev=263534&r1=263533&r2=263534&view=diff>
> ==============================================================================
> --- test-suite/trunk/litsupport/test.py (original)
> +++ test-suite/trunk/litsupport/test.py Tue Mar 15 00:12:28 2016
> @@ -13,9 +13,11 @@ import compiletime
>  import hash
>  import perf
>  import profilegen
> -import runsafely
> +import remote
> +import run_under
>  import shellcommand
>  import testplan
> +import timeit
> 
> 
>  SKIPPED = lit.Test.ResultCode('SKIPPED', False)
> @@ -76,12 +78,15 @@ class TestSuiteTest(FileBasedTest):
>          lit.util.mkdir_p(os.path.dirname(tmpBase))
> 
>          # Prepare test plan
> -        runsafely.mutatePlan(context, plan)
> +        run_under.mutatePlan(context, plan)
> +        timeit.mutatePlan(context, plan)
>          compiletime.mutatePlan(context, plan)
>          codesize.mutatePlan(context, plan)
>          hash.mutatePlan(context, plan)
>          if config.profile_generate:
>              profilegen.mutatePlan(context, plan)
> +        if config.remote_host:
> +            remote.mutatePlan(context, plan)
>          if litConfig.params.get('profile') == 'perf':
>              perf.mutatePlan(context, plan)
> 
> 
> Modified: test-suite/trunk/litsupport/timeit.py
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/timeit.py?rev=263534&r1=263533&r2=263534&view=diff <http://llvm.org/viewvc/llvm-project/test-suite/trunk/litsupport/timeit.py?rev=263534&r1=263533&r2=263534&view=diff>
> ==============================================================================
> --- test-suite/trunk/litsupport/timeit.py (original)
> +++ test-suite/trunk/litsupport/timeit.py Tue Mar 15 00:12:28 2016
> @@ -1,4 +1,71 @@
> +import lit.Test
>  import re
> +import shellcommand
> +import testplan
> +
> +
> +def mutateCommandLine(context, commandline):
> +    outfile = context.tmpBase + ".out"
> +    timefile = context.tmpBase + ".time"
> +    config = context.config
> +    cmd = shellcommand.parse(commandline)
> +
> +    timeit = "%s/tools/timeit" % config.test_source_root
> +    if config.remote_host:
> +        timeit = "%s/tools/timeit-target" % config.test_source_root
> +    args = ["--limit-core", "0"]
> +    args += ["--limit-cpu", "7200"]
> +    args += ["--timeout", "7200"]
> +    args += ["--limit-file-size", "104857600"]
> +    args += ["--limit-rss-size", "838860800"]
> +    if cmd.workdir is not None:
> +        args += ["--chdir", cmd.workdir]
> +        cmd.workdir = None
> +    if not config.traditional_output:
> +        if cmd.stdout is not None:
> +            args += ["--redirect-stdout", cmd.stdout]
> +            cmd.stdout = None
> +        if cmd.stderr is not None:
> +            args += ["--redirect-stderr", cmd.stderr]
> +            cmd.stderr = None
> +    else:
> +        if cmd.stdout is not None or cmd.stderr is not None:
> +            raise Exception("Separate stdout/stderr redirection not " +
> +                            "possible with traditional output")
> +        args += ["--append-exitstatus"]
> +        args += ["--redirect-output", outfile]
> +    if cmd.stdin is not None:
> +        args += ["--redirect-input", cmd.stdin]
> +        cmd.stdin = None
> +    else:
> +        args += ["--redirect-input", "/dev/null"]
> +    args += ["--summary", timefile]
> +    # Remember timefilename for later
> +    context.timefiles.append(timefile)
> +
> +    cmd.wrap(timeit, args)
> +    return cmd.toCommandline()
> +
> +
> +def mutateScript(context, script):
> +    if not hasattr(context, "timefiles"):
> +        context.timefiles = []
> +    return testplan.mutateScript(context, script, mutateCommandLine)
> +
> +
> +def _collectTime(context, timefiles, metric_name='exec_time'):
> +    time = 0.0
> +    for timefile in timefiles:
> +        time += getUserTime(timefile)
> +    return { metric_name: lit.Test.toMetricValue(time) }
> +
> +
> +def mutatePlan(context, plan):
> +    context.timefiles = []
> +    plan.runscript = mutateScript(context, plan.runscript)
> +    plan.metric_collectors.append(
> +        lambda context: _collectTime(context, context.timefiles)
> +    )
> 
> 
>  def getUserTime(filename):
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160314/20980b5e/attachment.html>


More information about the llvm-commits mailing list