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

Reply via email to