From afdfc4de8f81392076def3587c06ae1b503946e9 Mon Sep 17 00:00:00 2001 From: Nikhil Komawar Date: Mon, 16 Oct 2017 17:39:30 -0400 Subject: [PATCH] test: Enable specifying flaky tests on fips Adds a way to mark a specified test as 'flaky' on fips compliant systems. Earlier, the ``tools/test.py`` script supported only 'mode', 'system' and 'arch' for test environment specification. This limits the ability to specify the behavior of tests and setting pre-determined behavior of the same on other types of systems. As an example, the feature request below indicates the need to specify certain tests as 'flaky' on fips compliant systems. It hints at future possibility of a shared library, which in turn may need a specifier for running tests. This commit introduces a new item in the ``env`` dict, called ``type`` which defaults to ``simple`` type. It also adds an optional command line argument ``--type``, which inputs strings. Current functionality extends to setting ``simple`` or ``fips`` for this ``type`` variable. However, extending it to further uses is rather simple by adding "if" conditions at appropriate places in the ``tools/test.py`` script. PR-URL: https://github.com/nodejs/node/pull/16329 Fixes: https://github.com/nodejs/node/issues/14746 Reviewed-By: Gibson Fahnestock Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater --- tools/test.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tools/test.py b/tools/test.py index ec8297812fccc0..efb7c0e5b8e475 100755 --- a/tools/test.py +++ b/tools/test.py @@ -1410,6 +1410,9 @@ def BuildOptions(): result.add_option('--abort-on-timeout', help='Send SIGABRT instead of SIGTERM to kill processes that time out', default=False, action="store_true", dest="abort_on_timeout") + result.add_option("--type", + help="Type of build (simple, fips)", + default=None) return result @@ -1559,6 +1562,21 @@ def ArgsToTestPaths(test_root, args, suites): return paths +def get_env_type(vm, options_type): + if options_type is not None: + env_type = options_type + else: + if "fips" in subprocess.check_output([vm, "-p", + "process.versions.openssl"]): + env_type = "fips" + # NOTE(nikhil): "simple" is the default value for var 'env_type' and should + # be set last if no if/elif matches. If you plan to add more values, use + # 'elif' above. + else: + env_type = "simple" + return env_type + + def Main(): parser = BuildOptions() (options, args) = parser.parse_args() @@ -1641,6 +1659,7 @@ def Main(): 'mode': mode, 'system': utils.GuessOS(), 'arch': vmArch, + 'type': get_env_type(vm, options.type), } test_list = root.ListTests([], path, context, arch, mode) unclassified_tests += test_list