Ejemplo n.º 1
0
    def performance_test(self):
        self._print_perf_test_params()
        self._prepare_test_cases()

        _kill_drum_perf_test_server_process(
            _find_drum_perf_test_server_process(), self.options.verbose
        )
        if CMRunnerUtils.is_port_in_use(self._server_addr, self._server_port):
            error_message = "\nError: address: {} is in use".format(self._url_server_address)
            print(error_message)
            raise DrumCommonException(error_message)

        self._start_drum_server()
        self._init_signals()

        print("\n\n")
        results = self._run_all_test_cases()
        self._reset_signals()
        self._stop_drum_server()
        in_docker = self.options.docker is not None
        str_report = PerfTestResultsFormatter(
            results, in_docker=in_docker, show_inside_server=self.options.in_server
        ).get_tbl_str()

        print("\n" + str_report)
        return
Ejemplo n.º 2
0
    def performance_test(self):
        _find_and_kill_cmrun_server_process(self.options.verbose)
        if CMRunnerUtils.is_port_in_use(self._server_addr, self._server_port):
            error_message = "\nError: address: {} is in use".format(
                self._url_server_address)
            print(error_message)
            raise DrumCommonException(error_message)

        cmd_list = self._build_cmrun_cmd()
        self._server_process = subprocess.Popen(cmd_list, env=os.environ)
        self._wait_for_server_to_start()

        def signal_handler(sig, frame):
            print("\nCtrl+C pressed, aborting test")
            print("Sending shutdown to server")
            self._stop_server()
            os.system("tput init")
            sys.exit(0)

        def testcase_timeout(signum, frame):
            raise DrumPerfTestTimeout()

        signal.signal(signal.SIGINT, signal_handler)
        signal.signal(signal.SIGALRM, testcase_timeout)

        results = []
        print("\n\n")
        for tc in self._test_cases_to_run:
            signal.alarm(self.options.timeout)
            try:
                self._run_test_case(tc, results)
            except DrumPerfTestTimeout:
                print("... timed out ({}s)".format(self.options.timeout))
            except Exception as e:
                print("\n...test case failed with a message: {}".format(e))

        self._stop_server()
        str_report = self._generate_table_report_adv(
            results, show_inside_server=self.options.in_server)
        print("\n" + str_report)
        return