|
1 | 1 | # coding: utf-8
|
2 |
| - |
| 2 | +import pytest |
3 | 3 | import sys
|
4 | 4 | import time
|
5 | 5 | import linecache
|
|
13 | 13 | except ImportError:
|
14 | 14 | import mock # python < 3.3
|
15 | 15 |
|
| 16 | +try: |
| 17 | + import gevent |
| 18 | +except ImportError: |
| 19 | + gevent = None |
| 20 | + |
| 21 | +requires_gevent = pytest.mark.skipif(gevent is None, reason="gevent not enabled") |
| 22 | + |
16 | 23 |
|
17 | 24 | def parse_metrics(bytes):
|
18 | 25 | rv = []
|
@@ -418,7 +425,7 @@ def test_gauge(sentry_init, capture_envelopes):
|
418 | 425 | sentry_init(
|
419 | 426 |
|
420 | 427 | environment="not-fun-env",
|
421 |
| - _experiments={"enable_metrics": True}, |
| 428 | + _experiments={"enable_metrics": True, "metric_code_locations": False}, |
422 | 429 | )
|
423 | 430 | ts = time.time()
|
424 | 431 | envelopes = capture_envelopes()
|
@@ -450,7 +457,7 @@ def test_multiple(sentry_init, capture_envelopes):
|
450 | 457 | sentry_init(
|
451 | 458 |
|
452 | 459 | environment="not-fun-env",
|
453 |
| - _experiments={"enable_metrics": True}, |
| 460 | + _experiments={"enable_metrics": True, "metric_code_locations": False}, |
454 | 461 | )
|
455 | 462 | ts = time.time()
|
456 | 463 | envelopes = capture_envelopes()
|
@@ -503,7 +510,7 @@ def test_transaction_name(sentry_init, capture_envelopes):
|
503 | 510 | sentry_init(
|
504 | 511 |
|
505 | 512 | environment="not-fun-env",
|
506 |
| - _experiments={"enable_metrics": True}, |
| 513 | + _experiments={"enable_metrics": True, "metric_code_locations": False}, |
507 | 514 | )
|
508 | 515 | ts = time.time()
|
509 | 516 | envelopes = capture_envelopes()
|
@@ -536,12 +543,16 @@ def test_transaction_name(sentry_init, capture_envelopes):
|
536 | 543 | }
|
537 | 544 |
|
538 | 545 |
|
539 |
| -def test_metric_summaries(sentry_init, capture_envelopes): |
| 546 | +@pytest.mark.parametrize("sample_rate", [1.0, None]) |
| 547 | +def test_metric_summaries(sentry_init, capture_envelopes, sample_rate): |
540 | 548 | sentry_init(
|
541 | 549 |
|
542 | 550 | environment="not-fun-env",
|
543 | 551 | enable_tracing=True,
|
544 |
| - _experiments={"enable_metrics": True, "metrics_summary_sample_rate": 1.0}, |
| 552 | + _experiments={ |
| 553 | + "enable_metrics": True, |
| 554 | + "metrics_summary_sample_rate": sample_rate, |
| 555 | + }, |
545 | 556 | )
|
546 | 557 | ts = time.time()
|
547 | 558 | envelopes = capture_envelopes()
|
@@ -644,7 +655,7 @@ def test_metrics_summary_disabled(sentry_init, capture_envelopes):
|
644 | 655 |
|
645 | 656 | environment="not-fun-env",
|
646 | 657 | enable_tracing=True,
|
647 |
| - _experiments={"enable_metrics": True}, |
| 658 | + _experiments={"enable_metrics": True, "metrics_summary_sample_rate": 0.0}, |
648 | 659 | )
|
649 | 660 | ts = time.time()
|
650 | 661 | envelopes = capture_envelopes()
|
@@ -750,7 +761,7 @@ def test_tag_normalization(sentry_init, capture_envelopes):
|
750 | 761 | sentry_init(
|
751 | 762 |
|
752 | 763 | environment="not-fun-env",
|
753 |
| - _experiments={"enable_metrics": True}, |
| 764 | + _experiments={"enable_metrics": True, "metric_code_locations": False}, |
754 | 765 | )
|
755 | 766 | ts = time.time()
|
756 | 767 | envelopes = capture_envelopes()
|
@@ -805,6 +816,7 @@ def before_emit(key, tags):
|
805 | 816 | environment="not-fun-env",
|
806 | 817 | _experiments={
|
807 | 818 | "enable_metrics": True,
|
| 819 | + "metric_code_locations": False, |
808 | 820 | "before_emit_metric": before_emit,
|
809 | 821 | },
|
810 | 822 | )
|
@@ -850,7 +862,7 @@ def test_tag_serialization(sentry_init, capture_envelopes):
|
850 | 862 | sentry_init(
|
851 | 863 | release="fun-release",
|
852 | 864 | environment="not-fun-env",
|
853 |
| - _experiments={"enable_metrics": True}, |
| 865 | + _experiments={"enable_metrics": True, "metric_code_locations": False}, |
854 | 866 | )
|
855 | 867 | envelopes = capture_envelopes()
|
856 | 868 |
|
@@ -942,3 +954,26 @@ def bad_capture_envelope(*args, **kwargs):
|
942 | 954 | m = parse_metrics(envelope.items[0].payload.get_bytes())
|
943 | 955 | assert len(m) == 1
|
944 | 956 | assert m[0][1] == "counter@none"
|
| 957 | + |
| 958 | + |
| 959 | +@pytest.mark.forked |
| 960 | +@requires_gevent |
| 961 | +def test_no_metrics_with_gevent(sentry_init, capture_envelopes): |
| 962 | + from gevent import monkey |
| 963 | + |
| 964 | + monkey.patch_all() |
| 965 | + |
| 966 | + sentry_init( |
| 967 | + release="fun-release", |
| 968 | + environment="not-fun-env", |
| 969 | + _experiments={"enable_metrics": True, "metric_code_locations": True}, |
| 970 | + ) |
| 971 | + ts = time.time() |
| 972 | + envelopes = capture_envelopes() |
| 973 | + |
| 974 | + metrics.incr("foobar", 1.0, tags={"foo": "bar", "blub": "blah"}, timestamp=ts) |
| 975 | + metrics.incr("foobar", 2.0, tags={"foo": "bar", "blub": "blah"}, timestamp=ts) |
| 976 | + Hub.current.flush() |
| 977 | + |
| 978 | + assert Hub.current.client.metrics_aggregator is None |
| 979 | + assert len(envelopes) == 0 |
0 commit comments