You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2017/06/05 12:05:17 UTC

[1/6] polygene-java git commit: :tools:generator Docker tests in generated projects are skipped when no docker service is available

Repository: polygene-java
Updated Branches:
  refs/heads/develop 767b36167 -> dcd778c2a


:tools:generator Docker tests in generated projects are skipped when no docker service is available


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/acba9721
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/acba9721
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/acba9721

Branch: refs/heads/develop
Commit: acba97216fe09f200aacfadbf0d90b2e890e9644
Parents: 767b361
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jun 5 12:15:47 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jun 5 12:15:47 2017 +0200

----------------------------------------------------------------------
 .../RestAPIApplication/bootstrap-test.tmpl      | 122 ++++++++++++-------
 1 file changed, 80 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/acba9721/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
index ae03cd6..ff42660 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
@@ -36,8 +36,9 @@ import org.apache.polygene.tools.model.descriptor.ApplicationDetailDescriptor;
 import org.apache.polygene.tools.model.descriptor.ApplicationDetailDescriptorBuilder;
 <%
 polygene.needsDelayChecker = false;
+polygene.needsDocker = ['Cassandra', 'JClouds', 'MySQL', 'PostgreSQL', 'Redis', 'Riak'].indexOf(polygene.entitystore) != -1 || ['Memcache'].indexOf(polygene.caching) != -1;
 
-if(  polygene.entitystore === 'MySQL' ) {
+if( polygene.entitystore === 'MySQL' ) {
 %>import java.util.HashMap;
 <%
 }
@@ -50,12 +51,24 @@ if( polygene.entitystore !== 'Memory' && polygene.entitystore !== 'Preferences'
     }
 }
 %>
+<%
+if( polygene.needsDocker ) {
+%>
+import com.spotify.docker.client.DefaultDockerClient;
 import pl.domzal.junit.docker.rule.DockerRule;
+import pl.domzal.junit.docker.rule.DockerRuleBuilder;
 import pl.domzal.junit.docker.rule.WaitFor;
 import pl.domzal.junit.docker.rule.wait.StartCondition;
 import pl.domzal.junit.docker.rule.wait.StartConditionCheck;
 
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+import org.junit.Assume;
 import org.junit.ClassRule;
+<%
+}
+%>
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -114,12 +127,11 @@ if(  polygene.entitystore === 'Cassandra' ) {
     }
 
     @ClassRule
