commit 9a8acf33ce583657e44f89b59eb82b5b2383a8a8 Author: Bharath Krishna Date: Mon Apr 1 13:55:53 2019 -0700 HIVE-21205 : Tests for replace flag in insert event messages in Metastore notifications (Bharath Krishna reviewed by Vihang karajgaonkar) diff --git itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java index 06f5d5ce3f234abc7445671e0a9cfca933475bee..61ca74364f5ff203094f2abee3e09d5a6c553a3d 100644 --- itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java +++ itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/TestDbNotificationListener.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.lang.reflect.Field; @@ -1038,6 +1039,7 @@ public void insertTable() throws Exception { data.setInsertData(insertData); insertData.addToFilesAdded(fileAdded); insertData.addToFilesAddedChecksum(checksumAdded); + insertData.setReplace(false); FireEventRequest rqst = new FireEventRequest(true, data); rqst.setDbName(defaultDbName); rqst.setTableName(tblName); @@ -1061,6 +1063,7 @@ public void insertTable() throws Exception { assertEquals(defaultDbName, insertMessage.getDB()); assertEquals(tblName, insertMessage.getTable()); assertEquals(TableType.MANAGED_TABLE.toString(), insertMessage.getTableType()); + assertFalse(insertMessage.isReplace()); // Verify the eventID was passed to the non-transactional listener MockMetaStoreEventListener.popAndVerifyLastEventId(EventType.INSERT, firstEventId + 2); @@ -1104,6 +1107,7 @@ public void insertPartition() throws Exception { data.setInsertData(insertData); insertData.addToFilesAdded(fileAdded); insertData.addToFilesAddedChecksum(checksumAdded); + insertData.setReplace(false); FireEventRequest rqst = new FireEventRequest(true, data); rqst.setDbName(defaultDbName); rqst.setTableName(tblName); @@ -1125,6 +1129,7 @@ public void insertPartition() throws Exception { InsertMessage insertMessage = md.getInsertMessage(event.getMessage()); List ptnValues = insertMessage.getPtnObj().getValues(); + assertFalse(insertMessage.isReplace()); assertEquals(partKeyVals, ptnValues); // Verify the eventID was passed to the non-transactional listener @@ -1217,6 +1222,8 @@ public void sqlInsertTable() throws Exception { assertEquals(EventType.INSERT.toString(), event.getEventType()); // Parse the message field verifyInsert(event, defaultDbName, tblName); + InsertMessage insertMsg = md.getInsertMessage(event.getMessage()); + assertFalse(insertMsg.isReplace()); event = rsp.getEvents().get(4); assertEquals(firstEventId + 5, event.getEventId()); @@ -1325,6 +1332,9 @@ public void sqlInsertPartition() throws Exception { assertEquals(EventType.INSERT.toString(), event.getEventType()); // Parse the message field verifyInsert(event, null, tblName); + // Verify the replace flag. + InsertMessage insertMsg = md.getInsertMessage(event.getMessage()); + assertFalse(insertMsg.isReplace()); event = rsp.getEvents().get(6); assertEquals(firstEventId + 7, event.getEventId()); @@ -1368,6 +1378,10 @@ public void sqlInsertPartition() throws Exception { event = rsp.getEvents().get(21); assertEquals(firstEventId + 22, event.getEventId()); assertEquals(EventType.INSERT.toString(), event.getEventType()); + + // Verify the replace flag. + insertMsg = md.getInsertMessage(event.getMessage()); + assertTrue(insertMsg.isReplace()); // replace-overwrite introduces no new files assertTrue(event.getMessage().matches(".*\"files\":\\[\\].*"));