예제 #1
0
    def test_can_run_funkload(self):
        team = TeamFactory.create()
        TeamFactory.add_projects(team, 1)
        user = team.owner
        project = team.projects[0]
        load_test = LoadTestFactory.add_to_project(1, user=user, team=team, project=project)
        load_test.pressure = "small"

        conf = WightConfig.load(join(root_path, 'bench', 'wight.yml'))
        test = conf.tests[0]

        DEFAULT_CYCLES = {
            "small": [10, 20],
            "medium": [10, 20, 30],
            "large": [30, 75, 100],
        }

        fl_result = FunkLoadBenchRunner.run(root_path, test, self.base_url, cycles=DEFAULT_CYCLES, duration=5)

        expect(fl_result).not_to_be_null()
        expect(fl_result.exit_code).to_equal(0)

        expect(fl_result.text).to_include("SUCCESSFUL")

        expect(fl_result.log).to_be_empty()

        expect(fl_result.result).not_to_be_null()
        expect(fl_result.config).not_to_be_null()

        result = LoadTest.get_data_from_funkload_results(fl_result.config, fl_result.result)

        load_test.add_result(result, fl_result.text)

        expect(load_test.results).to_length(1)
예제 #2
0
    def _run_config_tests(self, cfg, base_path, load_test, workers, cycles, duration):
        logging.debug("running tests")
        for test in cfg.tests:
            kw = dict(
                root_path=base_path,
                test=test,
                base_url=load_test.base_url,
                cycles=cycles,
                duration=duration
            )

            if workers:
                kw['workers'] = workers

            fl_result = FunkLoadBenchRunner.run(**kw)

            if fl_result.exit_code != 0:
                load_test.status = "Failed"
                load_test.error = fl_result.text
                load_test.save()
                return

            logging.debug("create result for %s" % test.test_name)
            result = LoadTest.get_data_from_funkload_results(fl_result.config, fl_result.result)

            load_test.add_result(result, log=fl_result.text)
예제 #3
0
    def test_can_get_config_in_json_from_funkload_result(self):
        config = FunkLoadTestResultFactory.get_config()
        cycles = FunkLoadTestResultFactory.get_result(4)

        result_json = LoadTest.get_data_from_funkload_results(config, cycles)

        expect(result_json['config']).not_to_be_null()

        cfg = result_json['config']

        expect(cfg['title']).to_equal(config['class_title'])
        expect(cfg['description']).to_equal(config['class_description'])

        expect(cfg['module']).to_equal(config['module'])
        expect(cfg['class_name']).to_equal(config['class'])
        expect(cfg['test_name']).to_equal(config['method'])

        expect(cfg['target_server']).to_equal(config['server_url'])
        expect(cfg['cycles']).to_equal(config['cycles'])
        expect(cfg['cycle_duration']).to_equal(int(config['duration']))

        expect(cfg['sleep_time']).to_equal(float(config['sleep_time']))
        expect(cfg['sleep_time_min']).to_equal(float(config['sleep_time_min']))
        expect(cfg['sleep_time_max']).to_equal(float(config['sleep_time_max']))

        expect(cfg['startup_delay']).to_equal(float(config['startup_delay']))

        expect(cfg['test_date'][:20]).to_equal(config['time'][:20])
        expect(cfg['funkload_version']).to_equal(config['version'])
예제 #4
0
    def test_can_parse_stats_from_funkload_result(self):
        test = LoadTestFactory.add_to_project(1, user=self.user, team=self.team, project=self.project)

        config = FunkLoadTestResultFactory.get_config()
        cycles = FunkLoadTestResultFactory.get_result(4)

        result = LoadTest.get_data_from_funkload_results(config, cycles)

        test.add_result(result, "log")

        loaded_test = LoadTest.objects(uuid=test.uuid).first()

        expect(loaded_test).not_to_be_null()

        expect(loaded_test.results).to_length(1)

        result = loaded_test.results[0]

        expect(result.cycles).to_length(4)

        cycle = result.cycles[0]

        expect(cycle.test.successful_tests_per_second).to_equal(20.30394)
        expect(cycle.test.total_tests).to_equal(200)
        expect(cycle.test.successful_tests).to_equal(300)
        expect(cycle.test.failed_tests).to_equal(0)
        expect(cycle.test.failed_tests_percentage).to_equal(0)

        expect(cycle.page.apdex).to_equal(0.993)
        expect(cycle.page.successful_pages_per_second).to_equal(35.2)
        expect(cycle.page.maximum_successful_pages_per_second).to_equal(44.0)

        expect(cycle.page.total_pages).to_equal(200)
        expect(cycle.page.successful_pages).to_equal(300)
        expect(cycle.page.failed_pages).to_equal(0)

        expect(cycle.page.minimum).to_equal(0.123)
        expect(cycle.page.average).to_equal(0.234)
        expect(cycle.page.maximum).to_equal(0.384)
        expect(cycle.page.p10).to_equal(1.0)
        expect(cycle.page.p50).to_equal(1.0)
        expect(cycle.page.p90).to_equal(1.0)
        expect(cycle.page.p95).to_equal(1.0)
