Toggled Kafka integration tests using the properties file Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/26641cc4 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/26641cc4 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/26641cc4
Branch: refs/heads/master Commit: 26641cc435db46646e5ce5732df09c58781b4ce8 Parents: c6be1ae Author: Kasper Sørensen <[email protected]> Authored: Sun Jan 28 15:05:43 2018 -0800 Committer: Kasper Sørensen <[email protected]> Committed: Sun Jan 28 15:05:43 2018 -0800 ---------------------------------------------------------------------- ...del-integrationtest-configuration.properties | 7 ++ .../kafka/KafkaDataContextIntegrationTest.java | 36 ++++++---- .../apache/metamodel/kafka/KafkaTestServer.java | 74 ++++++++++++++++++++ ...del-integrationtest-configuration.properties | 7 ++ 4 files changed, 112 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/26641cc4/example-metamodel-integrationtest-configuration.properties ---------------------------------------------------------------------- diff --git a/example-metamodel-integrationtest-configuration.properties b/example-metamodel-integrationtest-configuration.properties index 4f3cbfe..20bba26 100644 --- a/example-metamodel-integrationtest-configuration.properties +++ b/example-metamodel-integrationtest-configuration.properties @@ -45,6 +45,13 @@ #hbase.zookeeper.hostname=localhost #hbase.zookeeper.port=2181 +# ------------------------ +# Kafka module properties: +# ------------------------ + +#kafka.bootstrap.servers=localhost:9092 +#kafka.topic.prefix=metamodel_test + # ----------------------- # JDBC module properties: # ----------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/26641cc4/kafka/src/test/java/org/apache/metamodel/kafka/KafkaDataContextIntegrationTest.java ---------------------------------------------------------------------- diff --git a/kafka/src/test/java/org/apache/metamodel/kafka/KafkaDataContextIntegrationTest.java b/kafka/src/test/java/org/apache/metamodel/kafka/KafkaDataContextIntegrationTest.java index 2d0cf5e..ffc4075 100644 --- a/kafka/src/test/java/org/apache/metamodel/kafka/KafkaDataContextIntegrationTest.java +++ b/kafka/src/test/java/org/apache/metamodel/kafka/KafkaDataContextIntegrationTest.java @@ -17,34 +17,46 @@ import org.apache.metamodel.DataContext; import org.apache.metamodel.data.DataSet; import org.apache.metamodel.data.WrappingDataSet; import org.junit.Assert; +import org.junit.Assume; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class KafkaDataContextIntegrationTest { - private static final String BOOTSTRAP_SERVERS = "localhost:9092"; private static final Logger logger = LoggerFactory.getLogger(KafkaDataContextIntegrationTest.class); + private final KafkaTestServer testServer = new KafkaTestServer(); + + @Before + public void setUp() { + final boolean configured = testServer.isConfigured(); + if (!configured) { + System.err.println(testServer.getInvalidConfigurationMessage()); + } + Assume.assumeTrue(configured); + } + @Test public void testGetSchemaInfo() { - final DataContext dataContext1 = new KafkaDataContext<>(String.class, String.class, BOOTSTRAP_SERVERS, Arrays - .asList("non-existing-topic")); + final DataContext dataContext1 = new KafkaDataContext<>(String.class, String.class, testServer + .getBootstrapServers(), Arrays.asList("non-existing-topic")); Assert.assertEquals("[non-existing-topic, default_table]", dataContext1.getDefaultSchema().getTableNames() .toString()); - final DataContext dataContext2 = new KafkaDataContext<>(String.class, String.class, BOOTSTRAP_SERVERS, Arrays - .asList("test1", "test2", "test3")); + final DataContext dataContext2 = new KafkaDataContext<>(String.class, String.class, testServer + .getBootstrapServers(), Arrays.asList("test1", "test2", "test3")); Assert.assertEquals("[test1, test2, test3]", dataContext2.getDefaultSchema().getTableNames().toString()); } @Test public void testQueryNoFilters() { - final String topic = "test_" + UUID.randomUUID().toString().replaceAll("\\-", ""); + final String topic = testServer.getTopicPrefix() + UUID.randomUUID().toString().replaceAll("\\-", ""); - final DataContext dataContext = new KafkaDataContext<>(String.class, String.class, BOOTSTRAP_SERVERS, Arrays - .asList(topic)); + final DataContext dataContext = new KafkaDataContext<>(String.class, String.class, testServer + .getBootstrapServers(), Arrays.asList(topic)); Assert.assertEquals("[" + topic + ", default_table]", dataContext.getDefaultSchema().getTableNames() .toString()); @@ -72,10 +84,10 @@ public class KafkaDataContextIntegrationTest { @Test public void testQueryUsingOffset() throws InterruptedException { - final String topic = "test_" + UUID.randomUUID().toString().replaceAll("\\-", ""); + final String topic = testServer.getTopicPrefix() + UUID.randomUUID().toString().replaceAll("\\-", ""); - final DataContext dataContext = new KafkaDataContext<>(String.class, String.class, BOOTSTRAP_SERVERS, Arrays - .asList(topic)); + final DataContext dataContext = new KafkaDataContext<>(String.class, String.class, testServer + .getBootstrapServers(), Arrays.asList(topic)); final int numRecords = 1000; final int queriedOffset = 500; @@ -117,7 +129,7 @@ public class KafkaDataContextIntegrationTest { @Override public void run() { final Properties properties = new Properties(); - properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVERS); + properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, testServer.getBootstrapServers()); properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); properties.setProperty(ProducerConfig.CLIENT_ID_CONFIG, "metamodel-test"); http://git-wip-us.apache.org/repos/asf/metamodel/blob/26641cc4/kafka/src/test/java/org/apache/metamodel/kafka/KafkaTestServer.java ---------------------------------------------------------------------- diff --git a/kafka/src/test/java/org/apache/metamodel/kafka/KafkaTestServer.java b/kafka/src/test/java/org/apache/metamodel/kafka/KafkaTestServer.java new file mode 100644 index 0000000..28a4754 --- /dev/null +++ b/kafka/src/test/java/org/apache/metamodel/kafka/KafkaTestServer.java @@ -0,0 +1,74 @@ +package org.apache.metamodel.kafka; + +import java.io.File; +import java.io.FileReader; +import java.util.Properties; + +public class KafkaTestServer { + + private final boolean _configured; + private String _bootstrapServers; + private String _topicPrefix; + + public KafkaTestServer() { + final File file = new File(getPropertyFilePath()); + if (file.exists()) { + _configured = loadPropertyFile(file); + } else { + // Continuous integration case + if (System.getenv("CONTINUOUS_INTEGRATION") != null) { + File travisFile = new File("../travis-metamodel-integrationtest-configuration.properties"); + if (travisFile.exists()) { + _configured = loadPropertyFile(travisFile); + } else { + _configured = false; + } + } else { + _configured = false; + } + } + } + + public boolean isConfigured() { + return _configured; + } + + public String getBootstrapServers() { + return _bootstrapServers; + } + + public String getTopicPrefix() { + return _topicPrefix; + } + + private boolean loadPropertyFile(File file) { + final Properties properties = new Properties(); + try { + properties.load(new FileReader(file)); + } catch (Exception e) { + throw new RuntimeException(e); + } + + _bootstrapServers = properties.getProperty("kafka.bootstrap.servers"); + _topicPrefix = properties.getProperty("kafka.topic.prefix"); + + final boolean configured = (_bootstrapServers != null && !_bootstrapServers.isEmpty() && _topicPrefix != null + && !_topicPrefix.isEmpty()); + + if (configured) { + System.out.println("Loaded Kafka configuration. BootstrapServers=" + _bootstrapServers + ", TopicPrefix=" + + _topicPrefix); + } + return configured; + } + + private String getPropertyFilePath() { + String userHome = System.getProperty("user.home"); + return userHome + "/metamodel-integrationtest-configuration.properties"; + } + + public String getInvalidConfigurationMessage() { + return "!!! WARN !!! Kafka module ignored\r\n" + "Please configure kafka connection locally (" + + getPropertyFilePath() + "), to run integration tests"; + } +} http://git-wip-us.apache.org/repos/asf/metamodel/blob/26641cc4/travis-metamodel-integrationtest-configuration.properties ---------------------------------------------------------------------- diff --git a/travis-metamodel-integrationtest-configuration.properties b/travis-metamodel-integrationtest-configuration.properties index f551fef..a336c0f 100644 --- a/travis-metamodel-integrationtest-configuration.properties +++ b/travis-metamodel-integrationtest-configuration.properties @@ -27,6 +27,13 @@ mongodb.collectionName=my_collection #hbase.zookeeper.port=2181 # ------------------------ +# Kafka module properties: +# ------------------------ + +#kafka.bootstrap.servers=localhost:9092 +#kafka.topic.prefix=metamodel_test + +# ------------------------ # Neo4j module properties: # ------------------------
