def test_handle_start_event(build_base_url, base_team_url: str, default_org_id: str, default_team_id: str, default_settings: Dict[str, Any]): experiment_id = str(uuid.uuid4()) execution_id = str(uuid.uuid4()) verification_id = str(uuid.uuid4()) run_id = str(uuid.uuid4()) experiment = { "title": "hello", "extensions": [ { "name": "chaosiq", "verification": { "id": verification_id }, "experiment_id": experiment_id, "execution_id": execution_id } ] } journal = { "title": "hello there" } build_base_url.return_value = base_team_url with requests_mock.mock() as m: url = urls.execution( urls.experiment(base_team_url, experiment_id=experiment_id)) x_url = urls.execution( urls.experiment(base_team_url, experiment_id=experiment_id), execution_id=execution_id) m.post(url, status_code=201, json={ "id": experiment_id }, headers={ "content-location": x_url }) url = urls.verification_run( urls.verification( base_team_url, verification_id=verification_id)) m.post(url, status_code=201, json={ "id": run_id, "org_id": default_org_id, "team_id": default_team_id, "verification_id": verification_id, "experiment_id": experiment_id, "execution_id": execution_id, "state": "running", "status": "", "journal": journal }) run = VerificationRunEventHandler(experiment, default_settings) r = run.started(experiment, journal) assert m.called assert run.run_id == run_id
def test_run_verification_remains_backward_compatible_issue70( build_base_url: str, base_team_url: str, default_org_id: str, default_team_id: str, default_settings: Dict[str, Any]): verification_id = "9d9b8854-9bc0-4b64-873c-65ddabb0e5f8" experiment_id = "25fe4625-ab86-4db1-8f0c-e48ed7db402e" execution_id = "0e0c725b-597a-4740-a55f-23d71966ab5d" run_id = str(uuid.uuid4()) journal = {} experiment = deepcopy(ExperimentWithCompleteVerification) experiment["extensions"][0]["verification"]["id"] = verification_id build_base_url.return_value = base_team_url with requests_mock.mock() as m: m.get("http://blah.com") url = urls.execution( urls.experiment(base_team_url, experiment_id=experiment_id)) x_url = urls.execution(urls.experiment(base_team_url, experiment_id=experiment_id), execution_id=execution_id) m.post(url, status_code=201, json={"id": experiment_id}, headers={"content-location": x_url}) url = urls.verification_run( urls.verification(base_team_url, verification_id=verification_id)) m.post(url, status_code=201, json={ "id": run_id, "org_id": default_org_id, "team_id": default_team_id, "verification_id": verification_id, "experiment_id": experiment_id, "execution_id": execution_id, "state": "running", "status": "", "journal": journal }) finished_url = "{}/{}/finished".format(url, run_id) m.post(finished_url, status_code=204, json={}) url = urls.verification_run_events( urls.verification_run(urls.verification( base_team_url, verification_id=verification_id), verification_run_id=run_id)) m.post(url, status_code=201, json={}) journal = run_verification(experiment, default_settings, strategy=Strategy.CONTINUOUS) assert journal.get("deviated") is False assert journal["status"] == "completed" assert len(journal.get("measurements")) > 1 assert journal["steady_states"]["during"] == journal["measurements"]
def test_failing_run_start_returns_nothing(build_base_url, base_team_url: str, default_org_id: str, default_team_id: str, default_settings: Dict[str, Any]): experiment_id = str(uuid.uuid4()) execution_id = str(uuid.uuid4()) verification_id = str(uuid.uuid4()) experiment = { "title": "hello", "extensions": [ { "name": "chaosiq", "verification": { "id": verification_id }, "experiment_id": experiment_id, "execution_id": execution_id } ] } build_base_url.return_value = base_team_url with requests_mock.mock() as m: url = urls.execution( urls.experiment(base_team_url, experiment_id=experiment_id)) x_url = urls.execution( urls.experiment(base_team_url, experiment_id=experiment_id), execution_id=execution_id) m.post(url, status_code=201, json={ "id": experiment_id }, headers={ "content-location": x_url }) m.base_url = base_team_url url = urls.verification_run( urls.verification( base_team_url, verification_id=verification_id)) m.post(url, exc=RuntimeError) run = VerificationRunEventHandler(experiment, default_settings) r = run.started(experiment, {}) assert r is None assert m.called
def test_build_experiment_url(): base = urls.base(ENDPOINT) experiment_id = str(uuid.uuid4()) assert urls.experiment(base, experiment_id) == \ "{}/api/v1/experiments/{}".format(ENDPOINT, experiment_id)
def test_build_experiments_url(): base = urls.base(ENDPOINT) assert urls.experiment(base) == \ "{}/api/v1/experiments".format(ENDPOINT)