Search in sources :

Example 11 with Value

use of com.ibm.streamsx.topology.logic.Value in project streamsx.topology by IBMStreams.

the class KafkaStreamsTest method testMsgImplProducer.

@Test
public void testMsgImplProducer() throws Exception {
    checkAssumes();
    Topology top = new Topology("testMsgImplProducer");
    MsgGenerator mgen = new MsgGenerator(top.getName());
    String groupId = newGroupId(top.getName());
    String topicVal = getKafkaTopics()[0];
    Supplier<String> topic = new Value<String>(topicVal);
    KafkaProducer producer = new KafkaProducer(top, createProducerConfig());
    KafkaConsumer consumer = new KafkaConsumer(top, createConsumerConfig(groupId));
    // Test producer that takes TStream<SimpleMessage> and an explicit topic.
    List<Message> msgs = new ArrayList<>();
    msgs.add(new SimpleMessage(mgen.create(topicVal, "Hello")));
    msgs.add(new SimpleMessage(mgen.create(topicVal, "key1", "Are you there?"), "key1"));
    TStream<Message> msgsToPublish = top.constants(msgs);
    msgsToPublish = msgsToPublish.modify(new InitialDelay<Message>(PUB_DELAY_MSEC));
    producer.publish(msgsToPublish, topic);
    TStream<Message> rcvdMsgs = consumer.subscribe(topic);
    // for validation...
    rcvdMsgs.print();
    // just our msgs
    rcvdMsgs = selectMsgs(rcvdMsgs, mgen.pattern());
    TStream<String> rcvdAsString = rcvdMsgs.transform(msgToJSONStringFunc());
    msgs = modifyList(msgs, setTopic(topicVal));
    List<String> expectedAsString = mapList(msgs, msgToJSONStringFunc());
    setupDebug();
    if (testBuildOnly(top))
        return;
    completeAndValidate(groupId, top, rcvdAsString, SEC_TIMEOUT, expectedAsString.toArray(new String[0]));
}
Also used : KafkaProducer(com.ibm.streamsx.topology.messaging.kafka.KafkaProducer) InitialDelay(com.ibm.streamsx.topology.test.InitialDelay) SimpleMessage(com.ibm.streamsx.topology.tuple.SimpleMessage) Message(com.ibm.streamsx.topology.tuple.Message) SimpleMessage(com.ibm.streamsx.topology.tuple.SimpleMessage) ArrayList(java.util.ArrayList) KafkaConsumer(com.ibm.streamsx.topology.messaging.kafka.KafkaConsumer) Topology(com.ibm.streamsx.topology.Topology) TestTopology(com.ibm.streamsx.topology.test.TestTopology) Value(com.ibm.streamsx.topology.logic.Value) Test(org.junit.Test)

Example 12 with Value

use of com.ibm.streamsx.topology.logic.Value in project streamsx.topology by IBMStreams.

the class MqttSample method publishSubscribe.

/**
     * Publish some messages to a topic; subscribe to the topic and report
     * received messages.
     * @param contextType string value of a {@code StreamsContext.Type}
     * @throws Exception
     */
public void publishSubscribe(String contextType) throws Exception {
    Map<String, Object> contextConfig = new HashMap<>();
    initContextConfig(contextConfig);
    Topology top = new Topology("mqttSample");
    // A compile time MQTT topic value.
    Supplier<String> topic = new Value<String>(TOPIC);
    // Create the MQTT connector
    MqttStreams mqtt = new MqttStreams(top, createMqttConfig());
    // Create a stream of messages and for the sample, give the
    // consumer a change to become ready
    TStream<Message> msgs = makeStreamToPublish(top).modify(initialDelayFunc(PUB_DELAY_MSEC));
    // Publish the message stream to the topic
    mqtt.publish(msgs, topic);
    // Subscribe to the topic and report received messages
    TStream<Message> rcvdMsgs = mqtt.subscribe(topic);
    rcvdMsgs.print();
    // Submit the topology, to send and receive the messages.
    Future<?> future = StreamsContextFactory.getStreamsContext(contextType).submit(top, contextConfig);
    if (contextType.contains("DISTRIBUTED")) {
        System.out.println("\nSee the job's PE console logs for the topology output.\n" + "Use Streams Studio or streamtool.  e.g.,\n" + "    # identify the job's \"Print\" PE\n" + "    streamtool lspes --jobs " + future.get() + "\n" + "    # print the PE's console log\n" + "    streamtool viewlog --print --console --pe <the-peid>" + "\n");
        System.out.println("Cancel the job using Streams Studio or streamtool. e.g.,\n" + "    streamtool canceljob " + future.get() + "\n");
    } else if (contextType.contains("STANDALONE")) {
        Thread.sleep(15000);
        future.cancel(true);
    }
}
Also used : MqttStreams(com.ibm.streamsx.topology.messaging.mqtt.MqttStreams) SimpleMessage(com.ibm.streamsx.topology.tuple.SimpleMessage) Message(com.ibm.streamsx.topology.tuple.Message) HashMap(java.util.HashMap) Value(com.ibm.streamsx.topology.logic.Value) Topology(com.ibm.streamsx.topology.Topology)

