This repository contains script responsible for performing integration tests of different components of the Stellar network.
This section describes the architecture of integration tests.
Monitor (monitor.js
) is the main app run by travis. It's responsible for:
- Starting tests when both FI server are online.
- Checking the current status of tests and returning the correct exit code if tests succeed/fail/timeout.
ngrok allows creating http/https tunnels to Docker containers. This allows us to expose stellar.toml
, federation server and auth server to the internet so other FI can access them.
FI Container is built from docker image that can be found in container
directory. It consists of:
- Bridge server,
- Compliance server,
- Custom FI server (
index.js
). It provides:- Callbacks for
bridge
andcompliance
servers. - Callbacks for
monitor
to start tests and check tests status. - Proxy to
compliance
auth server (to allow creating a single tunnel to docker container). - Tests code.
- Callbacks for
Services are listening on the following ports within a docker container:
Service | Port | Exposed to docker host? |
---|---|---|
bridge | 8000 | No |
compliance external | 8001 | No |
compliance internal | 8002 | No |
FI server with proxy to compliance auth server |
8003 | Yes |
Docker container with a DB server that provides storage for bridge
and compliance
servers.
Docker cluster is defined in docker-compose.yml
and can be started using docker-compose
command.
docker-compose
is using environment variables defined in container1.env
, container2.env
and secret variables set in Travis. The list of environment variables can be found below:
Description | Scope | Name | Value |
---|---|---|---|
Ngrok Auth Token | Global | NGROK_AUTH_TOKEN |
secret |
F1 Domain | Global | FI1_DOMAIN |
random |
F2 Domain | Global | FI2_DOMAIN |
random |
F1 Bridge version | Global | FI1_BRIDGE_VERSION |
Defined in .travis.yml: master - master branch, other values define release version |
F2 Bridge version | Global | FI2_BRIDGE_VERSION |
Defined in .travis.yml: master - master branch, other values define release version |
FI1 Receiving account | container1.env | RECEIVING_ACCOUNT |
GAAJKG3WQKHWZJ5RGVVZMVV6X3XYU7QUH2YVATQ2KBVR2ZJYLG35Z65A |
FI1 Receiving secret | Global | FI1_RECEIVING_SEED |
secret |
FI1 Signing account | container1.env | SIGNING_ACCOUNT |
GBAPTLS2A72RGEQIK6GQ4F74AIYFS2N7WIQ7LZOYKOJT4KD6MUQEHOEU |
FI1 Signing secret | Global | FI1_SIGNING_SEED |
secret |
FI2 Receiving account | container2.env | RECEIVING_ACCOUNT |
GCNP7JE6KR5CKHMVVFTZJUSP7ALAXWP62SK6IMIY4IF3JCHEZKBJKDZF |
FI2 Receiving secret | Global | FI2_RECEIVING_SEED |
secret |
FI2 Signing account | container2.env | SIGNING_ACCOUNT |
GD4SMSFNFASBHPMCOJAOVYH47OXQM5BGSHFLKHO5BGRGUK6ZOAVDG54B |
FI2 Signing secret | Global | FI2_SIGNING_SEED |
secret |
Issuing account | container*.env | ISSUING_ACCOUNT |
GDNFUWF2EO4OWXYLI4TDEH4DXUCN6PB24R6XQW4VATORK6WGMHGRXJVB |
See script.sh
.
- Build
container
docker image using files incontainer
directory. - Generate random ngrok subdomains for FIs and start ngrok.
- Start a cluster by
docker-compose up
. - Start
monitor
app. - Wait for both FIs to go online.
- When both FIs are working start tests.
- Monitor current status of tests.
- Print results and exit with correct (error) code.
- More test scenarios.
- Use
docker-stellar-core-horizon
instead of SDF's instances.