use of org.apache.hive.hcatalog.messaging.DropPartitionMessage in project hive by apache.
the class TestNotificationListener method onMessage.
@Override
public void onMessage(Message msg) {
String event;
try {
event = msg.getStringProperty(HCatConstants.HCAT_EVENT);
String format = msg.getStringProperty(HCatConstants.HCAT_MESSAGE_FORMAT);
String version = msg.getStringProperty(HCatConstants.HCAT_MESSAGE_VERSION);
String messageBody = ((TextMessage) msg).getText();
actualMessages.add(event);
MessageDeserializer deserializer = MessageFactory.getDeserializer(format, version);
if (event.equals(HCatConstants.HCAT_CREATE_DATABASE_EVENT)) {
Assert.assertEquals("topic://" + HCatConstants.HCAT_DEFAULT_TOPIC_PREFIX, msg.getJMSDestination().toString());
CreateDatabaseMessage message = deserializer.getCreateDatabaseMessage(messageBody);
Assert.assertEquals("mydb", message.getDB());
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof CreateDatabaseMessage);
Assert.assertEquals("mydb", message2.getDB());
} else if (event.equals(HCatConstants.HCAT_CREATE_TABLE_EVENT)) {
Assert.assertEquals("topic://hcat.mydb", msg.getJMSDestination().toString());
CreateTableMessage message = deserializer.getCreateTableMessage(messageBody);
Assert.assertEquals("mytbl", message.getTable());
Assert.assertEquals("mydb", message.getDB());
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof CreateTableMessage);
Assert.assertEquals("mydb", message2.getDB());
Assert.assertEquals("mytbl", ((CreateTableMessage) message2).getTable());
} else if (event.equals(HCatConstants.HCAT_ADD_PARTITION_EVENT)) {
Assert.assertEquals("topic://hcat.mydb.mytbl", msg.getJMSDestination().toString());
AddPartitionMessage message = deserializer.getAddPartitionMessage(messageBody);
Assert.assertEquals("mytbl", message.getTable());
Assert.assertEquals("mydb", message.getDB());
Assert.assertEquals(1, message.getPartitions().size());
Assert.assertEquals("2011", message.getPartitions().get(0).get("b"));
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof AddPartitionMessage);
Assert.assertEquals("mydb", message2.getDB());
Assert.assertEquals("mytbl", ((AddPartitionMessage) message2).getTable());
Assert.assertEquals(1, ((AddPartitionMessage) message2).getPartitions().size());
Assert.assertEquals("2011", ((AddPartitionMessage) message2).getPartitions().get(0).get("b"));
} else if (event.equals(HCatConstants.HCAT_ALTER_PARTITION_EVENT)) {
Assert.assertEquals("topic://hcat.mydb.mytbl", msg.getJMSDestination().toString());
// for alter partition events
AlterPartitionMessage message = deserializer.getAlterPartitionMessage(messageBody);
Assert.assertEquals("mytbl", message.getTable());
Assert.assertEquals("mydb", message.getDB());
Assert.assertEquals(1, message.getKeyValues().size());
Assert.assertTrue(message.getKeyValues().values().contains("2011"));
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof AlterPartitionMessage);
Assert.assertEquals("mydb", message2.getDB());
Assert.assertEquals("mytbl", ((AlterPartitionMessage) message2).getTable());
Assert.assertEquals(1, ((AlterPartitionMessage) message2).getKeyValues().size());
Assert.assertTrue(((AlterPartitionMessage) message2).getKeyValues().values().contains("2011"));
} else if (event.equals(HCatConstants.HCAT_DROP_PARTITION_EVENT)) {
Assert.assertEquals("topic://hcat.mydb.mytbl", msg.getJMSDestination().toString());
DropPartitionMessage message = deserializer.getDropPartitionMessage(messageBody);
Assert.assertEquals("mytbl", message.getTable());
Assert.assertEquals("mydb", message.getDB());
Assert.assertEquals(1, message.getPartitions().size());
Assert.assertEquals("2011", message.getPartitions().get(0).get("b"));
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof DropPartitionMessage);
Assert.assertEquals("mydb", message2.getDB());
Assert.assertEquals("mytbl", ((DropPartitionMessage) message2).getTable());
Assert.assertEquals(1, ((DropPartitionMessage) message2).getPartitions().size());
Assert.assertEquals("2011", ((DropPartitionMessage) message2).getPartitions().get(0).get("b"));
} else if (event.equals(HCatConstants.HCAT_DROP_TABLE_EVENT)) {
Assert.assertEquals("topic://hcat.mydb", msg.getJMSDestination().toString());
DropTableMessage message = deserializer.getDropTableMessage(messageBody);
Assert.assertEquals("mytbl", message.getTable());
Assert.assertEquals("mydb", message.getDB());
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof DropTableMessage);
Assert.assertEquals("mydb", message2.getDB());
Assert.assertEquals("mytbl", ((DropTableMessage) message2).getTable());
} else if (event.equals(HCatConstants.HCAT_DROP_DATABASE_EVENT)) {
Assert.assertEquals("topic://" + HCatConstants.HCAT_DEFAULT_TOPIC_PREFIX, msg.getJMSDestination().toString());
DropDatabaseMessage message = deserializer.getDropDatabaseMessage(messageBody);
Assert.assertEquals("mydb", message.getDB());
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof DropDatabaseMessage);
Assert.assertEquals("mydb", message2.getDB());
} else if (event.equals(HCatConstants.HCAT_ALTER_TABLE_EVENT)) {
Assert.assertEquals("topic://hcat.mydb", msg.getJMSDestination().toString());
AlterTableMessage message = deserializer.getAlterTableMessage(messageBody);
Assert.assertEquals("mytbl", message.getTable());
Assert.assertEquals("mydb", message.getDB());
HCatEventMessage message2 = MessagingUtils.getMessage(msg);
Assert.assertTrue("Unexpected message-type.", message2 instanceof AlterTableMessage);
Assert.assertEquals("mydb", message2.getDB());
Assert.assertEquals("mytbl", ((AlterTableMessage) message2).getTable());
} else if (event.equals(HCatConstants.HCAT_PARTITION_DONE_EVENT)) {
// TODO: Fill in when PARTITION_DONE_EVENT is supported.
Assert.assertTrue("Unexpected: HCAT_PARTITION_DONE_EVENT not supported (yet).", false);
} else {
Assert.assertTrue("Unexpected event-type: " + event, false);
}
} catch (JMSException e) {
e.printStackTrace(System.err);
assert false;
} finally {
messageReceivedSignal.countDown();
}
}
use of org.apache.hive.hcatalog.messaging.DropPartitionMessage in project hive by apache.
the class TestHCatClientNotification method dropPartition.
// TODO - currently no way to test alter partition, as HCatClient doesn't support it.
@Test
public void dropPartition() throws Exception {
String dbName = "default";
String tableName = "hcatdropparttable";
String partColName = "pc";
HCatTable table = new HCatTable(dbName, tableName);
table.partCol(new HCatFieldSchema(partColName, TypeInfoFactory.stringTypeInfo, ""));
table.cols(Arrays.asList(new HCatFieldSchema("onecol", TypeInfoFactory.stringTypeInfo, "")));
hCatClient.createTable(HCatCreateTableDesc.create(table).build());
String partName = "testpart";
Map<String, String> partSpec = new HashMap<String, String>(1);
partSpec.put(partColName, partName);
hCatClient.addPartition(HCatAddPartitionDesc.create(new HCatPartition(table, partSpec, null)).build());
hCatClient.dropPartitions(dbName, tableName, partSpec, false);
List<HCatNotificationEvent> events = hCatClient.getNextNotification(firstEventId, 0, null);
assertEquals(3, events.size());
HCatNotificationEvent event = events.get(2);
assertEquals(firstEventId + 3, event.getEventId());
assertTrue(event.getEventTime() >= startTime);
assertEquals(HCatConstants.HCAT_DROP_PARTITION_EVENT, event.getEventType());
assertEquals(dbName, event.getDbName());
assertEquals(tableName, event.getTableName());
// Parse the message field
DropPartitionMessage dropPartitionMessage = md.getDropPartitionMessage(event.getMessage());
assertEquals(dbName, dropPartitionMessage.getDB());
assertEquals(tableName, dropPartitionMessage.getTable());
List<Map<String, String>> droppedPartSpecs = dropPartitionMessage.getPartitions();
assertNotNull(droppedPartSpecs);
assertEquals(1, droppedPartSpecs.size());
assertEquals(partSpec, droppedPartSpecs.get(0));
}
Aggregations