Preparing the containers for the integration test

Before we really talk about the integration test, let's prepare our containers for testing. We use docker-compose in our development environment, but currently, all of our application settings are in the same docker-compose.yml file.

docker-compose allows us to override settings by passing docker-compose.yml files into jail, as shown in the following example:

$  docker-compose -f docker-compose.yml -f docker-compose.test.yml up --build –d

Let's separate the settings and create different docker-compose files. Each file will be for a specific environment. We will create a new file, docker-compose.test.yml. This file has only the settings that we want to overwrite:

version: '3'
services:
users_service:
environment:
- DATABASE_URL=postgresql://postgres:postgres@users_service_db:5432/users_test?sslmode=disable

famous_news_service:
environment:
- QUERYBD_HOST=mongodb://querydb_famous:27017/news_test
- COMMANDDB_HOST=postgresql://postgres:postgres@commanddb_famous:5432/news_test?sslmode=disable

politics_news_service:
environment:
- QUERYBD_HOST=mongodb://querydb_politics:27017/news_test
- COMMANDDB_HOST=postgresql://postgres:postgres@commanddb_politics:5432/news_test?sslmode=disable

sports_news_service:
environment:
- QUERYBD_HOST=mongodb://querydb_sports:27017/news_test
- COMMANDDB_HOST=postgresql://postgres:postgres@commanddb_sports:5432/news_test?sslmode=disable

recommendation_service:
environment:
- DATABASE_URL=http://recommendation_db:7474/db/test_data

As shown in the preceding code block, all the changes refer to the database routes. This is to create special databases for the tests, a kind of sandbox.

Just as we created a new file with specific settings, we should remove the unnecessary settings in the docker-compose.yml file.

Some microservices use environment variables that must be replaced, such as UsersServices in the main.go file. Replace the settings, as shown in the following example:

...
connectionString := os.Getenv("DATABASE_DEV_URL") // replace this
connectionString := os.Getenv("DATABASE_URL") // by this
...

Repeat this process on all microservices.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
13.59.2.212