Ejemplo n.º 1
0
Archivo: main.py Proyecto: esc/cpython
    def main(self, tests=None, **kwargs):
        self.ns = self.parse_args(kwargs)

        if self.ns.slaveargs is not None:
            from test.libregrtest.runtest_mp import run_tests_slave
            run_tests_slave(self.ns.slaveargs)

        if self.ns.wait:
            input("Press any key to continue...")

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()
        sys.exit(len(self.bad) > 0 or self.interrupted)
Ejemplo n.º 2
0
    def _main(self, tests, kwargs):
        if self.worker_test_name is not None:
            from test.libregrtest.runtest_mp import run_tests_worker
            run_tests_worker(self.ns, self.worker_test_name)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        # If we're on windows and this is the parent runner (not a worker),
        # track the load average.
        if sys.platform == 'win32' and self.worker_test_name is None:
            from test.libregrtest.win_utils import WindowsLoadTracker

            try:
                self.win_load_tracker = WindowsLoadTracker()
            except FileNotFoundError as error:
                # Windows IoT Core and Windows Nano Server do not provide
                # typeperf.exe for x64, x86 or ARM
                print(f'Failed to create WindowsLoadTracker: {error}')

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()

        self.save_xml_result()

        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)
Ejemplo n.º 3
0
def run_tests_slave(slaveargs):
    ns_dict, testname = json.loads(slaveargs)
    ns = types.SimpleNamespace(**ns_dict)
    setup_tests(ns)
    try:
        result = runtest(ns, testname)
    except KeyboardInterrupt:
        result = INTERRUPTED, ''
    except BaseException as e:
        traceback.print_exc()
        result = CHILD_ERROR, str(e)
    print()
    print(json.dumps(result), flush=True)
    sys.exit(0)
Ejemplo n.º 4
0
    def _main(self, tests, kwargs):
        self.ns = self.parse_args(kwargs)

        if self.ns.huntrleaks:
            warmup, repetitions, _ = self.ns.huntrleaks
            if warmup < 1 or repetitions < 1:
                msg = ("Invalid values for the --huntrleaks/-R parameters. The "
                       "number of warmups and repetitions must be at least 1 "
                       "each (1:1).")
                print(msg, file=sys.stderr, flush=True)
                sys.exit(2)

        if self.ns.slaveargs is not None:
            from test.libregrtest.runtest_mp import run_tests_slave
            run_tests_slave(self.ns.slaveargs)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()

        self.save_xml_result()

        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)
Ejemplo n.º 5
0
    def _main(self, tests, kwargs):
        self.ns = self.parse_args(kwargs)

        if self.ns.huntrleaks:
            warmup, repetitions, _ = self.ns.huntrleaks
            if warmup < 1 or repetitions < 1:
                msg = ("Invalid values for the --huntrleaks/-R parameters. The "
                       "number of warmups and repetitions must be at least 1 "
                       "each (1:1).")
                print(msg, file=sys.stderr, flush=True)
                sys.exit(2)

        if self.ns.worker_args is not None:
            from test.libregrtest.runtest_mp import run_tests_worker
            run_tests_worker(self.ns.worker_args)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()

        self.save_xml_result()

        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)
Ejemplo n.º 6
0
def run_tests_worker(worker_args):
    ns_dict, testname = json.loads(worker_args)
    ns = types.SimpleNamespace(**ns_dict)

    setup_tests(ns)

    try:
        result = runtest(ns, testname)
    except KeyboardInterrupt:
        result = INTERRUPTED, '', None
    except BaseException as e:
        traceback.print_exc()
        result = CHILD_ERROR, str(e)

    print()  # Force a newline (just in case)
    print(json.dumps(result), flush=True)
    sys.exit(0)
Ejemplo n.º 7
0
def run_tests_slave(slaveargs):
    ns_dict, testname = json.loads(slaveargs)
    ns = types.SimpleNamespace(**ns_dict)

    setup_tests(ns)

    try:
        result = runtest(ns, testname)
    except KeyboardInterrupt:
        result = INTERRUPTED, ''
    except BaseException as e:
        traceback.print_exc()
        result = CHILD_ERROR, str(e)

    print()   # Force a newline (just in case)
    print(json.dumps(result), flush=True)
    sys.exit(0)
Ejemplo n.º 8
0
 def run(self, ns: types.SimpleNamespace) -> None:
     """Read commands from pipe and execute them"""
     # Create a temporary directory for test runs
     t = Regrtest()
     t.ns = ns
     t.set_temp_dir()
     test_cwd = t.create_temp_dir()
     setup_tests(t.ns)
     # Run the tests in a context manager that temporarily changes the CWD to a
     # temporary and writable directory.  If it's not possible to create or
     # change the CWD, the original CWD will be used.  The original CWD is
     # available from support.SAVEDCWD.
     with support.temp_cwd(test_cwd, quiet=True):
         msg = self.pipe.recv()
         while not isinstance(msg, ShutdownWorker):
             if isinstance(msg, RunTest):
                 result = runtest(ns, msg.test_name)
                 self.pipe.send(TestComplete(msg.test_name, result))
             msg = self.pipe.recv()
         self.pipe.send(WorkerDone())