Example 13 with Value

use of com.ibm.streamsx.topology.logic.Value in project streamsx.topology by IBMStreams.

the class MqttStreamsTest method testExplicitTopicProducerSingleConnector.

@Test
public void testExplicitTopicProducerSingleConnector() throws Exception {
    checkAssumes();
    setupDebug();
    Topology top = new Topology("testExplicitTopicProducerSingleConnector");
    MsgGenerator mgen = new MsgGenerator(top.getName());
    String clientId = newPubClientId(top.getName());
    String topicVal = getMqttTopics()[0];
    Supplier<String> topic = new Value<String>(topicVal);
    List<Message> msgs = createMsgs(mgen, null);
    List<String> expectedAsString = mapList(modifyList(msgs, setTopic(topicVal)), msgToJSONStringFunc());
    // Test producer that takes an explicit topic and implicit config qos
    MqttStreams mqtt = new MqttStreams(top, createConfig(clientId));
    TStream<Message> msgsToPublish = top.constants(msgs).modify(new InitialDelay<Message>(PUB_DELAY_MSEC));
    TSink sink = mqtt.publish(msgsToPublish, topic);
    TStream<Message> rcvdMsgs = mqtt.subscribe(topic);
    // for validation...
    rcvdMsgs.print();
    // just our msgs
    rcvdMsgs = selectMsgs(rcvdMsgs, mgen.pattern());
    TStream<String> rcvdAsString = rcvdMsgs.transform(msgToJSONStringFunc());
    if (testBuildOnly(top))
        return;
    completeAndValidate(clientId, top, rcvdAsString, SEC_TIMEOUT, expectedAsString.toArray(new String[0]));
    assertTrue(sink != null);
}
Also used : TSink(com.ibm.streamsx.topology.TSink) MqttStreams(com.ibm.streamsx.topology.messaging.mqtt.MqttStreams) SimpleMessage(com.ibm.streamsx.topology.tuple.SimpleMessage) Message(com.ibm.streamsx.topology.tuple.Message) Topology(com.ibm.streamsx.topology.Topology) TestTopology(com.ibm.streamsx.topology.test.TestTopology) Value(com.ibm.streamsx.topology.logic.Value) Test(org.junit.Test)

Example 14 with Value

use of com.ibm.streamsx.topology.logic.Value in project streamsx.topology by IBMStreams.

the class MqttStreamsTest method testConfigParamsSubmissionParam.

@Test
public void testConfigParamsSubmissionParam() throws Exception {
    checkAssumes();
    setupDebug();
    Topology top = new Topology("testConfigParamsSubmissionParam");
    MsgGenerator mgen = new MsgGenerator(top.getName());
    String subClientId = newSubClientId(top.getName());
    String pubClientId = newPubClientId(top.getName());
    String topicVal = getMqttTopics()[0];
    Supplier<String> topic = new Value<String>(topicVal);
    List<Message> msgs = createMsgs(mgen, null);
    // Test more config properties to be sure we don't blow up
    Supplier<String> userID = top.createSubmissionParameter("userID", String.class);
    Supplier<String> password = top.createSubmissionParameter("password", String.class);
    Supplier<String> trustStore = top.createSubmissionParameter("trustStore", String.class);
    Supplier<String> trustStorePassword = top.createSubmissionParameter("trustStorePassword", String.class);
    Supplier<String> keyStore = top.createSubmissionParameter("keyStore", String.class);
    Supplier<String> keyStorePassword = top.createSubmissionParameter("keyStorePassword", String.class);
    Map<String, Object> producerConfig = createConfig(pubClientId);
    producerConfig.put("userID", userID);
    producerConfig.put("password", password);
    producerConfig.put("trustStore", trustStore);
    producerConfig.put("trustStorePassword", trustStorePassword);
    producerConfig.put("keyStore", keyStore);
    producerConfig.put("keyStorePassword", keyStorePassword);
    Map<String, Object> consumerConfig = createConfig(subClientId);
    consumerConfig.put("userID", userID);
    consumerConfig.put("password", password);
    consumerConfig.put("trustStore", trustStore);
    consumerConfig.put("trustStorePassword", trustStorePassword);
    consumerConfig.put("keyStore", keyStore);
    consumerConfig.put("keyStorePassword", keyStorePassword);
    MqttStreams producer = new MqttStreams(top, producerConfig);
    MqttStreams consumer = new MqttStreams(top, consumerConfig);
    TStream<Message> msgsToPublish = top.constants(msgs).modify(new InitialDelay<Message>(PUB_DELAY_MSEC));
    TSink sink = producer.publish(msgsToPublish, topic);
    TStream<Message> rcvdMsgs = consumer.subscribe(topic);
    // for validation...
    rcvdMsgs.print();
    // bundle construction fails for unrecognized or incorrectly typed SPL op params
    File actBundle = (File) StreamsContextFactory.getStreamsContext(StreamsContext.Type.BUNDLE).submit(top, getConfig()).get(15, TimeUnit.SECONDS);
    System.out.println("bundle " + actBundle.getAbsolutePath());
    assertTrue(actBundle != null);
    actBundle.delete();
    assertTrue(sink != null);
}
Also used : TSink(com.ibm.streamsx.topology.TSink) MqttStreams(com.ibm.streamsx.topology.messaging.mqtt.MqttStreams) SimpleMessage(com.ibm.streamsx.topology.tuple.SimpleMessage) Message(com.ibm.streamsx.topology.tuple.Message) Topology(com.ibm.streamsx.topology.Topology) TestTopology(com.ibm.streamsx.topology.test.TestTopology) Value(com.ibm.streamsx.topology.logic.Value) JSONObject(com.ibm.json.java.JSONObject) File(java.io.File) Test(org.junit.Test)

