Common Test Docker Compose Hook
A Common Test hook for starting and stopping docker-compose services.
Hooks can be declared in rebar.config with ct_opts:
{ct_opts, [{ct_hooks, [docker_compose_cth]}]}.
It can be added on a per-suite either with the suite/0 function in the suite module:
suite() ->
[{ct_hooks, [docker_compose_cth]}].
or in the return of init_per_suite/1:
init_per_suite(Config) ->
[{ct_hooks, [docker_compose_cth]} | Config].
For groups it can be added per-group in the return of init_per_group/2 function in the suite module:
init_per_group(Group, Config) ->
[{ct_hooks, [docker_compose_cth]} | Config].
Shutdown of the services happens in the hooks terminate function which is called depending on when the hook was installed: CTH Scope. But the configuration for the hook can include #{stop => never} and the hook will not shutdown the services during terminate.
Configuration
executable_search_paths: Path to search for thedocker-composeexecutable. If it is not set the regular path is searched as described in the docs for os:find_executable/1.check_if_running: A string that is the name of the service to check for before runningdocker-compose up. If defined the hook will check if a service is already up and not calldocker-compose upif it is. By default this is done by attemptingexec lsin the service's container, but the command can be set to anything by passing a tuple{Service, Command}skip_or_fail: The atomskiporfail(default isfail). If the hook is unable to bring up the service with docker-compose then the suite will either skip or fail, depending on this configuration.stop: Boolean value that iffalsemeans the services with not be shutdown when the hook terminates.
Todo
-
Support a path to the
docker-compose.ymlfile.