Skip to content

Commit b531275

Browse files
authored
remove legacy docker hub hook; wait until specific log message instea… (#1622)
* remove legacy docker hub hook; wait until specific log message instead of fixed timespan * make sure to run correct NSS version during tests
1 parent 5ba1b55 commit b531275

File tree

10 files changed

+69
-64
lines changed

10 files changed

+69
-64
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,25 @@ jobs:
5757

5858
- uses: actions/checkout@v2
5959

60+
- uses: olegtarasov/get-tag@v2.1
61+
id: tagName
62+
with:
63+
tagRegex: "v?(?<version>.*)"
64+
6065
- name: Lint dockerfile
6166
working-directory: docker-image
6267
run: pwd && ls -lah && make lint
6368

6469
- name: Run tests
6570
working-directory: docker-image
66-
run: make test
71+
run: SOLID_SERVER_VERSION=${{ steps.tagName.outputs.version }} make test
6772

6873
- name: Set up QEMU
6974
uses: docker/setup-qemu-action@v1
7075

7176
- name: Set up Docker Buildx
7277
uses: docker/setup-buildx-action@v1
7378

74-
- uses: olegtarasov/get-tag@v2.1
75-
id: tagName
76-
with:
77-
tagRegex: "(?<version>.*)"
78-
7979
- name: Docker meta
8080
id: meta
8181
uses: docker/metadata-action@v3

docker-image/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test: ## run testinfra tests against the project
22
docker run --rm -t \
33
-v $(shell pwd):/project \
44
-v /var/run/docker.sock:/var/run/docker.sock:ro \
5+
-e SOLID_SERVER_VERSION="${SOLID_SERVER_VERSION}" \
56
aveltens/docker-testinfra
67

78
lint: ## run hadolint against the Dockerfile

docker-image/src/hooks/build

Lines changed: 0 additions & 9 deletions
This file was deleted.

docker-image/test/__init__.py

Whitespace-only changes.

docker-image/test/conftest.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
import docker
22
import pytest
3+
import os
4+
35

46
@pytest.fixture(scope="session")
57
def client():
68
return docker.from_env()
79

10+
811
@pytest.fixture(scope="session")
912
def image(client):
10-
img, _ = client.images.build(path='./src', dockerfile='Dockerfile')
11-
return img
13+
img, _ = client.images.build(path='./src', dockerfile='Dockerfile',
14+
buildargs={"SOLID_SERVER_VERSION": os.environ['SOLID_SERVER_VERSION']})
15+
return img

docker-image/test/test_non_accessible_key_cert.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# coding=utf-8
22
import docker
33
import pytest
4-
import time
54

65
import os
76

7+
from test.wait_for_container import wait_for_container
8+
89
testinfra_hosts = ['docker://test_container']
910

1011

@@ -21,8 +22,7 @@ def container(client, image):
2122
detach=True,
2223
tty=True
2324
)
24-
# give the solid process some seconds to create the directory structure before making assertions
25-
time.sleep(2)
25+
wait_for_container(container, "Finished: ERROR")
2626
yield container
2727
container.remove(force=True)
2828

docker-image/test/test_precondition_checks.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# coding=utf-8
22
import docker
33
import pytest
4-
import time
4+
5+
from test.wait_for_container import wait_for_container
56

67
testinfra_hosts = ['docker://test_container']
78

@@ -23,8 +24,7 @@ def container(client, image):
2324
detach=True,
2425
tty=True
2526
)
26-
# give the solid process some seconds to create the directory structure before making assertions
27-
time.sleep(2)
27+
wait_for_container(container, "Finished: ERROR")
2828
yield container
2929
container.remove(force=True)
3030

docker-image/test/test_solid_default_config.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import docker
21
import pytest
3-
import time
2+
3+
from test.wait_for_container import wait_for_container
44

55
testinfra_hosts = ['docker://test_container']
66

@@ -12,8 +12,7 @@ def container(client, image):
1212
detach=True,
1313
tty=True
1414
)
15-
# give the solid process some seconds to create the directory structure before making assertions
16-
time.sleep(10)
15+
wait_for_container(container)
1716
yield container
1817
container.remove(force=True)
1918

docker-image/test/test_volumes.py

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,55 @@
11
import docker
22
import pytest
3-
import time
3+
4+
from test.wait_for_container import wait_for_container
45

56
testinfra_hosts = ['docker://test_container']
67

78
@pytest.fixture(scope="module", autouse=True)
89
def solid_server(client, image):
9-
container = client.containers.run(
10-
image.id,
11-
name="solid_server",
12-
detach=True,
13-
tty=True
14-
)
15-
# give the solid process some seconds to create the directory structure before making assertions
16-
time.sleep(2)
17-
yield container
18-
container.remove(force=True)
10+
container = client.containers.run(
11+
image.id,
12+
name="solid_server",
13+
detach=True,
14+
tty=True
15+
)
16+
wait_for_container(container)
17+
yield container
18+
container.remove(force=True)
19+
1920

2021
@pytest.fixture(scope="module", autouse=True)
2122
def container(client, solid_server):
22-
container = client.containers.run(
23-
'alpine',
24-
name="test_container",
25-
detach=True,
26-
tty=True,
27-
volumes_from=solid_server.id
28-
)
29-
# give the solid process some seconds to create the directory structure before making assertions
30-
time.sleep(2)
31-
yield container
32-
container.remove(force=True)
23+
container = client.containers.run(
24+
'alpine',
25+
name="test_container",
26+
detach=True,
27+
tty=True,
28+
volumes_from=solid_server.id
29+
)
30+
yield container
31+
container.remove(force=True)
32+
3333

3434
def test_solid_data_dir_is_mounted(host):
35-
solid_data = host.file("/opt/solid/data/")
36-
assert solid_data.exists
37-
assert solid_data.is_directory
38-
assert solid_data.uid == 1000
39-
assert solid_data.gid == 1000
35+
solid_data = host.file("/opt/solid/data/")
36+
assert solid_data.exists
37+
assert solid_data.is_directory
38+
assert solid_data.uid == 1000
39+
assert solid_data.gid == 1000
40+
4041

4142
def test_solid_db_dir_is_mounted(host):
42-
solid_db = host.file("/opt/solid/.db/")
43-
assert solid_db.exists
44-
assert solid_db.is_directory
45-
assert solid_db.uid == 1000
46-
assert solid_db.gid == 1000
43+
solid_db = host.file("/opt/solid/.db/")
44+
assert solid_db.exists
45+
assert solid_db.is_directory
46+
assert solid_db.uid == 1000
47+
assert solid_db.gid == 1000
48+
4749

4850
def test_solid_config_dir_is_mounted(host):
49-
solid_config = host.file("/opt/solid/config/")
50-
assert solid_config.exists
51-
assert solid_config.is_directory
52-
assert solid_config.uid == 1000
53-
assert solid_config.gid == 1000
51+
solid_config = host.file("/opt/solid/config/")
52+
assert solid_config.exists
53+
assert solid_config.is_directory
54+
assert solid_config.uid == 1000
55+
assert solid_config.gid == 1000
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import time
2+
3+
def wait_for_container(container, message="running on"):
4+
count = 0
5+
while (not message in container.logs()) and (count < 10):
6+
count = count + 1
7+
time.sleep(1)
8+
assert message in container.logs(), 'Expected message not present until timeout. Waited for "%s"' % message

0 commit comments

Comments
 (0)