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)
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)
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'])
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)
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)
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'])
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)