-    public static final DockerRule ES_DOCKER = DockerRule.builder()
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
                                                          .imageName( "cassandra:latest"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
-                                                         .waitFor( WaitFor.logMessageSequence( "Starting listening for CQL clients" ) )
-                                                         .build();
+                                                         .waitFor( WaitFor.logMessageSequence( "Starting listening for CQL clients" ) ) );
 <% }
 if(  polygene.entitystore === 'DerbySQL' ) {
 %>
@@ -158,12 +170,11 @@ if(  polygene.entitystore === 'JClouds' ) {
     }
 
     @ClassRule
-    public static final DockerRule ES_DOCKER = DockerRule.builder()
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
                                                          .imageName( "scality/s3server:latest"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
-                                                         .waitFor( WaitFor.logMessageSequence( "server started" ) )
-                                                         .build();
+                                                         .waitFor( WaitFor.logMessageSequence( "server started" ) ) );
 <% }
 if(  polygene.entitystore === 'Jdbm' ) {
 %>
@@ -197,7 +208,7 @@ if(  polygene.entitystore === 'MySQL' ) {
     }
 
     @ClassRule
-    public static final DockerRule ES_DOCKER = DockerRule.builder()
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
                                                          .imageName( "mariadb:latest"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
@@ -206,8 +217,7 @@ if(  polygene.entitystore === 'MySQL' ) {
                                                          .env("MYSQL_DATABASE", "jdbc_test_db")
                                                          .env("MYSQL_ROOT_HOST", "172.17.0.1")
 //                                                       .waitFor( WaitFor.logMessageSequence( "mysqld: ready for connections" ) )   TODO: add this after next release of tdomzal/junit-docker-rule
-                                                         .waitFor( new DelayChecker( 30000L ) )
-                                                         .build();
+                                                         .waitFor( new DelayChecker( 30000L ) ) );
 <% }
 if(  polygene.entitystore === 'PostgreSQL' ) {
     polygene.needsDelayChecker = true;
@@ -217,13 +227,12 @@ if(  polygene.entitystore === 'PostgreSQL' ) {
     }
 
     @ClassRule
-    public static final DockerRule ES_DOCKER = DockerRule.builder()
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
                                                          .imageName( "<%= polygene.packagename %>-postgresql"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
                                                          .waitFor( WaitFor.logMessageSequence( "PostgreSQL init process complete; ready for start up." ) )
-                                                         .waitFor( new DelayChecker( 3000L ) )
-                                                         .build();
+                                                         .waitFor( new DelayChecker( 3000L ) ) );
 <% }
 if(  polygene.entitystore === 'Preferences' ) {
 %>
@@ -238,11 +247,11 @@ if(  polygene.entitystore === 'Redis' ) {
     }
 
     @ClassRule
-    public static final DockerRule ES_DOCKER = DockerRule.builder()
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
                                                          .imageName( "redis:latest"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
-                                                         .waitFor( pl.domzal.junit.docker.rule.WaitFor.tcpPort( 6379 ) ).build();
+                                                         .waitFor( pl.domzal.junit.docker.rule.WaitFor.tcpPort( 6379 ) ) );
 <% }
 if(  polygene.entitystore === 'Riak' ) {
 %>
@@ -251,11 +260,11 @@ if(  polygene.entitystore === 'Riak' ) {
     }
 
     @ClassRule
-    public static final DockerRule ES_DOCKER = DockerRule.builder()
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
                                                          .imageName( "basho/riak-kv:latest"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
-                                                         .waitFor( WaitFor.logMessageSequence( "riak_auth_mods started on node" ) ).build();
+                                                         .waitFor( WaitFor.logMessageSequence( "riak_auth_mods started on node" ) ) );
 <% }
 if(  polygene.entitystore === 'SQLite' ) {
 %>
@@ -266,35 +275,64 @@ if(  polygene.entitystore === 'SQLite' ) {
 if(  polygene.caching === 'Memcache' ) {
 %>
     @ClassRule
-    public static final DockerRule CACHE_DOCKER = DockerRule.builder()
-                                                            .imageName( "memcached:latest"  )
-                                                            .expose( "11211", "11211" )
-                                                            .waitForTimeout( 120 )
-                                                            .waitFor( WaitFor.tcpPort(11211) )
-                                                            .build();
+    public static final OptionalDockerRule CACHE_DOCKER = new OptionalDockerRule( DockerRule.builder()
+                                                              .imageName( "memcached:latest"  )
+                                                              .expose( "11211", "11211" )
+                                                              .waitForTimeout( 120 )
+                                                              .waitFor( WaitFor.tcpPort(11211) ) );
 
-<% }
-if(  polygene.caching === 'EhCache' ) {
+<%
+}
 %>
-    @ClassRule
-    public static final DockerRule CACHE_DOCKER = DockerRule.builder()
-                                                            .imageName( "terracotta/terracotta-server-oss:latest"  )
-                                                            .expose( "9510", "9510" )
-                                                            .waitForTimeout( 120 )
-                                                            .waitFor( WaitFor.tcpPort(9510) )
-                                                            .build();
-<% }
-if(  polygene.indexing === 'ElasticSearch' ) {
+
+<%
+if( polygene.needsDocker ) {
 %>
-    @ClassRule
-    public static final DockerRule INDEXING_DOCKER = DockerRule.builder()
-                                                               .imageName( "docker.elastic.co/elasticsearch/elasticsearch:latest"  )
-                                                               .publishAllPorts( true )
-                                                               .waitForTimeout( 120 )
-                                                               .build();
+    /**
+     * This JUnit Rule will skip tests if no Docker service is available.
+     */
+    private static class OptionalDockerRule implements TestRule
+    {
+        private final DockerRuleBuilder dockerRuleBuilder;
+        private DockerRule dockerRule;
+
+        private OptionalDockerRule( DockerRuleBuilder dockerRuleBuilder )
+        {
+            this.dockerRuleBuilder = dockerRuleBuilder;
+        }
+
+        @Override
+        public Statement apply( Statement base, Description description )
+        {
+            try
+            {
+                DefaultDockerClient.fromEnv().build().listImages();
+            }
+            catch( Throwable ex )
+            {
+                Assume.assumeNoException( ex );
+            }
+
+            dockerRule = dockerRuleBuilder.build();
+            return dockerRule.apply( base, description );
+        }
+
+        public String getDockerHost()
+        {
+            return dockerRule.getDockerHost();
+        }
+
+        public String getExposedContainerPort( String containerPort )
+        {
+            return dockerRule.getExposedContainerPort( containerPort );
+        }
+    }
+<%
+}
+%>
+
 <%
-} %>
-<% if( polygene.needsDelayChecker ) {
+if( polygene.needsDelayChecker ) {
 %>
     private static class DelayChecker
         implements StartCondition


[3/6] polygene-java git commit: :extensions:cache-memcache assemble config as Configuration

Posted by pa...@apache.org.
:extensions:cache-memcache assemble config as Configuration


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/e7d52c5c
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/e7d52c5c
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/e7d52c5c

Branch: refs/heads/develop
Commit: e7d52c5c54398a151038664f3e5e62a862d0a5aa
Parents: d4b29ca
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jun 5 13:59:19 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jun 5 13:59:19 2017 +0200

----------------------------------------------------------------------
 .../apache/polygene/cache/memcache/assembly/MemcacheAssembler.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e7d52c5c/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java b/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
index 25338d2..92a76db 100644
--- a/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
+++ b/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
@@ -41,7 +41,7 @@ public class MemcacheAssembler
         }
         if( hasConfig() )
         {
-            configModule().entities( MemcacheConfiguration.class ).visibleIn( configVisibility() );
+            configModule().configurations( MemcacheConfiguration.class ).visibleIn( configVisibility() );
         }
     }
 }


[4/6] polygene-java git commit: :tools:generator fix Memcache setup in docker based tests

Posted by pa...@apache.org.
:tools:generator fix Memcache setup in docker based tests

If using Docker with a remote host (e.g. boot2docker), the default
configuration pointing to localhost won’t work. This commit always
set memcache configuration defaults according to junit docker rule.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/182434bd
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/182434bd
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/182434bd

Branch: refs/heads/develop
Commit: 182434bd24f1cef8a6ad61c55a472d3d537b2add
Parents: e7d52c5
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jun 5 14:01:23 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jun 5 14:01:56 2017 +0200

----------------------------------------------------------------------
 .../RestAPIApplication/bootstrap-test.tmpl      | 28 ++++++++++++++++----
 1 file changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/182434bd/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
index ff42660..14f93e5 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
@@ -50,8 +50,10 @@ if( polygene.entitystore !== 'Memory' && polygene.entitystore !== 'Preferences'
 <%
     }
 }
