Mercurial > hg > truffle
comparison mx/mx_graal.py @ 15399:40d0022115ee
Merge.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Mon, 28 Apr 2014 11:18:15 +0200 |
parents | 3b56c9bbf60c |
children | 27fa615f5a1c |
comparison
equal
deleted
inserted
replaced
15398:3dde8d8c95b8 | 15399:40d0022115ee |
---|---|
26 # | 26 # |
27 # ---------------------------------------------------------------------------------------------------- | 27 # ---------------------------------------------------------------------------------------------------- |
28 | 28 |
29 import os, sys, shutil, zipfile, tempfile, re, time, datetime, platform, subprocess, multiprocessing, StringIO | 29 import os, sys, shutil, zipfile, tempfile, re, time, datetime, platform, subprocess, multiprocessing, StringIO |
30 from os.path import join, exists, dirname, basename, getmtime | 30 from os.path import join, exists, dirname, basename, getmtime |
31 from argparse import ArgumentParser, REMAINDER | 31 from argparse import ArgumentParser, RawDescriptionHelpFormatter, REMAINDER |
32 from outputparser import OutputParser, ValuesMatcher | 32 from outputparser import OutputParser, ValuesMatcher |
33 import mx | 33 import mx |
34 import xml.dom.minidom | 34 import xml.dom.minidom |
35 import sanitycheck | 35 import sanitycheck |
36 import itertools | 36 import itertools |
37 import json, textwrap | 37 import json, textwrap |
38 import fnmatch | |
38 | 39 |
39 # This works because when mx loads this file, it makes sure __file__ gets an absolute path | 40 # This works because when mx loads this file, it makes sure __file__ gets an absolute path |
40 _graal_home = dirname(dirname(__file__)) | 41 _graal_home = dirname(dirname(__file__)) |
41 | 42 |
42 """ Used to distinguish an exported GraalVM (see 'mx export'). """ | 43 """ Used to distinguish an exported GraalVM (see 'mx export'). """ |
826 if defaultAllVMArgs: | 827 if defaultAllVMArgs: |
827 return args, [] | 828 return args, [] |
828 else: | 829 else: |
829 return [], args | 830 return [], args |
830 | 831 |
831 def _run_tests(args, harness, annotations, testfile): | 832 def _run_tests(args, harness, annotations, testfile, whitelist): |
832 | 833 |
833 | 834 |
834 vmArgs, tests = _extract_VM_args(args) | 835 vmArgs, tests = _extract_VM_args(args) |
835 for t in tests: | 836 for t in tests: |
836 if t.startswith('-'): | 837 if t.startswith('-'): |
858 projs.add(p.name) | 859 projs.add(p.name) |
859 if not found: | 860 if not found: |
860 mx.log('warning: no tests matched by substring "' + t) | 861 mx.log('warning: no tests matched by substring "' + t) |
861 projectscp = mx.classpath(projs) | 862 projectscp = mx.classpath(projs) |
862 | 863 |
864 if whitelist: | |
865 classes = [c for c in classes if any((glob.match(c) for glob in whitelist))] | |
866 | |
863 if len(classes) != 0: | 867 if len(classes) != 0: |
864 f_testfile = open(testfile, 'w') | 868 f_testfile = open(testfile, 'w') |
865 for c in classes: | 869 for c in classes: |
866 f_testfile.write(c + '\n') | 870 f_testfile.write(c + '\n') |
867 f_testfile.close() | 871 f_testfile.close() |
868 harness(projectscp, vmArgs) | 872 harness(projectscp, vmArgs) |
869 | 873 |
870 def _unittest(args, annotations, prefixcp=""): | 874 def _unittest(args, annotations, prefixcp="", whitelist=None): |
871 mxdir = dirname(__file__) | 875 mxdir = dirname(__file__) |
872 name = 'JUnitWrapper' | 876 name = 'JUnitWrapper' |
873 javaSource = join(mxdir, name + '.java') | 877 javaSource = join(mxdir, name + '.java') |
874 javaClass = join(mxdir, name + '.class') | 878 javaClass = join(mxdir, name + '.class') |
875 testfile = os.environ.get('MX_TESTFILE', None) | 879 testfile = os.environ.get('MX_TESTFILE', None) |
892 vm(prefixArgs + vmArgs + ['-cp', prefixcp + projectscp, 'org.junit.runner.JUnitCore'] + testclasses) | 896 vm(prefixArgs + vmArgs + ['-cp', prefixcp + projectscp, 'org.junit.runner.JUnitCore'] + testclasses) |
893 else: | 897 else: |
894 vm(prefixArgs + vmArgs + ['-cp', prefixcp + projectscp + os.pathsep + mxdir, name] + [testfile]) | 898 vm(prefixArgs + vmArgs + ['-cp', prefixcp + projectscp + os.pathsep + mxdir, name] + [testfile]) |
895 | 899 |
896 try: | 900 try: |
897 _run_tests(args, harness, annotations, testfile) | 901 _run_tests(args, harness, annotations, testfile, whitelist) |
898 finally: | 902 finally: |
899 if os.environ.get('MX_TESTFILE') is None: | 903 if os.environ.get('MX_TESTFILE') is None: |
900 os.remove(testfile) | 904 os.remove(testfile) |
901 | 905 |
902 _unittestHelpSuffix = """ | 906 _unittestHelpSuffix = """ |
907 Unittest options: | |
908 | |
909 --whitelist run only testcases which are included | |
910 in the given whitelist | |
911 | |
912 To avoid conflicts with VM options '--' can be used as delimiter. | |
903 | 913 |
904 If filters are supplied, only tests whose fully qualified name | 914 If filters are supplied, only tests whose fully qualified name |
905 includes a filter as a substring are run. | 915 includes a filter as a substring are run. |
906 | 916 |
907 For example, this command line: | 917 For example, this command line: |
926 """ | 936 """ |
927 | 937 |
928 def unittest(args): | 938 def unittest(args): |
929 """run the JUnit tests (all testcases){0}""" | 939 """run the JUnit tests (all testcases){0}""" |
930 | 940 |
931 _unittest(args, ['@Test', '@LongTest', '@Parameters']) | 941 parser = ArgumentParser(prog='mx unittest', |
942 description='run the JUnit tests', | |
943 add_help=False, | |
944 formatter_class=RawDescriptionHelpFormatter, | |
945 epilog=_unittestHelpSuffix, | |
946 ) | |
947 parser.add_argument('--whitelist', help='run testcases specified in whitelist only', metavar='<path>') | |
948 | |
949 ut_args = [] | |
950 delimiter = False | |
951 # check for delimiter | |
952 while len(args) > 0: | |
953 arg = args.pop(0) | |
954 if arg == '--': | |
955 delimiter = True | |
956 break | |
957 ut_args.append(arg) | |
958 | |
959 if delimiter: | |
960 # all arguments before '--' must be recognized | |
961 parsed_args = parser.parse_args(ut_args) | |
962 else: | |
963 # parse all know arguments | |
964 parsed_args, args = parser.parse_known_args(ut_args) | |
965 | |
966 whitelist = None | |
967 if parsed_args.whitelist: | |
968 try: | |
969 with open(join(_graal_home, parsed_args.whitelist)) as fp: | |
970 whitelist = [re.compile(fnmatch.translate(l.rstrip())) for l in fp.readlines() if not l.startswith('#')] | |
971 except IOError: | |
972 mx.log('warning: could not read whitelist: ' + parsed_args.whitelist) | |
973 | |
974 _unittest(args, ['@Test', '@Parameters'], whitelist=whitelist) | |
932 | 975 |
933 def shortunittest(args): | 976 def shortunittest(args): |
934 """run the JUnit tests (short testcases only){0}""" | 977 """alias for 'unittest --whitelist test/whitelist_shortunittest.txt'{0}""" |
935 | 978 |
936 _unittest(args, ['@Test']) | 979 args = ['--whitelist', 'test/whitelist_shortunittest.txt'] + args |
937 | 980 unittest(args) |
938 def longunittest(args): | |
939 """run the JUnit tests (long testcases only){0}""" | |
940 | |
941 _unittest(args, ['@LongTest', '@Parameters']) | |
942 | 981 |
943 def buildvms(args): | 982 def buildvms(args): |
944 """build one or more VMs in various configurations""" | 983 """build one or more VMs in various configurations""" |
945 | 984 |
946 vmsDefault = ','.join(_vmChoices.keys()) | 985 vmsDefault = ','.join(_vmChoices.keys()) |
1045 with VM('server', 'product'): # hosted mode | 1084 with VM('server', 'product'): # hosted mode |
1046 t = Task('UnitTests:hosted-product') | 1085 t = Task('UnitTests:hosted-product') |
1047 unittest([]) | 1086 unittest([]) |
1048 tasks.append(t.stop()) | 1087 tasks.append(t.stop()) |
1049 | 1088 |
1089 with VM('server', 'product'): # hosted mode | |
1090 t = Task('UnitTests-BaselineCompiler:hosted-product') | |
1091 unittest(['--whitelist', 'test/whitelist_baseline.txt', '-G:+UseBaselineCompiler']) | |
1092 tasks.append(t.stop()) | |
1093 | |
1050 for vmbuild in ['fastdebug', 'product']: | 1094 for vmbuild in ['fastdebug', 'product']: |
1051 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild) + sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): | 1095 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild) + sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): |
1052 t = Task(str(test) + ':' + vmbuild) | 1096 t = Task(str(test) + ':' + vmbuild) |
1053 if not test.test('graal'): | 1097 if not test.test('graal'): |
1054 t.abort(test.name + ' Failed') | 1098 t.abort(test.name + ' Failed') |
1246 if mx.get_os() == 'windows': | 1290 if mx.get_os() == 'windows': |
1247 executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe') | 1291 executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe') |
1248 else: | 1292 else: |
1249 executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer') | 1293 executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer') |
1250 | 1294 |
1251 archive = join(libpath, 'c1visualizer.zip') | 1295 archive = join(libpath, 'c1visualizer_2014-04-22.zip') |
1252 if not exists(executable): | 1296 if not exists(executable) or not exists(archive): |
1253 if not exists(archive): | 1297 if not exists(archive): |
1254 mx.download(archive, ['https://java.net/downloads/c1visualizer/c1visualizer.zip']) | 1298 mx.download(archive, ['https://java.net/downloads/c1visualizer/c1visualizer_2014-04-22.zip']) |
1255 zf = zipfile.ZipFile(archive, 'r') | 1299 zf = zipfile.ZipFile(archive, 'r') |
1256 zf.extractall(libpath) | 1300 zf.extractall(libpath) |
1257 | 1301 |
1258 if not exists(executable): | 1302 if not exists(executable): |
1259 mx.abort('C1Visualizer binary does not exist: ' + executable) | 1303 mx.abort('C1Visualizer binary does not exist: ' + executable) |
1343 mx.log(json.dumps(results)) | 1387 mx.log(json.dumps(results)) |
1344 if resultFile: | 1388 if resultFile: |
1345 with open(resultFile, 'w') as f: | 1389 with open(resultFile, 'w') as f: |
1346 f.write(json.dumps(results)) | 1390 f.write(json.dumps(results)) |
1347 | 1391 |
1392 def _get_jmh_path(): | |
1393 path = mx.get_env('JMH_BENCHMARKS', None) | |
1394 if not path: | |
1395 probe = join(dirname(_graal_home), 'java-benchmarks') | |
1396 if exists(probe): | |
1397 path = probe | |
1398 | |
1399 if not path: | |
1400 mx.abort("Please set the JMH_BENCHMARKS environment variable to point to the java-benchmarks workspace") | |
1401 if not exists(path): | |
1402 mx.abort("The directory denoted by the JMH_BENCHMARKS environment variable does not exist: " + path) | |
1403 return path | |
1404 | |
1405 def makejmhdeps(args): | |
1406 """creates and installs Maven dependencies required by the JMH benchmarks | |
1407 | |
1408 The dependencies are specified by files named pom.mxdeps in the | |
1409 JMH directory tree. Each such file contains a list of dependencies | |
1410 defined in JSON format. For example: | |
1411 | |
1412 '[{"artifactId" : "compiler.test", "groupId" : "com.oracle.graal", "deps" : ["com.oracle.graal.compiler.test"]}]' | |
1413 | |
1414 will result in a dependency being installed in the local Maven repository | |
1415 that can be referenced in a pom.xml file as follows: | |
1416 | |
1417 <dependency> | |
1418 <groupId>com.oracle.graal</groupId> | |
1419 <artifactId>compiler.test</artifactId> | |
1420 <version>1.0-SNAPSHOT</version> | |
1421 </dependency>""" | |
1422 | |
1423 parser = ArgumentParser(prog='mx makejmhdeps') | |
1424 parser.add_argument('-s', '--settings', help='alternative path for Maven user settings file', metavar='<path>') | |
1425 parser.add_argument('-p', '--permissive', action='store_true', help='issue note instead of error if a Maven dependency cannot be built due to missing projects/libraries') | |
1426 args = parser.parse_args(args) | |
1427 | |
1428 def makejmhdep(artifactId, groupId, deps): | |
1429 graalSuite = mx.suite("graal") | |
1430 path = artifactId + '.jar' | |
1431 if args.permissive: | |
1432 for name in deps: | |
1433 if not mx.project(name, fatalIfMissing=False): | |
1434 if not mx.library(name, fatalIfMissing=False): | |
1435 mx.log('Skipping ' + groupId + '.' + artifactId + '.jar as ' + name + ' cannot be resolved') | |
1436 return | |
1437 d = mx.Distribution(graalSuite, name=artifactId, path=path, sourcesPath=path, deps=deps, excludedLibs=[]) | |
1438 d.make_archive() | |
1439 cmd = ['mvn', 'install:install-file', '-DgroupId=' + groupId, '-DartifactId=' + artifactId, | |
1440 '-Dversion=1.0-SNAPSHOT', '-Dpackaging=jar', '-Dfile=' + d.path] | |
1441 if not mx._opts.verbose: | |
1442 cmd.append('-q') | |
1443 if args.settings: | |
1444 cmd = cmd + ['-s', args.settings] | |
1445 mx.run(cmd) | |
1446 os.unlink(d.path) | |
1447 | |
1448 jmhPath = _get_jmh_path() | |
1449 for root, _, filenames in os.walk(jmhPath): | |
1450 for f in [join(root, n) for n in filenames if n == 'pom.mxdeps']: | |
1451 mx.logv('[processing ' + f + ']') | |
1452 try: | |
1453 with open(f) as fp: | |
1454 for d in json.load(fp): | |
1455 artifactId = d['artifactId'] | |
1456 groupId = d['groupId'] | |
1457 deps = d['deps'] | |
1458 makejmhdep(artifactId, groupId, deps) | |
1459 except ValueError as e: | |
1460 mx.abort('Error parsing {}:\n{}'.format(f, e)) | |
1461 | |
1462 def buildjmh(args): | |
1463 """build the JMH benchmarks""" | |
1464 | |
1465 parser = ArgumentParser(prog='mx buildjmh') | |
1466 parser.add_argument('-s', '--settings', help='alternative path for Maven user settings file', metavar='<path>') | |
1467 parser.add_argument('-c', action='store_true', dest='clean', help='clean before building') | |
1468 args = parser.parse_args(args) | |
1469 | |
1470 jmhPath = _get_jmh_path() | |
1471 mx.log('JMH benchmarks: ' + jmhPath) | |
1472 | |
1473 # Ensure the mx injected dependencies are up to date | |
1474 makejmhdeps(['-p'] + (['-s', args.settings] if args.settings else [])) | |
1475 | |
1476 timestamp = mx.TimeStampFile(join(_graal_home, 'mx', 'jmh', jmhPath.replace(os.sep, '_') + '.timestamp')) | |
1477 mustBuild = args.clean | |
1478 if not mustBuild: | |
1479 try: | |
1480 hgfiles = [join(jmhPath, f) for f in subprocess.check_output(['hg', '-R', jmhPath, 'locate']).split('\n')] | |
1481 mustBuild = timestamp.isOlderThan(hgfiles) | |
1482 except: | |
1483 # not a Mercurial repository or hg commands are not available. | |
1484 mustBuild = True | |
1485 | |
1486 if mustBuild: | |
1487 buildOutput = [] | |
1488 def _redirect(x): | |
1489 if mx._opts.verbose: | |
1490 mx.log(x[:-1]) | |
1491 else: | |
1492 buildOutput.append(x) | |
1493 env = os.environ.copy() | |
1494 env['JAVA_HOME'] = _jdk(vmToCheck='server') | |
1495 env['MAVEN_OPTS'] = '-server' | |
1496 mx.log("Building benchmarks...") | |
1497 cmd = ['mvn'] | |
1498 if args.settings: | |
1499 cmd = cmd + ['-s', args.settings] | |
1500 if args.clean: | |
1501 cmd.append('clean') | |
1502 cmd.append('package') | |
1503 retcode = mx.run(cmd, cwd=jmhPath, out=_redirect, env=env, nonZeroIsFatal=False) | |
1504 if retcode != 0: | |
1505 mx.log(''.join(buildOutput)) | |
1506 mx.abort(retcode) | |
1507 timestamp.touch() | |
1508 else: | |
1509 mx.logv('[all Mercurial controlled files in ' + jmhPath + ' are older than ' + timestamp.path + ' - skipping build]') | |
1510 | |
1348 def jmh(args): | 1511 def jmh(args): |
1349 """run the JMH_BENCHMARKS""" | 1512 """run the JMH benchmarks |
1350 | 1513 |
1351 # TODO: add option for `mvn clean package' | 1514 This command respects the standard --vm and --vmbuild options |
1515 for choosing which VM to run the benchmarks with.""" | |
1516 if '-h' in args: | |
1517 mx.help_(['jmh']) | |
1518 mx.abort(1) | |
1352 | 1519 |
1353 vmArgs, benchmarksAndJsons = _extract_VM_args(args) | 1520 vmArgs, benchmarksAndJsons = _extract_VM_args(args) |
1354 | 1521 |
1355 benchmarks = [b for b in benchmarksAndJsons if not b.startswith('{')] | 1522 benchmarks = [b for b in benchmarksAndJsons if not b.startswith('{')] |
1356 jmhArgJsons = [b for b in benchmarksAndJsons if b.startswith('{')] | 1523 jmhArgJsons = [b for b in benchmarksAndJsons if b.startswith('{')] |
1357 | 1524 |
1358 jmhArgs = {'-v' : 'EXTRA' if mx._opts.verbose else 'NORMAL'} | 1525 jmhArgs = {'-rff' : join(_graal_home, 'mx', 'jmh', 'jmh.out'), '-v' : 'EXTRA' if mx._opts.verbose else 'NORMAL'} |
1359 | 1526 |
1360 # e.g. '{"-wi" : 20}' | 1527 # e.g. '{"-wi" : 20}' |
1361 for j in jmhArgJsons: | 1528 for j in jmhArgJsons: |
1362 try: | 1529 try: |
1363 for n, v in json.loads(j).iteritems(): | 1530 for n, v in json.loads(j).iteritems(): |
1364 if v is None: | 1531 if v is None: |
1365 del jmhArgs[n] | 1532 del jmhArgs[n] |
1366 else: | 1533 else: |
1367 jmhArgs[n] = v | 1534 jmhArgs[n] = v |
1368 except ValueError as e: | 1535 except ValueError as e: |
1369 mx.abort('error parsing JSON input: {}"\n{}'.format(j, e)) | 1536 mx.abort('error parsing JSON input: {}\n{}'.format(j, e)) |
1370 | 1537 |
1371 jmhPath = mx.get_env('JMH_BENCHMARKS', None) | 1538 jmhPath = _get_jmh_path() |
1372 if not jmhPath or not exists(jmhPath): | 1539 mx.log('Using benchmarks in ' + jmhPath) |
1373 mx.abort("$JMH_BENCHMARKS not properly defined: " + str(jmhPath)) | |
1374 | |
1375 def _blackhole(x): | |
1376 mx.logv(x[:-1]) | |
1377 | |
1378 | |
1379 env = os.environ.copy() | |
1380 env['JAVA_HOME'] = _jdk(vmToCheck='graal') | |
1381 env['MAVEN_OPTS'] = '-graal' | |
1382 mx.log("Building benchmarks...") | |
1383 mx.run(['mvn', 'package'], cwd=jmhPath, out=_blackhole, env=env) | |
1384 | 1540 |
1385 matchedSuites = set() | 1541 matchedSuites = set() |
1386 numBench = [0] | 1542 numBench = [0] |
1387 for micros in os.listdir(jmhPath): | 1543 for micros in os.listdir(jmhPath): |
1388 absoluteMicro = os.path.join(jmhPath, micros) | 1544 absoluteMicro = os.path.join(jmhPath, micros) |
1392 mx.logv('JMH: ignored ' + absoluteMicro + " because it doesn't start with 'micros-'") | 1548 mx.logv('JMH: ignored ' + absoluteMicro + " because it doesn't start with 'micros-'") |
1393 continue | 1549 continue |
1394 | 1550 |
1395 microJar = os.path.join(absoluteMicro, "target", "microbenchmarks.jar") | 1551 microJar = os.path.join(absoluteMicro, "target", "microbenchmarks.jar") |
1396 if not exists(microJar): | 1552 if not exists(microJar): |
1397 mx.logv('JMH: ignored ' + absoluteMicro + " because it doesn't contain the expected jar file ('" + microJar + "')") | 1553 mx.abort('Missing ' + microJar + ' - please run "mx buildjmh"') |
1398 continue | |
1399 if benchmarks: | 1554 if benchmarks: |
1400 def _addBenchmark(x): | 1555 def _addBenchmark(x): |
1401 if x.startswith("Benchmark:"): | 1556 if x.startswith("Benchmark:"): |
1402 return | 1557 return |
1403 match = False | 1558 match = False |
1432 for k, v in jmhArgs.iteritems(): | 1587 for k, v in jmhArgs.iteritems(): |
1433 javaArgs.append(k) | 1588 javaArgs.append(k) |
1434 if len(str(v)): | 1589 if len(str(v)): |
1435 javaArgs.append(str(v)) | 1590 javaArgs.append(str(v)) |
1436 mx.run_java(javaArgs + regex, addDefaultArgs=False, cwd=jmhPath) | 1591 mx.run_java(javaArgs + regex, addDefaultArgs=False, cwd=jmhPath) |
1437 | |
1438 | 1592 |
1439 def specjvm2008(args): | 1593 def specjvm2008(args): |
1440 """run one or more SPECjvm2008 benchmarks""" | 1594 """run one or more SPECjvm2008 benchmarks""" |
1441 | 1595 |
1442 def launcher(bm, harnessArgs, extraVmOpts): | 1596 def launcher(bm, harnessArgs, extraVmOpts): |
1554 | 1708 |
1555 def trufflejar(args=None): | 1709 def trufflejar(args=None): |
1556 """make truffle.jar""" | 1710 """make truffle.jar""" |
1557 | 1711 |
1558 # Test with the built classes | 1712 # Test with the built classes |
1559 _unittest(["com.oracle.truffle.api.test", "com.oracle.truffle.api.dsl.test"], ['@Test', '@LongTest', '@Parameters']) | 1713 _unittest(["com.oracle.truffle.api.test", "com.oracle.truffle.api.dsl.test"], ['@Test', '@Parameters']) |
1560 | 1714 |
1561 # We use the DSL processor as the starting point for the classpath - this | 1715 # We use the DSL processor as the starting point for the classpath - this |
1562 # therefore includes the DSL processor, the DSL and the API. | 1716 # therefore includes the DSL processor, the DSL and the API. |
1563 packagejar(mx.classpath("com.oracle.truffle.dsl.processor").split(os.pathsep), "truffle.jar", None, "com.oracle.truffle.dsl.processor.TruffleProcessor") | 1717 packagejar(mx.classpath("com.oracle.truffle.dsl.processor").split(os.pathsep), "truffle.jar", None, "com.oracle.truffle.dsl.processor.TruffleProcessor") |
1564 | 1718 |
1565 # Test with the JAR | 1719 # Test with the JAR |
1566 _unittest(["com.oracle.truffle.api.test", "com.oracle.truffle.api.dsl.test"], ['@Test', '@LongTest', '@Parameters'], "truffle.jar:") | 1720 _unittest(["com.oracle.truffle.api.test", "com.oracle.truffle.api.dsl.test"], ['@Test', '@Parameters'], "truffle.jar:") |
1567 | 1721 |
1568 | 1722 |
1569 def isGraalEnabled(vm): | 1723 def isGraalEnabled(vm): |
1570 return vm != 'original' and not vm.endswith('nograal') | 1724 return vm != 'original' and not vm.endswith('nograal') |
1571 | 1725 |
1763 return len(failures) | 1917 return len(failures) |
1764 | 1918 |
1765 def mx_init(suite): | 1919 def mx_init(suite): |
1766 commands = { | 1920 commands = { |
1767 'build': [build, ''], | 1921 'build': [build, ''], |
1922 'buildjmh': [buildjmh, '[-options]'], | |
1768 'buildvars': [buildvars, ''], | 1923 'buildvars': [buildvars, ''], |
1769 'buildvms': [buildvms, '[-options]'], | 1924 'buildvms': [buildvms, '[-options]'], |
1770 'c1visualizer' : [c1visualizer, ''], | 1925 'c1visualizer' : [c1visualizer, ''], |
1771 'checkheaders': [checkheaders, ''], | 1926 'checkheaders': [checkheaders, ''], |
1772 'clean': [clean, ''], | 1927 'clean': [clean, ''], |
1782 'specjvm2008': [specjvm2008, '[VM options] benchmarks...|"all" [SPECjvm2008 options]'], | 1937 'specjvm2008': [specjvm2008, '[VM options] benchmarks...|"all" [SPECjvm2008 options]'], |
1783 'specjbb2013': [specjbb2013, '[VM options] [-- [SPECjbb2013 options]]'], | 1938 'specjbb2013': [specjbb2013, '[VM options] [-- [SPECjbb2013 options]]'], |
1784 'specjbb2005': [specjbb2005, '[VM options] [-- [SPECjbb2005 options]]'], | 1939 'specjbb2005': [specjbb2005, '[VM options] [-- [SPECjbb2005 options]]'], |
1785 'gate' : [gate, '[-options]'], | 1940 'gate' : [gate, '[-options]'], |
1786 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], | 1941 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], |
1787 'unittest' : [unittest, '[VM options] [filters...]', _unittestHelpSuffix], | 1942 'unittest' : [unittest, '[unittest options] [--] [VM options] [filters...]', _unittestHelpSuffix], |
1788 'longunittest' : [longunittest, '[VM options] [filters...]', _unittestHelpSuffix], | 1943 'makejmhdeps' : [makejmhdeps, ''], |
1789 'shortunittest' : [shortunittest, '[VM options] [filters...]', _unittestHelpSuffix], | 1944 'shortunittest' : [shortunittest, '[unittest options] [--] [VM options] [filters...]', _unittestHelpSuffix], |
1790 'jacocoreport' : [jacocoreport, '[output directory]'], | 1945 'jacocoreport' : [jacocoreport, '[output directory]'], |
1791 'site' : [site, '[-options]'], | 1946 'site' : [site, '[-options]'], |
1792 'vm': [vm, '[-options] class [args...]'], | 1947 'vm': [vm, '[-options] class [args...]'], |
1793 'vmg': [vmg, '[-options] class [args...]'], | 1948 'vmg': [vmg, '[-options] class [args...]'], |
1794 'vmfg': [vmfg, '[-options] class [args...]'], | 1949 'vmfg': [vmfg, '[-options] class [args...]'], |