Class ModuleMetricEntityTestFixture<T extends Enum<T> & ModuleMetricEntityInterface>
java.lang.Object
com.linkedin.venice.stats.metrics.ModuleMetricEntityTestFixture<T>
- Type Parameters:
T- the enum class under test
public final class ModuleMetricEntityTestFixture<T extends Enum<T> & ModuleMetricEntityInterface>
extends Object
Test fixture for validating enums implementing
ModuleMetricEntityInterface. Create an
instance with the enum class and expected definitions, then call assertAll() or
individual assertion methods. Registration in aggregated collections (e.g.,
SERVER_METRIC_ENTITIES) is validated by classpath-scanning tests like
ServerMetricEntityTest, not here.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classExpectation record for a single metric entity. -
Constructor Summary
ConstructorsConstructorDescriptionModuleMetricEntityTestFixture(Class<T> enumClass, Map<T, ModuleMetricEntityTestFixture.MetricEntityExpectation> expectedDefinitions) ModuleMetricEntityTestFixture(Class<T> enumClass, Map<T, ModuleMetricEntityTestFixture.MetricEntityExpectation> expectedDefinitions, Map<String, Set<T>> allowedDuplicates) -
Method Summary
Modifier and TypeMethodDescriptionvoidRuns all assertions: count, duplicate names, and definitions.voidvoidvoidstatic voidassertNoDuplicateMetricNamesAcrossEnums(List<Class<? extends ModuleMetricEntityInterface>> enumClasses) Convenience overload with no allowed duplicates.static voidassertNoDuplicateMetricNamesAcrossEnums(Set<String> allowedDuplicateNames, List<Class<? extends ModuleMetricEntityInterface>> enumClasses) Asserts that no two enum constants across the givenModuleMetricEntityInterfaceenum classes share the same metric name.static booleanStructural equality check forMetricEntityinstances (no equals/hashCode on MetricEntity).
-
Constructor Details
-
ModuleMetricEntityTestFixture
public ModuleMetricEntityTestFixture(Class<T> enumClass, Map<T, ModuleMetricEntityTestFixture.MetricEntityExpectation> expectedDefinitions) -
ModuleMetricEntityTestFixture
public ModuleMetricEntityTestFixture(Class<T> enumClass, Map<T, ModuleMetricEntityTestFixture.MetricEntityExpectation> expectedDefinitions, Map<String, Set<T>> allowedDuplicates) - Parameters:
allowedDuplicates- maps each intentionally shared metric name to the exact set of enum constants that are permitted to share it. Any other constant reusing the same name will fail the duplicate check.
-
-
Method Details
-
assertAll
public void assertAll()Runs all assertions: count, duplicate names, and definitions. -
assertMetricEntityCount
public void assertMetricEntityCount() -
assertNoDuplicateMetricNames
public void assertNoDuplicateMetricNames() -
assertMetricEntityDefinitions
public void assertMetricEntityDefinitions() -
assertNoDuplicateMetricNamesAcrossEnums
public static void assertNoDuplicateMetricNamesAcrossEnums(Set<String> allowedDuplicateNames, List<Class<? extends ModuleMetricEntityInterface>> enumClasses) Asserts that no two enum constants across the givenModuleMetricEntityInterfaceenum classes share the same metric name. Unlike checking the output ofModuleMetricEntityInterface.getUniqueMetricEntities(java.util.List<java.lang.Class<? extends com.linkedin.venice.stats.metrics.ModuleMetricEntityInterface>>), this scans the raw enum constants and catches silent deduplication.- Parameters:
allowedDuplicateNames- metric names that are intentionally shared (e.g., when TC and DVC variants of a metric share the same OTel name). Any duplicate not in this set will fail the assertion.
-
assertNoDuplicateMetricNamesAcrossEnums
public static void assertNoDuplicateMetricNamesAcrossEnums(List<Class<? extends ModuleMetricEntityInterface>> enumClasses) Convenience overload with no allowed duplicates. -
metricEntitiesEqual
Structural equality check forMetricEntityinstances (no equals/hashCode on MetricEntity).
-