erp5: Rework testrunner's HTTP server
We don't want runUnitTest is to listen on 127.0.0.1, as it is not allowed for SlapOS instances, runUnitTest wrapper is extended to include `--zserver` with a pre-assigned ip:port. runTestSuite starts several test in parrallel (controlled by `--node_quantity` argument, which is passed by erp5testnode), so we need to make sure that we provide it with enough ip:port. For this, we extended runTestSuite with a `--zserver_address_list` argument and we generate a wrapper with a list of `testrunner.node-count` pre-assigned ip:ports. Because zelenium tests needs to access this zserver over a secure origin (otherwise modern browser features such as service worker are not available), use an https proxy in the apache from the balancer partition. runUnitTest and runTestSuite have been extended with resp. `--zserver_frontend_url` and `--zserver_frontend_url_list` arguments and the URLs published by the balancer paritions are set in the wrappers. For compatibility reasons, runTestSuite pass parameters as environment variables. Implementation notes: This introduces a circular depencency, balancer partition needs to know the address of the testrunners and zope partitions needs to know the URLs of the corresponding http proxies on the apache. This is is handled by `slapos.recipe:publish-early`: 1. request zope family with an empty `test-runner-apache-url-list`. zope is instanciated a first time. zope returns `test-runner-address-list` ( a list of (host, port) tuples ) 2. request balancer with `test-runner-address-list` balancer is instanciated. balancer returns `{{ family_name }}-test-runner-url-list` ( a list of apache URLs ), which are published in the root partition. 3. zope family is re-requested with updated`test-runner-apache-url-list` information instance-erp5.cfg.in template was also reorganised to move `[publish-early]` next to `[publish]` at the bottom of the file because these sections are semantically related. Also test runner generation is moved after zope generation, because we want to allocate test runners ports after zopes, otherwise existing zopes would get new ports when existing instances are upgraded.
Showing