action #176976
Updated by mdati 3 months ago
## Observation
All `BCI 15-SP6 / -SP7 tests` failed like the following:
openQA test in scenario sle-15-SP6-BCI-Updates-x86_64-bci-base_15.6_on_SLES_15-SP6_podman@64bit fails in
[_root_BCI-tests_all_](https://openqa.suse.de/tests/16708878/modules/_root_BCI-tests_all_/steps/12)
## Test suite description
The base test suite is used for job templates defined in YAML documents. It has no settings of its own.
## Reproducible
Fails since (at least) Build [47.20.5_sles15-image](https://openqa.suse.de/tests/16708766)
## Expected result
Last good: [47.20.4_sles15-image](https://openqa.suse.de/tests/16672250) (or more recent)
## Further details
Always latest result in this scenario: [latest](https://openqa.suse.de/tests/latest?arch=x86_64&distri=sle&flavor=BCI-Updates&machine=64bit&test=bci-base_15.6_on_SLES_15-SP6_podman&version=15-SP6)
**Error message**:
```
# Test messages # test_no_downgrade_on_install[container0]
# failure:
AssertionError: Installed crypto-policies = 150600.3.3.1 is newer than what crypto-policies-scripts requires (= 150600.1.9)
assert <Version('150600.3.3.1')> <= <Version('150600.1.9')>
+ where <Version('150600.3.3.1')> = <function parse at 0x7f91649b7e20>('150600.3.3.1')
+ where <function parse at 0x7f91649b7e20> = <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'>.parse
+ where <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'> = packaging.version
+ and <Version('150600.1.9')> = <function parse at 0x7f91649b7e20>('150600.1.9')
+ where <function parse at 0x7f91649b7e20> = <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'>.parse
+ where <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'> = packaging.version
container = ContainerData(image_url_or_id='registry.suse.de/suse/sle-15-sp6/update/cr/totest/images/bci/bci-base:15.6', container_...tainerfile='', image_format=None, add_build_tags=[]), forwarded_ports=[], _container_runtime=PodmanRuntime(marks=None))
@pytest.mark.skipif(
OS_VERSION not in ALLOWED_BCI_REPO_OS_VERSIONS,
reason="LTSS containers are known to be non-functional with BCI_repo ",
)
@pytest.mark.parametrize(
"container", _CONTAINERS_WITH_VOLUME_MOUNT, indirect=True
)
def test_no_downgrade_on_install(container: ContainerData) -> None:
"""Check that we can install any additional package in the container.
Check that installing any additional package would not cause a downgrade
of any package already installed in the container as that would throw
a question to the user and break the builds.
"""
conn = container.connection
conn.run_expect([0], "timeout 2m zypper ref && zypper -n in libsolv-tools")
conn.check_output(
"dumpsolv -j /var/cache/zypp/solv/@System/solv > /solv/system"
)
conn.check_output(
f"dumpsolv -j /var/cache/zypp/solv/{BCI_REPO_NAME}/solv > /solv/bci"
)
# sanity check
assert container.container.volume_mounts
solv_mount = container.container.volume_mounts[-1]
assert isinstance(solv_mount, BindMount) and solv_mount.host_path
solv_path = pathlib.Path(solv_mount.host_path)
with open(solv_path / "system", "r", encoding="utf8") as system_solv_f:
system_solv = json.load(system_solv_f)
with open(solv_path / "bci", "r", encoding="utf8") as bci_solv_f:
bci_solv = json.load(bci_solv_f)
installed_pkgs = {
solvable["solvable:name"]: solvable["solvable:evr"]
for solvable in system_solv["repositories"][0]["solvables"]
}
bci_pkgs = {}
for solvable in bci_solv["repositories"][0]["solvables"]:
bci_pkgs[solvable["solvable:name"]] = solvable["solvable:evr"]
if solvable["solvable:name"] in installed_pkgs:
continue
for req in solvable.get("solvable:requires", ()):
# Skip boolean dependencies or unversioned ones
if "(" in req or " = " not in req:
continue
name, _, version = req.partition(" = ")
if name in installed_pkgs:
installed_version, _, installed_release = installed_pkgs[
name
].partition("-")
version, _, release = version.partition("-")
if installed_version == version and release:
> assert packaging.version.parse(
installed_release
) <= packaging.version.parse(release), (
f"Installed {name} = {installed_release} is newer than "
f"what {solvable['solvable:name']} requires (= {release})"
)
E AssertionError: Installed crypto-policies = 150600.3.3.1 is newer than what crypto-policies-scripts requires (= 150600.1.9)
E assert <Version('150600.3.3.1')> <= <Version('150600.1.9')>
E + where <Version('150600.3.3.1')> = <function parse at 0x7f91649b7e20>('150600.3.3.1')
E + where <function parse at 0x7f91649b7e20> = <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'>.parse
E + where <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'> = packaging.version
E + and <Version('150600.1.9')> = <function parse at 0x7f91649b7e20>('150600.1.9')
E + where <function parse at 0x7f91649b7e20> = <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'>.parse
E + where <module 'packaging.version' from '/root/BCI-tests/.tox/all/lib/python3.11/site-packages/packaging/version.py'> = packaging.version
tests/test_all.py:312: AssertionError
```
Back