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
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"}
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"}
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"}
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"]
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"}
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"}
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