Example 15 with Value

use of com.ibm.streamsx.topology.logic.Value in project streamsx.topology by IBMStreams.

the class MqttStreamsTest method testSubtypeExplicitTopicProducer.

@Test
public void testSubtypeExplicitTopicProducer() throws Exception {
    checkAssumes();
    setupDebug();
    Topology top = new Topology("testSubtypeExplicitTopicProducer");
    MsgGenerator mgen = new MsgGenerator(top.getName());
    String subClientId = newSubClientId(top.getName());
    String pubClientId = newPubClientId(top.getName());
    String topicVal = getMqttTopics()[0];
    Supplier<String> topic = new Value<String>(topicVal);
    List<MyMsgSubtype> msgs = new ArrayList<>();
    for (Message m : createMsgs(mgen, null)) {
        msgs.add(new MyMsgSubtype(m.getMessage()));
    }
    List<String> expectedAsString = mapList(msgs, subtypeMsgToJSONStringFunc(topicVal));
    // Test producer that takes a TStream<MyMsgSubtype>
    MqttStreams producer = new MqttStreams(top, createConfig(pubClientId));
    MqttStreams consumer = new MqttStreams(top, createConfig(subClientId));
    TStream<MyMsgSubtype> msgsToPublish = top.constants(msgs).asType(MyMsgSubtype.class).modify(new InitialDelay<MyMsgSubtype>(PUB_DELAY_MSEC));
    TSink sink = producer.publish(msgsToPublish, topic);
    TStream<Message> rcvdMsgs = consumer.subscribe(topic);
    // for validation...
    rcvdMsgs.print();
    // just our msgs
    rcvdMsgs = selectMsgs(rcvdMsgs, mgen.pattern());
    TStream<String> rcvdAsString = rcvdMsgs.transform(msgToJSONStringFunc());
    if (testBuildOnly(top))
        return;
    completeAndValidate(subClientId, top, rcvdAsString, SEC_TIMEOUT, expectedAsString.toArray(new String[0]));
    assertTrue(sink != null);
}
Also used : TSink(com.ibm.streamsx.topology.TSink) MqttStreams(com.ibm.streamsx.topology.messaging.mqtt.MqttStreams) SimpleMessage(com.ibm.streamsx.topology.tuple.SimpleMessage) Message(com.ibm.streamsx.topology.tuple.Message) ArrayList(java.util.ArrayList) Topology(com.ibm.streamsx.topology.Topology) TestTopology(com.ibm.streamsx.topology.test.TestTopology) Value(com.ibm.streamsx.topology.logic.Value) Test(org.junit.Test)

Aggregations

Value (com.ibm.streamsx.topology.logic.Value)15 Message (com.ibm.streamsx.topology.tuple.Message)15 SimpleMessage (com.ibm.streamsx.topology.tuple.SimpleMessage)15 Topology (com.ibm.streamsx.topology.Topology)14 TestTopology (com.ibm.streamsx.topology.test.TestTopology)12 Test (org.junit.Test)12 KafkaConsumer (com.ibm.streamsx.topology.messaging.kafka.KafkaConsumer)7 KafkaProducer (com.ibm.streamsx.topology.messaging.kafka.KafkaProducer)7 MqttStreams (com.ibm.streamsx.topology.messaging.mqtt.MqttStreams)7 ArrayList (java.util.ArrayList)7 TSink (com.ibm.streamsx.topology.TSink)6 InitialDelay (com.ibm.streamsx.topology.test.InitialDelay)6 JSONObject (com.ibm.json.java.JSONObject)2 File (java.io.File)2 HashMap (java.util.HashMap)2 SPLStream (com.ibm.streamsx.topology.spl.SPLStream)1