Skip to content

Demo for integration tests with Docker containers using the Testcontainers library

License

Notifications You must be signed in to change notification settings

qaware/testcontainers-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Testcontainers demo

This demo project shows how to write an integration test with Docker containers for a Java EE microservice using the Testcontainers library.

The demo accompanies the blog post Integration tests for Java EE with Testcontainers.

Overview

book-loader is a sample Java EE micro service importing book data from a PostgresSQL database into a Solr search index. It runs in a Payara Micro App server and offers a simple JAX-RS Web service to trigger a load.

book-loader-it is an integration test for book-loader using the Testcontainers library. It starts the book-loader (system under test) as well as the two databases as Docker containers.

Prerequisites

Make sure to clone the repository and navigate to the directory.

Run the integration test

A normal Maven build will compile the app, build a Docker image and run the integration test. The test will automatically start Docker containers for Postgres, Solr and the book-loader, execute the book-loader and clean up the containers afterwards.

mvn clean install

Run the application manually

If you want to manually run the application to get a feeling for what we are automating, you can use the following commands.

Create a named Docker network.

docker network create testcontainers-demo

Start a Postgres database container in our network.

docker run -d -p 5432:5432 --env POSTGRES_PASSWORD=123 --name testcontainers-demo-postgres --network testcontainers-demo postgres:11.2

Fill the Postgres database with some test data. For example, execute the prepared script with the Postgres command line client.

psql postgresql://postgres:123@localhost:5432/postgres -f book-loader-it/src/test/resources/insert-test-data.sql

Start a Solr search index container in our network and create an empty "books" core.

docker run -d -p 8983:8983 --name testcontainers-demo-solr --network testcontainers-demo solr:7.7.1 solr-create -c books

You can now open the Solr admin UI by opening http://localhost:8983 in a browser and check that there is an empty "books" core. The same can be checked with curl. It should return an successful, but empty search result.

curl http://localhost:8983/solr/books/select?q=*:*

Build the book-loader with Maven. This also creates the Docker image.

mvn clean install -DskipTests

Start a book-loader container in our network.

docker run -d -p 8080:8080 --name testcontainers-demo-book-loader --network testcontainers-demo testcontainers/book-loader:latest

Trigger a book-loader load by calling the Web service.

curl http://localhost:8080/book-loader/start

Check that the book data was loaded into Solr.

curl http://localhost:8983/solr/books/select?q=*:*

Releases

No releases published

Packages

No packages published