LCOV - code coverage report
Current view: top level - lib/src/metrics - exemplar_filter.dart (source / functions) Coverage Total Hit
Test: lcov.info Lines: 88.9 % 9 8
Test Date: 2026-08-27 23:42:02 Functions: - 0 0

            Line data    Source code
       1              : // Copyright The OpenTelemetry Authors
       2              : // SPDX-License-Identifier: Apache-2.0
       3              : 
       4              : import 'package:dartastic_opentelemetry_api/dartastic_opentelemetry_api.dart';
       5              : 
       6              : /// An ExemplarFilter evaluates a measurement to determine if an Exemplar should
       7              : /// be sampled.
       8              : abstract class ExemplarFilter {
       9              :   /// Evaluates whether an exemplar should be sampled for the given measurement.
      10              :   ///
      11              :   /// @param value The value of the measurement.
      12              :   /// @param attributes The attributes associated with the measurement.
      13              :   /// @param context The Context associated with the measurement.
      14              :   /// @return true if the measurement should be sampled as an exemplar, false otherwise.
      15              :   bool shouldSample(num value, Attributes attributes, Context context);
      16              : }
      17              : 
      18              : /// An ExemplarFilter which samples all measurements.
      19              : class AlwaysOnExemplarFilter implements ExemplarFilter {
      20          172 :   const AlwaysOnExemplarFilter();
      21              : 
      22            0 :   @override
      23              :   bool shouldSample(num value, Attributes attributes, Context context) {
      24              :     return true;
      25              :   }
      26              : }
      27              : 
      28              : /// An ExemplarFilter which samples no measurements.
      29              : class AlwaysOffExemplarFilter implements ExemplarFilter {
      30          172 :   const AlwaysOffExemplarFilter();
      31              : 
      32            1 :   @override
      33              :   bool shouldSample(num value, Attributes attributes, Context context) {
      34              :     return false;
      35              :   }
      36              : }
      37              : 
      38              : /// An ExemplarFilter which makes its sampling decisions based on the trace context.
      39              : ///
      40              : /// It only samples measurements if the context contains a sampled trace.
      41              : class TraceBasedExemplarFilter implements ExemplarFilter {
      42          172 :   const TraceBasedExemplarFilter();
      43              : 
      44           32 :   @override
      45              :   bool shouldSample(num value, Attributes attributes, Context context) {
      46           32 :     final spanContext = context.spanContext;
      47              :     return spanContext != null &&
      48            2 :         spanContext.isValid &&
      49            4 :         spanContext.traceFlags.isSampled;
      50              :   }
      51              : }
        

Generated by: LCOV version 2.0-1