petersomogyi commented on a change in pull request #346: HBASE-22637 fix flaky
test in TestMetaTableMetrics
URL: https://github.com/apache/hbase/pull/346#discussion_r298576702
##########
File path:
hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMetaTableMetrics.java
##########
@@ -109,46 +112,109 @@ public static void setupBeforeClass() throws Exception {
}
}
}
- UTIL.getAdmin()
- .createTable(TableDescriptorBuilder.newBuilder(NAME1)
- .setColumnFamily(CFD)
- .build());
}
@AfterClass
public static void tearDown() throws Exception {
UTIL.shutdownMiniCluster();
}
- private void writeData(Table t) throws IOException {
- List<Put> puts = new ArrayList<>(NUM_ROWS);
- for (int i = 0; i < NUM_ROWS; i++) {
- Put p = new Put(Bytes.toBytes(i + 1));
- p.addColumn(FAMILY, QUALIFIER, Bytes.toBytes(value));
- puts.add(p);
+ // Verifies that meta table metrics exist in jmx. In case of one table (one
region) with a single
+ // client: 9 metrics
+ // are generated and for each metrics, there should be 5 JMX attributes
produced. e.g. for one
+ // table, there should
+ // be 5 MetaTable_table_<TableName>_request attributes, such as:
+ // - MetaTable_table_TestExampleMetaTableMetricsOne_request_count
+ // - MetaTable_table_TestExampleMetaTableMetricsOne_request_mean_rate
+ // - MetaTable_table_TestExampleMetaTableMetricsOne_request_1min_rate
+ // - MetaTable_table_TestExampleMetaTableMetricsOne_request_5min_rate
+ // - MetaTable_table_TestExampleMetaTableMetricsOne_request_15min_rate
+ @Test
+ public void testMetaTableMetricsInJmx() throws Exception {
+ UTIL.getAdmin()
+
.createTable(TableDescriptorBuilder.newBuilder(NAME1).setColumnFamily(CFD).build());
+ writeData(NAME1);
+ UTIL.deleteTable(NAME1);
+
+ UTIL.waitFor(30000, 2000, true, () -> {
+ Map<String, Double> jmxMetrics = readMetaTableJmxMetrics();
+ boolean allMetricsFound = AllOf.allOf(
+ containsPositiveJmxAttributesFor("MetaTable_get_request"),
+ containsPositiveJmxAttributesFor("MetaTable_put_request"),
+ containsPositiveJmxAttributesFor("MetaTable_delete_request"),
+ containsPositiveJmxAttributesFor("MetaTable_region_.+_lossy_request"),
+ containsPositiveJmxAttributesFor("MetaTable_table_" + NAME1 +
"_request"),
+ containsPositiveJmxAttributesFor("MetaTable_client_.+_put_request"),
+ containsPositiveJmxAttributesFor("MetaTable_client_.+_get_request"),
+ containsPositiveJmxAttributesFor("MetaTable_client_.+_delete_request"),
+ containsPositiveJmxAttributesFor("MetaTable_client_.+_lossy_request")
+ ).matches(jmxMetrics);
+
+ if (allMetricsFound) {
+ LOG.info("all the meta table metrics found with positive values: " +
jmxMetrics.toString());
Review comment:
On branch-2 we have slf4j so we could benefit from using parameterized
logging.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services