Maxwell's demon of test enviroment
Orchestrate testing env easily.
Wraps docker-compose and it's dependencies into it's own container with http api.
Execute docker-compose commands sequences for starting requested services set from volumed docker-compose files.
Rerun environment when in-flight one is different from new requested.
Vedro usage
Add "supervisor" container
maxwelld:
image: docker.io/ko10ok/maxwelld:0.2.9
volumes:
- .:/project
- ./docker-composes:/docker-composes
- ./env-tmp:/env-tmp
environment:
- DOCKER_HOST=tcp://dockersock:2375
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}
- NON_STOP_CONTAINERS=dockersock,maxwelld,e2e
- HOST_PROJECT_ROOT_DIRECTORY=${HOST_PROJECT_ROOT_DIRECTORY}
Define services config
from maxwelld import Environments
from maxwelld import Environment
from maxwelld import DEFAULT_ENV
from maxwelld import Service
web = Service('web')
web_gallery = Service('web-gallery')
mq = Service('mq')
db = Service('db')
class Envs(Environments):
DEFAULT = Environment(
DEFAULT_ENV,
web, web_gallery,
db,
mq
)
Enable plugin
from maxwelld import vedro_plugin as vedro_maxwell
from maxwelld import ComposeConfig
from env_set import Envs
class Config(vedro.Config):
class Plugins(vedro.Config.Plugins):
class VedroMaxwell(vedro_maxwell.VedroMaxwell):
enabled = True
envs = Envs()
compose_cfgs = {
'default': ComposeConfig('docker-compose.yml', parallel_env_limit=1),
'dev': ComposeConfig('docker-compose.yml:docker-compose.dev.yml', parallel_env_limit=1),
}
How To Start Contributing
Run e2e tests
cd tests
make watch
make e2e-run
make e2e-run args='-vvv'
make e2e-run args='scenarios/api/up_env_with_custom_services_set_enviroment.py -vvv'
Update in-image maxwelld library / rebuild dependencies
make watch -B
make e2e-run -B
Run in-project integrated
Client changes testing (e2e vedro)
Add volume with package
e2e:
volumes:
- /Users/***/repos/maxwelld:/maxwelld
and update in started container
docker-compose exec e2e /venv/bin/python3 -m pip install /maxwelld
Server changes testing
make beta image
make build-image-beta
and change it for ur project
image: docker.io/***/maxwelld:*.*.*-beta