예제 #5
0
    def test_can_run_funkload(self):
        team = TeamFactory.create()
        TeamFactory.add_projects(team, 1)
        user = team.owner
        project = team.projects[0]
        load_test = LoadTestFactory.add_to_project(1,
                                                   user=user,
                                                   team=team,
                                                   project=project)
        load_test.pressure = "small"

        conf = WightConfig.load(join(root_path, 'bench', 'wight.yml'))
        test = conf.tests[0]

        DEFAULT_CYCLES = {
            "small": [10, 20],
            "medium": [10, 20, 30],
            "large": [30, 75, 100],
        }

        fl_result = FunkLoadBenchRunner.run(root_path,
                                            test,
                                            self.base_url,
                                            cycles=DEFAULT_CYCLES,
                                            duration=5)

        expect(fl_result).not_to_be_null()
        expect(fl_result.exit_code).to_equal(0)

        expect(fl_result.text).to_include("SUCCESSFUL")

        expect(fl_result.log).to_be_empty()

        expect(fl_result.result).not_to_be_null()
        expect(fl_result.config).not_to_be_null()

        result = LoadTest.get_data_from_funkload_results(
            fl_result.config, fl_result.result)

        load_test.add_result(result, fl_result.text)

        expect(load_test.results).to_length(1)
예제 #6
0
    def test_can_parse_configuration_from_funkload_result(self):
        test = LoadTestFactory.add_to_project(1, user=self.user, team=self.team, project=self.project)

        config = FunkLoadTestResultFactory.get_config()
        cycles = FunkLoadTestResultFactory.get_result(4)

        result = LoadTest.get_data_from_funkload_results(config, cycles)

        test.add_result(result, "log")

        loaded_test = LoadTest.objects(uuid=test.uuid).first()

        expect(loaded_test).not_to_be_null()

        expect(loaded_test.results).to_length(1)

        result = loaded_test.results[0]

        expect(result.log).to_equal("log")

        cfg = result.config

        expect(cfg.title).to_equal(config['class_title'])
        expect(cfg.description).to_equal(config['class_description'])

        expect(cfg.module).to_equal(config['module'])
        expect(cfg.class_name).to_equal(config['class'])
        expect(cfg.test_name).to_equal(config['method'])

        expect(cfg.target_server).to_equal(config['server_url'])
        expect(cfg.cycles).to_equal(config['cycles'])
        expect(cfg.cycle_duration).to_equal(int(config['duration']))

        expect(cfg.sleep_time).to_equal(float(config['sleep_time']))
        expect(cfg.sleep_time_min).to_equal(float(config['sleep_time_min']))
        expect(cfg.sleep_time_max).to_equal(float(config['sleep_time_max']))

        expect(cfg.startup_delay).to_equal(float(config['startup_delay']))

        expect(cfg.test_date.isoformat()[:20]).to_equal(config['time'][:20])
        expect(cfg.funkload_version).to_equal(config['version'])
예제 #7
0
    def test_can_get_cycles_in_json_from_funkload_result(self):
        config = FunkLoadTestResultFactory.get_config()
        cycles = FunkLoadTestResultFactory.get_result(4)

        result = LoadTest.get_data_from_funkload_results(config, cycles)
        expect(result['results']).not_to_be_null()

        result = result['results']
        expect(result['cycles']).to_length(4)

        expect(result['tests_executed']).to_equal(800)
        expect(result['pages_visited']).to_equal(800)
        expect(result['requests_made']).to_equal(800)

        cycle = result['cycles'][0]

        expect(cycle['test']['successful_tests_per_second']).to_equal(20.30394)
        expect(cycle['test']['total_tests']).to_equal(200)
        expect(cycle['test']['successful_tests']).to_equal(300)
        expect(cycle['test']['failed_tests']).to_equal(0)
        expect(cycle['test']['failed_tests_percentage']).to_equal(0)

        expect(cycle['page']['apdex']).to_equal(0.993)
        expect(cycle['page']['successful_pages_per_second']).to_equal(35.2)
        expect(cycle['page']['maximum_successful_pages_per_second']).to_equal(44.0)

        expect(cycle['page']['total_pages']).to_equal(200)
        expect(cycle['page']['successful_pages']).to_equal(300)
        expect(cycle['page']['failed_pages']).to_equal(0)

        expect(cycle['page']['minimum']).to_equal(0.123)
        expect(cycle['page']['average']).to_equal(0.234)
        expect(cycle['page']['maximum']).to_equal(0.384)
        expect(cycle['page']['p10']).to_equal(1.0)
        expect(cycle['page']['p50']).to_equal(1.0)
        expect(cycle['page']['p90']).to_equal(1.0)
        expect(cycle['page']['p95']).to_equal(1.0)