[ 
https://issues.apache.org/jira/browse/STREAMS-586?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16417623#comment-16417623
 ] 

ASF GitHub Bot commented on STREAMS-586:
----------------------------------------

steveblackmon closed pull request #424: resolves STREAMS-586
URL: https://github.com/apache/streams/pull/424
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.gitignore b/.gitignore
index 57f210bcc..aa5412884 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,14 @@ NOTICE
 /*.conf
 /*.properties
 
+# Docker Maven Plugin property files
+cassandra.properties
+elasticsearch.properties
+hbase.properties
+mongo.properties
+neo4j.properties
+riak.properties
+
 # OS generated files #
 .DS_Store
 .DS_Store?
diff --git a/pom.xml b/pom.xml
index 949a1033c..984711ff0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -332,7 +332,7 @@
         <clean.plugin.version>2.6</clean.plugin.version>
         <dependency.plugin.version>2.10</dependency.plugin.version>
         <depgraph.plugin.version>1.0.3</depgraph.plugin.version>
-        <docker.plugin.version>0.15.0</docker.plugin.version>
+        <docker.plugin.version>0.24.0</docker.plugin.version>
         <download.plugin.version>1.2.1</download.plugin.version>
         <enforcer.plugin.version>1.4.1</enforcer.plugin.version>
         <failsafe.plugin.version>2.19.1</failsafe.plugin.version>
diff --git a/streams-contrib/streams-persist-cassandra/pom.xml 
b/streams-contrib/streams-persist-cassandra/pom.xml
index cc9c178df..5df759611 100644
--- a/streams-contrib/streams-persist-cassandra/pom.xml
+++ b/streams-contrib/streams-persist-cassandra/pom.xml
@@ -198,16 +198,21 @@
                             <logDate>default</logDate>
                             <verbose>true</verbose>
                             <autoPull>on</autoPull>
+                            
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
                             <images>
                                 <image>
-                                    <name>cassandra:3.9</name>
+                                    <name>cassandra:3.11</name>
                                     <alias>cassandra</alias>
                                     <run>
                                         <namingStrategy>none</namingStrategy>
                                         <ports>
-                                            
<port>${cassandra.tcp.host}:${cassandra.tcp.port}:9042</port>
+                                            
<port>${tcp.host}:${tcp.port}:9042</port>
                                         </ports>
                                         
<portPropertyFile>cassandra.properties</portPropertyFile>
+                                        <wait>
+                                            <log>Starting listening for CQL 
clients on /0.0.0.0:9042</log>
+                                            <time>60000</time>
+                                        </wait>
                                         <log>
                                             <enabled>true</enabled>
                                             <date>default</date>
@@ -220,7 +225,26 @@
                                 </image>
                             </images>
                         </configuration>
-
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
                     </plugin>
 
                 </plugins>
diff --git 
a/streams-contrib/streams-persist-cassandra/src/test/java/org/apache/streams/cassandra/test/CassandraPersistIT.java
 
b/streams-contrib/streams-persist-cassandra/src/test/java/org/apache/streams/cassandra/test/CassandraPersistIT.java
index aa2f16d72..8a7c924ec 100644
--- 
a/streams-contrib/streams-persist-cassandra/src/test/java/org/apache/streams/cassandra/test/CassandraPersistIT.java
+++ 
b/streams-contrib/streams-persist-cassandra/src/test/java/org/apache/streams/cassandra/test/CassandraPersistIT.java
@@ -22,6 +22,7 @@
 import org.apache.streams.cassandra.CassandraPersistReader;
 import org.apache.streams.cassandra.CassandraPersistWriter;
 import org.apache.streams.config.ComponentConfigurator;
+import org.apache.streams.config.StreamsConfigurator;
 import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.core.StreamsResultSet;
 import org.apache.streams.jackson.StreamsJacksonMapper;
@@ -43,6 +44,8 @@
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 
+import static org.testng.Assert.assertTrue;
+
 /**
  * Test writing documents
  */