Ejemplo n.º 9
0
    def _main(self, tests, kwargs):
        if self.worker_test_name is not None:
            from test.libregrtest.runtest_mp import run_tests_worker
            run_tests_worker(self.ns, self.worker_test_name)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo
        support.PGO_EXTENDED = self.ns.pgo_extended

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()

        self.save_xml_result()

        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)
Ejemplo n.º 10
0
 def _main(self, tests, kwargs):
     self.ns = self.parse_args(kwargs)
     if self.ns.slaveargs is not None:
         from test.libregrtest.runtest_mp import run_tests_slave
         run_tests_slave(self.ns.slaveargs)
     if self.ns.wait:
         input('Press any key to continue...')
     support.PGO = self.ns.pgo
     setup_tests(self.ns)
     self.find_tests(tests)
     if self.ns.list_tests:
         self.list_tests()
         sys.exit(0)
     if self.ns.list_cases:
         self.list_cases()
         sys.exit(0)
     self.run_tests()
     self.display_result()
     if self.ns.verbose2 and self.bad:
         self.rerun_failed_tests()
     self.finalize()
     sys.exit(len(self.bad) > 0 or self.interrupted)
Ejemplo n.º 11
0
    def _main(self, tests, kwargs):
        self.ns = self.parse_args(kwargs)

        if self.ns.slaveargs is not None:
            from test.libregrtest.runtest_mp import run_tests_slave
            run_tests_slave(self.ns.slaveargs)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()
        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)
Ejemplo n.º 12
0
    def _main(self, tests, kwargs):
        if self.ns.huntrleaks:
            warmup, repetitions, _ = self.ns.huntrleaks
            if warmup < 1 or repetitions < 1:
                msg = (
                    "Invalid values for the --huntrleaks/-R parameters. The "
                    "number of warmups and repetitions must be at least 1 "
                    "each (1:1).")
                print(msg, file=sys.stderr, flush=True)
                sys.exit(2)

        if self.worker_test_name is not None:
            from test.libregrtest.runtest_mp import run_tests_worker
            run_tests_worker(self.ns, self.worker_test_name)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        # If we're on windows and this is the parent runner (not a worker),
        # track the load average.
        if sys.platform == 'win32' and self.worker_test_name is None:
            from test.libregrtest.win_utils import WindowsLoadTracker

            try:
                self.win_load_tracker = WindowsLoadTracker()
            except FileNotFoundError as error:
                # Windows IoT Core and Windows Nano Server do not provide
                # typeperf.exe for x64, x86 or ARM
                print(f'Failed to create WindowsLoadTracker: {error}')

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()

        self.save_xml_result()

        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)
Ejemplo n.º 13
0
    def _main(self, tests, kwargs):
        if self.ns.huntrleaks:
            warmup, repetitions, _ = self.ns.huntrleaks
            if warmup < 1 or repetitions < 1:
                msg = ("Invalid values for the --huntrleaks/-R parameters. The "
                       "number of warmups and repetitions must be at least 1 "
                       "each (1:1).")
                print(msg, file=sys.stderr, flush=True)
                sys.exit(2)

        if self.ns.worker_args is not None:
            from test.libregrtest.runtest_mp import run_tests_worker
            run_tests_worker(self.ns.worker_args)

        if self.ns.wait:
            input("Press any key to continue...")

        support.PGO = self.ns.pgo

        setup_tests(self.ns)

        self.find_tests(tests)

        if self.ns.list_tests:
            self.list_tests()
            sys.exit(0)

        if self.ns.list_cases:
            self.list_cases()
            sys.exit(0)

        self.getloadavg = None
        # If we're on windows and this is the parent runner (not a worker),
        # report the load average.
        if hasattr(os, 'getloadavg'):
            def getloadavg_1m():
                return os.getloadavg()[0]
            self.getloadavg = getloadavg_1m
        elif sys.platform == 'win32' and (self.ns.worker_args is None):
            from test.libregrtest.win_utils import WindowsLoadTracker

            load_tracker = WindowsLoadTracker()
            self.getloadavg = load_tracker.getloadavg

        self.run_tests()
        self.display_result()

        if self.ns.verbose2 and self.bad:
            self.rerun_failed_tests()

        self.finalize()

        self.save_xml_result()

        if self.bad:
            sys.exit(2)
        if self.interrupted:
            sys.exit(130)
        if self.ns.fail_env_changed and self.environment_changed:
            sys.exit(3)
        sys.exit(0)