Add simple test for versioned packages

This commit is contained in:
Andrew Noyes 2021-08-18 22:24:22 +00:00
parent 1bc944e8b9
commit 357c3ca2f8
1 changed files with 56 additions and 5 deletions

View File

@ -81,8 +81,7 @@ class Container:
run(["docker", "rm", "-f", self.uid])
@pytest.fixture(scope="session")
def ubuntu_image_with_fdb() -> Iterator[Optional[Image]]:
def ubuntu_image_with_fdb_helper(versioned: bool) -> Iterator[Optional[Image]]:
"""
Return an image which has just the fdb deb packages installed.
"""
@ -92,7 +91,7 @@ def ubuntu_image_with_fdb() -> Iterator[Optional[Image]]:
debs = [
deb
for deb in glob.glob(os.path.join(builddir, "packages", "*.deb"))
if "versioned" not in deb
if ("versioned" in deb) == versioned
]
if not debs:
yield None
@ -116,7 +115,16 @@ def ubuntu_image_with_fdb() -> Iterator[Optional[Image]]:
@pytest.fixture(scope="session")
def centos_image_with_fdb() -> Iterator[Optional[Image]]:
def ubuntu_image_with_fdb() -> Iterator[Optional[Image]]:
yield from ubuntu_image_with_fdb_helper(versioned=False)
@pytest.fixture(scope="session")
def ubuntu_image_with_fdb_versioned() -> Iterator[Optional[Image]]:
yield from ubuntu_image_with_fdb_helper(versioned=True)
def centos_image_with_fdb_helper(versioned: bool) -> Iterator[Optional[Image]]:
"""
Return an image which has just the fdb rpm packages installed.
"""
@ -126,7 +134,7 @@ def centos_image_with_fdb() -> Iterator[Optional[Image]]:
rpms = [
rpm
for rpm in glob.glob(os.path.join(builddir, "packages", "*.rpm"))
if "versioned" not in rpm
if ("versioned" in rpm) == versioned
]
if not rpms:
yield None
@ -149,9 +157,23 @@ def centos_image_with_fdb() -> Iterator[Optional[Image]]:
image.dispose()
@pytest.fixture(scope="session")
def centos_image_with_fdb() -> Iterator[Optional[Image]]:
yield from centos_image_with_fdb_helper(versioned=False)
@pytest.fixture(scope="session")
def centos_image_with_fdb_versioned() -> Iterator[Optional[Image]]:
yield from centos_image_with_fdb_helper(versioned=True)
def pytest_generate_tests(metafunc):
if "linux_container" in metafunc.fixturenames:
metafunc.parametrize("linux_container", ["ubuntu", "centos"], indirect=True)
elif "linux_container_versioned" in metafunc.fixturenames:
metafunc.parametrize(
"linux_container_versioned", ["ubuntu", "centos"], indirect=True
)
@pytest.fixture()
@ -182,6 +204,31 @@ def linux_container(
container.dispose()
@pytest.fixture()
def linux_container_versioned(
request, ubuntu_image_with_fdb_versioned, centos_image_with_fdb_versioned
) -> Iterator[Container]:
"""
Tests which accept this fixture will be run once for each supported platform.
"""
container: Optional[Container] = None
try:
if request.param == "ubuntu":
if ubuntu_image_with_fdb_versioned is None:
pytest.skip("No debian packages available to test")
container = Container(ubuntu_image_with_fdb_versioned)
elif request.param == "centos":
if centos_image_with_fdb_versioned is None:
pytest.skip("No rpm packages available to test")
container = Container(centos_image_with_fdb_versioned, initd=True)
else:
assert False
yield container
finally:
if container is not None:
container.dispose()
#################### BEGIN ACTUAL TESTS ####################
@ -189,6 +236,10 @@ def test_db_available(linux_container: Container):
linux_container.run(["fdbcli", "--exec", "status"])
def test_versioned_package(linux_container_versioned: Container):
linux_container_versioned.run(["fdbcli", "--exec", "status"])
def test_write(linux_container: Container, snapshot):
linux_container.run(["fdbcli", "--exec", "writemode on; set x y"])
assert snapshot == linux_container.run(["fdbcli", "--exec", "get x"])