So only the Docker daemon is needed? And I run what target for ./gradlew ?
Cheers Niclas On Sat, Feb 25, 2017 at 10:33 PM, Paul Merlin <[email protected]> wrote: > Gang, > > I finally found time to take a stab at fixing Docker based integration > testing on Linux. > > It should now work out of the box on Linux, given that a Docker service > is running locally and that your user has the correct permissions. > > Docker based integration testing is now disabled if unable to contact a > Docker service. No need to set DOCKER_HOST. > > Niclas, could you confirm it works for you? > > Cheers > > /Paul > > > > Paul Merlin a écrit : > > Thanks for your feedback Niclas! > > > > Using the unix:///path/to/docker.sock URL on Linux should do. > > I'll do another round on that later this week. > > > > Cheers > > > > > > Niclas Hedhman a écrit : > >> DOCKER_* may not be the best way to determine if Docker is present. I > am on > >> a Debian system, and no env variable named DOCKER* is set by default, > yet > >> docker is operational. IIUIC, these variables are needed for Docker > Swarm > >> and other specialized setup where one is not running the container on > the > >> same system as issuing the `docker` command. > >> > >> That said, running > >> ./gradlew :ext:entity-redis:test > >> > >> without changing my defaults gives me some errors; > >> > >> :extensions:entitystore-redis:test > >> > >> org.apache.polygene.entitystore.redis.RedisMapEntityStoreWithCacheTest > > > >> classMethod FAILED > >> java.lang.ExceptionInInitializerError > >> Caused by: java.lang.IllegalStateException at > >> RedisMapEntityStoreWithCacheTest.java:38 > >> Caused by: com.spotify.docker.client. > exceptions.DockerException > >> at RedisMapEntityStoreWithCacheTest.java:38 > >> Caused by: java.util.concurrent.ExecutionException at > >> RedisMapEntityStoreWithCacheTest.java:38 > >> Caused by: javax.ws.rs.ProcessingException > >> Caused by: > >> org.apache.http.conn.HttpHostConnectException > >> Caused by: java.net.ConnectException > >> > >> org.apache.polygene.entitystore.redis.RedisMapEntityStoreTest > > classMethod > >> FAILED > >> java.lang.ExceptionInInitializerError > >> Caused by: java.lang.IllegalStateException at > >> RedisMapEntityStoreTest.java:38 > >> Caused by: com.spotify.docker.client. > exceptions.DockerException > >> at RedisMapEntityStoreTest.java:38 > >> Caused by: java.util.concurrent.ExecutionException at > >> RedisMapEntityStoreTest.java:38 > >> Caused by: javax.ws.rs.ProcessingException > >> Caused by: > >> org.apache.http.conn.HttpHostConnectException > >> Caused by: java.net.ConnectException > >> > >> 2 tests completed, 2 failed > >> > >> > >> And the underlying exception is; > >> > >> Caused by: org.apache.http.conn.HttpHostConnectException: Connect to > >> localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: > >> Connection refused (Connection refused) > >> > >> > >> Which I presume is due to the gradle-docker-plugin going on the network > >> protocol instead of the command-line interface. The default docker > >> interface on Linux seems to be Unix sockets, which most Java apps tend > to > >> ignore and not support. > >> > >> 1059 ? Ssl 0:02 docker-containerd -l > >> unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim > >> docker-containerd-shim --metrics-interval=0 --start-timeout 2m > --state-dir > >> /var/run/docker/libcontainerd/containerd --runtime docker-runc > >> > >> > >> Hope that helps. I am sending you login separately to a clean/unused > server > >> in Germany, in case you want to run experiments on it. > >> > >> Cheers > >> > >> On Sun, Jan 15, 2017 at 8:08 PM, Paul Merlin <[email protected]> > wrote: > >> > >>> Could anybody confirm it works for them? > >>> > >>> Paul Merlin a écrit : > >>>> Gang, > >>>> > >>>> I pushed changes to the build system and tests to automate integration > >>>> testing. > >>>> > >>>> It uses docker to build the necessary images and run docker containers > >>>> as a JUnit rule. > >>>> All this is done only if the DOCKER_HOST environment variable is set, > >>>> otherwise it's skipped. > >>>> > >>>> On linux with docker installed it should work out of the box given you > >>>> have DOCKER_HOST and DOCKER_CERT_PATH set. > >>>> > >>>> On mac you need to: > >>>> - docker-machine create someFancyNameYouChoose > >>>> - eval $(docker-machine env someFancyNameYouChoose) > >>>> > >>>> On windows, see https://docs.docker.com/machine/reference/env/ > >>>> > >>>> With that done, when you now run e.g: > >>>> > >>>> ./gradlew :ext:entity-redis:test > >>>> > >>>> it will build the docker images and run Redis in a container around > >>>> the EntityStore tests. > >>>> > >>>> The same goes for these extensions: > >>>> > >>>> - Memcached Cache > >>>> - SQL EntityStore using both MySQL and PostgreSQL > >>>> - SQL Index/Query using PostgreSQL > >>>> - Riak EntityStore > >>>> > >>>> All the others extensions are tested using embedded solutions, > >>>> including MongoDB. > >>>> > >>>> Docker images are built by the :internals:testsupport-internal > >>>> project, you'll find the Dockerfiles there. > >>>> > >>>> Thanks to this I was able to fix a bug I introduced in the Riak ES in > >>>> recent changes. > >>>> The only thing actually broken is SQL Index/Query, see > >>>> https://issues.apache.org/jira/browse/POLYGENE-222 > >>>> > >>>> For now these test do not run on CI. > >>>> builds.apache.org supports docker so we should be able to do that too > >>>> at some point. > >>>> In the meantime some of us should run the *whole* test suite from time > >>>> to time. > >>>> At least now it should be damn easy to do! > >>>> > >>>> Before calling this automation done I'd like to get someone to confirm > >>>> it 'works for them'. > >>>> I only tested on a mac. > >>>> > >>>> Cheers > >>>> > >>>> /Paul > >>>> > > > -- Niclas Hedhman, Software Developer http://polygene.apache.org <http://zest.apache.org> - New Energy for Java
