diff --git a/.travis.yml b/.travis.yml index 5298ea07..188f41e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ jobs: before_install: sudo apt-get install -y systemd-container yum qemu-kvm script: sudo env "PATH=$PATH" "OSBUILD_TEST_BUILD_ENV=samples/f27-build-from-ubuntu1804.json" python3 -m unittest -v test.test_boot - name: assemblers - before_install: sudo apt-get install -y systemd-container yum tar qemu-utils + before_install: sudo apt-get install -y systemd-container yum tar qemu-utils nbd-client script: sudo env "PATH=$PATH" "OSBUILD_TEST_BUILD_ENV=samples/f27-build-from-ubuntu1804.json" python3 -m unittest -v test.test_assemblers - name: stage-tests before_install: sudo apt-get install -y systemd-container yum diff --git a/test/test_assemblers.py b/test/test_assemblers.py index 470aa53f..b973eb61 100644 --- a/test/test_assemblers.py +++ b/test/test_assemblers.py @@ -7,6 +7,7 @@ import os import subprocess import tempfile import uuid +import time from . import osbuildtest @@ -135,9 +136,17 @@ def nbd_connect(image): r = subprocess.run(["qemu-nbd", "--connect", device, "--read-only", image], check=False).returncode if r == 0: try: + # qemu-nbd doesn't wait for the device to be ready + for _ in range(100): + if subprocess.run(["nbd-client", "--check", device], check=False, stdout=subprocess.DEVNULL).returncode == 0: + break + time.sleep(0.2) + yield device finally: + # qemu-nbd doesn't wait until the device is released. nbd-client does subprocess.run(["qemu-nbd", "--disconnect", device], check=True, stdout=subprocess.DEVNULL) + subprocess.run(["nbd-client", "--disconnect", device], check=False, stdout=subprocess.DEVNULL) break else: raise RuntimeError("no free network block device")