Search in sources :

Example 1 with ConsumeMQTT

use of org.apache.nifi.processors.mqtt.ConsumeMQTT in project nifi by apache.

the class TestConsumeMqttCommon method testQoS1NotCleanSession.

@Test
public void testQoS1NotCleanSession() throws Exception {
    testRunner.setProperty(ConsumeMQTT.PROP_QOS, "1");
    testRunner.setProperty(ConsumeMQTT.PROP_CLEAN_SESSION, ALLOWABLE_VALUE_CLEAN_SESSION_FALSE);
    testRunner.assertValid();
    ConsumeMQTT consumeMQTT = (ConsumeMQTT) testRunner.getProcessor();
    consumeMQTT.onScheduled(testRunner.getProcessContext());
    reconnect(consumeMQTT);
    Thread.sleep(PUBLISH_WAIT_MS);
    assertTrue(isConnected(consumeMQTT));
    consumeMQTT.onUnscheduled(testRunner.getProcessContext());
    PublishMessage testMessage = new PublishMessage();
    testMessage.setPayload(ByteBuffer.wrap("testMessage".getBytes()));
    testMessage.setTopicName("testTopic");
    testMessage.setDupFlag(false);
    testMessage.setQos(AbstractMessage.QOSType.LEAST_ONE);
    testMessage.setRetainFlag(false);
    internalPublish(testMessage);
    consumeMQTT.onScheduled(testRunner.getProcessContext());
    reconnect(consumeMQTT);
    Thread.sleep(PUBLISH_WAIT_MS);
    assertTrue(isConnected(consumeMQTT));
    testRunner.run(1, false, false);
    testRunner.assertTransferCount(ConsumeMQTT.REL_MESSAGE, 1);
    List<MockFlowFile> flowFiles = testRunner.getFlowFilesForRelationship(ConsumeMQTT.REL_MESSAGE);
    assertTrue(flowFiles.size() > 0);
    assertProvenanceEvents(flowFiles.size());
    MockFlowFile flowFile = flowFiles.get(0);
    flowFile.assertContentEquals("testMessage");
    flowFile.assertAttributeEquals(BROKER_ATTRIBUTE_KEY, broker);
    flowFile.assertAttributeEquals(TOPIC_ATTRIBUTE_KEY, "testTopic");
    flowFile.assertAttributeEquals(QOS_ATTRIBUTE_KEY, "1");
    flowFile.assertAttributeEquals(IS_DUPLICATE_ATTRIBUTE_KEY, "false");
    flowFile.assertAttributeEquals(IS_RETAINED_ATTRIBUTE_KEY, "false");
}
Also used : PublishMessage(io.moquette.proto.messages.PublishMessage) MockFlowFile(org.apache.nifi.util.MockFlowFile) ConsumeMQTT(org.apache.nifi.processors.mqtt.ConsumeMQTT) Test(org.junit.Test)

Example 2 with ConsumeMQTT

use of org.apache.nifi.processors.mqtt.ConsumeMQTT in project nifi by apache.

the class TestConsumeMqttCommon method testQoS2.

