Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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"]
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
def test_build_experiments_url():
    base = urls.base(ENDPOINT)
    assert urls.experiment(base) == \
        "{}/api/v1/experiments".format(ENDPOINT)