integration: speed up dockerized end2end test #3719
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The overhead of running a binary in a docker container with
docker-compose exec is around 1 second.
Since our integration tests are serialized and a cartesian product between
all ASes is taken, this overhead easily amounts to multiple minutes.
With this PR, all servers are started in parallel for the end2end test.
All pairs with the same source are executed in on single docker exec
command. And all executions are done in parallel.
To get a progress update, the end2end binary talks through a unix socket
to the integration binary.
We can eventually move the server wait to this RPC framework as well.
With this style of invoking the end2end test, we can reduce the execution
time on CI from >10 minutes (timeout) to a bit more than 1 minute.
Most of the execution time is actually spent in starting the topology,
not in execution the tests.
This change is