polygene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Merlin <paulmer...@apache.org>
Subject Re: Docker based integration testing
Date Mon, 16 Jan 2017 18:17:34 GMT
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 <paulmerlin@apache.org> 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
>>>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message