Search in sources :

Example 6 with MyStatefulApplication

use of org.apache.samza.storage.MyStatefulApplication in project samza by apache.

the class TransactionalStateIntegrationTest method initialRun.

private void initialRun(List<String> inputMessages, List<String> expectedChangelogMessages) {
    // create input topic and produce the first batch of input messages
    createTopic(INPUT_TOPIC, 1);
    inputMessages.forEach(m -> produceMessage(INPUT_TOPIC, 0, m, m));
    // verify that the input messages were produced successfully
    if (inputMessages.size() > 0) {
        List<ConsumerRecord<String, String>> inputRecords = consumeMessages(INPUT_TOPIC, inputMessages.size());
        List<String> readInputMessages = inputRecords.stream().map(ConsumerRecord::value).collect(Collectors.toList());
        Assert.assertEquals(inputMessages, readInputMessages);
    }
    // run the application
    RunApplicationContext context = runApplication(new MyStatefulApplication(INPUT_SYSTEM, INPUT_TOPIC, Collections.singletonMap(STORE_NAME, CHANGELOG_TOPIC)), "myApp", CONFIGS);
    // wait for the application to finish
    context.getRunner().waitForFinish();
    // consume and verify the changelog messages
    if (expectedChangelogMessages.size() > 0) {
        List<ConsumerRecord<String, String>> changelogRecords = consumeMessages(CHANGELOG_TOPIC, expectedChangelogMessages.size());
        List<String> changelogMessages = changelogRecords.stream().map(ConsumerRecord::value).collect(Collectors.toList());
        Assert.assertEquals(expectedChangelogMessages, changelogMessages);
    }
    LOG.info("Finished initial run");
}
Also used : MyStatefulApplication(org.apache.samza.storage.MyStatefulApplication) ConsumerRecord(org.apache.kafka.clients.consumer.ConsumerRecord)

Aggregations

ConsumerRecord (org.apache.kafka.clients.consumer.ConsumerRecord)6 MyStatefulApplication (org.apache.samza.storage.MyStatefulApplication)6 File (java.io.File)3 FileUtil (org.apache.samza.util.FileUtil)3 SamzaApplication (org.apache.samza.application.SamzaApplication)2