Skip to content

Commit

Permalink
[#132] Wait for mysql container to be reported as healthy by the dock…
Browse files Browse the repository at this point in the history
…er instead of checking in python and drop MySQL support lower than 8.0
  • Loading branch information
javrasya committed Jan 30, 2020
1 parent ea30cac commit 59ad702
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 37 deletions.
8 changes: 0 additions & 8 deletions .travis.yml
Expand Up @@ -41,14 +41,6 @@ matrix:
env: TOXENV=py36-dj2.2-postgresql12
services:
- docker
- python: "3.6"
env: TOXENV=py36-dj2.2-mysql5.6
services:
- docker
- python: "3.6"
env: TOXENV=py36-dj2.2-mysql5.7
services:
- docker
- python: "3.6"
env: TOXENV=py36-dj2.2-mysql8.0
services:
Expand Down
24 changes: 0 additions & 24 deletions settings/with_mysql.py
@@ -1,34 +1,10 @@
import subprocess
from time import sleep
from uuid import uuid4

from .base import *

DB_HOST = os.environ['MYSQL_HOST']
DB_PORT = os.environ['MYSQL_3306_TCP_PORT']


def get_container_id():
lines = subprocess.check_output(
"docker ps --format \"{{.ID}},{{.Ports}}\" | grep '%s:%s' | awk -F',' '{print $1}'" % (DB_HOST, DB_PORT)
, shell=True
).decode("utf-8").splitlines()
return next(iter(lines), None)


def wait_for_container_to_be_up():
container_id = get_container_id()
while True:
logs = subprocess.check_output("docker logs %s" % container_id, shell=True).decode("utf-8")
if "MySQL init process done. Ready for start up" in logs:
break
sleep(3)
print("Waiting DB to be up an running...")
print("DB is ready!")


wait_for_container_to_be_up()

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
Expand Down
13 changes: 8 additions & 5 deletions tox.ini
Expand Up @@ -3,7 +3,7 @@ envlist = {py27,py34}-{dj1.11}-{sqlite3},
{py35}-{dj1.11,dj2.0,dj2.1,dj2.2}-{sqlite3},
{py36}-{dj1.11,dj2.0,dj2.1,dj2.2}-{sqlite3},
{py36}-{dj2.2}-{postgresql9,postgresql10,postgresql11,postgresql12},
{py36}-{dj2.2}-{mysql8.0,mysql5.7,mysql5.6},
{py36}-{dj2.2}-{mysql8.0},
cov,

[testenv]
Expand All @@ -13,8 +13,6 @@ docker =
postgresql11: postgres:11-alpine
postgresql12: postgres:12-alpine
mysql8.0: mysql:8.0
mysql5.7: mysql:5.7
mysql5.6: mysql:5.6
dockerenv =
POSTGRES_USER=river
POSTGRES_PASSWORD=river
Expand All @@ -36,7 +34,7 @@ deps =
dj2.1: Django>=2.1,<2.2.0
dj2.2: Django>=2.2,<2.3.0
postgresql9,postgresql10,postgresql11,postgresql12: psycopg2
mysql8.0,mysql5.7,mysql5.6: mysqlclient
mysql8.0: mysqlclient
commands =
py.test --junitxml=../junit-{envname}.xml
python manage.py behave
Expand All @@ -51,4 +49,9 @@ deps =
commands =
py.test --ds='settings.with_sqlite3' --cov ./ --cov-report term-missing


[docker:mysql:8.0]
healthcheck_cmd = 'mysqladmin ping --silent -u root --password=river'
healthcheck_interval = 10
healthcheck_start_period = 5
healthcheck_retries = 30
healthcheck_timeout = 10

0 comments on commit 59ad702

Please sign in to comment.