def test_combined_size_no_labels():
    app = create_app()
    Instrumentator().add(
        metrics.combined_size(
            should_include_handler=False,
            should_include_method=False,
            should_include_status=False,
        )).instrument(app)
    client = TestClient(app)

    client.get("/")

    assert REGISTRY.get_sample_value("http_combined_size_bytes_sum", {}) == 14
def test_combined_size_with_runtime_error():
    app = create_app()
    Instrumentator().add(metrics.combined_size()).instrument(app).expose(app)
    client = TestClient(app)

    try:
        get_response(client, "/runtime_error")
    except RuntimeError:
        pass

    response = get_response(client, "/metrics")

    assert (
        b'http_combined_size_bytes_count{handler="/runtime_error",method="GET",status="5xx"} 1.0'
        in response.content)
def test_combined_size_all_labels_with_data():
    app = create_app()
    Instrumentator().add(metrics.combined_size()).instrument(app).expose(app)
    client = TestClient(app)

    client.get("/", data="fegfgeegeg")

    _ = get_response(client, "/metrics")

    assert (REGISTRY.get_sample_value(
        "http_combined_size_bytes_sum",
        {
            "handler": "/",
            "method": "GET",
            "status": "2xx"
        },
    ) == 24)