@@ -58,19 +61,15 @@
 
   @BeforeClass
   public void setup() throws Exception {
-    Config reference = ConfigFactory.load();
-    File conf_file = new File("target/test-classes/CassandraPersistIT.conf");
-    assert(conf_file.exists());
-    Config testResourceConfig = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(CassandraConfiguration.class).detectConfiguration(typesafe,
 "cassandra");
+    testConfiguration = new 
ComponentConfigurator<>(CassandraConfiguration.class).detectConfiguration();
+    assertTrue(testConfiguration.getHosts().size() > 0);
   }
 
   @Test
   public void testCassandraPersist() throws Exception {
     CassandraPersistWriter writer = new 
CassandraPersistWriter(testConfiguration);
 
-    writer.prepare(null);
+    writer.prepare(testConfiguration);
 
     InputStream testActivityFolderStream = 
CassandraPersistIT.class.getClassLoader()
         .getResourceAsStream("activities");
diff --git 
a/streams-contrib/streams-persist-cassandra/src/test/resources/CassandraPersistIT.conf
 
b/streams-contrib/streams-persist-cassandra/src/test/resources/CassandraPersistIT.conf
deleted file mode 100644
index e85c46d30..000000000
--- 
a/streams-contrib/streams-persist-cassandra/src/test/resources/CassandraPersistIT.conf
+++ /dev/null
@@ -1,27 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../cassandra.properties"
-cassandra {
-  hosts = [${cassandra.tcp.host}]
-  port = ${cassandra.tcp.port}
-  user = cassandra
-  password = cassandra
-  keyspace = test_keyspace
-  table = test_table
-  partitionKeyColumn = key
-  column = value
-}
diff --git 
a/streams-contrib/streams-persist-cassandra/src/test/resources/cassandra.conf 
b/streams-contrib/streams-persist-cassandra/src/test/resources/cassandra.conf
deleted file mode 100644
index f4b4f243b..000000000
--- 
a/streams-contrib/streams-persist-cassandra/src/test/resources/cassandra.conf
+++ /dev/null
@@ -1,27 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-org.apache.streams.cassandra.CassandraConfiguration {
-  host = ["127.0.0.1"]
-  port = 9042
-  keyspace = "test_keyspace"
-  table = "test_table"
-  partitionKeyColumn = "key"
-  column = value
-  ssl {
-    enabled = false
-  }
-}
\ No newline at end of file
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml 
b/streams-contrib/streams-persist-elasticsearch/pom.xml
index 9cae05d2e..c43d5a515 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -191,13 +191,9 @@
                 <version>${failsafe.plugin.version}</version>
                 <configuration>
                     <!-- Run integration test suite rather than individual 
tests. -->
-                    <excludes>
-                        <exclude>**/*Test.java</exclude>
-                        <exclude>**/*Tests.java</exclude>
-                    </excludes>
-                    <includes>
-                        <include>**/*IT.java</include>
-                    </includes>
+                    <suiteXmlFiles>
+                        
<suiteXmlFile>target/test-classes/testng.xml</suiteXmlFile>
+                    </suiteXmlFiles>
                 </configuration>
             </plugin>
             <plugin>
@@ -218,6 +214,7 @@
                     </execution>
                 </executions>
             </plugin>
+
         </plugins>
     </build>
 
@@ -248,26 +245,19 @@
                                     <run>
                                         <namingStrategy>none</namingStrategy>
                                         <ports>
-                                            
<port>${es.http.host}:${es.http.port}:9200</port>
-                                            
<port>${es.tcp.host}:${es.tcp.port}:9300</port>
+                                            
<port>${http.host}:${http.port}:9200</port>
+                                            
<port>${tcp.host}:${tcp.port}:9300</port>
                                         </ports>
                                         
<portPropertyFile>elasticsearch.properties</portPropertyFile>
                                         <wait>
-                                            <log>elasticsearch startup</log>
                                             <http>
-                                                
<url>http://${es.http.host}:${es.http.port}</url>
+                                                
<url>http://${http.host}:${http.port}</url>
                                                 <method>GET</method>
                                                 <status>200</status>
                                             </http>
                                             <time>30000</time>
                                             <kill>1000</kill>
                                             <shutdown>500</shutdown>
-                                            <!--<tcp>-->
-                                            
<!--<host>${es.transport.host}</host>-->
-                                            <!--<ports>-->
-                                            
<!--<port>${es.transport.port}</port>-->
-                                            <!--</ports>-->
-                                            <!--</tcp>-->
                                         </wait>
                                         <log>
                                             <enabled>true</enabled>
@@ -282,6 +272,26 @@
 
                             </images>
                         </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
 
                     </plugin>
 
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/DatumFromMetadataProcessorIT.java
 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/DatumFromMetadataProcessorIT.java
index d361436d1..70b8d32b7 100644
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/DatumFromMetadataProcessorIT.java
+++ 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/DatumFromMetadataProcessorIT.java
@@ -43,9 +43,7 @@
  * Integration Test for
  * @see org.apache.streams.elasticsearch.processor.DatumFromMetadataProcessor
  */
-@Test(  groups={"DatumFromMetadataProcessorIT"},
-        dependsOnGroups={"ElasticsearchPersistWriterIT"}
-     )
+@Test
 public class DatumFromMetadataProcessorIT {
 
   private ElasticsearchReaderConfiguration testConfiguration;
@@ -61,12 +59,7 @@ public void testSerializability() {
   @BeforeClass
   public void prepareTestDatumFromMetadataProcessor() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new 
File("target/test-classes/DatumFromMetadataProcessorIT.conf");
-    assertTrue(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchReaderConfiguration.class).detectConfiguration(typesafe,
 "elasticsearch");
+    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchReaderConfiguration.class).detectConfiguration(
 "DatumFromMetadataProcessorIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration).client();
 
   }
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildUpdaterIT.java
 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildUpdaterIT.java
index 97a88d4ee..a465688cc 100644
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildUpdaterIT.java
+++ 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildUpdaterIT.java
@@ -68,10 +68,6 @@
  * using parent/child associated documents.
  */
 @Test
-    (
-        groups={"ElasticsearchParentChildUpdaterIT"},
-        dependsOnGroups={"ElasticsearchParentChildWriterIT"}
-    )
 public class ElasticsearchParentChildUpdaterIT {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ElasticsearchParentChildUpdaterIT.class);
@@ -88,12 +84,7 @@
   @BeforeClass
   public void prepareTestParentChildPersistUpdater() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new 
File("target/test-classes/ElasticsearchParentChildUpdaterIT.conf");
-    assertTrue(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration(typesafe,
 "elasticsearch");
+    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration(
 "ElasticsearchParentChildUpdaterIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildWriterIT.java
 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildWriterIT.java
index 31c7f11f3..282c1595d 100644
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildWriterIT.java
+++ 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchParentChildWriterIT.java
@@ -73,9 +73,6 @@
  * using parent/child associated documents.
  */
 @Test
-    (
-        groups={"ElasticsearchParentChildWriterIT"}
-    )
 public class ElasticsearchParentChildWriterIT {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ElasticsearchParentChildWriterIT.class);
@@ -92,12 +89,7 @@
   @BeforeClass
   public void prepareTestParentChildPersistWriter() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new 
File("target/test-classes/ElasticsearchParentChildWriterIT.conf");
-    assertTrue(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration(typesafe,
 "elasticsearch");
+    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration(
 "ElasticsearchParentChildWriterIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistUpdaterIT.java
 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistUpdaterIT.java
index 7eded1531..60c0bd3c3 100644
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistUpdaterIT.java
+++ 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistUpdaterIT.java
@@ -62,10 +62,6 @@
  * @see org.apache.streams.elasticsearch.ElasticsearchPersistUpdater
  */
 @Test
-    (
-        groups={"ElasticsearchPersistUpdaterIT"},
-        dependsOnGroups={"ElasticsearchPersistWriterIT"}
-    )
 public class ElasticsearchPersistUpdaterIT {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ElasticsearchPersistUpdaterIT.class);
@@ -78,12 +74,7 @@
   @BeforeClass
   public void prepareTestPersistUpdater() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new 
File("target/test-classes/ElasticsearchPersistUpdaterIT.conf");
-    assertTrue(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration(typesafe,
 "elasticsearch");
+    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration("ElasticsearchPersistUpdaterIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistWriterIT.java
 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistWriterIT.java
index caa719eed..2a885bfbf 100644
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistWriterIT.java
+++ 
b/streams-contrib/streams-persist-elasticsearch/src/test/java/org/apache/streams/elasticsearch/test/ElasticsearchPersistWriterIT.java
@@ -61,9 +61,6 @@
  * @see org.apache.streams.elasticsearch.ElasticsearchPersistWriter
  */
 @Test
-    (
-        groups={"ElasticsearchPersistWriterIT"}
-    )
 public class ElasticsearchPersistWriterIT {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ElasticsearchPersistWriterIT.class);
@@ -76,12 +73,7 @@
   @BeforeClass
   public void prepareTestPersistWriter() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new 
File("target/test-classes/ElasticsearchPersistWriterIT.conf");
-    assertTrue(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration(typesafe,
 "elasticsearch");
+    testConfiguration = new 
ComponentConfigurator<>(ElasticsearchWriterConfiguration.class).detectConfiguration("ElasticsearchPersistWriterIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/DatumFromMetadataProcessorIT.conf
 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/DatumFromMetadataProcessorIT.conf
deleted file mode 100644
index 1586174f2..000000000
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/DatumFromMetadataProcessorIT.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../elasticsearch.properties"
-elasticsearch {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  indexes += "elasticsearch_persist_writer_it"
-  types += "activity"
-}
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchParentChildUpdaterIT.conf
 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchParentChildUpdaterIT.conf
deleted file mode 100644
index 9c7940cf3..000000000
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchParentChildUpdaterIT.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../elasticsearch.properties"
-elasticsearch {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  index = "elasticsearch_persist_writer_parent_child_it"
-  batchSize = 5
-  refresh = true
-}
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchParentChildWriterIT.conf
 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchParentChildWriterIT.conf
deleted file mode 100644
index 9c7940cf3..000000000
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchParentChildWriterIT.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../elasticsearch.properties"
-elasticsearch {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  index = "elasticsearch_persist_writer_parent_child_it"
-  batchSize = 5
-  refresh = true
-}
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchPersistUpdaterIT.conf
 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchPersistUpdaterIT.conf
deleted file mode 100644
index cd8660758..000000000
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchPersistUpdaterIT.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../elasticsearch.properties"
-elasticsearch {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  index = "elasticsearch_persist_writer_it"
-  type = "activity"
-  refresh = true
-}
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchPersistWriterIT.conf
 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchPersistWriterIT.conf
deleted file mode 100644
index cd8660758..000000000
--- 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/ElasticsearchPersistWriterIT.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../elasticsearch.properties"
-elasticsearch {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  index = "elasticsearch_persist_writer_it"
-  type = "activity"
-  refresh = true
-}
diff --git 
a/streams-contrib/streams-persist-elasticsearch/src/test/resources/testng.xml 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/testng.xml
new file mode 100644
index 000000000..3692c2f89
--- /dev/null
+++ 
b/streams-contrib/streams-persist-elasticsearch/src/test/resources/testng.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"; >
+
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<suite name="ElasticsearchITs" preserve-order="true">
+
+    <test name="ElasticsearchPersistWriterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchPersistWriterIT" />
+        </classes>
+    </test>
+    <test name="ElasticsearchPersistUpdaterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchPersistUpdaterIT" />
+        </classes>
+    </test>
+    <test name="ElasticsearchParentChildWriterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchParentChildWriterIT" />
+        </classes>
+    </test>
+    <test name="ElasticsearchParentChildUpdaterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchParentChildUpdaterIT" 
/>
+        </classes>
+    </test>
+    <test name="DatumFromMetadataProcessorIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.DatumFromMetadataProcessorIT" />
+        </classes>
+    </test>
+
+</suite>
diff --git a/streams-contrib/streams-persist-hbase/pom.xml 
b/streams-contrib/streams-persist-hbase/pom.xml
index 7d7935f9d..ad1ee167d 100644
--- a/streams-contrib/streams-persist-hbase/pom.xml
+++ b/streams-contrib/streams-persist-hbase/pom.xml
@@ -170,21 +170,15 @@
                                     <run>
                                         <namingStrategy>none</namingStrategy>
                                         <ports>
-                                            
<port>${zookeeper.tcp.host}:${zookeeper.tcp.port}:2181</port>
-                                            
<port>${hbase.tcp.host}:${hbase.tcp.port}:60000</port>
-                                            
<port>${hbase.http.host}:${hbase.http.port}:60010</port>
+                                            
<port>${tcp.host}:${tcp.port}:60000</port>
+                                            
<port>${http.host}:${http.port}:60010</port>
                                         </ports>
                                         
<portPropertyFile>hbase.properties</portPropertyFile> --&gt;
                                         <wait>
-                                            <log>hbase startup</log>
-                                            <http>
-                                                
<url>http://${hbase.http.host}:${hbase.http.port}</url>
-                                                <method>GET</method>
-                                                <status>200</status>
-                                            </http>
+                                            <log>Master has completed 
initialization</log>
                                             <time>30000</time>
-                                            <kill>1000</kill>
-                                            <shutdown>500</shutdown>
+                                            <kill>5000</kill>
+                                            <shutdown>5000</shutdown>
                                         </wait>
                                         <log>
                                             <enabled>true</enabled>
@@ -200,6 +194,27 @@
                             </images>
                         </configuration>
 
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
+
                     </plugin>
 
                 </plugins>
diff --git 
a/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistReaderIT.java
 
b/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistReaderIT.java
index b514b5697..f7a64e857 100644
--- 
a/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistReaderIT.java
+++ 
b/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistReaderIT.java
@@ -56,12 +56,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new File("target/test-classes/HbasePersistReaderIT.conf");
-    assert(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(HbaseConfiguration.class).detectConfiguration(typesafe, 
"hbase");
+    testConfiguration = new 
ComponentConfigurator<>(HbaseConfiguration.class).detectConfiguration("HbasePersistReaderIT");
 
   }
 
diff --git 
a/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistWriterIT.java
 
b/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistWriterIT.java
index 5b8c7f2ef..c51f533a9 100644
--- 
a/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistWriterIT.java
+++ 
b/streams-contrib/streams-persist-hbase/src/test/java/org/apache/streams/hbase/test/HbasePersistWriterIT.java
@@ -60,12 +60,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    Config reference  = ConfigFactory.load();
-    File conf_file = new File("target/test-classes/HbasePersistWriterIT.conf");
-    assertTrue(conf_file.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(HbaseConfiguration.class).detectConfiguration(typesafe, 
"hbase");
+    testConfiguration = new 
ComponentConfigurator<>(HbaseConfiguration.class).detectConfiguration("HbasePersistWriterIT");
 
   }
 
diff --git 
a/streams-contrib/streams-persist-hbase/src/test/resources/HbasePersistReaderIT.conf
 
b/streams-contrib/streams-persist-hbase/src/test/resources/HbasePersistReaderIT.conf
deleted file mode 100644
index 8e073f656..000000000
--- 
a/streams-contrib/streams-persist-hbase/src/test/resources/HbasePersistReaderIT.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-hbase {
-  rootdir = "/"
-  parent = "/"
-  rootserver = "/"
-  quorum = ${hbase.tcp.host}
-  clientPort = ${hbase.tcp.port}
-  table = "test_table"
-  family = "test_family"
-  qualifier = "test_column"
-}
diff --git 
a/streams-contrib/streams-persist-hbase/src/test/resources/HbasePersistWriterIT.conf
 
b/streams-contrib/streams-persist-hbase/src/test/resources/HbasePersistWriterIT.conf
deleted file mode 100644
index 8e073f656..000000000
--- 
a/streams-contrib/streams-persist-hbase/src/test/resources/HbasePersistWriterIT.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-hbase {
-  rootdir = "/"
-  parent = "/"
-  rootserver = "/"
-  quorum = ${hbase.tcp.host}
-  clientPort = ${hbase.tcp.port}
-  table = "test_table"
-  family = "test_family"
-  qualifier = "test_column"
-}
diff --git a/streams-contrib/streams-persist-mongo/pom.xml 
b/streams-contrib/streams-persist-mongo/pom.xml
index 59bf91ad7..c1775bc49 100644
--- a/streams-contrib/streams-persist-mongo/pom.xml
+++ b/streams-contrib/streams-persist-mongo/pom.xml
@@ -163,6 +163,7 @@
                     </execution>
                 </executions>
             </plugin>
+
         </plugins>
     </build>
 
@@ -193,7 +194,7 @@
                                     <run>
                                         <namingStrategy>none</namingStrategy>
                                         <ports>
-                                            
<port>${mongo.tcp.host}:${mongo.tcp.port}:27017</port>
+                                            
<port>${tcp.host}:${tcp.port}:27017</port>
                                         </ports>
                                         
<portPropertyFile>mongo.properties</portPropertyFile>
                                         <log>
@@ -201,6 +202,10 @@
                                             <date>default</date>
                                             <color>cyan</color>
                                         </log>
+                                        <wait>
+                                            <log>waiting for connections on 
port 27017</log>
+                                            <time>60000</time>
+                                        </wait>
                                     </run>
                                     <watch>
                                         <mode>none</mode>
@@ -208,6 +213,26 @@
                                 </image>
                             </images>
                         </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
 
                     </plugin>
 
diff --git 
a/streams-contrib/streams-persist-mongo/src/main/resources/mongo.conf 
b/streams-contrib/streams-persist-mongo/src/main/resources/reference.conf
similarity index 100%
rename from streams-contrib/streams-persist-mongo/src/main/resources/mongo.conf
rename to 
streams-contrib/streams-persist-mongo/src/main/resources/reference.conf
diff --git 
a/streams-contrib/streams-persist-mongo/src/test/java/org/apache/streams/mongo/test/MongoPersistIT.java
 
b/streams-contrib/streams-persist-mongo/src/test/java/org/apache/streams/mongo/test/MongoPersistIT.java
index 86c6616eb..3679ad24b 100644
--- 
a/streams-contrib/streams-persist-mongo/src/test/java/org/apache/streams/mongo/test/MongoPersistIT.java
+++ 
b/streams-contrib/streams-persist-mongo/src/test/java/org/apache/streams/mongo/test/MongoPersistIT.java
@@ -61,11 +61,6 @@
   @BeforeClass
   public void setup() throws Exception {
 
-    File conf_file = new File("target/test-classes/MongoPersistIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
     testConfiguration = new 
ComponentConfigurator<>(MongoConfiguration.class).detectConfiguration();
 
   }
diff --git 
a/streams-contrib/streams-persist-mongo/src/test/resources/MongoPersistIT.conf 
b/streams-contrib/streams-persist-mongo/src/test/resources/MongoPersistIT.conf
deleted file mode 100644
index 0c8c63230..000000000
--- 
a/streams-contrib/streams-persist-mongo/src/test/resources/MongoPersistIT.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../mongo.properties"
-org.apache.streams.mongo.MongoConfiguration {
-  host = ${mongo.tcp.host}
-  port = ${mongo.tcp.port}
-  db = "mongo_persist_it"
-  collection = "activity"
-}
diff --git a/streams-contrib/streams-persist-neo4j/pom.xml 
b/streams-contrib/streams-persist-neo4j/pom.xml
index dd84eba3a..b1f80ade9 100644
--- a/streams-contrib/streams-persist-neo4j/pom.xml
+++ b/streams-contrib/streams-persist-neo4j/pom.xml
@@ -28,7 +28,7 @@
     <name>streams-persist-neo4j</name>
 
     <properties>
-        <neo4j-driver.version>1.4.3</neo4j-driver.version>
+        <neo4j-driver.version>1.5.1</neo4j-driver.version>
     </properties>
 
     <dependencies>
@@ -109,6 +109,13 @@
             <scope>test</scope>
             <type>test-jar</type>
         </dependency>
+
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-all</artifactId>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
     <build>
         <sourceDirectory>src/main/java</sourceDirectory>
@@ -206,7 +213,7 @@
                             <autoPull>on</autoPull>
                             <images>
                                 <image>
-                                    <name>neo4j:3.0.6</name>
+                                    <name>neo4j</name>
                                     <alias>neo4j</alias>
                                     <run>
                                         <env>
@@ -214,26 +221,19 @@
                                         </env>
                                         <namingStrategy>none</namingStrategy>
                                         <ports>
-                                            
<port>${neo4j.http.host}:${neo4j.http.port}:7474</port>
-                                            
<port>${neo4j.tcp.host}:${neo4j.tcp.port}:7687</port>
+                                            
<port>${http.host}:${http.port}:7474</port>
+                                            
<port>${tcp.host}:${tcp.port}:7687</port>
                                         </ports>
                                         
<portPropertyFile>neo4j.properties</portPropertyFile>
                                         <wait>
-                                            <log>neo4j startup</log>
                                             <http>
-                                                
<url>http://${neo4j.http.host}:${neo4j.http.port}</url>
+                                                
<url>http://${http.host}:${http.port}</url>
                                                 <method>GET</method>
                                                 <status>200</status>
                                             </http>
                                             <time>30000</time>
                                             <kill>1000</kill>
                                             <shutdown>500</shutdown>
-                                            <!--<tcp>-->
-                                            
<!--<host>${es.transport.host}</host>-->
-                                            <!--<ports>-->
-                                            
<!--<port>${es.transport.port}</port>-->
-                                            <!--</ports>-->
-                                            <!--</tcp>-->
                                         </wait>
                                         <log>
                                             <enabled>true</enabled>
@@ -248,7 +248,26 @@
 
                             </images>
                         </configuration>
-
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
                     </plugin>
 
                 </plugins>
diff --git 
a/streams-contrib/streams-persist-neo4j/src/main/java/org/apache/streams/neo4j/CypherQueryGraphHelper.java
 
b/streams-contrib/streams-persist-neo4j/src/main/java/org/apache/streams/neo4j/CypherQueryGraphHelper.java
index 7293d1468..325669139 100644
--- 
a/streams-contrib/streams-persist-neo4j/src/main/java/org/apache/streams/neo4j/CypherQueryGraphHelper.java
+++ 
b/streams-contrib/streams-persist-neo4j/src/main/java/org/apache/streams/neo4j/CypherQueryGraphHelper.java
@@ -25,6 +25,7 @@
 import org.apache.streams.util.PropertyUtil;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import org.apache.commons.lang3.StringEscapeUtils;
@@ -40,13 +41,16 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import javax.annotation.Nullable;
 
 /**
  * Supporting class for interacting with neo4j via rest API
  */
 public class CypherQueryGraphHelper implements QueryGraphHelper, Serializable {
 
-  private static final ObjectMapper MAPPER = 
StreamsJacksonMapper.getInstance();
+  private static final ObjectMapper MAPPER = StreamsJacksonMapper.getInstance()
+    .configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false)
+    .configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(CypherQueryGraphHelper.class);
 
diff --git 
a/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jBoltPersistIT.java
 
b/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jBoltPersistIT.java
index c45d9756d..e97bd760b 100644
--- 
a/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jBoltPersistIT.java
+++ 
b/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jBoltPersistIT.java
@@ -50,6 +50,9 @@
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.testng.Assert.assertTrue;
 
 /**
@@ -70,12 +73,7 @@
   @BeforeClass
   public void prepareTest() throws IOException {
 
-    Config reference  = ConfigFactory.load();
-    File conf = new File("target/test-classes/Neo4jBoltPersistIT.conf");
-    assertTrue(conf.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(Neo4jConfiguration.class).detectConfiguration(typesafe, 
"neo4j");
+    testConfiguration = new 
ComponentConfigurator<>(Neo4jConfiguration.class).detectConfiguration( 
"Neo4jBoltPersistIT");
     testClient = Neo4jBoltClient.getInstance(testConfiguration);
 
     Session session = testClient.client().session();
@@ -115,15 +113,19 @@ public void testNeo4jBoltPersist() throws Exception {
         activity.setId(activity.getVerb());
       }
       StreamsDatum datum = new StreamsDatum(activity, activity.getVerb());
-      testPersistWriter.write( datum );
-      LOGGER.info("Wrote: " + activity.getVerb() );
-      count++;
+      try {
+        testPersistWriter.write(datum);
+        LOGGER.info("Wrote: " + activity.getVerb());
+        count++;
+      } catch (Exception e) {
+        LOGGER.warn("Exception writing: " + activity.getVerb(), e);
+      }
     }
 
     testPersistWriter.cleanUp();
 
     LOGGER.info("Total Written: {}", count );
-    Assert.assertEquals(count, 89);
+    assertThat(count, equalTo(89));
 
     Neo4jReaderConfiguration vertexReaderConfiguration= 
MAPPER.convertValue(testConfiguration, Neo4jReaderConfiguration.class);
     vertexReaderConfiguration.setQuery("MATCH (v) return v");
@@ -131,7 +133,7 @@ public void testNeo4jBoltPersist() throws Exception {
     vertexReader.prepare(null);
     StreamsResultSet vertexResultSet = vertexReader.readAll();
     LOGGER.info("Total Read: {}", vertexResultSet.size() );
-    Assert.assertEquals(vertexResultSet.size(), 24);
+    assertThat(vertexResultSet.size(), greaterThanOrEqualTo(20));
 
     Neo4jReaderConfiguration edgeReaderConfiguration= 
MAPPER.convertValue(testConfiguration, Neo4jReaderConfiguration.class);
     edgeReaderConfiguration.setQuery("MATCH (s)-[r]->(d) return r");
@@ -139,7 +141,7 @@ public void testNeo4jBoltPersist() throws Exception {
     edgeReader.prepare(null);
     StreamsResultSet edgeResultSet = edgeReader.readAll();
     LOGGER.info("Total Read: {}", edgeResultSet.size() );
-    Assert.assertEquals(edgeResultSet.size(), 100);
+    assertThat(edgeResultSet.size(), greaterThanOrEqualTo(65));
 
   }
 
diff --git 
a/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jHttpPersistIT.java
 
b/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jHttpPersistIT.java
index a5b0d30d3..4f8040ffd 100644
--- 
a/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jHttpPersistIT.java
+++ 
b/streams-contrib/streams-persist-neo4j/src/test/java/org/apache/streams/neo4j/test/Neo4jHttpPersistIT.java
@@ -37,10 +37,16 @@
 import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThanOrEqualTo;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -67,12 +73,7 @@
   @BeforeClass
   public void prepareTest() throws IOException {
 
-    Config reference  = ConfigFactory.load();
-    File conf = new File("target/test-classes/Neo4jHttpPersistIT.conf");
-    assertTrue(conf.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(Neo4jConfiguration.class).detectConfiguration(typesafe, 
"neo4j");
+    testConfiguration = new 
ComponentConfigurator<>(Neo4jConfiguration.class).detectConfiguration( 
"Neo4jHttpPersistIT");
 
   }
 
@@ -107,15 +108,19 @@ public void testNeo4jHttpPersist() throws Exception {
         activity.setId(activity.getVerb());
       }
       StreamsDatum datum = new StreamsDatum(activity, activity.getVerb());
-      testPersistWriter.write( datum );
-      LOGGER.info("Wrote: " + activity.getVerb() );
-      count++;
+      try {
+        testPersistWriter.write(datum);
+        LOGGER.info("Wrote: " + activity.getVerb());
+        count++;
+      } catch (Exception e) {
+        LOGGER.warn("Exception writing: " + activity.getVerb(), e);
+      }
     }
 
     testPersistWriter.cleanUp();
 
     LOGGER.info("Total Written: {}", count );
-    Assert.assertEquals(count, 89);
+    assertThat(count, equalTo(89));
 
     Neo4jReaderConfiguration vertexReaderConfiguration= 
MAPPER.convertValue(testConfiguration, Neo4jReaderConfiguration.class);
     vertexReaderConfiguration.setQuery("MATCH (v) return v");
@@ -123,7 +128,7 @@ public void testNeo4jHttpPersist() throws Exception {
     vertexReader.prepare(null);
     StreamsResultSet vertexResultSet = vertexReader.readAll();
     LOGGER.info("Total Read: {}", vertexResultSet.size() );
-    Assert.assertEquals(vertexResultSet.size(), 24);
+    assertThat(vertexResultSet.size(), greaterThanOrEqualTo(20));
 
     Neo4jReaderConfiguration edgeReaderConfiguration= 
MAPPER.convertValue(testConfiguration, Neo4jReaderConfiguration.class);
     edgeReaderConfiguration.setQuery("MATCH (s)-[r]->(d) return r");
@@ -131,7 +136,7 @@ public void testNeo4jHttpPersist() throws Exception {
     edgeReader.prepare(null);
     StreamsResultSet edgeResultSet = edgeReader.readAll();
     LOGGER.info("Total Read: {}", edgeResultSet.size() );
-    Assert.assertEquals(edgeResultSet.size(), 100);
+    assertThat(edgeResultSet.size(), greaterThanOrEqualTo(65));
 
   }
 
diff --git 
a/streams-contrib/streams-persist-neo4j/src/test/resources/Neo4jBoltPersistIT.conf
 
b/streams-contrib/streams-persist-neo4j/src/test/resources/Neo4jBoltPersistIT.conf
deleted file mode 100644
index 4563f25bf..000000000
--- 
a/streams-contrib/streams-persist-neo4j/src/test/resources/Neo4jBoltPersistIT.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../neo4j.properties"
-neo4j {
-  scheme = "tcp"
-  hosts += ${neo4j.tcp.host}
-  port = ${neo4j.tcp.port}
-}
diff --git 
a/streams-contrib/streams-persist-neo4j/src/test/resources/Neo4jHttpPersistIT.conf
 
b/streams-contrib/streams-persist-neo4j/src/test/resources/Neo4jHttpPersistIT.conf
deleted file mode 100644
index 6487c4795..000000000
--- 
a/streams-contrib/streams-persist-neo4j/src/test/resources/Neo4jHttpPersistIT.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../neo4j.properties"
-neo4j {
-  scheme = "http"
-  hosts += ${neo4j.http.host}
-  port = ${neo4j.http.port}
-}
diff --git a/streams-contrib/streams-persist-riak/pom.xml 
b/streams-contrib/streams-persist-riak/pom.xml
index 30c532fe3..9a7d57afd 100644
--- a/streams-contrib/streams-persist-riak/pom.xml
+++ b/streams-contrib/streams-persist-riak/pom.xml
@@ -136,6 +136,7 @@
                     </execution>
                 </executions>
             </plugin>
+
         </plugins>
     </build>
 
@@ -164,25 +165,17 @@
                                     <name>lapax/riak</name>
                                     <alias>riak</alias>
                                     <run>
-                                        <env>
-                                            <NEO4J_AUTH>none</NEO4J_AUTH>
-                                        </env>
                                         <namingStrategy>none</namingStrategy>
                                         <ports>
-                                            
<port>${riak.http.host}:${riak.http.port}:8098</port>
-                                            
<port>${riak.tcp.host}:${riak.tcp.port}:8087</port>
+                                            
<port>${http.host}:${http.port}:8098</port>
+                                            
<port>${tcp.host}:${tcp.port}:8087</port>
                                         </ports>
                                         
<portPropertyFile>riak.properties</portPropertyFile>
                                         <wait>
-                                            <log>riak startup</log>
-                                            <http>
-                                                
<url>http://${riak.http.host}:${riak.http.port}</url>
-                                                <method>GET</method>
-                                                <status>200</status>
-                                            </http>
+                                            <log>success: riak entered RUNNING 
state</log>
                                             <time>30000</time>
-                                            <kill>1000</kill>
-                                            <shutdown>500</shutdown>
+                                            <kill>5000</kill>
+                                            <shutdown>5000</shutdown>
                                         </wait>
                                         <log>
                                             <enabled>true</enabled>
@@ -197,6 +190,26 @@
 
                             </images>
                         </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
 
                     </plugin>
 
diff --git 
a/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakBinaryPersistIT.java
 
b/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakBinaryPersistIT.java
index 523ec012d..bfbab3864 100644
--- 
a/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakBinaryPersistIT.java
+++ 
b/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakBinaryPersistIT.java
@@ -28,6 +28,10 @@
 import org.apache.streams.riak.binary.RiakBinaryPersistWriter;
 import org.apache.streams.riak.pojo.RiakConfiguration;
 
+import com.basho.riak.client.api.RiakCommand;
+import com.basho.riak.client.api.commands.buckets.ListBuckets;
+import com.basho.riak.client.core.NodeStateListener;
+import com.basho.riak.client.core.RiakNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
@@ -46,6 +50,9 @@
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 import static org.testng.Assert.assertTrue;
 
@@ -63,16 +70,19 @@
   private RiakConfiguration testConfiguration;
 
   @BeforeClass
-  public void prepareTest() throws IOException {
-
-    Config reference  = ConfigFactory.load();
-    File conf = new File("target/test-classes/RiakBinaryPersistIT.conf");
-    assertTrue(conf.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(RiakConfiguration.class).detectConfiguration(typesafe, 
"riak");
+  public void prepareTest() throws Exception {
+
+    testConfiguration = new 
ComponentConfigurator<>(RiakConfiguration.class).detectConfiguration( 
"RiakBinaryPersistIT");
     testClient = RiakBinaryClient.getInstance(testConfiguration);
 
+    Assert.assertTrue(testClient.client().getRiakCluster().getNodes().size() > 
0);
+
+    Thread.sleep(10000);
+    
+    ListBuckets.Builder builder = new ListBuckets.Builder("default");
+
+    testClient.client().execute(builder.build(), 30, TimeUnit.SECONDS);
+  
   }
 
   @Test
@@ -107,6 +117,7 @@ public void testRiakBinaryPersist() throws Exception {
     testPersistReader.prepare(testConfiguration);
 
     StreamsResultSet readerResultSet = testPersistReader.readAll();
+    Assert.assertNotNull(readerResultSet);
     LOGGER.info("Total Read: {}", readerResultSet.size() );
     Assert.assertEquals(readerResultSet.size(), 89);
 
diff --git 
a/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakHttpPersistIT.java
 
b/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakHttpPersistIT.java
index 2eeea3053..ed38c0350 100644
--- 
a/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakHttpPersistIT.java
+++ 
b/streams-contrib/streams-persist-riak/src/test/java/org/apache/streams/riak/test/RiakHttpPersistIT.java
@@ -64,12 +64,7 @@
   @BeforeClass
   public void prepareTest() throws IOException {
 
-    Config reference  = ConfigFactory.load();
-    File conf = new File("target/test-classes/RiakHttpPersistIT.conf");
-    assertTrue(conf.exists());
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    Config typesafe  = testResourceConfig.withFallback(reference).resolve();
-    testConfiguration = new 
ComponentConfigurator<>(RiakConfiguration.class).detectConfiguration(typesafe, 
"riak");
+    testConfiguration = new 
ComponentConfigurator<>(RiakConfiguration.class).detectConfiguration( 
"RiakHttpPersistIT");
     testClient = RiakHttpClient.getInstance(testConfiguration);
 
   }
diff --git 
a/streams-contrib/streams-persist-riak/src/test/resources/RiakBinaryPersistIT.conf
 
b/streams-contrib/streams-persist-riak/src/test/resources/RiakBinaryPersistIT.conf
deleted file mode 100644
index 7e50aaecc..000000000
--- 
a/streams-contrib/streams-persist-riak/src/test/resources/RiakBinaryPersistIT.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../riak.properties"
-riak {
-  scheme = "tcp"
-  hosts += ${riak.tcp.host}
-  port = ${riak.tcp.port}
-  defaultBucket = "binary"
-}
diff --git 
a/streams-contrib/streams-persist-riak/src/test/resources/RiakHttpPersistIT.conf
 
b/streams-contrib/streams-persist-riak/src/test/resources/RiakHttpPersistIT.conf
deleted file mode 100644
index 8bd41775d..000000000
--- 
a/streams-contrib/streams-persist-riak/src/test/resources/RiakHttpPersistIT.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../riak.properties"
-riak {
-  scheme = "http"
-  hosts += ${riak.http.host}
-  port = ${riak.http.port}
-  defaultBucket = "http"
-}
diff --git a/streams-examples/streams-examples-local/elasticsearch-hdfs/pom.xml 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/pom.xml
index c58b797b6..fb8e23498 100644
--- a/streams-examples/streams-examples-local/elasticsearch-hdfs/pom.xml
+++ b/streams-examples/streams-examples-local/elasticsearch-hdfs/pom.xml
@@ -26,8 +26,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>streams-elasticsearch-hdfs</artifactId>
-    <name>elasticsearch-hdfs</name>
+    <artifactId>streams-example-elasticsearch-hdfs</artifactId>
+    <name>streams-example-elasticsearch-hdfs</name>
 
     <description>Copies documents between elasticsearch and file system using 
the hdfs persist module.</description>
 
@@ -286,9 +286,10 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <configuration>
-                    <includes>**/*.json,**/*.conf</includes>
+                    <includes>**/*.json</includes>
                     
<outputDirectory>${project.build.directory}/test-classes</outputDirectory>
                     <includeGroupIds>org.apache.streams</includeGroupIds>
+                    
<includeArtifactIds>streams-schema-activitystreams</includeArtifactIds>
                     <includeTypes>test-jar</includeTypes>
                 </configuration>
                 <executions>
@@ -326,7 +327,90 @@
                     </dependency>
                 </dependencies>
             </plugin>
+
         </plugins>
     </build>
 
+    <profiles>
+        <profile>
+            <id>dockerITs</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>skipITs</name>
+                    <value>false</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <configuration combine.self="override">
+                            <watchInterval>500</watchInterval>
+                            <logDate>default</logDate>
+                            <verbose>true</verbose>
+                            <autoPull>on</autoPull>
+                            <images>
+                                <image>
+                                    <name>elasticsearch:2.3.5</name>
+                                    <alias>elasticsearch</alias>
+                                    <run>
+                                        <namingStrategy>none</namingStrategy>
+                                        <ports>
+                                            
<port>${http.host}:${http.port}:9200</port>
+                                            
<port>${tcp.host}:${tcp.port}:9300</port>
+                                        </ports>
+                                        
<portPropertyFile>elasticsearch.properties</portPropertyFile>
+                                        <wait>
+                                            <http>
+                                                
<url>http://${http.host}:${http.port}</url>
+                                                <method>GET</method>
+                                                <status>200</status>
+                                            </http>
+                                            <time>30000</time>
+                                            <kill>1000</kill>
+                                            <shutdown>500</shutdown>
+                                        </wait>
+                                        <log>
+                                            <enabled>true</enabled>
+                                            <date>default</date>
+                                            <color>cyan</color>
+                                        </log>
+                                    </run>
+                                    <watch>
+                                        <mode>none</mode>
+                                    </watch>
+                                </image>
+
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                </plugins>
+            </build>
+
+        </profile>
+    </profiles>
+
 </project>
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/main/java/org/apache/streams/example/ElasticsearchHdfs.java
 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/main/java/org/apache/streams/example/ElasticsearchHdfs.java
index eee43bf3b..8080ea349 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/main/java/org/apache/streams/example/ElasticsearchHdfs.java
+++ 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/main/java/org/apache/streams/example/ElasticsearchHdfs.java
@@ -45,8 +45,8 @@ public ElasticsearchHdfs() {
     this(new 
StreamsConfigurator<>(ElasticsearchHdfsConfiguration.class).detectCustomConfiguration());
   }
 
-  public ElasticsearchHdfs(ElasticsearchHdfsConfiguration reindex) {
-    this.config = reindex;
+  public ElasticsearchHdfs(ElasticsearchHdfsConfiguration config) {
+    this.config = config;
   }
 
   public static void main(String[] args)
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/ElasticsearchHdfsIT.java
 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/ElasticsearchHdfsIT.java
index 6b4e470ab..af7fb1cd9 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/ElasticsearchHdfsIT.java
+++ 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/ElasticsearchHdfsIT.java
@@ -66,13 +66,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new File("target/test-classes/ElasticsearchHdfsIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
-
-    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchHdfsConfiguration.class).detectCustomConfiguration();
+    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchHdfsConfiguration.class).detectCustomConfiguration("ElasticsearchHdfsIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getSource()).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/HdfsElasticsearchIT.java
 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/HdfsElasticsearchIT.java
index b968f1616..c1da33638 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/HdfsElasticsearchIT.java
+++ 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/java/org/apache/streams/example/test/HdfsElasticsearchIT.java
@@ -67,13 +67,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new File("target/test-classes/HdfsElasticsearchIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
-
-    testConfiguration = new 
StreamsConfigurator<>(HdfsElasticsearchConfiguration.class).detectCustomConfiguration();
+    testConfiguration = new 
StreamsConfigurator<>(HdfsElasticsearchConfiguration.class).detectCustomConfiguration("HdfsElasticsearchIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getDestination()).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/ElasticsearchHdfsIT.conf
 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/ElasticsearchHdfsIT.conf
deleted file mode 100644
index 5ec7b0021..000000000
--- 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/ElasticsearchHdfsIT.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../../elasticsearch.properties"
-source {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  indexes += "elasticsearch_persist_writer_it"
-  types += "activity"
-}
-destination {
-  fields = ["ID","DOC"]
-  scheme = file
-  user = hadoop
-  path = "target/test-classes"
-  writerPath = "elasticsearch_hdfs_it"
-}
-taskTimeoutMs = 60000
\ No newline at end of file
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/HdfsElasticsearchIT.conf
 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/HdfsElasticsearchIT.conf
deleted file mode 100644
index 3eb0b0f0a..000000000
--- 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/HdfsElasticsearchIT.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-include "../../../../../elasticsearch.properties"
-source {
-  fields = ["ID","DOC"]
-  scheme = file
-  user = hadoop
-  path = "target/test-classes"
-  readerPath = "elasticsearch_hdfs_it"
-}
-destination {
-  hosts += ${es.tcp.host}
-  port = ${es.tcp.port}
-  clusterName = "elasticsearch"
-  index = "hdfs_elasticsearch_it"
-  type = "activity"
-  refresh = true
-  forceUseConfig = true
-}
-taskTimeoutMs = 60000
\ No newline at end of file
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/testng.xml
 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/testng.xml
index c52395fa9..417c8c497 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/testng.xml
+++ 
b/streams-examples/streams-examples-local/elasticsearch-hdfs/src/test/resources/testng.xml
@@ -19,7 +19,13 @@
   ~ under the License.
   -->
 
-<suite name="ExampleITs">
+<suite name="ExampleITs" preserve-order="true">
+
+    <test name="ElasticsearchPersistWriterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchPersistWriterIT" />
+        </classes>
+    </test>
 
     <test name="ElasticsearchHdfsIT">
         <classes>
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-reindex/pom.xml 
b/streams-examples/streams-examples-local/elasticsearch-reindex/pom.xml
index ba45a4f8b..c9600f480 100644
--- a/streams-examples/streams-examples-local/elasticsearch-reindex/pom.xml
+++ b/streams-examples/streams-examples-local/elasticsearch-reindex/pom.xml
@@ -26,8 +26,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>streams-elasticsearch-reindex</artifactId>
-    <name>elasticsearch-reindex</name>
+    <artifactId>streams-example-elasticsearch-reindex</artifactId>
+    <name>streams-example-elasticsearch-reindex</name>
 
     <description>Copies documents between indexes.</description>
 
@@ -250,9 +250,10 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <configuration>
-                    <includes>**/*.json,**/*.conf</includes>
+                    <includes>**/*.json</includes>
                     
<outputDirectory>${project.build.directory}/test-classes</outputDirectory>
                     <includeGroupIds>org.apache.streams</includeGroupIds>
+                    
<includeArtifactIds>streams-schema-activitystreams</includeArtifactIds>
                     <includeTypes>test-jar</includeTypes>
                 </configuration>
                 <executions>
@@ -285,4 +286,86 @@
         </plugins>
     </build>
 
+    <profiles>
+        <profile>
+            <id>dockerITs</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>skipITs</name>
+                    <value>false</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <configuration combine.self="override">
+                            <watchInterval>500</watchInterval>
+                            <logDate>default</logDate>
+                            <verbose>true</verbose>
+                            <autoPull>on</autoPull>
+                            <images>
+                                <image>
+                                    <name>elasticsearch:2.3.5</name>
+                                    <alias>elasticsearch</alias>
+                                    <run>
+                                        <namingStrategy>none</namingStrategy>
+                                        <ports>
+                                            
<port>${http.host}:${http.port}:9200</port>
+                                            
<port>${tcp.host}:${tcp.port}:9300</port>
+                                        </ports>
+                                        
<portPropertyFile>elasticsearch.properties</portPropertyFile>
+                                        <wait>
+                                            <http>
+                                                
<url>http://${http.host}:${http.port}</url>
+                                                <method>GET</method>
+                                                <status>200</status>
+                                            </http>
+                                            <time>30000</time>
+                                            <kill>1000</kill>
+                                            <shutdown>500</shutdown>
+                                        </wait>
+                                        <log>
+                                            <enabled>true</enabled>
+                                            <date>default</date>
+                                            <color>cyan</color>
+                                        </log>
+                                    </run>
+                                    <watch>
+                                        <mode>none</mode>
+                                    </watch>
+                                </image>
+
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                </plugins>
+            </build>
+
+        </profile>
+    </profiles>
+
 </project>
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexChildIT.java
 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexChildIT.java
index c795c2586..acc1575ae 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexChildIT.java
+++ 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexChildIT.java
@@ -66,13 +66,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new 
File("target/test-classes/ElasticsearchReindexChildIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
-
-    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchReindexConfiguration.class).detectCustomConfiguration();
+    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchReindexConfiguration.class).detectCustomConfiguration("ElasticsearchReindexChildIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getSource()).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexIT.java
 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexIT.java
index 2b2b7885e..af179b17a 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexIT.java
+++ 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexIT.java
@@ -66,13 +66,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new 
File("target/test-classes/ElasticsearchReindexIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
-
-    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchReindexConfiguration.class).detectCustomConfiguration();
+    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchReindexConfiguration.class).detectCustomConfiguration("ElasticsearchReindexIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getSource()).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexParentIT.java
 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexParentIT.java
index 655b46412..e974f6f21 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexParentIT.java
+++ 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/java/org/apache/streams/example/test/ElasticsearchReindexParentIT.java
@@ -71,13 +71,7 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new 
File("target/test-classes/ElasticsearchReindexParentIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
-
-    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchReindexConfiguration.class).detectCustomConfiguration();
+    testConfiguration = new 
StreamsConfigurator<>(ElasticsearchReindexConfiguration.class).detectCustomConfiguration("ElasticsearchReindexParentIT");
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getSource()).client();
 
     ClusterHealthRequest clusterHealthRequest = 
Requests.clusterHealthRequest();
diff --git 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/resources/testng.xml
 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/resources/testng.xml
index 8b421b6a5..1a625259b 100644
--- 
a/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/resources/testng.xml
+++ 
b/streams-examples/streams-examples-local/elasticsearch-reindex/src/test/resources/testng.xml
@@ -21,6 +21,18 @@
 
 <suite name="ExampleITs">
 
+    <test name="ElasticsearchPersistWriterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchPersistWriterIT" />
+        </classes>
+    </test>
+
+    <test name="ElasticsearchParentChildWriterIT">
+        <classes>
+            <class 
name="org.apache.streams.elasticsearch.test.ElasticsearchParentChildWriterIT" />
+        </classes>
+    </test>
+
     <test name="ElasticsearchReindexIT">
         <classes>
             <class 
name="org.apache.streams.example.test.ElasticsearchReindexIT" />
diff --git 
a/streams-examples/streams-examples-local/mongo-elasticsearch-sync/pom.xml 
b/streams-examples/streams-examples-local/mongo-elasticsearch-sync/pom.xml
index e6a47b0eb..44d123cc6 100644
--- a/streams-examples/streams-examples-local/mongo-elasticsearch-sync/pom.xml
+++ b/streams-examples/streams-examples-local/mongo-elasticsearch-sync/pom.xml
@@ -26,8 +26,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>streams-mongo-elasticsearch-sync</artifactId>
-    <name>mongo-elasticsearch-sync</name>
+    <artifactId>streams-example-mongo-elasticsearch-sync</artifactId>
+    <name>streams-example-mongo-elasticsearch-sync</name>
 
     <description>Copies documents from mongodb to elasticsearch.</description>
 
@@ -254,9 +254,10 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <configuration>
-                    <includes>**/*.json,**/*.conf</includes>
+                    <includes>**/*.json</includes>
                     
<outputDirectory>${project.build.directory}/test-classes</outputDirectory>
                     <includeGroupIds>org.apache.streams</includeGroupIds>
+                    
<includeArtifactIds>streams-schema-activitystreams</includeArtifactIds>
                     <includeTypes>test-jar</includeTypes>
                 </configuration>
                 <executions>
@@ -289,4 +290,109 @@
         </plugins>
     </build>
 
+    <profiles>
+        <profile>
+            <id>dockerITs</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>skipITs</name>
+                    <value>false</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <configuration combine.self="override">
+                            <startParallel>true</startParallel>
+                            <watchInterval>500</watchInterval>
+                            <logDate>default</logDate>
+                            <verbose>true</verbose>
+                            <autoPull>on</autoPull>
+                            <images>
+                                <image>
+                                    <name>elasticsearch:2.3.5</name>
+                                    <alias>elasticsearch</alias>
+                                    <run>
+                                        <namingStrategy>none</namingStrategy>
+                                        <ports>
+                                            
<port>${http.host}:${http.port}:9200</port>
+                                            
<port>${tcp.host}:${tcp.port}:9300</port>
+                                        </ports>
+                                        
<portPropertyFile>elasticsearch.properties</portPropertyFile>
+                                        <wait>
+                                            <http>
+                                                
<url>http://${http.host}:${http.port}</url>
+                                                <method>GET</method>
+                                                <status>200</status>
+                                            </http>
+                                            <time>30000</time>
+                                            <kill>1000</kill>
+                                            <shutdown>500</shutdown>
+                                        </wait>
+                                        <log>
+                                            <enabled>true</enabled>
+                                            <date>default</date>
+                                            <color>cyan</color>
+                                        </log>
+                                    </run>
+                                    <watch>
+                                        <mode>none</mode>
+                                    </watch>
+                                </image>
+                                <image>
+                                    <name>mongo:3.2.0</name>
+                                    <alias>mongo</alias>
+                                    <run>
+                                        <namingStrategy>none</namingStrategy>
+                                        <ports>
+                                            
<port>${tcp.host}:${tcp.port}:27017</port>
+                                        </ports>
+                                        
<portPropertyFile>mongo.properties</portPropertyFile>
+                                        <log>
+                                            <enabled>true</enabled>
+                                            <date>default</date>
+                                            <color>cyan</color>
+                                        </log>
+                                        <wait>
+                                            <log>waiting for connections on 
port 27017</log>
+                                            <time>60000</time>
+                                        </wait>
+                                    </run>
+                                    <watch>
+                                        <mode>none</mode>
+                                    </watch>
+                                </image>
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                </plugins>
+            </build>
+
+        </profile>
+    </profiles>
+
 </project>
diff --git 
a/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/java/org/apache/streams/example/test/MongoElasticsearchSyncIT.java
 
b/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/java/org/apache/streams/example/test/MongoElasticsearchSyncIT.java
index e80637898..c466aa570 100644
--- 
a/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/java/org/apache/streams/example/test/MongoElasticsearchSyncIT.java
+++ 
b/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/java/org/apache/streams/example/test/MongoElasticsearchSyncIT.java
@@ -65,12 +65,6 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new 
File("target/test-classes/MongoElasticsearchSyncIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
-
     testConfiguration = new 
StreamsConfigurator<>(MongoElasticsearchSyncConfiguration.class).detectCustomConfiguration();
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getDestination()).client();
 
@@ -100,7 +94,7 @@ public void testSync() throws Exception {
         .setTypes(testConfiguration.getDestination().getType());
     SearchResponse countResponse = countRequest.execute().actionGet();
 
-    assertEquals(89, (int)countResponse.getHits().getTotalHits());
+    assertEquals((int)countResponse.getHits().getTotalHits(), 89);
 
   }
 }
diff --git 
a/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/resources/testng.xml
 
b/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/resources/testng.xml
index e8f823307..a4547cc9b 100644
--- 
a/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/resources/testng.xml
+++ 
b/streams-examples/streams-examples-local/mongo-elasticsearch-sync/src/test/resources/testng.xml
@@ -19,7 +19,13 @@
   ~ under the License.
   -->
 
-<suite name="ExampleITs">
+<suite name="ExampleITs" preserve-order="true">
+
+    <test name="MongoPersistIT">
+        <classes>
+            <class name="org.apache.streams.mongo.test.MongoPersistIT" />
+        </classes>
+    </test>
 
     <test name="MongoElasticsearchSyncIT">
         <classes>
diff --git 
a/streams-examples/streams-examples-local/twitter-history-elasticsearch/pom.xml 
b/streams-examples/streams-examples-local/twitter-history-elasticsearch/pom.xml
index bd9e6313c..4bfaac168 100644
--- 
a/streams-examples/streams-examples-local/twitter-history-elasticsearch/pom.xml
+++ 
b/streams-examples/streams-examples-local/twitter-history-elasticsearch/pom.xml
@@ -25,8 +25,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>streams-twitter-history-elasticsearch</artifactId>
-    <name>twitter-history-elasticsearch</name>
+    <artifactId>streams-example-twitter-history-elasticsearch</artifactId>
+    <name>streams-example-twitter-history-elasticsearch</name>
 
     <description>
         Retrieves as many posts from a known list of users as twitter API 
allows.
@@ -258,25 +258,6 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-shade-plugin</artifactId>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <configuration>
-                    <includes>**/*.json</includes>
-                    
<outputDirectory>${project.build.directory}/test-classes</outputDirectory>
-                    <includeGroupIds>org.apache.streams</includeGroupIds>
-                    <includeTypes>test-jar</includeTypes>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>test-resource-dependencies</id>
-                        <phase>process-test-resources</phase>
-                        <goals>
-                            <goal>unpack-dependencies</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
@@ -291,4 +272,86 @@
         </plugins>
     </build>
 
+    <profiles>
+        <profile>
+            <id>dockerITs</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>skipITs</name>
+                    <value>false</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <configuration combine.self="override">
+                            <watchInterval>500</watchInterval>
+                            <logDate>default</logDate>
+                            <verbose>true</verbose>
+                            <autoPull>on</autoPull>
+                            <images>
+                                <image>
+                                    <name>elasticsearch:2.3.5</name>
+                                    <alias>elasticsearch</alias>
+                                    <run>
+                                        <namingStrategy>none</namingStrategy>
+                                        <ports>
+                                            
<port>${http.host}:${http.port}:9200</port>
+                                            
<port>${tcp.host}:${tcp.port}:9300</port>
+                                        </ports>
+                                        
<portPropertyFile>elasticsearch.properties</portPropertyFile>
+                                        <wait>
+                                            <http>
+                                                
<url>http://${http.host}:${http.port}</url>
+                                                <method>GET</method>
+                                                <status>200</status>
+                                            </http>
+                                            <time>30000</time>
+                                            <kill>1000</kill>
+                                            <shutdown>500</shutdown>
+                                        </wait>
+                                        <log>
+                                            <enabled>true</enabled>
+                                            <date>default</date>
+                                            <color>cyan</color>
+                                        </log>
+                                    </run>
+                                    <watch>
+                                        <mode>none</mode>
+                                    </watch>
+                                </image>
+
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                </plugins>
+            </build>
+
+        </profile>
+    </profiles>
+
 </project>
diff --git 
a/streams-examples/streams-examples-local/twitter-history-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterHistoryElasticsearchIT.java
 
b/streams-examples/streams-examples-local/twitter-history-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterHistoryElasticsearchIT.java
index 54be2fd00..ba04fcf27 100644
--- 
a/streams-examples/streams-examples-local/twitter-history-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterHistoryElasticsearchIT.java
+++ 
b/streams-examples/streams-examples-local/twitter-history-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterHistoryElasticsearchIT.java
@@ -63,11 +63,6 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new 
File("target/test-classes/TwitterHistoryElasticsearchIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
     testConfiguration = new 
StreamsConfigurator<>(TwitterHistoryElasticsearchConfiguration.class).detectCustomConfiguration();
 
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getElasticsearch()).client();
@@ -78,6 +73,7 @@ public void prepareTest() throws Exception {
 
     IndicesExistsRequest indicesExistsRequest = 
Requests.indicesExistsRequest(testConfiguration.getElasticsearch().getIndex());
     IndicesExistsResponse indicesExistsResponse = 
testClient.admin().indices().exists(indicesExistsRequest).actionGet();
+
     if(indicesExistsResponse.isExists()) {
       DeleteIndexRequest deleteIndexRequest = 
Requests.deleteIndexRequest(testConfiguration.getElasticsearch().getIndex());
       DeleteIndexResponse deleteIndexResponse = 
testClient.admin().indices().delete(deleteIndexRequest).actionGet();
diff --git 
a/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/pom.xml
 
b/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/pom.xml
index e7222c72f..58ca6663e 100644
--- 
a/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/pom.xml
+++ 
b/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/pom.xml
@@ -25,8 +25,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>twitter-userstream-elasticsearch</artifactId>
-    <name>twitter-userstream-elasticsearch</name>
+    <artifactId>streams-example-twitter-userstream-elasticsearch</artifactId>
+    <name>streams-example-twitter-userstream-elasticsearch</name>
 
     <description>
         Connects to an active twitter account and stores the userstream as 
activities in Elasticsearch
@@ -205,26 +205,6 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-shade-plugin</artifactId>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <configuration>
-                    <includes>**/*.json</includes>
-                    
<outputDirectory>${project.build.directory}/test-classes</outputDirectory>
-                    <includeGroupIds>org.apache.streams</includeGroupIds>
-                    
<includeArtifactIds>streams-schemas-activitystreams</includeArtifactIds>
-                    <includeTypes>test-jar</includeTypes>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>test-resource-dependencies</id>
-                        <phase>process-test-resources</phase>
-                        <goals>
-                            <goal>unpack-dependencies</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
@@ -236,12 +216,89 @@
                     </dependency>
                 </dependencies>
             </plugin>
-            <plugin>
-                <groupId>io.fabric8</groupId>
-                <artifactId>docker-maven-plugin</artifactId>
-                <version>${docker.plugin.version}</version>
-            </plugin>
         </plugins>
     </build>
 
+    <profiles>
+        <profile>
+            <id>dockerITs</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>skipITs</name>
+                    <value>false</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <configuration combine.self="override">
+                            <watchInterval>500</watchInterval>
+                            <logDate>default</logDate>
+                            <verbose>true</verbose>
+                            <autoPull>on</autoPull>
+                            <images>
+                                <image>
+                                    <name>elasticsearch:2.3.5</name>
+                                    <alias>elasticsearch</alias>
+                                    <run>
+                                        <namingStrategy>none</namingStrategy>
+                                        <ports>
+                                            
<port>${http.host}:${http.port}:9200</port>
+                                            
<port>${tcp.host}:${tcp.port}:9300</port>
+                                        </ports>
+                                        
<portPropertyFile>elasticsearch.properties</portPropertyFile>
+                                        <wait>
+                                            <http>
+                                                
<url>http://${http.host}:${http.port}</url>
+                                                <method>GET</method>
+                                                <status>200</status>
+                                            </http>
+                                            <time>30000</time>
+                                            <kill>1000</kill>
+                                            <shutdown>500</shutdown>
+                                        </wait>
+                                        <log>
+                                            <enabled>true</enabled>
+                                            <date>default</date>
+                                            <color>cyan</color>
+                                        </log>
+                                    </run>
+                                    <watch>
+                                        <mode>none</mode>
+                                    </watch>
+                                </image>
+
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>start</id>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <phase>
+                                    pre-integration-test
+                                </phase>
+                            </execution>
+                            <execution>
+                                <id>stop</id>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <phase>
+                                    post-integration-test
+                                </phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                </plugins>
+            </build>
+
+        </profile>
+    </profiles>
+
 </project>
diff --git 
a/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterUserstreamElasticsearchIT.java
 
b/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterUserstreamElasticsearchIT.java
index b77696daa..aca0388de 100644
--- 
a/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterUserstreamElasticsearchIT.java
+++ 
b/streams-examples/streams-examples-local/twitter-userstream-elasticsearch/src/test/java/org/apache/streams/example/test/TwitterUserstreamElasticsearchIT.java
@@ -67,11 +67,6 @@
   @BeforeClass
   public void prepareTest() throws Exception {
 
-    File conf_file = new 
File("target/test-classes/TwitterUserstreamElasticsearchIT.conf");
-    assert(conf_file.exists());
-
-    Config testResourceConfig  = ConfigFactory.parseFileAnySyntax(conf_file, 
ConfigParseOptions.defaults().setAllowMissing(false));
-    StreamsConfigurator.addConfig(testResourceConfig);
     testConfiguration = new 
StreamsConfigurator<>(TwitterUserstreamElasticsearchConfiguration.class).detectCustomConfiguration();
 
     testClient = 
ElasticsearchClientManager.getInstance(testConfiguration.getElasticsearch()).client();


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Run docker containers supporting persist ITs one at a time
> ----------------------------------------------------------
>
>                 Key: STREAMS-586
>                 URL: https://issues.apache.org/jira/browse/STREAMS-586
>             Project: Streams
>          Issue Type: Improvement
>            Reporter: Steve Blackmon
>            Assignee: Steve Blackmon
>            Priority: Major
>
> The release process as currently documented requires the release manager to 
> start a docker container for every persist module that uses docker, all at 
> once.
> A more sensible strategy would be for each module to start it's own container 
> in pre-integration-test and stop it in post-integration-test.
> It would be nice to have a way keep the containers built during ITs running 
> once testing has concluded.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to