From 345a294b5e88a538fc5f893dbbd7bec0e0cd1ac6 Mon Sep 17 00:00:00 2001 From: Justin Cormack Date: Fri, 19 May 2017 15:41:13 +0100 Subject: [PATCH] Add a test case for the sysctl package Signed-off-by: Justin Cormack --- .../040_packages/000_sysctl/test-sysctl.yml | 36 +++++++++++++++++++ test/cases/040_packages/000_sysctl/test.sh | 23 ++++++++++++ test/cases/040_packages/group.sh | 36 +++++++++++++++++++ test/pkg/sysctl/Dockerfile | 3 ++ test/pkg/sysctl/Makefile | 29 +++++++++++++++ test/pkg/sysctl/check.sh | 11 ++++++ 6 files changed, 138 insertions(+) create mode 100644 test/cases/040_packages/000_sysctl/test-sysctl.yml create mode 100644 test/cases/040_packages/000_sysctl/test.sh create mode 100644 test/cases/040_packages/group.sh create mode 100644 test/pkg/sysctl/Dockerfile create mode 100644 test/pkg/sysctl/Makefile create mode 100755 test/pkg/sysctl/check.sh diff --git a/test/cases/040_packages/000_sysctl/test-sysctl.yml b/test/cases/040_packages/000_sysctl/test-sysctl.yml new file mode 100644 index 000000000..10d20fc44 --- /dev/null +++ b/test/cases/040_packages/000_sysctl/test-sysctl.yml @@ -0,0 +1,36 @@ +kernel: + image: "linuxkit/kernel:4.9.x" + cmdline: "console=ttyS0 page_poison=1" +init: + - linuxkit/init:cbd7ae748f0a082516501a3e914fa0c924ee941e + - linuxkit/runc:24dfe632ed3ff53a026ee3fac046fd544434e2d6 + - linuxkit/containerd:1c71f95fa36040ea7e987deb98a7a2a363853f01 + - linuxkit/ca-certificates:4e9a83e890e6477dcd25029fc4f1ced61d0642f4 +onboot: + - name: sysctl + image: "linuxkit/sysctl:2cf2f9d5b4d314ba1bfc22b2fe931924af666d8c" + net: host + pid: host + ipc: host + capabilities: + - CAP_SYS_ADMIN + readonly: true + - name: test + image: "linuxkit/test-sysctl:37315a58ec0c18a28be7e2770feb3bf38384492d" + net: host + pid: host + - name: poweroff + image: "linuxkit/poweroff:961412b8ef5c5285de0d40ec076701d955eaa084" + net: host + pid: host + command: ["/bin/sh", "/poweroff.sh", "3"] + capabilities: + - CAP_SYS_BOOT + readonly: true +trust: + image: + - linuxkit/kernel + - linuxkit/binfmt + - linuxkit/rngd +outputs: + - format: kernel+initrd diff --git a/test/cases/040_packages/000_sysctl/test.sh b/test/cases/040_packages/000_sysctl/test.sh new file mode 100644 index 000000000..30d0ed43a --- /dev/null +++ b/test/cases/040_packages/000_sysctl/test.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# SUMMARY: Check that the sysctl config works +# LABELS: +# REPEAT: +# AUTHOR: Justin Cormack + +set -e + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +clean_up() { + find . -iname "test-sysctl*" -not -iname "*.yml" -exec rm -rf {} \; +} +trap clean_up EXIT + +# Test code goes here +moby build test-sysctl +RESULT="$(linuxkit run qemu test-sysctl)" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/040_packages/group.sh b/test/cases/040_packages/group.sh new file mode 100644 index 000000000..542439da7 --- /dev/null +++ b/test/cases/040_packages/group.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# SUMMARY: LinuxKit package tests +# LABELS: +# For the top level group.sh also specify a 'NAME:' comment + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +#. "${RT_PROJECT_ROOT}/_lib/lib.sh" + + +group_init() { + # Group initialisation code goes here + return 0 +} + +group_deinit() { + # Group de-initialisation code goes here + return 0 +} + +CMD=$1 +case $CMD in +init) + group_init + res=$? + ;; +deinit) + group_deinit + res=$? + ;; +*) + res=1 + ;; +esac + +exit $res diff --git a/test/pkg/sysctl/Dockerfile b/test/pkg/sysctl/Dockerfile new file mode 100644 index 000000000..a95ccd109 --- /dev/null +++ b/test/pkg/sysctl/Dockerfile @@ -0,0 +1,3 @@ +FROM alpine:edge +ADD . ./ +ENTRYPOINT ["/bin/sh", "/check.sh"] diff --git a/test/pkg/sysctl/Makefile b/test/pkg/sysctl/Makefile new file mode 100644 index 000000000..aa7e8aa90 --- /dev/null +++ b/test/pkg/sysctl/Makefile @@ -0,0 +1,29 @@ +.PHONY: tag push + +BASE=alpine:3.5 +IMAGE=test-sysctl + +default: push + +hash: Dockerfile check.sh + DOCKER_CONTENT_TRUST=1 docker pull $(BASE) + tar cf - $^ | docker build --no-cache -t $(IMAGE):build - + docker run --rm --entrypoint=/bin/sh $(IMAGE):build -c "cat $^ /lib/apk/db/installed | sha1sum" | sed 's/ .*//' > hash + +push: hash + docker pull linuxkit/$(IMAGE):$(shell cat hash) || \ + (docker tag $(IMAGE):build linuxkit/$(IMAGE):$(shell cat hash) && \ + docker push linuxkit/$(IMAGE):$(shell cat hash)) + docker rmi $(IMAGE):build + rm -f hash + +tag: hash + docker pull linuxkit/$(IMAGE):$(shell cat hash) || \ + docker tag $(IMAGE):build linuxkit/$(IMAGE):$(shell cat hash) + docker rmi $(IMAGE):build + rm -f hash + +clean: + rm -f hash + +.DELETE_ON_ERROR: diff --git a/test/pkg/sysctl/check.sh b/test/pkg/sysctl/check.sh new file mode 100755 index 000000000..28704978f --- /dev/null +++ b/test/pkg/sysctl/check.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +function failed { + printf "sysctl test suite FAILED\n" >&1 + exit 1 +} + +# this is a non default value, so will fail if sysctl failed +[ "$(sysctl -n fs.inotify.max_user_watches)" -eq 524288 ] || failed + +printf "Sysctl test suite PASSED\n" >&1