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
bridgeandcomplianceservers. - Callbacks for
monitorto start tests and check tests status. - Proxy to
complianceauth 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
containerdocker image using files incontainerdirectory. - Generate random ngrok subdomains for FIs and start ngrok.
- Start a cluster by
docker-compose up. - Start
monitorapp. - 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-horizoninstead of SDF's instances.
