polygene-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nic...@apache.org
Subject [5/5] polygene-java git commit: Upgraded all tests to JUnit 5, and removed the vintage platform. Problem though, since no tests are started by Gradle.
Date Mon, 16 Apr 2018 07:52:25 GMT
Upgraded all tests to JUnit 5, and removed the vintage platform. Problem though, since no tests are started by Gradle.


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

Branch: refs/heads/Migrate_Junit5
Commit: 7585af083d50d699b2457b960109d1a6f31f2ec3
Parents: 346a852
Author: niclas <niclas@hedhman.org>
Authored: Mon Apr 16 15:52:07 2018 +0800
Committer: niclas <niclas@hedhman.org>
Committed: Mon Apr 16 15:52:08 2018 +0800

----------------------------------------------------------------------
 artwork/logo-flag.svg                           |   1 -
 artwork/logo.svg                                |   1 -
 artwork/pb-polygene.svg                         |   1 -
 .../distributions/DistributionsPlugin.groovy    |   6 +-
 .../internals/InternalDockerPlugin.groovy       |   5 +-
 .../polygene/test/PolygeneUnitExtension.java    |  19 +++
 .../apache/polygene/test/TemporaryFolder.java   | 121 ++++++++++++++
 .../java/org/apache/polygene/test/TestName.java |  64 ++++++++
 .../test/indexing/AbstractAnyQueryTest.java     |   2 +
 dependencies.gradle                             |  11 +-
 extensions/cache-ehcache/build.gradle           |   1 -
 .../polygene/cache/ehcache/EhCacheTest.java     |   8 +-
 extensions/cache-memcache/build.gradle          |   2 +-
 .../cache/memcache/MemcacheCachePoolTest.java   |  12 +-
 extensions/entitystore-berkeleydb/build.gradle  |   1 -
 .../berkeleydb/BdbJeEntityStoreTest.java        |  12 +-
 .../berkeleydb/BdbJeEntityStoreTestSuite.java   |   8 +-
 extensions/entitystore-cassandra/build.gradle   |   1 +
 .../cassandra/CassandraEntityStoreTest.java     |  16 +-
 .../CassandraEntityStoreTestSuite.java          |  16 +-
 extensions/entitystore-file/build.gradle        |   1 -
 .../entitystore/file/FileEntityStoreTest.java   |   8 +-
 .../file/FileEntityStoreTestSuite.java          |   8 +-
 .../file/FileEntityStoreWithCacheTest.java      |   8 +-
 .../hazelcast/HazelcastEntityStoreTest.java     |   2 +-
 extensions/entitystore-jclouds/build.gradle     |   2 +-
 .../jclouds/JCloudsFilesystemTest.java          |   8 +-
 .../jclouds/JCloudsFilesystemTestSuite.java     |   8 +-
 .../entitystore/jclouds/JCloudsS3Test.java      |  14 +-
 .../entitystore/jclouds/JCloudsS3TestSuite.java |  15 +-
 extensions/entitystore-jdbm/build.gradle        |   1 -
 .../entitystore/jdbm/JdbmEntityStoreTest.java   |   8 +-
 .../jdbm/JdbmEntityStoreTestSuite.java          |   8 +-
 .../jdbm/JdbmEntityStoreWithCacheTest.java      |   8 +-
 extensions/entitystore-leveldb/build.gradle     |   1 -
 .../leveldb/JavaLevelDBEntityStoreTest.java     |   8 +-
 .../JavaLevelDBEntityStoreTestSuite.java        |   8 +-
 .../leveldb/JniLevelDBEntityStoreTest.java      |   8 +-
 .../LevelDBEntityStoreWithCacheTest.java        |   8 +-
 extensions/entitystore-mongodb/build.gradle     |   1 +
 .../mongodb/MongoDBEntityStoreTest.java         |  16 +-
 .../mongodb/MongoDBEntityStoreTestSuite.java    |  14 +-
 .../MongoDBEntityStoreWithCacheTest.java        |  14 +-
 extensions/entitystore-preferences/build.gradle |   1 -
 .../preferences/PreferencesEntityStoreTest.java |   8 +-
 .../PreferencesEntityStoreTestSuite.java        |  12 +-
 extensions/entitystore-redis/build.gradle       |   1 +
 .../entitystore/redis/RedisEntityStoreTest.java |  16 +-
 .../redis/RedisEntityStoreTestSuite.java        |  14 +-
 .../redis/RedisEntityStoreWithCacheTest.java    |  15 +-
 extensions/entitystore-riak/build.gradle        |   1 +
 .../entitystore/riak/RiakEntityStoreTest.java   |  17 +-
 .../riak/RiakEntityStoreTestSuite.java          |  17 +-
 .../riak/RiakEntityStoreWithCacheTest.java      |  17 +-
 extensions/entitystore-sql/build.gradle         |   4 +-
 .../sql/DerbySQLEntityStoreTest.java            |   4 +-
 .../sql/DerbySQLEntityStoreTestSuite.java       |   4 +-
 .../entitystore/sql/H2SQLEntityStoreTest.java   |   4 +-
 .../sql/H2SQLEntityStoreTestSuite.java          |   4 +-
 .../entitystore/sql/MariaDbEntityStoreTest.java |  40 +++--
 .../sql/MariaDbEntityStoreTestSuite.java        |  40 +++--
 .../entitystore/sql/MySQLEntityStoreTest.java   |  41 +++--
 .../sql/MySQLEntityStoreTestSuite.java          |  41 +++--
 .../sql/PostgreSQLEntityStoreTest.java          |  38 ++---
 .../sql/PostgreSQLEntityStoreTestSuite.java     |  39 ++---
 .../entitystore/sql/SQLiteEntityStoreTest.java  |   8 +-
 .../sql/SQLiteEntityStoreTestSuite.java         |   8 +-
 .../entitystore/sql/SqlEntityStoreTest.java     |  12 +-
 extensions/entitystore-sqlkv/build.gradle       |   2 +-
 .../sqlkv/DerbySQLEntityStoreTest.java          |   4 +-
 .../sqlkv/DerbySQLEntityStoreTestSuite.java     |   6 +-
 .../entitystore/sqlkv/H2SQLEntityStoreTest.java |   4 +-
 .../sqlkv/H2SQLEntityStoreTestSuite.java        |   4 +-
 .../sqlkv/MariaDbEntityStoreTest.java           |  41 +++--
 .../sqlkv/MariaDbEntityStoreTestSuite.java      |  41 +++--
 .../entitystore/sqlkv/MySQLEntityStoreTest.java |  41 +++--
 .../sqlkv/MySQLEntityStoreTestSuite.java        |  41 +++--
 .../sqlkv/PostgreSQLEntityStoreTest.java        |  20 ++-
 .../sqlkv/PostgreSQLEntityStoreTestSuite.java   |  20 ++-
 .../sqlkv/SQLiteEntityStoreTest.java            |   8 +-
 .../sqlkv/SQLiteEntityStoreTestSuite.java       |   8 +-
 extensions/indexing-elasticsearch/build.gradle  |   1 -
 .../index/elasticsearch/ESEmbeddedRule.java     | 131 ----------------
 .../ElasticSearchComplexQueryTest.java          |  28 ++--
 .../elasticsearch/ElasticSearchFinderTest.java  |  25 ++-
 .../elasticsearch/ElasticSearchQueryTest.java   |  26 ++--
 .../index/elasticsearch/ElasticSearchTest.java  |  26 ++--
 .../EmbeddedElasticSearchExtension.java         | 149 ++++++++++++++++++
 .../index/elasticsearch/ImmenseTermTest.java    |  25 ++-
 extensions/indexing-rdf/build.gradle            |   1 -
 .../polygene/index/rdf/ContainsAllTest.java     |   8 +-
 .../apache/polygene/index/rdf/ContainsTest.java |   8 +-
 .../polygene/index/rdf/MultiLayeredTest.java    |   4 +-
 .../polygene/index/rdf/RDFPerformanceTest.java  |  18 +--
 .../polygene/index/rdf/RdfComplexQueryTest.java |   4 +-
 .../index/rdf/RdfQueryMultimoduleTest.java      |   8 +-
 .../apache/polygene/index/rdf/RdfQueryTest.java |  19 ++-
 .../index/rdf/qi173/Qi173IssueTest.java         |   3 +-
 .../withPropagationMandatory/IssueTest.java     |   1 -
 .../qi64/withPropagationRequired/IssueTest.java |   3 +-
 .../withPropagationRequiresNew/IssueTest.java   |   3 +-
 .../polygene/index/rdf/qi95/Qi95IssueTest.java  |  30 ++--
 extensions/indexing-solr/build.gradle           |   1 -
 .../index/solr/SolrEntityFinderTest.java        |  12 +-
 .../polygene/index/solr/SolrNamedQueryTest.java |  12 +-
 .../index/solr/SolrQueryServiceTest.java        |  12 +-
 .../polygene/index/solr/SolrQueryTest.java      |  12 +-
 extensions/indexing-sql/build.gradle            |   1 +
 .../postgresql/PostgreSQLComplexQueryTest.java  |  13 +-
 .../postgresql/PostgreSQLDBIntegrityTest.java   |  41 ++---
 .../postgresql/PostgreSQLEntityFinderTest.java  |  14 +-
 .../sql/postgresql/PostgreSQLQueryTest.java     |  66 ++++----
 .../index/sql/postgresql/SQLTestHelper.java     |  46 +++---
 extensions/reindexer/build.gradle               |   1 -
 .../polygene/index/reindexer/ReindexerTest.java |   8 +-
 gradle/wrapper/gradle-wrapper.properties        |   2 +-
 internals/testsupport-internal/build.gradle     |   3 +-
 .../polygene/test/docker/DelayChecker.java      |  60 -------
 .../polygene/test/docker/DockerExtension.java   |  23 +++
 .../apache/polygene/test/docker/DockerRule.java | 156 -------------------
 .../library/alarm/AlarmHistoryImplTest.java     |   2 +
 .../library/alarm/AlarmPointImplTest.java       |   2 +
 .../library/alarm/AlarmServiceTest.java         |   2 +
 .../library/alarm/ExtendedAlarmModelTest.java   |   2 +
 .../library/alarm/SimpleAlarmModelTest.java     |   2 +
 .../library/alarm/StandardAlarmModelTest.java   |   2 +
 libraries/fileconfig/build.gradle               |   1 -
 .../fileconfig/FileConfigurationTest.java       |  24 ++-
 libraries/http/build.gradle                     |   1 -
 .../library/http/AbstractSecureJettyTest.java   |  24 +--
 .../polygene/library/http/JettyServiceTest.java |   2 +-
 .../polygene/library/http/JettyTestSuite.java   |  34 ----
 .../library/http/SecureJettyServiceTest.java    |  21 ++-
 libraries/rdf/build.gradle                      |   1 -
 .../rdf/entity/EntitySerializerTest.java        |   1 -
 .../rdf/entity/EntityTypeSerializerTest.java    |   1 -
 .../rdf/repository/NativeRepositoryTest.java    |   8 +-
 libraries/spring/build.gradle                   |   1 -
 .../bootstrap/PolygeneExportServiceTest.java    |   6 +-
 .../importer/PolygeneImportServiceTest.java     |   6 +-
 libraries/uowfile/build.gradle                  |   1 -
 .../library/uowfile/HasUoWFileTest.java         |  13 +-
 .../library/uowfile/HasUoWFilesTest.java        |  12 +-
 samples/rental/build.gradle                     |   6 +-
 144 files changed, 1107 insertions(+), 1203 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/artwork/logo-flag.svg