-%>
+if( polygene.caching === 'Memcache' ) {
+%>import org.apache.polygene.cache.memcache.MemcacheConfiguration;
 <%
+}
 if( polygene.needsDocker ) {
 %>
 import com.spotify.docker.client.DefaultDockerClient;
@@ -111,6 +113,13 @@ public class BootstrapTest
     private void setupTest( ApplicationAssembly assembly )
     {
         entityStoreSetup( assembly );
+<%
+if( polygene.caching === 'Memcache' ) {
+%>
+        cacheSetup( assembly );
+<%
+}
+%>
     }
 <%
 if(  polygene.entitystore === 'Cassandra' ) {
@@ -272,14 +281,23 @@ if(  polygene.entitystore === 'SQLite' ) {
     {
     }
 <% }
-if(  polygene.caching === 'Memcache' ) {
+if( polygene.caching === 'Memcache' ) {
 %>
+
+    private void cacheSetup( ApplicationAssembly assembly )
+    {
+        ModuleAssembly config = assembly.layer( ConfigurationLayer.NAME ).module( ConfigModule.NAME );
+
+        MemcacheConfiguration memcacheConfig = config.forMixin( MemcacheConfiguration.class ).declareDefaults();
+        memcacheConfig.addresses().set( CACHE_DOCKER.getDockerHost() + ":" + CACHE_DOCKER.getExposedContainerPort( "11211/tcp" ) );
+    }
+
     @ClassRule
     public static final OptionalDockerRule CACHE_DOCKER = new OptionalDockerRule( DockerRule.builder()
-                                                              .imageName( "memcached:latest"  )
-                                                              .expose( "11211", "11211" )
+                                                              .imageName( "memcached:1.4.36-alpine"  )
+                                                              .expose( "11211" )
                                                               .waitForTimeout( 120 )
-                                                              .waitFor( WaitFor.tcpPort(11211) ) );
+                                                              .waitFor( WaitFor.tcpPort( 11211 ) ) );
 
 <%
 }


[5/6] polygene-java git commit: :tools:generator Implement MongoDB docker based testing

Posted by pa...@apache.org.
:tools:generator Implement MongoDB docker based testing


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/a8851732
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/a8851732
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/a8851732

Branch: refs/heads/develop
Commit: a8851732af57a1d873ae224fc4b1d378cc19ec4b
Parents: 182434b
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jun 5 14:02:40 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jun 5 14:02:40 2017 +0200

----------------------------------------------------------------------
 .../templates/RestAPIApplication/bootstrap-test.tmpl   | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a8851732/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
index 14f93e5..80303c1 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
@@ -205,9 +205,20 @@ if(  polygene.entitystore === 'Memory' ) {
 <% }
 if(  polygene.entitystore === 'MongoDB' ) {
 %>
-    private void entityStoreSetup(ApplicationAssembly assembly )
+    private void entityStoreSetup( ApplicationAssembly assembly )
     {
+        ModuleAssembly config = assembly.layer( ConfigurationLayer.NAME ).module( ConfigModule.NAME );
+        MongoDBEntityStoreConfiguration mongoConfig = config.forMixin( MongoDBEntityStoreConfiguration.class ).declareDefaults();
+        mongoConfig.hostname().set( ES_DOCKER.getDockerHost() );
+        mongoConfig.port().set( Integer.valueOf( ES_DOCKER.getExposedContainerPort( "27017/tcp" ) ) );
     }
+
+    @ClassRule
+    public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
+                                                            .imageName( "mongo:3.5.8" )
+                                                            .expose( "27017" )
+                                                            .waitForTimeout( 120 )
+                                                            .waitFor( WaitFor.tcpPort(27017) ) );
 <% }
 if(  polygene.entitystore === 'MySQL' ) {
     polygene.needsDelayChecker = true;


[2/6] polygene-java git commit: :extensions:entitystore-mongodb Docker based tests

Posted by pa...@apache.org.
:extensions:entitystore-mongodb Docker based tests


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/d4b29ca3
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/d4b29ca3
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/d4b29ca3

Branch: refs/heads/develop
Commit: d4b29ca37794ed493a7c966b9900b59414133ed1
Parents: acba972
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jun 5 12:37:53 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jun 5 12:37:53 2017 +0200

----------------------------------------------------------------------
 dependencies.gradle                                 |  1 +
 extensions/entitystore-mongodb/build.gradle         |  2 +-
 .../entitystore/mongodb/MongoDBEntityStoreTest.java | 15 ++++++---------
 .../mongodb/MongoDBEntityStoreWithCacheTest.java    | 15 ++++++---------
 .../src/main/docker/mongo/Dockerfile                | 16 ++++++++++++++++
 5 files changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/d4b29ca3/dependencies.gradle
----------------------------------------------------------------------
diff --git a/dependencies.gradle b/dependencies.gradle
index 159e569..d75e937 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -280,6 +280,7 @@ dependencies.dockerImagesVersions << [
   cassandra: 'cassandra:3.10',
   memcached: 'memcached:1.4.36-alpine',
   mariadb  : 'mariadb:10.1.21',
+  mongo    : 'mongo:3.5.8',
   postgres : 'postgres:9.6.2-alpine',
   redis    : 'redis:3.2.8-alpine',
   riak     : 'basho/riak-kv:ubuntu-2.2.3',

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/d4b29ca3/extensions/entitystore-mongodb/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/build.gradle b/extensions/entitystore-mongodb/build.gradle
index 8ace38e..940db5a 100644
--- a/extensions/entitystore-mongodb/build.gradle
+++ b/extensions/entitystore-mongodb/build.gradle
@@ -32,7 +32,7 @@ dependencies {
 
   runtimeOnly polygene.core.runtime
 
-  testImplementation polygene.core.testsupport
+  testImplementation polygene.internals.testsupport
   testImplementation libraries.embed_mongo
 
   testRuntimeOnly libraries.logback

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/d4b29ca3/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
index 4af9b7c..8a7876a 100644
--- a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
@@ -25,22 +25,17 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.mongodb.assembly.MongoDBEntityStoreAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.BeforeClass;
-
-import static org.apache.polygene.test.util.Assume.assumeConnectivity;
+import org.junit.ClassRule;
 
 /**
  * Test the MongoDBEntityStoreService.
- * <p>Installing mongodb and starting it should suffice as the test use mongodb defaults: 127.0.0.1:27017</p>
  */
 public class MongoDBEntityStoreTest extends AbstractEntityStoreTest
 {
-    @BeforeClass
-    public static void beforeMongoMapEntityStoreTests()
-    {
-        assumeConnectivity( "localhost", 27017 );
-    }
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "mongo", 27017 );
 
     @Override
     // START SNIPPET: assembly
@@ -61,6 +56,8 @@ public class MongoDBEntityStoreTest extends AbstractEntityStoreTest
         mongoConfig.writeConcern().set( MongoDBEntityStoreConfiguration.WriteConcern.MAJORITY );
         mongoConfig.database().set( "polygene:test" );
         mongoConfig.collection().set( "polygene:test:entities" );
+        mongoConfig.hostname().set( DOCKER.getDockerHost() );
+        mongoConfig.port().set( DOCKER.getExposedContainerPort( "27017/tcp" ) );
         // START SNIPPET: assembly
     }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/d4b29ca3/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
index 4b63707..8fab686 100644
--- a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
@@ -26,22 +26,17 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.mongodb.assembly.MongoDBEntityStoreAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.cache.AbstractEntityStoreWithCacheTest;
-import org.junit.BeforeClass;
-
-import static org.apache.polygene.test.util.Assume.assumeConnectivity;
+import org.apache.polygene.test.docker.DockerRule;
+import org.junit.ClassRule;
 
 /**
  * Test the MongoDBEntityStoreService usage with a CachePool.
- * <p>Installing mongodb and starting it should suffice as the test use mongodb defaults: 127.0.0.1:27017</p>
  */
 public class MongoDBEntityStoreWithCacheTest
     extends AbstractEntityStoreWithCacheTest
 {
-    @BeforeClass
-    public static void beforeRedisMapEntityStoreTests()
-    {
-        assumeConnectivity( "localhost", 27017 );
-    }
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "mongo", 27017 );
 
     @Override
     public void assemble( ModuleAssembly module )
@@ -58,6 +53,8 @@ public class MongoDBEntityStoreWithCacheTest
         mongoConfig.writeConcern().set( MongoDBEntityStoreConfiguration.WriteConcern.MAJORITY );
         mongoConfig.database().set( "polygene:test" );
         mongoConfig.collection().set( "polygene:test:entities" );
+        mongoConfig.hostname().set( DOCKER.getDockerHost() );
+        mongoConfig.port().set( DOCKER.getExposedContainerPort( "27017/tcp" ) );
     }
 
     private Mongo mongo;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/d4b29ca3/internals/testsupport-internal/src/main/docker/mongo/Dockerfile
----------------------------------------------------------------------
diff --git a/internals/testsupport-internal/src/main/docker/mongo/Dockerfile b/internals/testsupport-internal/src/main/docker/mongo/Dockerfile
new file mode 100644
index 0000000..8212526
--- /dev/null
+++ b/internals/testsupport-internal/src/main/docker/mongo/Dockerfile
@@ -0,0 +1,16 @@
+# 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.
+
+FROM @mongo@


[6/6] polygene-java git commit: :tools:generator favor fixed docker image versions in generated tests

Posted by pa...@apache.org.
:tools:generator favor fixed docker image versions in generated tests


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/dcd778c2
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/dcd778c2
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/dcd778c2

Branch: refs/heads/develop
Commit: dcd778c2af3d8f74cf602fa1baed677a86a9078e
Parents: a885173
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jun 5 14:03:44 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jun 5 14:03:44 2017 +0200

----------------------------------------------------------------------
 .../app/templates/RestAPIApplication/bootstrap-test.tmpl  | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/dcd778c2/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
index 80303c1..984d897 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap-test.tmpl
@@ -137,7 +137,7 @@ if(  polygene.entitystore === 'Cassandra' ) {
 
     @ClassRule
     public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
-                                                         .imageName( "cassandra:latest"  )
+                                                         .imageName( "cassandra:3.10"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
                                                          .waitFor( WaitFor.logMessageSequence( "Starting listening for CQL clients" ) ) );
@@ -180,7 +180,7 @@ if(  polygene.entitystore === 'JClouds' ) {
 
     @ClassRule
     public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
-                                                         .imageName( "scality/s3server:latest"  )
+                                                         .imageName( "scality/s3server:mem-6a8e1cd"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
                                                          .waitFor( WaitFor.logMessageSequence( "server started" ) ) );
@@ -229,7 +229,7 @@ if(  polygene.entitystore === 'MySQL' ) {
 
     @ClassRule
     public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
-                                                         .imageName( "mariadb:latest"  )
+                                                         .imageName( "mariadb:10.1.21"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
                                                          .env("MYSQL_ROOT_PASSWORD", "")
@@ -268,7 +268,7 @@ if(  polygene.entitystore === 'Redis' ) {
 
     @ClassRule
     public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
-                                                         .imageName( "redis:latest"  )
+                                                         .imageName( "redis:3.2.8-alpine"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
                                                          .waitFor( pl.domzal.junit.docker.rule.WaitFor.tcpPort( 6379 ) ) );
@@ -281,7 +281,7 @@ if(  polygene.entitystore === 'Riak' ) {
 
     @ClassRule
     public static final OptionalDockerRule ES_DOCKER = new OptionalDockerRule( DockerRule.builder()
-                                                         .imageName( "basho/riak-kv:latest"  )
+                                                         .imageName( "basho/riak-kv:ubuntu-2.2.3"  )
                                                          .publishAllPorts( true )
                                                          .waitForTimeout( 120 )
                                                          .waitFor( WaitFor.logMessageSequence( "riak_auth_mods started on node" ) ) );