Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@

- name: Verify the aarch64 base osimage in registry
ansible.builtin.command:
cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000"
cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000"
delegate_to: "{{ aarch64_build_host }}"
connection: ssh
changed_when: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@

- name: Verify aarch64 compute osimages in registry
ansible.builtin.command:
cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000"
cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000"
delegate_to: "{{ aarch64_build_host }}"
connection: ssh
changed_when: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

- name: Verify the x86_64 base osimage in registry
ansible.builtin.command:
cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000"
cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000"
changed_when: false
register: verify_base_osimage

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@

- name: Verify x86_64 compute osimages in registry
ansible.builtin.command:
cmd: "/usr/local/bin/regctl repo ls {{ oim_node_name }}.{{ domain_name }}:5000"
cmd: "/usr/local/bin/regctl repo ls --limit 500 {{ oim_node_name }}.{{ domain_name }}:5000"
changed_when: false
register: verify_compute_osimages

Expand Down
139 changes: 109 additions & 30 deletions build_stream/core/catalog/tests/test_generate_catalog_id.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.

"""Unit tests for the _generate_human_readable_id function."""
# pylint: disable=wrong-import-position

import unittest
import sys
from pathlib import Path
Expand All @@ -21,61 +24,137 @@

from generate_catalog import _generate_human_readable_id


class TestGenerateHumanReadableId(unittest.TestCase):
"""Test cases for _generate_human_readable_id function."""

def setUp(self):
"""Set up test fixtures before each test method."""
self.used_ids = set()

def test_basic_names(self):
# Should remain unchanged
self.assertEqual(_generate_human_readable_id("apptainer", "rpm", None, self.used_ids), "apptainer")
self.assertEqual(_generate_human_readable_id("device-mapper-multipath", "rpm", None, self.used_ids), "device-mapper-multipath")
"""Test that basic package names remain unchanged."""
self.assertEqual(
_generate_human_readable_id("apptainer", "rpm", None, self.used_ids),
"apptainer"
)
self.assertEqual(
_generate_human_readable_id(
"device-mapper-multipath", "rpm", None, self.used_ids
),
"device-mapper-multipath"
)

def test_version_in_name_exact(self):
# Should strip exact version suffix
self.assertEqual(_generate_human_readable_id("external-snapshotter-v8.4.0", "git", "v8.4.0", self.used_ids), "external-snapshotter")

"""Test stripping exact version suffix."""
self.assertEqual(
_generate_human_readable_id(
"external-snapshotter-v8.4.0", "git", "v8.4.0", self.used_ids
),
"external-snapshotter"
)

def test_version_in_name_v_prefixed(self):
# Should strip if 'v' prefix is in name but not in version
self.assertEqual(_generate_human_readable_id("app-v1.0.0", "rpm", "1.0.0", self.used_ids), "app")
"""Test stripping version with 'v' prefix in name."""
self.assertEqual(
_generate_human_readable_id("app-v1.0.0", "rpm", "1.0.0", self.used_ids),
"app"
)

def test_version_in_name_dots_replaced(self):
# Should strip if dots are replaced by hyphens
self.assertEqual(_generate_human_readable_id("helm-charts-2-16-0", "git", "2.16.0", self.used_ids), "helm-charts")
"""Test stripping version when dots are replaced by hyphens."""
self.assertEqual(
_generate_human_readable_id("helm-charts-2-16-0", "git", "2.16.0", self.used_ids),
"helm-charts"
)

def test_pip_module_format(self):
# PyMySQL==1.1.2 -> PyMySQL
self.assertEqual(_generate_human_readable_id("PyMySQL==1.1.2", "pip_module", None, self.used_ids), "PyMySQL")
"""Test pip module format with == version separator."""
self.assertEqual(
_generate_human_readable_id("PyMySQL==1.1.2", "pip_module", None, self.used_ids),
"PyMySQL"
)

