All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Fam Zheng" <fam@euphon.net>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: [PATCH  v1 06/15] tests/docker: add a docker-exec-copy-test
Date: Tue,  2 Feb 2021 13:39:51 +0000	[thread overview]
Message-ID: <20210202134001.25738-7-alex.bennee@linaro.org> (raw)
In-Reply-To: <20210202134001.25738-1-alex.bennee@linaro.org>

This provides test machinery for checking the QEMU copying logic works
properly. It takes considerably less time to run than starting a
debootstrap only for it to fail later. I considered adding a remove
command to docker.py but figured that might be gold plating given the
relative size of the containers compared to the ones with actual stuff
in them.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 tests/docker/Makefile.include         | 20 +++++++++++++++++++-
 tests/docker/docker.py                |  7 ++++++-
 tests/docker/dockerfiles/empty.docker |  8 ++++++++
 3 files changed, 33 insertions(+), 2 deletions(-)
 create mode 100644 tests/docker/dockerfiles/empty.docker

diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index a5c1e4a615..93b29ad823 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -11,7 +11,7 @@ HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m))
 DOCKER_SUFFIX := .docker
 DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
 # we don't run tests on intermediate images (used as base by another image)
-DOCKER_PARTIAL_IMAGES := debian10 debian11 debian-bootstrap
+DOCKER_PARTIAL_IMAGES := debian10 debian11 debian-bootstrap empty
 DOCKER_IMAGES := $(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker))))
 DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES))
 # Use a global constant ccache directory to speed up repetitive builds
@@ -92,6 +92,24 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
 			{ echo "You will need to build $(EXECUTABLE)"; exit 1;},\
 			"CHECK", "debian-$* exists"))
 
+# These are test targets
+USER_TCG_TARGETS=$(patsubst %-linux-user,qemu-%,$(filter %-linux-user,$(TARGET_DIRS)))
+EXEC_COPY_TESTS=$(patsubst %,docker-exec-copy-test-%, $(USER_TCG_TARGETS))
+
+$(EXEC_COPY_TESTS): docker-exec-copy-test-%: $(DOCKER_FILES_DIR)/empty.docker
+	$(call quiet-command,							\
+		$(DOCKER_SCRIPT) build -t qemu/exec-copy-test-$* -f $< 		\
+			$(if $V,,--quiet) --no-cache 				\
+			--include-executable=$*					\
+			--skip-binfmt,						\
+			"TEST","copy $* to container")
+	$(call quiet-command,							\
+		$(DOCKER_SCRIPT) run qemu/exec-copy-test-$* 			\
+			/$* -version > tests/docker-exec-copy-test-$*.out,	\
+			"TEST","check $* works in container")
+
+docker-exec-copy-test: $(EXEC_COPY_TESTS)
+
 endif
 
 # Enforce dependencies for composite images
diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 39da3fefcf..d28df4c140 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -438,6 +438,9 @@ class BuildCommand(SubCommand):
                             help="""Specify a binary that will be copied to the
                             container together with all its dependent
                             libraries""")
+        parser.add_argument("--skip-binfmt",
+                            action="store_true",
+                            help="""Skip binfmt entry check (used for testing)""")
         parser.add_argument("--extra-files", nargs='*',
                             help="""Specify files that will be copied in the
                             Docker image, fulfilling the ADD directive from the
@@ -466,7 +469,9 @@ class BuildCommand(SubCommand):
             docker_dir = tempfile.mkdtemp(prefix="docker_build")
 
             # Validate binfmt_misc will work
-            if args.include_executable:
+            if args.skip_binfmt:
+                qpath = args.include_executable
+            elif args.include_executable:
                 qpath, enabled = _check_binfmt_misc(args.include_executable)
                 if not enabled:
                     return 1
diff --git a/tests/docker/dockerfiles/empty.docker b/tests/docker/dockerfiles/empty.docker
new file mode 100644
index 0000000000..9ba980f1a8
--- /dev/null
+++ b/tests/docker/dockerfiles/empty.docker
@@ -0,0 +1,8 @@
+#
+# Empty Dockerfile
+#
+
+FROM scratch
+
+# Add everything from the context into the container
+ADD . /
-- 
2.20.1



  parent reply	other threads:[~2021-02-02 13:48 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-02 13:39 [PATCH v1 00/15] testing/gdbstub/docs pre-PR Alex Bennée
2021-02-02 13:39 ` [PATCH v1 01/15] tests/docker: Fix _get_so_libs() for docker-binfmt-image Alex Bennée
2021-02-02 13:39 ` [PATCH v1 02/15] tests/docker: Fix typo in help message Alex Bennée
2021-02-02 13:39 ` [PATCH v1 03/15] tests/docker: make _copy_with_mkdir accept missing files Alex Bennée
2021-02-02 13:39 ` [PATCH v1 04/15] tests/docker: preserve original name when copying libs Alex Bennée
2021-02-02 13:39 ` [PATCH v1 05/15] tests/docker: alias docker-help target for consistency Alex Bennée
2021-02-02 14:19   ` Philippe Mathieu-Daudé
2021-02-02 13:39 ` Alex Bennée [this message]
2021-02-02 13:39 ` [PATCH v1 07/15] configure: make version_ge more tolerant of shady version input Alex Bennée
2021-02-02 14:17   ` Eric Blake
2021-02-02 13:39 ` [PATCH v1 08/15] configure: bump the minimum gdb version for check-tcg to 9.1 Alex Bennée
2021-02-02 13:39 ` [PATCH v1 09/15] tests/tcg: don't silently skip the gdb tests Alex Bennée
2021-02-02 13:39 ` [PATCH v1 10/15] gdbstub: Fix handle_query_xfer_auxv Alex Bennée
2021-02-02 13:39 ` [PATCH v1 11/15] tests/tcg: Replace /bin/true by true (required on macOS) Alex Bennée
2021-02-02 14:23   ` Philippe Mathieu-Daudé
2021-02-02 14:24     ` Philippe Mathieu-Daudé
2021-02-02 18:34       ` Alex Bennée
2021-02-02 21:14       ` Alex Bennée
2021-02-02 13:39 ` [PATCH v1 12/15] scripts/mtest2make.py: export all-%s-targets variable and use it Alex Bennée
2021-02-02 13:39 ` [PATCH v1 13/15] tests/Makefile.include: don't use TARGET_DIRS for check-tcg Alex Bennée
2021-02-02 13:39 ` [PATCH v1 14/15] docs/system: document an example vexpress-a15 invocation Alex Bennée
2021-02-02 13:40 ` [PATCH v1 15/15] docs/system: document an example booting the versatilepb machine Alex Bennée

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210202134001.25738-7-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=fam@euphon.net \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.