Abacn commented on code in PR #38749:
URL: https://github.com/apache/beam/pull/38749#discussion_r3329159259
##########
sdks/python/apache_beam/metrics/metric_test.py:
##########
@@ -121,6 +123,78 @@ def test_get_namespace_error(self):
with self.assertRaises(ValueError):
Metrics.get_namespace(object())
+ def test_metrics_flag(self):
+ """Mirrors Java MetricsTest.testMetricsFlag for the three disable*
experiments."""
+ MetricsFlag.reset()
+ self.assertFalse(MetricsFlag.counter_disabled)
+ self.assertFalse(MetricsFlag.string_set_disabled)
+ self.assertFalse(MetricsFlag.bounded_trie_disabled)
+
+ options = PipelineOptions(['--experiments=disableCounterMetrics'])
+ MetricsFlag.set_default_pipeline_options(options)
+ self.assertTrue(MetricsFlag.counter_disabled)
+ self.assertFalse(MetricsFlag.string_set_disabled)
+ self.assertFalse(MetricsFlag.bounded_trie_disabled)
+
+ MetricsFlag.reset()
+ options = PipelineOptions(['--experiments=disableStringSetMetrics'])
+ MetricsFlag.set_default_pipeline_options(options)
+ self.assertFalse(MetricsFlag.counter_disabled)
+ self.assertTrue(MetricsFlag.string_set_disabled)
+ self.assertFalse(MetricsFlag.bounded_trie_disabled)
+
+ MetricsFlag.reset()
+ options = PipelineOptions(['--experiments=disableBoundedTrieMetrics'])
+ MetricsFlag.set_default_pipeline_options(options)
+ self.assertFalse(MetricsFlag.counter_disabled)
+ self.assertFalse(MetricsFlag.string_set_disabled)
+ self.assertTrue(MetricsFlag.bounded_trie_disabled)
+
+ MetricsFlag.reset()
+ options = PipelineOptions([
+ '--experiments=disableCounterMetrics',
+ '--experiments=disableStringSetMetrics',
+ '--experiments=disableBoundedTrieMetrics',
+ ])
+ MetricsFlag.set_default_pipeline_options(options)
+ self.assertTrue(MetricsFlag.counter_disabled)
+ self.assertTrue(MetricsFlag.string_set_disabled)
+ self.assertTrue(MetricsFlag.bounded_trie_disabled)
+
+ MetricsFlag.reset()
Review Comment:
Consider wrap the test into a try block and then
```
finally:
MetricsFlag.reset()
```
as below
##########
sdks/python/apache_beam/metrics/metric.py:
##########
@@ -46,18 +46,60 @@
from apache_beam.metrics.metricbase import Histogram
from apache_beam.metrics.metricbase import MetricName
from apache_beam.metrics.metricbase import StringSet
+from apache_beam.options.pipeline_options import DebugOptions
if TYPE_CHECKING:
from apache_beam.internal.metrics.metric import MetricLogger
from apache_beam.metrics.execution import MetricKey
from apache_beam.metrics.metricbase import Metric
+ from apache_beam.options.pipeline_options import PipelineOptions
from apache_beam.utils.histogram import BucketType
__all__ = ['Metrics', 'MetricsFilter', 'Lineage']
_LOGGER = logging.getLogger(__name__)
+class MetricsFlag(object):
+ """Process-wide flags controlling which user metric kinds are emitted.
+
+ Mirrors the Java SDK ``Metrics.MetricsFlag`` behavior. The flags are read
Review Comment:
We don't need to mention "Mirrors the Java SDK..." in Python pydoc, as we
don't assume Beam python user have Java knowledge (or even aware of Java SDK).
In general please simplify pydocs as MetricsFlag is internal API
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]