I know velocity is tightly integrated with meteor to provide the awesome development experience which we all like, but I think specifically for CI there should be a way to run the “hub” part of it outside of the hosting application.
A quick recap on how velocity currently runs CI with the cucumber plugin to the best of my knowledge:
- user starts the process by calling
VELOCITY_CI=1 meteor --test
- the application under test is started at port 3000 and acts as the hub
- a mirror process (or multiple ones if specified) is started from the hub
- the mirror starts its own chimp process
- the mirror connects to the hub (DDP connection)
- the mirror starts running tests (either all at once or the ones the hub tells it to do in case of parallel execution)
Actually the only difference between the CI mode and the development mode is that in CI mode all tests are run and that the hub and all its mirrors are shut down, once the tests are finished.
I can understand that the design of the architecture was driven by the wish to create an awesome development experience, but I find it kind of weird that when running tests in CI mode my application is running under the default port and does basically nothing else then orchestrating tests on its mirrors.
I stubbled across this because I obviously need to allocate dynamic ports when running tests for more than one application at the same time on the same machine, for example with a Jenkins setup or even locally.
This post is meant to start a discussion about the architecture of velocity between the community and its creators/maintainers.