xref: /OK3568_Linux_fs/buildroot/support/testing/tests/fs/test_oci.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunimport os
2*4882a593Smuzhiyunimport shutil
3*4882a593Smuzhiyunimport infra.basetest
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunclass TestOci(infra.basetest.BRTest):
7*4882a593Smuzhiyun    config = \
8*4882a593Smuzhiyun        """
9*4882a593Smuzhiyun        BR2_aarch64=y
10*4882a593Smuzhiyun        BR2_TOOLCHAIN_EXTERNAL=y
11*4882a593Smuzhiyun        BR2_LINUX_KERNEL=y
12*4882a593Smuzhiyun        BR2_LINUX_KERNEL_CUSTOM_VERSION=y
13*4882a593Smuzhiyun        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.61"
14*4882a593Smuzhiyun        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
15*4882a593Smuzhiyun        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
16*4882a593Smuzhiyun        BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
17*4882a593Smuzhiyun        BR2_PACKAGE_CGROUPFS_MOUNT=y
18*4882a593Smuzhiyun        BR2_PACKAGE_CONTAINERD=y
19*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_EXT2=y
20*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_EXT2_SIZE="600M"
21*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_OCI=y
22*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_OCI_ENTRYPOINT="df"
23*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS="-h"
24*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_OCI_ARCHIVE=y
25*4882a593Smuzhiyun        # BR2_TARGET_ROOTFS_TAR is not set
26*4882a593Smuzhiyun        """
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun    def login(self):
29*4882a593Smuzhiyun        rootfs = os.path.join(self.builddir, "images", "rootfs.ext2")
30*4882a593Smuzhiyun        kern = os.path.join(self.builddir, "images", "Image")
31*4882a593Smuzhiyun        self.emulator.boot(arch="aarch64",
32*4882a593Smuzhiyun                           kernel=kern,
33*4882a593Smuzhiyun                           kernel_cmdline=["root=/dev/vda", "console=ttyAMA0"],
34*4882a593Smuzhiyun                           options=["-M", "virt",
35*4882a593Smuzhiyun                                    "-cpu", "cortex-a57",
36*4882a593Smuzhiyun                                    "-m", "512M",
37*4882a593Smuzhiyun                                    "-drive", "file={},format=raw,if=virtio".format(rootfs)])
38*4882a593Smuzhiyun        self.emulator.login()
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun    def place_test_oci(self):
41*4882a593Smuzhiyun        shutil.copy(os.path.join(self.builddir, 'images', 'rootfs-oci-latest-arm64-linux.oci-image.tar'),
42*4882a593Smuzhiyun                    os.path.join(self.builddir, 'target', 'oci.tar'))
43*4882a593Smuzhiyun        # rebuild to make sure oci.tar ends up in rootfs.ext2
44*4882a593Smuzhiyun        self.b.build()
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun    def test_run(self):
47*4882a593Smuzhiyun        self.place_test_oci()
48*4882a593Smuzhiyun        self.login()
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun        cmd = "containerd &"
51*4882a593Smuzhiyun        self.assertRunOk(cmd)
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun        cmd = "ctr image import --base-name buildroot-test /oci.tar"
54*4882a593Smuzhiyun        self.assertRunOk(cmd, timeout=120)
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun        cmd = "ctr run --rm --tty buildroot-test:latest v1"
57*4882a593Smuzhiyun        self.assertRunOk(cmd, timeout=120)
58