/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ package org.opensearch.performanceanalyzer.reader; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.sql.SQLException; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.jooq.Condition; import org.jooq.Field; import org.junit.Test; import org.opensearch.performanceanalyzer.commons.metrics.AllMetrics; public class MetricPropertiesConfigTests extends AbstractReaderTests { public MetricPropertiesConfigTests() throws SQLException, ClassNotFoundException { super(); } /** Test table names used for metadata table in disk db are unique */ @Test public void testUniqueTableNames() { Set seen = new HashSet<>(); for (Map.Entry entry : MetricPropertiesConfig.getInstance().getMetricName2Property().entrySet()) { MetricProperties property = entry.getValue(); List metadataTableNames = property.getMetadataTableNames(); for (String name : metadataTableNames) { assertTrue( String.format( "Metric %s has duplicate metadata table name %s", entry.getKey(), name), !seen.contains(name)); seen.add(name); } } } @Test public void testConsistentAcrossMaps() { for (Map.Entry entry : MetricPropertiesConfig.getInstance().getMetricName2Property().entrySet()) { MetricProperties property = entry.getValue(); List metadataTableNames = property.getMetadataTableNames(); Map>> groupByFields = property.getTableGroupByFieldsMap(); Map>> selectFields = property.getTableSelectMap(); Map whereClauses = property.getTableWhereClauseMap(); assertEquals(metadataTableNames.size(), groupByFields.size()); assertEquals(metadataTableNames.size(), selectFields.size()); assertEquals(metadataTableNames.size(), whereClauses.size()); for (String tableName : metadataTableNames) { assertTrue(groupByFields.containsKey(tableName)); assertTrue(selectFields.containsKey(tableName)); assertTrue(whereClauses.containsKey(tableName)); List> currGroupByFields = groupByFields.get(tableName); List> currSelectFields = selectFields.get(tableName); for (Field field : currGroupByFields) { assertTrue(currSelectFields.contains(field)); } } } } /** Test if we have configuration for each MetricName */ @Test public void testMetricNameConsistent() { for (AllMetrics.MetricName name : AllMetrics.MetricName.values()) { assertTrue( String.format("Missing %s", name), MetricPropertiesConfig.getInstance() .getMetricName2Property() .containsKey(name)); } } }