def test_transaction_keyword_truncation(zuqa_client):
    too_long = "x" * (KEYWORD_MAX_LENGTH + 1)
    expected = encoding.keyword_field(too_long)
    assert too_long != expected
    assert len(expected) == KEYWORD_MAX_LENGTH
    assert expected[-1] != "x"
    zuqa_client.begin_transaction(too_long)
    zuqa.tag(val=too_long)
    zuqa.set_user_context(username=too_long, email=too_long, user_id=too_long)
    with zuqa.capture_span(name=too_long, span_type=too_long):
        pass
    zuqa_client.end_transaction(too_long, too_long)
    zuqa_client.close()

    span = zuqa_client.events["span"][0]
    transaction = zuqa_client.events["transaction"][0]

    assert transaction["name"] == expected
    assert transaction["type"] == expected
    assert transaction["result"] == expected

    assert transaction["context"]["user"]["id"] == expected
    assert transaction["context"]["user"]["username"] == expected
    assert transaction["context"]["user"]["email"] == expected

    assert transaction["context"]["tags"]["val"] == expected

    assert span["type"] == expected
    assert span["name"] == expected
Ejemplo n.º 2
0
def test_tags_merge(zuqa_client):
    zuqa_client.begin_transaction("test")
    zuqa.tag(foo=1, bar="baz")
    zuqa.tag(bar=3, boo="biz")
    zuqa_client.end_transaction("test", "OK")
    transactions = zuqa_client.events[TRANSACTION]

    assert transactions[0]["context"]["tags"] == {"foo": "1", "bar": "3", "boo": "biz"}
Ejemplo n.º 3
0
def test_tagging_is_deprecated(zuqa_client):
    zuqa_client.begin_transaction("test")
    with pytest.warns(DeprecationWarning, match="Call to deprecated function tag. Use zuqa.label instead"):
        zuqa.tag(foo="bar")
    zuqa_client.end_transaction("test", "OK")
    transactions = zuqa_client.events[TRANSACTION]

    assert transactions[0]["context"]["tags"] == {"foo": "bar"}
Ejemplo n.º 4
0
def test_tag_transaction():
    requests_store = Tracer(lambda: [], lambda: [], lambda *args: None, Config(), None)
    transaction = requests_store.begin_transaction("test")
    zuqa.tag(foo="bar")
    transaction.tag(baz="bazzinga")
    requests_store.end_transaction(200, "test")

    assert transaction.labels == {"foo": "bar", "baz": "bazzinga"}
    transaction_dict = transaction.to_dict()
    assert transaction_dict["context"]["tags"] == {"foo": "bar", "baz": "bazzinga"}
Ejemplo n.º 5
0
def test_transaction_context_is_used_in_errors(zuqa_client):
    zuqa_client.begin_transaction("test")
    zuqa.tag(foo="baz")
    zuqa.set_custom_context({"a": "b"})
    zuqa.set_user_context(username="******", email="*****@*****.**", user_id=42)
    zuqa_client.capture_message("x", custom={"foo": "bar"})
    transaction = zuqa_client.end_transaction("test", "OK")
    message = zuqa_client.events[ERROR][0]
    assert message["context"]["custom"] == {"a": "b", "foo": "bar"}
    assert message["context"]["user"] == {
        "username": "******",
        "email": "*****@*****.**",
        "id": 42
    }
    assert message["context"]["tags"] == {"foo": "baz"}
    assert "a" in transaction.context["custom"]
    assert "foo" not in transaction.context["custom"]
Ejemplo n.º 6
0
def test_tags_dedot(zuqa_client):
    zuqa_client.begin_transaction("test")
    zuqa.tag(**{"d.o.t": "dot"})
    zuqa.tag(**{"s*t*a*r": "star"})
    zuqa.tag(**{'q"u"o"t"e': "quote"})

    zuqa_client.end_transaction("test_name", 200)

    transactions = zuqa_client.events[TRANSACTION]

    assert transactions[0]["context"]["tags"] == {"d_o_t": "dot", "s_t_a_r": "star", "q_u_o_t_e": "quote"}
Ejemplo n.º 7
0
def test_tag_with_non_string_value():
    requests_store = Tracer(lambda: [], lambda: [], lambda *args: None, config=Config(), agent=None)
    t = requests_store.begin_transaction("test")
    zuqa.tag(foo=1)
    requests_store.end_transaction(200, "test")
    assert t.labels == {"foo": "1"}
Ejemplo n.º 8
0
def test_tag_while_no_transaction(caplog):
    with caplog.at_level(logging.WARNING, "zuqa.errors"):
        zuqa.tag(foo="bar")
    record = caplog.records[0]
    assert record.levelno == logging.WARNING
    assert "foo" in record.args