Files
buildroot/support/testing/tests/package/test_distribution_registry.py
Yann E. MORIN 79a489c683 package/skopeo: bump to 1.20.0
In 1.20.0, skopeo gained a new optional dependency on sqlite, so enable
that when available, and use that in the runtime tests.

Changes since 1.18.0:
    https://github.com/containers/skopeo/releases/tag/v1.19.0
    https://github.com/containers/skopeo/releases/tag/v1.20.0

Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-09-22 20:30:52 +02:00

98 lines
3.3 KiB
Python

import infra.basetest
import os
import time
class TestDistributionRegistry(infra.basetest.BRTest):
config = \
"""
BR2_arm=y
BR2_cortex_a9=y
BR2_ARM_ENABLE_VFP=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_SYSTEM_DHCP="eth0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.202"
BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_DISTRIBUTION_REGISTRY=y
BR2_PACKAGE_SQLITE=y
BR2_PACKAGE_SKOPEO=y
BR2_PACKAGE_HOST_GO_BIN=y
BR2_TARGET_ROOTFS_CPIO=y
# BR2_TARGET_ROOTFS_TAR is not set
"""
def test_run(self):
kernel_file = os.path.join(self.builddir, "images", "zImage")
dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb")
cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
self.emulator.boot(
arch="armv5",
kernel=kernel_file,
kernel_cmdline=[
'console=ttyAMA0',
],
options=[
'-M', 'vexpress-a9',
"-m", "1G",
"-nic", "user,model=lan9118",
"-dtb", dtb_file,
"-initrd", cpio_file,
],
)
self.emulator.login()
# Allow unfettered access to the local registry:
registry_conf = "\\n".join( # \\n to be interpreted by printf in the target
[
'[[registry]]',
'location = "localhost:5000"',
'insecure = true',
],
)
self.assertRunOk("mkdir /etc/containers/registries.conf.d")
self.assertRunOk(
f"printf '{registry_conf}\\n' >/etc/containers/registries.conf.d/localhost.conf",
)
# Check we can at least run
self.assertRunOk("distribution-registry --version", timeout=30)
# Spawn the registry and wait for it to be ready
self.assertRunOk(
"distribution-registry serve /etc/docker/registry/config.yml >/tmp/registry.log 2>&1 &",
)
for i in range(60):
time.sleep(1)
_, ret = self.emulator.run("test -s /tmp/registry.log")
if ret == 0:
time.sleep(2) # Wait just a little tiny bit more...
break
else:
raise SystemError("Cannot start the registry")
# Get a multi-arch image from the Docker hub registry
# Huge timeout because qemu-system-arm has slirp issues
self.assertRunOk(
"skopeo copy -a docker://busybox:1.37.0-glibc oci-archive:busybox-1.37.0-glibc.oci",
timeout=600,
)
# Push the multi-arch image to the local registry
self.assertRunOk(
"skopeo copy -a oci-archive:busybox-1.37.0-glibc.oci docker://localhost:5000/busybox:1.37.0-glibc",
timeout=120,
)
# Pull the image back
self.assertRunOk(
"skopeo copy -a docker://localhost:5000/busybox:1.37.0-glibc oci-archive:busybox-1.37.0-glibc-2.oci",
timeout=120,
)