----------------------------------------------------------------------
diff --git a/artwork/logo-flag.svg b/artwork/logo-flag.svg
index 9ae367d..17f571b 100644
--- a/artwork/logo-flag.svg
+++ b/artwork/logo-flag.svg
@@ -23,7 +23,6 @@
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/artwork/logo.svg
----------------------------------------------------------------------
diff --git a/artwork/logo.svg b/artwork/logo.svg
index bd16fd2..255022d 100644
--- a/artwork/logo.svg
+++ b/artwork/logo.svg
@@ -22,7 +22,6 @@
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/artwork/pb-polygene.svg
----------------------------------------------------------------------
diff --git a/artwork/pb-polygene.svg b/artwork/pb-polygene.svg
index 3eda9df..c206526 100644
--- a/artwork/pb-polygene.svg
+++ b/artwork/pb-polygene.svg
@@ -23,7 +23,6 @@
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
index c4d9c35..af73739 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
@@ -47,8 +47,8 @@ import org.gradle.api.tasks.bundling.Zip
 import org.gradle.language.base.plugins.LifecycleBasePlugin
 import org.gradle.maven.MavenModule
 import org.gradle.maven.MavenPomArtifact
-import org.gradle.plugins.ide.internal.IdeDependenciesExtractor
-import org.gradle.plugins.ide.internal.resolver.model.IdeExtendedRepoFileDependency
+//import org.gradle.plugins.ide.internal.IdeDependenciesExtractor
+//import org.gradle.plugins.ide.internal.resolver.model.IdeExtendedRepoFileDependency
 import org.gradle.plugins.signing.Sign
 import org.gradle.plugins.signing.SigningExtension
 import org.gradle.process.ExecSpec