def test_regex_fallback_no_version(self):
# Regex should strip the version even without explicit pkg_version
self.assertEqual(_generate_human_readable_id("calico-v3.31.4", "manifest", None, self.used_ids), "calico")
self.assertEqual(_generate_human_readable_id("cert-manager-v1-10-0", "tarball", None, self.used_ids), "cert-manager")
self.assertEqual(_generate_human_readable_id("helm-v3-20-1-amd64", "tarball", None, self.used_ids), "helm-amd64")
self.assertEqual(_generate_human_readable_id("helm-v3-20-1-chart", "tarball", None, self.used_ids), "helm-chart")
self.assertEqual(_generate_human_readable_id("helm-v3-20-1-anything-suffixed", "tarball", None, self.used_ids), "helm-anything-suffixed")
self.assertEqual(_generate_human_readable_id("metallb-native-v0-15-3", "manifest", None, self.used_ids), "metallb-native")
self.assertEqual(_generate_human_readable_id("strimzi-kafka-operator-helm-3-chart-0-48-0", "tarball", None, self.used_ids), "strimzi-kafka-operator-helm-3-chart")
self.assertEqual(_generate_human_readable_id("victoria-metrics-operator-0-59-3", "tarball", None, self.used_ids), "victoria-metrics-operator")
self.assertEqual(_generate_human_readable_id("python3-PyMySQL-1.1.2", "rpm", None, self.used_ids), "python3-PyMySQL")
self.assertEqual(_generate_human_readable_id("nfs-subdir-external-provisioner-4-0-18", "tarball", None, self.used_ids), "nfs-subdir-external-provisioner")

"""Test regex version stripping without explicit pkg_version."""
self.assertEqual(
_generate_human_readable_id("calico-v3.31.4", "manifest", None, self.used_ids),
"calico"
)
self.assertEqual(
_generate_human_readable_id(
"cert-manager-v1-10-0", "tarball", None, self.used_ids
),
"cert-manager"
)
self.assertEqual(
_generate_human_readable_id("helm-v3-20-1-amd64", "tarball", None, self.used_ids),
"helm-amd64"
)
self.assertEqual(
_generate_human_readable_id("helm-v3-20-1-chart", "tarball", None, self.used_ids),
"helm-chart"
)
self.assertEqual(
_generate_human_readable_id(
"helm-v3-20-1-anything-suffixed", "tarball", None, self.used_ids
),
"helm-anything-suffixed"
)
self.assertEqual(
_generate_human_readable_id(
"metallb-native-v0-15-3", "manifest", None, self.used_ids
),
"metallb-native"
)
self.assertEqual(
_generate_human_readable_id(
"strimzi-kafka-operator-helm-3-chart-1-0-1", "tarball", None,
self.used_ids
),
"strimzi-kafka-operator-helm-3-chart"
)
self.assertEqual(
_generate_human_readable_id(
"victoria-metrics-operator-0-59-3", "tarball", None, self.used_ids
),
"victoria-metrics-operator"
)
self.assertEqual(
_generate_human_readable_id("python3-PyMySQL-1.1.2", "rpm", None,
self.used_ids),
"python3-PyMySQL"
)
self.assertEqual(
_generate_human_readable_id(
"nfs-subdir-external-provisioner-4-0-18", "tarball", None,
self.used_ids
),
"nfs-subdir-external-provisioner"
)

def test_docker_image_without_tag_in_name(self):
# Docker images usually don't have the tag in the name field, just the image path
self.assertEqual(_generate_human_readable_id("docker.io/library/python", "image", "3.12-slim", self.used_ids), "docker.io/library/python")
"""Test docker images where tag is not in the name."""
self.assertEqual(
_generate_human_readable_id(
"docker.io/library/python", "image", "3.12-slim", self.used_ids
),
"docker.io/library/python"
)

def test_collision_handling(self):
# First call gets the base name
"""Test collision handling with _1, _2 suffixes."""
id1 = _generate_human_readable_id("calico", "rpm", None, self.used_ids)
self.assertEqual(id1, "calico")

# Second call with the same base name gets _1
id2 = _generate_human_readable_id("calico-v1.0.0", "tarball", None, self.used_ids)
self.assertEqual(id2, "calico_1")

# Third call gets _2
id3 = _generate_human_readable_id("calico-v2.0.0", "manifest", None, self.used_ids)
self.assertEqual(id3, "calico_2")

self.assertIn("calico", self.used_ids)
self.assertIn("calico_1", self.used_ids)
self.assertIn("calico_2", self.used_ids)
Expand Down
Loading
Loading