|
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 | release="fun-release@1.0.0", |
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 | release="fun-release@1.0.0", |
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 | release="fun-release@1.0.0", |
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 | release="fun-release@1.0.0", |
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 | release="fun-release@1.0.0", |
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 | release="fun-release@1.0.0", |
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