@@ -553,6 +553,7 @@ class DistributionsPlugin implements Plugin<Project>
         }
         // Copy Maven artifacts using the Gradle IDE Model
         // Include sources if available, otherwise include javadoc if available
+/* TODO: Paul!!! These internal classes disappeared in Gradle between 4.2 and 4.6
         IdeDependenciesExtractor dependenciesExtractor = new IdeDependenciesExtractor()
         def ideDependencies = dependenciesExtractor.extractRepoFileDependencies project.dependencies,
                                                                                 [ configuration ], [ ],
@@ -575,6 +576,7 @@ class DistributionsPlugin implements Plugin<Project>
             Files.exists( javadocDestination ) ?: Files.copy( ideDependency.javadocFile.toPath(), javadocDestination )
           }
         }
+*/
       }
     }
     project.tasks.create( TaskNames.ZIP_DEPENDENCIES_DIST, Zip ) { Zip task ->

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy
index ac22b9f..42565a7 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy
@@ -34,6 +34,7 @@ import org.gradle.api.Project
 import org.gradle.api.Task
 import org.gradle.api.file.CopySpec
 import org.gradle.api.logging.LogLevel
+import org.gradle.api.logging.Logger
 
 @CompileStatic
 class InternalDockerPlugin implements Plugin<Project>
@@ -84,7 +85,9 @@ class InternalDockerPlugin implements Plugin<Project>
         }
         else
         {
-          project.logger.lifecycle "Unable to connect to Docker, all Docker tasks will be SKIPPED\n  ${ ( ( Exception ) ex ).message }"
+          def logger = project.logger
+          def mess = ex == null ? "" : ((Exception) ex).message
+          logger.lifecycle "Unable to connect to Docker, all Docker tasks will be SKIPPED\n  ${ mess }"
         }
       }
       task.onComplete = {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/core/testsupport/src/main/java/org/apache/polygene/test/PolygeneUnitExtension.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/PolygeneUnitExtension.java b/core/testsupport/src/main/java/org/apache/polygene/test/PolygeneUnitExtension.java
index 274bb45..928b613 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/PolygeneUnitExtension.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/PolygeneUnitExtension.java
@@ -1,3 +1,22 @@
+/*
+ *  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.
+ *
+ *
+ */
 package org.apache.polygene.test;
 
 import org.apache.polygene.api.structure.Application;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/core/testsupport/src/main/java/org/apache/polygene/test/TemporaryFolder.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/TemporaryFolder.java b/core/testsupport/src/main/java/org/apache/polygene/test/TemporaryFolder.java
new file mode 100644
index 0000000..dacfd4c
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/TemporaryFolder.java
@@ -0,0 +1,121 @@
+/*
+ *  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.
+ *
+ *
+ */
+package org.apache.polygene.test;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.Extension;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+import static java.nio.file.FileVisitResult.CONTINUE;
+import static org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode.BOTTOM_UP;
+import static org.junit.platform.commons.util.ReflectionUtils.findFields;
+
+public class TemporaryFolder
+    implements Extension, BeforeEachCallback, AfterEachCallback
+{
+    private File root;
+
+    public TemporaryFolder()
+    {
+    }
+
+    @Override
+    public void beforeEach( ExtensionContext context )
+        throws Exception
+    {
+        try
+        {
+            root = File.createTempFile( "junit5-", ".tmp" );
+        }
+        catch( IOException ioe )
+        {
+            throw new RuntimeException( ioe );
+        }
+        root.delete(); // Remove if already exists
+        root.mkdir();
+
+        findFields( context.getRequiredTestClass(),
+                    f -> f.getType().equals( TemporaryFolder.class ), BOTTOM_UP )
+            .forEach( f -> {
+                try
+                {
+                    f.setAccessible( true );
+                    f.set( context.getRequiredTestInstance(), this );
+                }
+                catch( IllegalAccessException e )
+                {
+                    throw new UndeclaredThrowableException( e );
+                }
+            } );
+    }
+
+    @Override
+    public void afterEach( ExtensionContext context )
+        throws Exception
+    {
+        try
+        {
+            Files.walkFileTree( root.toPath(), new DeleteAllVisitor() );
+        }
+        catch( IOException ioe )
+        {
+            throw new RuntimeException( ioe );
+        }
+    }
+
+    public File file( String name )
+        throws IOException
+    {
+        return new File( root, name );
+    }
+
+    public File getRoot()
+    {
+        return root;
+    }
+
+    private static class DeleteAllVisitor extends SimpleFileVisitor<Path>
+    {
+        @Override
+        public FileVisitResult visitFile( Path file, BasicFileAttributes attributes )
+            throws IOException
+        {
+            Files.delete( file );
+            return CONTINUE;
+        }
+
+        @Override
+        public FileVisitResult postVisitDirectory( Path directory, IOException exception )
+            throws IOException
+        {
+            Files.delete( directory );
+            return CONTINUE;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/core/testsupport/src/main/java/org/apache/polygene/test/TestName.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/TestName.java b/core/testsupport/src/main/java/org/apache/polygene/test/TestName.java
new file mode 100644
index 0000000..24d71fd
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/TestName.java
@@ -0,0 +1,64 @@
+package org.apache.polygene.test;
+
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.Optional;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+import static org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode.BOTTOM_UP;
+import static org.junit.platform.commons.util.ReflectionUtils.findFields;
+
+public class TestName
+    implements BeforeAllCallback, BeforeEachCallback
+{
+    private String testName;
+    private String methodName;
+
+    @Override
+    public void beforeAll( ExtensionContext context )
+        throws Exception
+    {
+        Optional<Class<?>> testClass = context.getTestClass();
+        testClass.ifPresent( cls -> testName = cls.getName() );
+        context.getTestMethod().ifPresent( m -> methodName = m.getName() );
+        inject( context );
+    }
+
+    @Override
+    public void beforeEach( ExtensionContext context )
+        throws Exception
+    {
+        Optional<Class<?>> testClass = context.getTestClass();
+        testClass.ifPresent( cls -> testName = cls.getName() );
+        context.getTestMethod().ifPresent( m -> methodName = m.getName() );
+        inject( context );
+    }
+
+    private void inject( ExtensionContext context )
+    {
+        findFields( context.getRequiredTestClass(),
+                    f -> f.getType().equals( TestName.class ), BOTTOM_UP )
+            .forEach( f -> {
+                try
+                {
+                    f.setAccessible( true );
+                    f.set( context.getRequiredTestInstance(), this );
+                }
+                catch( IllegalAccessException e )
+                {
+                    throw new UndeclaredThrowableException( e );
+                }
+            } );
+    }
+
+    public String getTestName()
+    {
+        return testName;
+    }
+
+    public String getMethodName()
+    {
+        return methodName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
index ec18b90..677a6db 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
@@ -37,6 +37,7 @@ import org.apache.polygene.test.model.Port;
 import org.apache.polygene.test.model.Protocol;
 import org.apache.polygene.test.model.QueryParam;
 import org.apache.polygene.test.model.URL;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
 /**
@@ -89,6 +90,7 @@ public class AbstractAnyQueryTest
 
 
     @Override
+    @AfterEach
     public void tearDown()
     {
         if( this.unitOfWork != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/dependencies.gradle
----------------------------------------------------------------------
diff --git a/dependencies.gradle b/dependencies.gradle
index 8e977ca..7758b24 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -20,7 +20,7 @@ import org.apache.polygene.gradle.dependencies.DependenciesDeclarationExtension
 def dependencies = extensions.getByType(DependenciesDeclarationExtension)
 
 // Gradle version
-dependencies.gradleVersion = '4.2.1'
+dependencies.gradleVersion = '4.6'
 
 // Remote repositories
 dependencies.repositoriesUrls << [
@@ -79,7 +79,7 @@ def servletVersion = '3.1.0'
 def shiroVersion = '1.4.0'
 def slf4jVersion = '1.7.25'
 def solrVersion = "1.4.1" // 4.x Fails to compile!
-def springVersion = '4.3.9.RELEASE'
+def springVersion = '5.0.5.RELEASE'
 def spymemcachedVersion = '2.12.3'
 def velocityVersion = '1.7'
 dependencies.libraries << [
@@ -184,7 +184,8 @@ dependencies.libraries << [
 // Runtime, Test and Samples dependencies
 def awaitilityVersion = '3.0.0'
 def dnsJavaVersion = '2.1.8'
-def dockerJUnitVersion = '0.3'
+def dockerJUnit5Version = '1.0.0-RC5'
+
 def easyMockVersion = '3.4'
 def h2Version = '1.4.196'
 def hamcrestVersion = '1.3'
@@ -200,7 +201,8 @@ dependencies.libraries << [
         awaitility        : "org.awaitility:awaitility:$awaitilityVersion",
         derby             : "org.apache.derby:derby:$derbyVersion",
         dnsjava           : "dnsjava:dnsjava:$dnsJavaVersion",
-        docker_junit      : "com.github.tdomzal:junit-docker-rule:$dockerJUnitVersion",
+        docker_junit      : "com.github.faustxvi:junit5-docker:$dockerJUnit5Version",
+
         easymock          : "org.easymock:easymock:$easyMockVersion",
         h2                : "com.h2database:h2:$h2Version",
         hamcrest          : ["org.hamcrest:hamcrest-core:$hamcrestVersion",
@@ -208,7 +210,6 @@ dependencies.libraries << [
         junit             : ["org.junit.jupiter:junit-jupiter-api:$junitVersion",
                              "org.junit.jupiter:junit-jupiter-params:$junitVersion"
         ],
-        junit_vintage     : "org.junit.vintage:junit-vintage-engine:$junitVersion",
 
         logback           : "ch.qos.logback:logback-classic:$logbackVersion",
         mockito           : "org.mockito:mockito-core:$mockitoVersion",

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/cache-ehcache/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/cache-ehcache/build.gradle b/extensions/cache-ehcache/build.gradle
index 02d6266..c61a790 100644
--- a/extensions/cache-ehcache/build.gradle
+++ b/extensions/cache-ehcache/build.gradle
@@ -34,7 +34,6 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.core.testsupport
-  testImplementation libraries.junit_vintage
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/cache-ehcache/src/test/java/org/apache/polygene/cache/ehcache/EhCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/cache-ehcache/src/test/java/org/apache/polygene/cache/ehcache/EhCacheTest.java b/extensions/cache-ehcache/src/test/java/org/apache/polygene/cache/ehcache/EhCacheTest.java
index 52e6291..6e9ad3e 100644
--- a/extensions/cache-ehcache/src/test/java/org/apache/polygene/cache/ehcache/EhCacheTest.java
+++ b/extensions/cache-ehcache/src/test/java/org/apache/polygene/cache/ehcache/EhCacheTest.java
@@ -25,15 +25,15 @@ import org.apache.polygene.cache.ehcache.assembly.EhCacheAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.cache.AbstractCachePoolTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class EhCacheTest
     extends AbstractCachePoolTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     // START SNIPPET: assembly

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/cache-memcache/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/cache-memcache/build.gradle b/extensions/cache-memcache/build.gradle
index 9ddc2b0..675e6fb 100644
--- a/extensions/cache-memcache/build.gradle
+++ b/extensions/cache-memcache/build.gradle
@@ -32,7 +32,7 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.internals.testsupport
-  testImplementation 'com.github.faustxvi:junit5-docker:1.0.0-RC5'
+  testImplementation libraries.docker_junit
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/cache-memcache/src/test/java/org/apache/polygene/cache/memcache/MemcacheCachePoolTest.java
----------------------------------------------------------------------
diff --git a/extensions/cache-memcache/src/test/java/org/apache/polygene/cache/memcache/MemcacheCachePoolTest.java b/extensions/cache-memcache/src/test/java/org/apache/polygene/cache/memcache/MemcacheCachePoolTest.java
index 13afee6..d033739 100644
--- a/extensions/cache-memcache/src/test/java/org/apache/polygene/cache/memcache/MemcacheCachePoolTest.java
+++ b/extensions/cache-memcache/src/test/java/org/apache/polygene/cache/memcache/MemcacheCachePoolTest.java
@@ -21,28 +21,20 @@ package org.apache.polygene.cache.memcache;
 
 import com.github.junit5docker.Docker;
 import com.github.junit5docker.Port;
-import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.cache.memcache.assembly.MemcacheAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.cache.AbstractCachePoolTest;
-import org.apache.polygene.test.docker.DockerRule;
-import org.junit.ClassRule;
 
 /**
  * Memcache CachePool Test.
  */
-@Docker( image = "memcached",
-         ports = @Port( exposed = 11211, inner = 11211 ),
-         newForEachCase = false )
+@Docker( image = "memcached", ports = @Port( exposed = 11211, inner = 11211 ), newForEachCase = false )
 public class MemcacheCachePoolTest
     extends AbstractCachePoolTest
 {
-//    @ClassRule
-//    public static final DockerRule DOCKER = new DockerRule( "memcached", 11211 );
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -66,8 +58,6 @@ public class MemcacheCachePoolTest
             assemble( module );
         // END SNIPPET: assembly
         MemcacheConfiguration memcacheConf = confModule.forMixin( MemcacheConfiguration.class ).declareDefaults();
-//        String dockerHost = DOCKER.getDockerHost();
-//        int dockerPort = DOCKER.getExposedContainerPort( "11211/tcp" );
         String dockerHost = "localhost";
         int dockerPort = 11211;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-berkeleydb/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-berkeleydb/build.gradle b/extensions/entitystore-berkeleydb/build.gradle
index 5b03d21..ea14aef 100644
--- a/extensions/entitystore-berkeleydb/build.gradle
+++ b/extensions/entitystore-berkeleydb/build.gradle
@@ -36,7 +36,6 @@ dependencies {
     runtimeOnly polygene.core.runtime
 
     testImplementation polygene.internals.testsupport
-    testImplementation libraries.junit_vintage
 
     testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTest.java b/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTest.java
index b85eb19..7dbcb3d 100644
--- a/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTest.java
+++ b/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTest.java
@@ -26,16 +26,16 @@ import org.apache.polygene.entitystore.berkeleydb.assembly.BerkeleyDBEntityStore
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.After;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class BdbJeEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )
@@ -52,7 +52,7 @@ public class BdbJeEntityStoreTest
         new BerkeleyDBEntityStoreAssembler().withConfig( config, Visibility.layer ).assemble( module );
     }
 
-    @After
+    @AfterEach
     public void cleanup()
     {
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTestSuite.java b/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTestSuite.java
index 2bf1521..10fe693 100644
--- a/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTestSuite.java
+++ b/extensions/entitystore-berkeleydb/src/test/java/org/apache/polygene/entitystore/berkeleydb/BdbJeEntityStoreTestSuite.java
@@ -24,14 +24,14 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.berkeleydb.assembly.BerkeleyDBEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class BdbJeEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-cassandra/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/build.gradle b/extensions/entitystore-cassandra/build.gradle
index 343b9f9..4025575 100644
--- a/extensions/entitystore-cassandra/build.gradle
+++ b/extensions/entitystore-cassandra/build.gradle
@@ -35,6 +35,7 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.internals.testsupport
+  testImplementation libraries.docker_junit
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
index 743342b..1af6a8b 100644
--- a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
+++ b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
@@ -19,27 +19,26 @@
  */
 package org.apache.polygene.entitystore.cassandra;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.cassandra.assembly.CassandraEntityStoreAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
 import org.apache.polygene.test.entity.CanRemoveAll;
-import org.junit.ClassRule;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Test the CassandraEntityStoreService.
- * <p>Installing Cassandra and starting it should suffice as the test use Cassandra defaults: 127.0.0.1:3000</p>
  */
+@Docker( image = "cassandra", ports = @Port( exposed = 8801, inner = 9042), waitFor = @WaitFor( value = "Starting listening for CQL clients", timeoutInMillis = 30000))
 public class CassandraEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "cassandra", "Starting listening for CQL clients" );
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -59,8 +58,8 @@ public class CassandraEntityStoreTest
         // END SNIPPET: assembly
 
         CassandraEntityStoreConfiguration cassandraDefaults = config.forMixin( CassandraEntityStoreConfiguration.class ).declareDefaults();
-        String host = DOCKER.getDockerHost();
-        int port = DOCKER.getExposedContainerPort( "9042/tcp" );
+        String host = "localhost";
+        int port = 8801;
         System.out.println("Cassandra: " + host + ":" + port);
         cassandraDefaults.hostnames().set( host + ':' + port );
         cassandraDefaults.createIfMissing().set( true );
@@ -77,6 +76,7 @@ public class CassandraEntityStoreTest
     }
 
     @Override
+    @AfterEach
     public void tearDown()
     {
         CanRemoveAll cleaner = serviceFinder.findService( CanRemoveAll.class ).get();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
index 9841d7d..c015c28 100644
--- a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
+++ b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
@@ -19,25 +19,25 @@
  */
 package org.apache.polygene.entitystore.cassandra;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.service.ServiceReference;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.cassandra.assembly.CassandraEntityStoreAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.CanRemoveAll;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.ClassRule;
 
 /**
  * Test the CassandraEntityStoreService.
- * <p>Installing Cassandra and starting it should suffice as the test use Cassandra defaults: 127.0.0.1:3000</p>
  */
+@Docker( image = "cassandra",
+         ports = @Port( exposed = 8801, inner = 9042),
+         waitFor = @WaitFor( value = "Starting listening for CQL clients", timeoutInMillis = 30000))
 public class CassandraEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "cassandra", "Starting listening for CQL clients" );
-
     @Override
     protected void defineStorageModule( ModuleAssembly module )
     {
@@ -54,8 +54,8 @@ public class CassandraEntityStoreTestSuite extends EntityStoreTestSuite
 
 
         CassandraEntityStoreConfiguration cassandraDefaults = configModule.forMixin( CassandraEntityStoreConfiguration.class ).declareDefaults();
-        String host = DOCKER.getDockerHost();
-        int port = DOCKER.getExposedContainerPort( "9042/tcp" );
+        String host = "localhost";
+        int port = 8801;
         System.out.println("Cassandra: " + host + ":" + port);
         cassandraDefaults.hostnames().set( host + ':' + port );
         cassandraDefaults.createIfMissing().set( true );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-file/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/build.gradle b/extensions/entitystore-file/build.gradle
index eee1277..b430e7d 100644
--- a/extensions/entitystore-file/build.gradle
+++ b/extensions/entitystore-file/build.gradle
@@ -31,7 +31,6 @@ dependencies {
 
   runtimeOnly polygene.core.runtime
   testImplementation polygene.core.testsupport
-  testImplementation libraries.junit_vintage
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTest.java b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTest.java
index 8cc63b0..97c0c0d 100644
--- a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTest.java
+++ b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTest.java
@@ -26,15 +26,15 @@ import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class FileEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     // START SNIPPET: assembly

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java
index b28afff..291ff06 100644
--- a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java
+++ b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java
@@ -24,15 +24,15 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class FileEntityStoreTestSuite
     extends EntityStoreTestSuite
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreWithCacheTest.java b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreWithCacheTest.java
index 13b1f87..d887994 100644
--- a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreWithCacheTest.java
@@ -26,15 +26,15 @@ import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.cache.AbstractEntityStoreWithCacheTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class FileEntityStoreWithCacheTest
     extends AbstractEntityStoreWithCacheTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
index 15215a3..3492d5e 100644
--- a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
+++ b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
@@ -55,8 +55,8 @@ public class HazelcastEntityStoreTest
         super.givenConcurrentUnitOfWorksWhenUoWCompletesThenCheckConcurrentModification();
     }
 
-    @AfterEach
     @Override
+    @AfterEach
     public void tearDown()
     {
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jclouds/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/build.gradle b/extensions/entitystore-jclouds/build.gradle
index 4436c4b..c74af11 100644
--- a/extensions/entitystore-jclouds/build.gradle
+++ b/extensions/entitystore-jclouds/build.gradle
@@ -38,7 +38,7 @@ dependencies {
 
   testImplementation polygene.internals.testsupport
   testImplementation libraries.jclouds_filesystem
-  testImplementation libraries.junit_vintage
+  testImplementation libraries.docker_junit
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTest.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTest.java
index 4c81082..157acba 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTest.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTest.java
@@ -25,16 +25,16 @@ import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
 import org.jclouds.filesystem.reference.FilesystemConstants;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JCloudsFilesystemTest
     extends AbstractEntityStoreTest
 {
-    @Rule
-    public TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java
index d1eeb88..3f7a5b8 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java
@@ -24,15 +24,15 @@ import java.util.Collections;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
 import org.jclouds.filesystem.reference.FilesystemConstants;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JCloudsFilesystemTestSuite extends EntityStoreTestSuite
 {
-    @Rule
-    public TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
index 405d857..b0a2d81 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
@@ -19,18 +19,20 @@
  */
 package org.apache.polygene.entitystore.jclouds;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.ClassRule;
 
+@Docker( image = "s3server",
+         ports = @Port( exposed = 8801, inner = 8000),
+         waitFor = @WaitFor( value = "server started", timeoutInMillis = 30000))
 public class JCloudsS3Test extends AbstractEntityStoreTest
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "s3server", "server started" );
 
     @Override
     public void assemble( ModuleAssembly module )
@@ -42,8 +44,8 @@ public class JCloudsS3Test extends AbstractEntityStoreTest
         JCloudsEntityStoreConfiguration defaults =
             config.forMixin( JCloudsEntityStoreConfiguration.class ).declareDefaults();
 
-        String host = DOCKER.getDockerHost();
-        int port = DOCKER.getExposedContainerPort( "8000/tcp" );
+        String host = "localhost";
+        int port = 8801;
         defaults.provider().set( "s3" );
         defaults.endpoint().set( "http://" + host + ':' + port );
         defaults.identifier().set( "dummyIdentifier" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java
index 1b43c7d..d7fbd76 100644
--- a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java
@@ -19,18 +19,19 @@
  */
 package org.apache.polygene.entitystore.jclouds;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.ClassRule;
 
+@Docker( image = "s3server",
+         ports = @Port( exposed = 8801, inner = 8000),
+         waitFor = @WaitFor( value = "server started", timeoutInMillis = 30000))
 public class JCloudsS3TestSuite extends EntityStoreTestSuite
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "s3server", "server started" );
-
     @Override
     protected void defineStorageModule( ModuleAssembly module )
     {
@@ -43,8 +44,8 @@ public class JCloudsS3TestSuite extends EntityStoreTestSuite
         JCloudsEntityStoreConfiguration defaults =
             configModule.forMixin( JCloudsEntityStoreConfiguration.class ).declareDefaults();
 
-        String host = DOCKER.getDockerHost();
-        int port = DOCKER.getExposedContainerPort( "8000/tcp" );
+        String host = "localhost";
+        int port = 8801;
         defaults.provider().set( "s3" );
         defaults.endpoint().set( "http://" + host + ':' + port );
         defaults.identifier().set( "dummyIdentifier" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jdbm/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/build.gradle b/extensions/entitystore-jdbm/build.gradle
index 8776f8d..c195e0c 100644
--- a/extensions/entitystore-jdbm/build.gradle
+++ b/extensions/entitystore-jdbm/build.gradle
@@ -34,7 +34,6 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.core.testsupport
-  testImplementation libraries.junit_vintage
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTest.java b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTest.java
index 822201d..466a776 100644
--- a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTest.java
+++ b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTest.java
@@ -26,15 +26,15 @@ import org.apache.polygene.entitystore.jdbm.assembly.JdbmEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JdbmEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
index 959c83f..2d4c94b 100644
--- a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
+++ b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
@@ -24,14 +24,14 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.jdbm.assembly.JdbmEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JdbmEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreWithCacheTest.java b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreWithCacheTest.java
index 742d69f..ed71509 100644
--- a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreWithCacheTest.java
@@ -26,15 +26,15 @@ import org.apache.polygene.entitystore.jdbm.assembly.JdbmEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.cache.AbstractEntityStoreWithCacheTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JdbmEntityStoreWithCacheTest
     extends AbstractEntityStoreWithCacheTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-leveldb/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/build.gradle b/extensions/entitystore-leveldb/build.gradle
index c6fd615..98b8460 100644
--- a/extensions/entitystore-leveldb/build.gradle
+++ b/extensions/entitystore-leveldb/build.gradle
@@ -36,7 +36,6 @@ dependencies {
   runtimeOnly libraries.leveldb_jni_all
 
   testImplementation polygene.core.testsupport
-  testImplementation libraries.junit_vintage
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTest.java b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTest.java
index edd9563..762e7dc 100644
--- a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTest.java
+++ b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTest.java
@@ -26,15 +26,15 @@ import org.apache.polygene.entitystore.leveldb.assembly.LevelDBEntityStoreAssemb
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JavaLevelDBEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     // START SNIPPET: assembly

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java
index 70c8929..5e6aab6 100644
--- a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java
+++ b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java
@@ -24,14 +24,14 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.leveldb.assembly.LevelDBEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JavaLevelDBEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
index c072f4d..3ec2d43 100644
--- a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
+++ b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
@@ -24,14 +24,14 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.leveldb.assembly.LevelDBEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class JniLevelDBEntityStoreTest extends EntityStoreTestSuite
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/LevelDBEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/LevelDBEntityStoreWithCacheTest.java b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/LevelDBEntityStoreWithCacheTest.java
index cdb9251..fb54981 100644
--- a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/LevelDBEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/LevelDBEntityStoreWithCacheTest.java
@@ -26,15 +26,15 @@ import org.apache.polygene.entitystore.leveldb.assembly.LevelDBEntityStoreAssemb
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.cache.AbstractEntityStoreWithCacheTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class LevelDBEntityStoreWithCacheTest
     extends AbstractEntityStoreWithCacheTest
 {
-    @Rule
-    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-mongodb/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/build.gradle b/extensions/entitystore-mongodb/build.gradle
index 1d5a0ba..8a97852 100644
--- a/extensions/entitystore-mongodb/build.gradle
+++ b/extensions/entitystore-mongodb/build.gradle
@@ -33,6 +33,7 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.internals.testsupport
+  testImplementation libraries.docker_junit
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/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 9e44d8b..3a2bec8 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
@@ -19,25 +19,26 @@
  */
 package org.apache.polygene.entitystore.mongodb;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import com.mongodb.Mongo;
 import org.apache.polygene.api.common.Visibility;
 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.ClassRule;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Test the MongoDBEntityStoreService.
  */
+@Docker( image = "mongo",
+         ports = @Port( exposed = 8801, inner = 27017))
 public class MongoDBEntityStoreTest extends AbstractEntityStoreTest
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "mongo", 27017 );
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -57,8 +58,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" ) );
+        mongoConfig.hostname().set( "localhost" );
+        mongoConfig.port().set( 8801 );
         // START SNIPPET: assembly
     }
 
@@ -78,6 +79,7 @@ public class MongoDBEntityStoreTest extends AbstractEntityStoreTest
     }
 
     @Override
+    @AfterEach
     public void tearDown()
     {
         mongo.dropDatabase( dbName );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
index 64852ca..5af028f 100644
--- a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
@@ -19,23 +19,23 @@
  */
 package org.apache.polygene.entitystore.mongodb;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import com.mongodb.Mongo;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.mongodb.assembly.MongoDBEntityStoreAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.ClassRule;
 
 /**
  * Test the MongoDBEntityStoreService.
  */
+@Docker( image = "mongo",
+         ports = @Port( exposed = 8801, inner = 27017))
 public class MongoDBEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "mongo", 27017 );
-
     @Override
     protected void defineStorageModule( ModuleAssembly module )
     {
@@ -49,8 +49,8 @@ public class MongoDBEntityStoreTestSuite extends EntityStoreTestSuite
         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" ) );
+        mongoConfig.hostname().set( "localhost" );
+        mongoConfig.port().set( 8801 );
     }
 
     private Mongo mongo;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/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 2b00000..23d4999 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
@@ -19,6 +19,8 @@
  */
 package org.apache.polygene.entitystore.mongodb;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
 import com.mongodb.Mongo;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.AssemblyException;
@@ -26,18 +28,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.apache.polygene.test.docker.DockerRule;
-import org.junit.ClassRule;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Test the MongoDBEntityStoreService usage with a CachePool.
  */
+@Docker( image = "mongo",
+         ports = @Port( exposed = 8801, inner = 27017))
 public class MongoDBEntityStoreWithCacheTest
     extends AbstractEntityStoreWithCacheTest
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "mongo", 27017 );
 
     @Override
     public void assemble( ModuleAssembly module )
@@ -54,8 +55,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" ) );
+        mongoConfig.hostname().set( "localhost" );
+        mongoConfig.port().set( 8801 );
     }
 
     private Mongo mongo;
@@ -74,6 +75,7 @@ public class MongoDBEntityStoreWithCacheTest
     }
 
     @Override
+    @AfterEach
     public void tearDown()
     {
         mongo.dropDatabase( dbName );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-preferences/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/build.gradle b/extensions/entitystore-preferences/build.gradle
index b60e354..f875219 100644
--- a/extensions/entitystore-preferences/build.gradle
+++ b/extensions/entitystore-preferences/build.gradle
@@ -30,7 +30,6 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.core.testsupport
-  testImplementation libraries.junit_vintage
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTest.java b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTest.java
index 648d62a..9be919e 100644
--- a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTest.java
+++ b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTest.java
@@ -22,15 +22,15 @@ package org.apache.polygene.entitystore.preferences;
 import java.util.prefs.Preferences;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class PreferencesEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @Rule
-    public TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
index 6aaa6fa..f5eeb02 100644
--- a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
+++ b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
@@ -24,15 +24,15 @@ import java.util.prefs.Preferences;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.preferences.assembly.PreferencesEntityStoreAssembler;
+import org.apache.polygene.test.TemporaryFolder;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.After;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith( TemporaryFolder.class )
 public class PreferencesEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @Rule
-    public TemporaryFolder tmpDir = new TemporaryFolder();
+    private TemporaryFolder tmpDir;
     private Preferences rootNode;
 
     @Override
@@ -47,7 +47,7 @@ public class PreferencesEntityStoreTestSuite extends EntityStoreTestSuite
             .assemble( module );
     }
 
-    @After
+    @AfterEach
     public void tearDown()
     {
         try

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-redis/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/build.gradle b/extensions/entitystore-redis/build.gradle
index da29e7d..aa06c8d 100644
--- a/extensions/entitystore-redis/build.gradle
+++ b/extensions/entitystore-redis/build.gradle
@@ -33,6 +33,7 @@ dependencies {
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.internals.testsupport
+  testImplementation libraries.docker_junit
 
   testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
index 0808462..cf5b379 100644
--- a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
+++ b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
@@ -19,24 +19,25 @@
  */
 package org.apache.polygene.entitystore.redis;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.redis.assembly.RedisEntityStoreAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
-import org.junit.ClassRule;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 
+@Docker( image = "redis",
+         ports = @Port( exposed = 8801, inner = 6379))
 public class RedisEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "redis", 6379 );
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -51,8 +52,8 @@ public class RedisEntityStoreTest
         // END SNIPPET: assembly
         RedisEntityStoreConfiguration redisConfig = config.forMixin( RedisEntityStoreConfiguration.class )
                                                           .declareDefaults();
-        redisConfig.host().set( DOCKER.getDockerHost() );
-        redisConfig.port().set( DOCKER.getExposedContainerPort( "6379/tcp" ) );
+        redisConfig.host().set( "localhost" );
+        redisConfig.port().set( 8801 );
         // START SNIPPET: assembly
     }
     // END SNIPPET: assembly
@@ -70,6 +71,7 @@ public class RedisEntityStoreTest
     }
 
     @Override
+    @AfterEach
     public void tearDown()
     {
         try( Jedis jedis = jedisPool.getResource() )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/7585af08/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
index bcc9249..438ae92 100644
--- a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
+++ b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
@@ -19,21 +19,21 @@
  */
 package org.apache.polygene.entitystore.redis;
 
+import com.github.junit5docker.Docker;
+import com.github.junit5docker.Port;
+import com.github.junit5docker.WaitFor;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.redis.assembly.RedisEntityStoreAssembler;
-import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-import org.junit.ClassRule;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 
+@Docker( image = "redis",
+         ports = @Port( exposed = 8801, inner = 6379))
 public class RedisEntityStoreTestSuite extends EntityStoreTestSuite
 {
-    @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "redis", 6379 );
-
     @Override
     protected void defineStorageModule( ModuleAssembly module )
     {
@@ -45,8 +45,8 @@ public class RedisEntityStoreTestSuite extends EntityStoreTestSuite
 
         RedisEntityStoreConfiguration redisConfig = configModule.forMixin( RedisEntityStoreConfiguration.class )
                                                                 .declareDefaults();
-        redisConfig.host().set( DOCKER.getDockerHost() );
-        redisConfig.port().set( DOCKER.getExposedContainerPort( "6379/tcp" ) );
+        redisConfig.host().set( "localhost" );
+        redisConfig.port().set( 8801 );
     }
 
     private JedisPool jedisPool;


Mime
View raw message