def test_v2_set_weights_config():
    example = copy.deepcopy(er_example_step3)
    example['status']['currentWeightDistribution'] = [{
        "name": "default",
        "value": 50
    }, {
        "name": "canary",
        "value": 50
    }]

    example['spec']['strategy']['weights'] = {
        "maxCandidateWeight": 53,
        "maxCandidateWeightIncrement": 2,
        "algorithm": 'Progressive'
    }

    expected_resp = [{
        "name": "default",
        "value": 48
    }, {
        "name": "canary",
        "value": 52
    }]
    expr = ExperimentResource(**example)
    resp = get_weights(expr.convert_to_float())
    assert resp.data == expected_resp
def test_v2_weights_with_no_winner():
    example = copy.deepcopy(er_example_step3)
    example['status']['analysis']['winnerAssessment']['data'] = {
        "winnerFound": False
    }
    expr = ExperimentResource(**example)
    resp = get_weights(expr.convert_to_float())
    assert resp.data == w_response['data']
def test_v2_weights_with_winner():
    expr = ExperimentResource(**er_example_step3)
    resp = get_weights(expr.convert_to_float())

    expected_resp = [
        VersionWeight(name="default", value=5),
        VersionWeight(name="canary", value=95)
    ]
    assert resp.data == expected_resp
Example #4
0
def provide_weights(experiment_resource: ExperimentResource = Body(
    ..., example=er_example_step3)):
    """
    POST iter8 2.0 experiment resource, whose status includes
    aggregated metrics/version_assessments/winner assessment,
    and obtain weights.
    \f
    :body er: ExperimentResource
    """
    return get_weights(experiment_resource.convert_to_float())
def test_v2_inc_old_weights_and_best_versions_and_canary_winner():
    example = copy.deepcopy(er_example_step3)
    example['status']['currentWeightDistribution'] = [{
        "name": "default",
        "value": 70
    }, {
        "name": "canary",
        "value": 30
    }]
    expected_resp = [{
        "name": "default",
        "value": 5
    }, {
        "name": "canary",
        "value": 95
    }]
    expr = ExperimentResource(**example)
    resp = get_weights(expr.convert_to_float())
    assert resp.data == expected_resp
def test_v2_inc_old_weights_and_no_best_versions():
    example = copy.deepcopy(er_example_step3)
    example['status']['currentWeightDistribution'] = [{
        "name": "default",
        "value": 50
    }, {
        "name": "canary",
        "value": 50
    }]
    example["status"]["analysis"]["winnerAssessment"]["data"] = {
        "winnerFound": False
    }
    expected_resp = [{
        "name": "default",
        "value": 95
    }, {
        "name": "canary",
        "value": 5
    }]
    expr = ExperimentResource(**example)
    resp = get_weights(expr.convert_to_float())
    assert resp.data == expected_resp
def test_v2_weights_endpoint():
    expr = ExperimentResource(**er_example_step3)
    get_weights(expr.convert_to_float())
def test_v2_abn_w_without_wa():
    expr = ExperimentResource(**abn_er_example)
    try:
        get_weights(expr.convert_to_float())
    except AttributeError:
        pass