start of fixing race condition by not having test+s6 both run /start.sh
Signed-off-by: Adam Hill <adam@diginc.us>
This commit is contained in:
parent
cb0fffa26f
commit
999f02b598
|
@ -5,11 +5,11 @@ check_output = testinfra.get_backend(
|
||||||
"local://"
|
"local://"
|
||||||
).get_module("Command").check_output
|
).get_module("Command").check_output
|
||||||
|
|
||||||
def DockerGeneric(request, args, image, cmd):
|
def DockerGeneric(request, args, image, cmd, entrypoint=''):
|
||||||
assert 'docker' in check_output('id'), "Are you in the docker group?"
|
assert 'docker' in check_output('id'), "Are you in the docker group?"
|
||||||
if 'pihole' in image:
|
if 'pihole' in image:
|
||||||
args += " --dns 127.0.0.1 -v /dev/null:/etc/pihole/adlists.default -e PYTEST=\"True\""
|
args += " --dns 127.0.0.1 -v /dev/null:/etc/pihole/adlists.default -e PYTEST=\"True\""
|
||||||
docker_run = "docker run -d {} {} {}".format(args, image, cmd)
|
docker_run = "docker run -d {args} {entry} {image} {cmd}".format(args, image, cmd)
|
||||||
print docker_run
|
print docker_run
|
||||||
docker_id = check_output(docker_run)
|
docker_id = check_output(docker_run)
|
||||||
|
|
||||||
|
@ -37,10 +37,11 @@ def DockerGeneric(request, args, image, cmd):
|
||||||
docker_container.run = funcType(run_bash, docker_container, testinfra.backend.docker.DockerBackend)
|
docker_container.run = funcType(run_bash, docker_container, testinfra.backend.docker.DockerBackend)
|
||||||
return docker_container
|
return docker_container
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def Docker(request, args, image, cmd):
|
def Docker(request, args, image, cmd, entrypoint):
|
||||||
''' One-off Docker container run '''
|
''' One-off Docker container run '''
|
||||||
return DockerGeneric(request, args, image, cmd)
|
return DockerGeneric(request, args, image, cmd, entrypoint)
|
||||||
|
|
||||||
@pytest.fixture(scope='module')
|
@pytest.fixture(scope='module')
|
||||||
def DockerPersist(request, persist_args, persist_image, persist_cmd, Dig):
|
def DockerPersist(request, persist_args, persist_image, persist_cmd, Dig):
|
||||||
|
@ -51,6 +52,10 @@ def DockerPersist(request, persist_args, persist_image, persist_cmd, Dig):
|
||||||
persistent_container.dig = Dig(persistent_container.id)
|
persistent_container.dig = Dig(persistent_container.id)
|
||||||
return persistent_container
|
return persistent_container
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def entrypoint():
|
||||||
|
return ''
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def args(request):
|
def args(request):
|
||||||
return '-e ServerIP="127.0.0.1" -e ServerIPv6="::1"'
|
return '-e ServerIP="127.0.0.1" -e ServerIPv6="::1"'
|
||||||
|
|
|
@ -4,15 +4,7 @@ import time
|
||||||
''' Note, testinfra builtins don't seem fully compatible with
|
''' Note, testinfra builtins don't seem fully compatible with
|
||||||
docker containers (esp. musl based OSs) stripped down nature '''
|
docker containers (esp. musl based OSs) stripped down nature '''
|
||||||
|
|
||||||
def test_pihole_default_run_command(Docker, tag):
|
@pytest.mark.parametrize('entrypoint', ['--entrypoint=/bin/bash'])
|
||||||
expected_proc = '/sbin/tini -- /start.sh'
|
|
||||||
pgrep = 'pgrep -f "{}" | wc -l || echo 0'.format(expected_proc)
|
|
||||||
find_proc = Docker.run(pgrep).stdout
|
|
||||||
if int(find_proc) < 1:
|
|
||||||
print Docker.run('ps -ef')
|
|
||||||
print "{} : {}".format(pgrep, find_proc)
|
|
||||||
assert False, '{}: Couldn\'t find proc {}'.format(tag, expected_proc)
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('args', [ '' ])
|
@pytest.mark.parametrize('args', [ '' ])
|
||||||
def test_ServerIP_missing_triggers_start_error(Docker):
|
def test_ServerIP_missing_triggers_start_error(Docker):
|
||||||
''' When args to docker are empty start.sh exits saying ServerIP is required '''
|
''' When args to docker are empty start.sh exits saying ServerIP is required '''
|
||||||
|
@ -21,6 +13,7 @@ def test_ServerIP_missing_triggers_start_error(Docker):
|
||||||
assert start.rc == 1
|
assert start.rc == 1
|
||||||
assert error_msg in start.stdout
|
assert error_msg in start.stdout
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('entrypoint', ['--entrypoint=/bin/bash'])
|
||||||
@pytest.mark.parametrize('args,error_msg,expect_rc', [
|
@pytest.mark.parametrize('args,error_msg,expect_rc', [
|
||||||
('-e ServerIP="1.2.3.z"', "ServerIP Environment variable (1.2.3.z) doesn't appear to be a valid IPv4 address",1),
|
('-e ServerIP="1.2.3.z"', "ServerIP Environment variable (1.2.3.z) doesn't appear to be a valid IPv4 address",1),
|
||||||
('-e ServerIP="1.2.3.4" -e ServerIPv6="1234:1234:1234:ZZZZ"', "Environment variable (1234:1234:1234:ZZZZ) doesn't appear to be a valid IPv6 address",1),
|
('-e ServerIP="1.2.3.4" -e ServerIPv6="1234:1234:1234:ZZZZ"', "Environment variable (1234:1234:1234:ZZZZ) doesn't appear to be a valid IPv6 address",1),
|
||||||
|
|
Loading…
Reference in New Issue