|
4 | 4 |
|
5 | 5 |
|
6 | 6 | from cadence._internal.visibility.metrics import ( |
7 | | - MetricsRegistry, |
8 | | - MetricType, |
9 | | - NoOpMetricsCollector, |
10 | | - get_default_registry, |
11 | | - set_default_registry, |
| 7 | + MetricsHandler, |
| 8 | + NoOpMetricsHandler, |
| 9 | + get_default_handler, |
| 10 | + set_default_handler, |
12 | 11 | ) |
13 | 12 |
|
14 | 13 |
|
15 | | -class TestMetricsRegistry: |
16 | | - """Test cases for MetricsRegistry.""" |
| 14 | +class TestMetricsHandler: |
| 15 | + """Test cases for MetricsHandler protocol.""" |
17 | 16 |
|
18 | | - def test_registry_with_no_collector(self): |
19 | | - """Test registry with default no-op collector.""" |
20 | | - registry = MetricsRegistry() |
| 17 | + def test_noop_handler(self): |
| 18 | + """Test no-op handler doesn't raise exceptions.""" |
| 19 | + handler = NoOpMetricsHandler() |
21 | 20 |
|
22 | 21 | # Should not raise any exceptions |
23 | | - registry.counter("test_counter", 1) |
24 | | - registry.gauge("test_gauge", 42.0) |
25 | | - registry.histogram("test_histogram", 0.5) |
26 | | - registry.timer("test_timing", 1.5) |
| 22 | + handler.counter("test_counter", 1) |
| 23 | + handler.gauge("test_gauge", 42.0) |
| 24 | + handler.histogram("test_histogram", 0.5) |
| 25 | + handler.timer("test_timing", 1.5) |
27 | 26 |
|
28 | | - def test_registry_with_mock_collector(self): |
29 | | - """Test registry with mock collector.""" |
30 | | - mock_collector = Mock() |
31 | | - registry = MetricsRegistry(mock_collector) |
| 27 | + def test_mock_handler(self): |
| 28 | + """Test mock handler implementation.""" |
| 29 | + mock_handler = Mock(spec=MetricsHandler) |
32 | 30 |
|
33 | 31 | # Test counter |
34 | | - registry.counter("test_counter", 2, {"label": "value"}) |
35 | | - mock_collector.counter.assert_called_once_with( |
| 32 | + mock_handler.counter("test_counter", 2, {"label": "value"}) |
| 33 | + mock_handler.counter.assert_called_once_with( |
36 | 34 | "test_counter", 2, {"label": "value"} |
37 | 35 | ) |
38 | 36 |
|
39 | 37 | # Test gauge |
40 | | - registry.gauge("test_gauge", 100.0, {"env": "test"}) |
41 | | - mock_collector.gauge.assert_called_once_with( |
| 38 | + mock_handler.gauge("test_gauge", 100.0, {"env": "test"}) |
| 39 | + mock_handler.gauge.assert_called_once_with( |
42 | 40 | "test_gauge", 100.0, {"env": "test"} |
43 | 41 | ) |
44 | 42 |
|
45 | 43 | # Test timer |
46 | | - registry.timer("test_timing", 0.75) |
47 | | - mock_collector.timer.assert_called_once_with( |
48 | | - "test_timing", 0.75, None |
| 44 | + mock_handler.timer("test_timing", 0.75, {"tag": "value"}) |
| 45 | + mock_handler.timer.assert_called_once_with( |
| 46 | + "test_timing", 0.75, {"tag": "value"} |
49 | 47 | ) |
50 | 48 |
|
51 | 49 | # Test histogram |
52 | | - registry.histogram("test_histogram", 2.5) |
53 | | - mock_collector.histogram.assert_called_once_with( |
54 | | - "test_histogram", 2.5, None |
| 50 | + mock_handler.histogram("test_histogram", 2.5, {"env": "prod"}) |
| 51 | + mock_handler.histogram.assert_called_once_with( |
| 52 | + "test_histogram", 2.5, {"env": "prod"} |
55 | 53 | ) |
56 | 54 |
|
57 | | - def test_set_collector(self): |
58 | | - """Test setting a new collector.""" |
59 | | - registry = MetricsRegistry() |
60 | | - mock_collector = Mock() |
61 | 55 |
|
62 | | - registry.set_collector(mock_collector) |
63 | | - registry.counter("test", 1) |
| 56 | +class TestDefaultHandler: |
| 57 | + """Test cases for default handler management.""" |
64 | 58 |
|
65 | | - mock_collector.counter.assert_called_once_with("test", 1, None) |
66 | | - |
67 | | - def test_register_metric(self): |
68 | | - """Test metric registration.""" |
69 | | - registry = MetricsRegistry() |
70 | | - |
71 | | - registry.register_metric("test_counter", MetricType.COUNTER) |
72 | | - registry.register_metric("test_gauge", MetricType.GAUGE) |
73 | | - |
74 | | - # Registering the same metric twice should not raise an error |
75 | | - registry.register_metric("test_counter", MetricType.COUNTER) |
76 | | - |
77 | | - def test_collector_exception_handling(self): |
78 | | - """Test that collector exceptions are handled gracefully.""" |
79 | | - mock_collector = Mock() |
80 | | - mock_collector.counter.side_effect = Exception("Test exception") |
81 | | - |
82 | | - registry = MetricsRegistry(mock_collector) |
83 | | - |
84 | | - # Should not raise exception, but log error |
85 | | - registry.counter("test", 1) |
86 | | - |
87 | | - mock_collector.counter.assert_called_once() |
88 | | - |
89 | | - |
90 | | -class TestNoOpMetricsCollector: |
91 | | - """Test cases for NoOpMetricsCollector.""" |
92 | | - |
93 | | - def test_no_op_collector(self): |
94 | | - """Test that no-op collector doesn't raise exceptions.""" |
95 | | - collector = NoOpMetricsCollector() |
96 | | - |
97 | | - # Should not raise any exceptions |
98 | | - collector.counter("test", 1, {"label": "value"}) |
99 | | - collector.gauge("test", 42.0) |
100 | | - collector.histogram("test", 0.5, {"env": "test"}) |
101 | | - collector.timer("test", 1.5) |
102 | | - |
103 | | - |
104 | | -class TestDefaultRegistry: |
105 | | - """Test cases for default registry management.""" |
106 | | - |
107 | | - def test_get_default_registry(self): |
108 | | - """Test getting the default registry.""" |
109 | | - registry = get_default_registry() |
110 | | - assert isinstance(registry, MetricsRegistry) |
| 59 | + def test_get_default_handler(self): |
| 60 | + """Test getting the default handler.""" |
| 61 | + handler = get_default_handler() |
| 62 | + assert isinstance(handler, NoOpMetricsHandler) |
111 | 63 |
|
112 | 64 | # Should return the same instance |
113 | | - registry2 = get_default_registry() |
114 | | - assert registry is registry2 |
| 65 | + handler2 = get_default_handler() |
| 66 | + assert handler is handler2 |
115 | 67 |
|
116 | | - def test_set_default_registry(self): |
117 | | - """Test setting a custom default registry.""" |
118 | | - original_registry = get_default_registry() |
119 | | - custom_registry = MetricsRegistry() |
| 68 | + def test_set_default_handler(self): |
| 69 | + """Test setting a custom default handler.""" |
| 70 | + original_handler = get_default_handler() |
| 71 | + custom_handler = NoOpMetricsHandler() |
120 | 72 |
|
121 | | - set_default_registry(custom_registry) |
| 73 | + set_default_handler(custom_handler) |
122 | 74 |
|
123 | | - # Should return the custom registry |
124 | | - current_registry = get_default_registry() |
125 | | - assert current_registry is custom_registry |
126 | | - assert current_registry is not original_registry |
| 75 | + # Should return the custom handler |
| 76 | + current_handler = get_default_handler() |
| 77 | + assert current_handler is custom_handler |
| 78 | + assert current_handler is not original_handler |
127 | 79 |
|
128 | 80 | # Restore original for other tests |
129 | | - set_default_registry(original_registry) |
| 81 | + set_default_handler(original_handler) |
0 commit comments