@Test
public void testQoS2() throws Exception {
    testRunner.setProperty(ConsumeMQTT.PROP_QOS, "2");
    testRunner.assertValid();
    ConsumeMQTT consumeMQTT = (ConsumeMQTT) testRunner.getProcessor();
    consumeMQTT.onScheduled(testRunner.getProcessContext());
    reconnect(consumeMQTT);
    Thread.sleep(PUBLISH_WAIT_MS);
    assertTrue(isConnected(consumeMQTT));
    PublishMessage testMessage = new PublishMessage();
    testMessage.setPayload(ByteBuffer.wrap("testMessage".getBytes()));
    testMessage.setTopicName("testTopic");
    testMessage.setDupFlag(false);
    testMessage.setQos(AbstractMessage.QOSType.EXACTLY_ONCE);
    testMessage.setRetainFlag(false);
    internalPublish(testMessage);
    Thread.sleep(PUBLISH_WAIT_MS);
    testRunner.run(1, false, false);
    testRunner.assertTransferCount(ConsumeMQTT.REL_MESSAGE, 1);
    assertProvenanceEvents(1);
    List<MockFlowFile> flowFiles = testRunner.getFlowFilesForRelationship(ConsumeMQTT.REL_MESSAGE);
    MockFlowFile flowFile = flowFiles.get(0);
    flowFile.assertContentEquals("testMessage");
    flowFile.assertAttributeEquals(BROKER_ATTRIBUTE_KEY, broker);
    flowFile.assertAttributeEquals(TOPIC_ATTRIBUTE_KEY, "testTopic");
    flowFile.assertAttributeEquals(QOS_ATTRIBUTE_KEY, "2");
    flowFile.assertAttributeEquals(IS_DUPLICATE_ATTRIBUTE_KEY, "false");
    flowFile.assertAttributeEquals(IS_RETAINED_ATTRIBUTE_KEY, "false");
}
Also used : PublishMessage(io.moquette.proto.messages.PublishMessage) MockFlowFile(org.apache.nifi.util.MockFlowFile) ConsumeMQTT(org.apache.nifi.processors.mqtt.ConsumeMQTT) Test(org.junit.Test)

Example 3 with ConsumeMQTT

use of org.apache.nifi.processors.mqtt.ConsumeMQTT in project nifi by apache.

the class TestPublishAndSubscribeMqttIntegration method subscribe.

private void subscribe() throws IOException, ClassNotFoundException, MqttException, InvocationTargetException, NoSuchMethodException, IllegalAccessException, NoSuchFieldException {
    testSubscribeRunner.setProperty(ConsumeMQTT.PROP_BROKER_URI, "tcp://localhost:1883");
    testSubscribeRunner.setProperty(ConsumeMQTT.PROP_CLIENTID, "TestSubscribeClient");
    testSubscribeRunner.setProperty(ConsumeMQTT.PROP_TOPIC_FILTER, "testTopic");
    testSubscribeRunner.setProperty(ConsumeMQTT.PROP_QOS, "2");
    testSubscribeRunner.setProperty(ConsumeMQTT.PROP_MAX_QUEUE_SIZE, "100");
    testSubscribeRunner.assertValid();
    ConsumeMQTT consumeMQTT = (ConsumeMQTT) testSubscribeRunner.getProcessor();
    consumeMQTT.onScheduled(testSubscribeRunner.getProcessContext());
    reconnect(consumeMQTT);
}
Also used : ConsumeMQTT(org.apache.nifi.processors.mqtt.ConsumeMQTT)

Example 4 with ConsumeMQTT

use of org.apache.nifi.processors.mqtt.ConsumeMQTT in project nifi by apache.

the class TestConsumeMqttCommon method testOnStoppedFinish.

