lcspinter commented on a change in pull request #2916:
URL: https://github.com/apache/hive/pull/2916#discussion_r788944194
##########
File path:
ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestDeltaFilesMetrics.java
##########
@@ -39,199 +45,396 @@
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
-import java.util.EnumMap;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import java.util.Queue;
import java.util.concurrent.TimeUnit;
-import static
org.apache.hadoop.hive.ql.txn.compactor.metrics.DeltaFilesMetricReporter.DeltaFilesMetricType.NUM_DELTAS;
-import static
org.apache.hadoop.hive.ql.txn.compactor.metrics.DeltaFilesMetricReporter.DeltaFilesMetricType.NUM_OBSOLETE_DELTAS;
-import static
org.apache.hadoop.hive.ql.txn.compactor.metrics.DeltaFilesMetricReporter.DeltaFilesMetricType.NUM_SMALL_DELTAS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
public class TestDeltaFilesMetrics extends CompactorTest {
private void setUpHiveConf() {
- HiveConf.setBoolVar(conf, HiveConf.ConfVars.HIVE_SERVER2_METRICS_ENABLED,
true);
- HiveConf.setIntVar(conf,
HiveConf.ConfVars.HIVE_TXN_ACID_METRICS_MAX_CACHE_SIZE, 2);
- HiveConf.setTimeVar(conf,
HiveConf.ConfVars.HIVE_TXN_ACID_METRICS_CACHE_DURATION, 7200, TimeUnit.SECONDS);
- HiveConf.setIntVar(conf,
HiveConf.ConfVars.HIVE_TXN_ACID_METRICS_OBSOLETE_DELTA_NUM_THRESHOLD, 100);
- HiveConf.setIntVar(conf,
HiveConf.ConfVars.HIVE_TXN_ACID_METRICS_DELTA_NUM_THRESHOLD, 100);
- HiveConf.setTimeVar(conf,
HiveConf.ConfVars.HIVE_TXN_ACID_METRICS_REPORTING_INTERVAL, 1,
TimeUnit.SECONDS);
+ MetastoreConf.setLongVar(conf,
MetastoreConf.ConfVars.METASTORE_DELTAMETRICS_DELTA_NUM_THRESHOLD, 1);
+ MetastoreConf.setLongVar(conf,
MetastoreConf.ConfVars.METASTORE_DELTAMETRICS_OBSOLETE_DELTA_NUM_THRESHOLD, 1);
+ MetastoreConf.setTimeVar(conf,
MetastoreConf.ConfVars.METASTORE_DELTAMETRICS_REPORTING_INTERVAL, 1,
+ TimeUnit.SECONDS);
+ MetastoreConf.setDoubleVar(conf,
MetastoreConf.ConfVars.METASTORE_DELTAMETRICS_DELTA_PCT_THRESHOLD, 0.15f);
+ MetastoreConf.setBoolVar(conf, MetastoreConf.ConfVars.METRICS_ENABLED,
true);
+ MetastoreConf.setBoolVar(conf,
MetastoreConf.ConfVars.METASTORE_ACIDMETRICS_EXT_ON, true);
+ MetastoreConf.setBoolVar(conf,
MetastoreConf.ConfVars.COMPACTOR_INITIATOR_ON, true);
}
- private void initAndCollectFirstMetrics() throws Exception {
- MetricsFactory.close();
- MetricsFactory.init(conf);
+ @After
+ public void tearDown() throws Exception {
+ DeltaFilesMetricReporter.close();
+ }
- DeltaFilesMetricReporter.init(conf);
- TezCounters tezCounters = new TezCounters();
- tezCounters.findCounter(NUM_OBSOLETE_DELTAS + "",
"default.acid/p=1").setValue(200);
- tezCounters.findCounter(NUM_OBSOLETE_DELTAS + "",
"default.acid/p=2").setValue(100);
- tezCounters.findCounter(NUM_OBSOLETE_DELTAS + "",
"default.acid/p=3").setValue(150);
- tezCounters.findCounter(NUM_OBSOLETE_DELTAS + "",
"default.acid_v2").setValue(250);
+ static void verifyMetricsMatch(Map<String, String> expected, Map<String,
String> actual) {
+ Assert.assertTrue("Actual metrics " + actual + " don't match expected: " +
expected,
+ equivalent(expected, actual));
+ }
- tezCounters.findCounter(NUM_DELTAS + "", "default.acid/p=1").setValue(150);
- tezCounters.findCounter(NUM_DELTAS + "", "default.acid/p=2").setValue(100);
- tezCounters.findCounter(NUM_DELTAS + "", "default.acid/p=3").setValue(250);
- tezCounters.findCounter(NUM_DELTAS + "", "default.acid_v2").setValue(200);
+ private static boolean equivalent(Map<String, String> lhs, Map<String,
String> rhs) {
+ return lhs.size() == rhs.size() && Maps.difference(lhs, rhs).areEqual();
+ }
- tezCounters.findCounter(NUM_SMALL_DELTAS + "",
"default.acid/p=1").setValue(250);
- tezCounters.findCounter(NUM_SMALL_DELTAS + "",
"default.acid/p=2").setValue(200);
- tezCounters.findCounter(NUM_SMALL_DELTAS + "",
"default.acid/p=3").setValue(150);
- tezCounters.findCounter(NUM_SMALL_DELTAS + "",
"default.acid_v2").setValue(100);
+ static Map<String, String> gaugeToMap(String metric) throws Exception {
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ ObjectName oname = new
ObjectName(DeltaFilesMetricReporter.OBJECT_NAME_PREFIX + metric);
+ MBeanInfo mbeanInfo = mbs.getMBeanInfo(oname);
- DeltaFilesMetricReporter.getInstance().submit(tezCounters, null);
- Thread.sleep(1000);
+ Map<String, String> result = new HashMap<>();
+ for (MBeanAttributeInfo attr : mbeanInfo.getAttributes()) {
+ result.put(attr.getName(), String.valueOf(mbs.getAttribute(oname,
attr.getName())));
+ }
+ return result;
}
- @After
- public void tearDown() {
- DeltaFilesMetricReporter.close();
+ @Override
+ boolean useHive130DeltaDirName() {
+ return false;
}
@Test
- public void testDeltaFilesMetric() throws Exception {
+ public void testDeltaFileMetricPartitionedTable() throws Exception {
setUpHiveConf();
- initAndCollectFirstMetrics();
+ String dbName = "default";
+ String tblName = "dp";
+ String partName = "ds=part1";
+ Table t = newTable(dbName, tblName, true);
+ List<LockComponent> components = new ArrayList<>();
+
+ Partition p = newPartition(t, "part1");
+ addBaseFile(t, p, 20L, 20);
+ addDeltaFile(t, p, 21L, 22L, 2);
+ addDeltaFile(t, p, 23L, 24L, 20);
+
+ components.add(createLockComponent(dbName, tblName, partName));
+
+ burnThroughTransactions(dbName, tblName, 23);
+ long txnid = openTxn();
+
+ LockRequest req = new LockRequest(components, "me", "localhost");
+ req.setTxnid(txnid);
+ LockResponse res = txnHandler.lock(req);
+ Assert.assertEquals(LockState.ACQUIRED, res.getState());
+
+ long writeid = allocateWriteId(dbName, tblName, txnid);
+ Assert.assertEquals(24, writeid);
+ txnHandler.commitTxn(new CommitTxnRequest(txnid));
+
+ startInitiator();
+
+ TimeUnit.SECONDS.sleep(1);
Review comment:
Done.
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]