[test-suite] r263534 - lit: Skip RunSafely.sh and invoke timeit directly
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 14 22:27:09 PDT 2016
OK, thanks for the context/status
On Mon, Mar 14, 2016 at 10:26 PM, Matthias Braun <matze at braunis.de> wrote:
> 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> 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
>> 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
>>
>> ==============================================================================
>> --- test-suite/trunk/lit.cfg (original)
>> +++ test-suite/trunk/lit.cfg Tue Mar 15 00:12:28 2016
>> @@ -8,6 +8,7 @@ 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
>>
>> ==============================================================================
>> --- 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("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
>>
>> ==============================================================================
>> --- 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
>>
>> ==============================================================================
>> --- 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
>>
>> ==============================================================================
>> --- 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
>>
>> ==============================================================================
>> --- 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
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> 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/8ce1376a/attachment.html>
More information about the llvm-commits
mailing list