@Test
public void testOnStoppedFinish() throws Exception {
    testRunner.setProperty(ConsumeMQTT.PROP_QOS, "2");
    testRunner.assertValid();
    MqttMessage innerMessage = new MqttMessage();
    innerMessage.setPayload(ByteBuffer.wrap("testMessage".getBytes()).array());
    innerMessage.setQos(2);
    MQTTQueueMessage testMessage = new MQTTQueueMessage("testTopic", innerMessage);
    ConsumeMQTT consumeMQTT = (ConsumeMQTT) testRunner.getProcessor();
    consumeMQTT.onScheduled(testRunner.getProcessContext());
    reconnect(consumeMQTT);
    Thread.sleep(PUBLISH_WAIT_MS);
    assertTrue(isConnected(consumeMQTT));
    consumeMQTT.processSessionFactory = testRunner.getProcessSessionFactory();
    Field f = ConsumeMQTT.class.getDeclaredField("mqttQueue");
    f.setAccessible(true);
    LinkedBlockingQueue<MQTTQueueMessage> queue = (LinkedBlockingQueue<MQTTQueueMessage>) f.get(consumeMQTT);
    queue.add(testMessage);
    consumeMQTT.onUnscheduled(testRunner.getProcessContext());
    consumeMQTT.onStopped(testRunner.getProcessContext());
    testRunner.assertTransferCount(ConsumeMQTT.REL_MESSAGE, 1);
    assertProvenanceEvents(1);
    List<MockFlowFile> flowFiles = testRunner.getFlowFilesForRelationship(ConsumeMQTT.REL_MESSAGE);
    MockFlowFile flowFile = flowFiles.get(0);
    flowFile.assertContentEquals("testMessage");
    flowFile.assertAttributeEquals(BROKER_ATTRIBUTE_KEY, broker);
    flowFile.assertAttributeEquals(TOPIC_ATTRIBUTE_KEY, "testTopic");
    flowFile.assertAttributeEquals(QOS_ATTRIBUTE_KEY, "2");
    flowFile.assertAttributeEquals(IS_DUPLICATE_ATTRIBUTE_KEY, "false");
    flowFile.assertAttributeEquals(IS_RETAINED_ATTRIBUTE_KEY, "false");
}
Also used : MockFlowFile(org.apache.nifi.util.MockFlowFile) MqttMessage(org.eclipse.paho.client.mqttv3.MqttMessage) Field(java.lang.reflect.Field) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) ConsumeMQTT(org.apache.nifi.processors.mqtt.ConsumeMQTT) Test(org.junit.Test)

Example 5 with ConsumeMQTT

use of org.apache.nifi.processors.mqtt.ConsumeMQTT in project nifi by apache.

the class TestConsumeMqttCommon method testQoS1.

@Test
public void testQoS1() throws Exception {
    testRunner.setProperty(ConsumeMQTT.PROP_QOS, "1");
    testRunner.assertValid();
    ConsumeMQTT consumeMQTT = (ConsumeMQTT) testRunner.getProcessor();
    consumeMQTT.onScheduled(testRunner.getProcessContext());
    reconnect(consumeMQTT);
    Thread.sleep(PUBLISH_WAIT_MS);
    assertTrue(isConnected(consumeMQTT));
    PublishMessage testMessage = new PublishMessage();
    testMessage.setPayload(ByteBuffer.wrap("testMessage".getBytes()));
    testMessage.setTopicName("testTopic");
    testMessage.setDupFlag(false);
    testMessage.setQos(AbstractMessage.QOSType.LEAST_ONE);
    testMessage.setRetainFlag(false);
    internalPublish(testMessage);
    Thread.sleep(PUBLISH_WAIT_MS);
    testRunner.run(1, false, false);
    List<MockFlowFile> flowFiles = testRunner.getFlowFilesForRelationship(ConsumeMQTT.REL_MESSAGE);
    assertTrue(flowFiles.size() > 0);
    assertProvenanceEvents(flowFiles.size());
    MockFlowFile flowFile = flowFiles.get(0);
    flowFile.assertContentEquals("testMessage");
    flowFile.assertAttributeEquals(BROKER_ATTRIBUTE_KEY, broker);
    flowFile.assertAttributeEquals(TOPIC_ATTRIBUTE_KEY, "testTopic");
    flowFile.assertAttributeEquals(QOS_ATTRIBUTE_KEY, "1");
    flowFile.assertAttributeEquals(IS_DUPLICATE_ATTRIBUTE_KEY, "false");
    flowFile.assertAttributeEquals(IS_RETAINED_ATTRIBUTE_KEY, "false");
}
Also used : PublishMessage(io.moquette.proto.messages.PublishMessage) MockFlowFile(org.apache.nifi.util.MockFlowFile) ConsumeMQTT(org.apache.nifi.processors.mqtt.ConsumeMQTT) Test(org.junit.Test)

Aggregations

ConsumeMQTT (org.apache.nifi.processors.mqtt.ConsumeMQTT)10 MockFlowFile (org.apache.nifi.util.MockFlowFile)9 Test (org.junit.Test)9 PublishMessage (io.moquette.proto.messages.PublishMessage)8 Field (java.lang.reflect.Field)1 LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)1 MqttMessage (org.eclipse.paho.client.mqttv3.MqttMessage)1