public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Sean Anderson <seanga2@gmail.com>
To: u-boot@lists.denx.de, Tom Rini <trini@konsulko.com>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Harald Seiler <hws@denx.de>, Simon Glass <sjg@chromium.org>,
	Sean Anderson <seanga2@gmail.com>
Subject: [PATCH 18/26] test: spl: Split tests up and use some configs
Date: Wed, 11 Oct 2023 21:56:18 -0400	[thread overview]
Message-ID: <20231012015626.3487451-19-seanga2@gmail.com> (raw)
In-Reply-To: <20231012015626.3487451-1-seanga2@gmail.com>

In order to make adding new spl unit tests easier, especially when they may
have many dependencies, add some Kconfigs for the existing image test.
Split it into the parts which are generic (such as callbacks) and the
test-specific parts.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
---

 test/Kconfig             |  1 +
 test/Makefile            |  5 +--
 test/image/Kconfig       | 20 ++++++++++
 test/image/Makefile      |  3 +-
 test/image/spl_load.c    | 76 +------------------------------------
 test/image/spl_load_os.c | 81 ++++++++++++++++++++++++++++++++++++++++
 6 files changed, 107 insertions(+), 79 deletions(-)
 create mode 100644 test/image/Kconfig
 create mode 100644 test/image/spl_load_os.c

diff --git a/test/Kconfig b/test/Kconfig
index 830245b6f9a..ca648d23376 100644
--- a/test/Kconfig
+++ b/test/Kconfig
@@ -101,6 +101,7 @@ config UT_UNICODE
 
 source "test/dm/Kconfig"
 source "test/env/Kconfig"
+source "test/image/Kconfig"
 source "test/lib/Kconfig"
 source "test/optee/Kconfig"
 source "test/overlay/Kconfig"
diff --git a/test/Makefile b/test/Makefile
index 178773647a8..8e1fed2c28b 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -3,9 +3,6 @@
 # (C) Copyright 2012 The Chromium Authors
 
 obj-y += test-main.o
-ifdef CONFIG_SPL_LOAD_FIT
-obj-$(CONFIG_SANDBOX) += image/
-endif
 
 ifneq ($(CONFIG_$(SPL_)BLOBLIST),)
 obj-$(CONFIG_$(SPL_)CMDLINE) += bloblist.o
@@ -30,4 +27,6 @@ obj-$(CONFIG_UNIT_TEST) += boot/
 obj-$(CONFIG_UNIT_TEST) += common/
 obj-y += log/
 obj-$(CONFIG_$(SPL_)UT_UNICODE) += unicode_ut.o
+else
+obj-$(CONFIG_SPL_UT_LOAD) += image/
 endif
diff --git a/test/image/Kconfig b/test/image/Kconfig
new file mode 100644
index 00000000000..70ffe0ff276
--- /dev/null
+++ b/test/image/Kconfig
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (C) 2023 Sean Anderson <seanga2@gmail.com>
+
+config SPL_UT_LOAD
+	bool "Unit tests for SPL load methods"
+	depends on SPL_UNIT_TEST
+	default y if SANDBOX
+	help
+	  Test various SPL load methods.
+
+if SPL_UT_LOAD
+
+config SPL_UT_LOAD_OS
+	bool "Test loading from the host OS"
+	depends on SANDBOX && SPL_LOAD_FIT
+	default y
+	help
+	  Smoke test to ensure that loading U-boot works in sandbox.
+
+endif
diff --git a/test/image/Makefile b/test/image/Makefile
index c4039df707f..1f62d54453c 100644
--- a/test/image/Makefile
+++ b/test/image/Makefile
@@ -2,4 +2,5 @@
 #
 # Copyright 2021 Google LLC
 
-obj-$(CONFIG_SPL_BUILD) += spl_load.o
+obj-$(CONFIG_SPL_UT_LOAD) += spl_load.o
+obj-$(CONFIG_SPL_UT_LOAD_OS) += spl_load_os.o
diff --git a/test/image/spl_load.c b/test/image/spl_load.c
index 4e27ff460ab..1a57bf846d2 100644
--- a/test/image/spl_load.c
+++ b/test/image/spl_load.c
@@ -1,48 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
- * Copyright 2021 Google LLC
- * Written by Simon Glass <sjg@chromium.org>
+ * Copyright (C) 2023 Sean Anderson <seanga2@gmail.com>
  */
 
 #include <common.h>
-#include <image.h>
 #include <mapmem.h>
-#include <os.h>
-#include <spl.h>
-#include <test/ut.h>
-
-/* Declare a new SPL test */
-#define SPL_TEST(_name, _flags)		UNIT_TEST(_name, _flags, spl_test)
-
-/* Context used for this test */
-struct text_ctx {
-	int fd;
-};
-
-static ulong read_fit_image(struct spl_load_info *load, ulong sector,
-			    ulong count, void *buf)
-{
-	struct text_ctx *text_ctx = load->priv;
-	off_t offset, ret;
-	ssize_t res;
-
-	offset = sector * load->bl_len;
-	ret = os_lseek(text_ctx->fd, offset, OS_SEEK_SET);
-	if (ret != offset) {
-		printf("Failed to seek to %zx, got %zx (errno=%d)\n", offset,
-		       ret, errno);
-		return 0;
-	}
-
-	res = os_read(text_ctx->fd, buf, count * load->bl_len);
-	if (res == -1) {
-		printf("Failed to read %lx bytes, got %ld (errno=%d)\n",
-		       count * load->bl_len, res, errno);
-		return 0;
-	}
-
-	return count;
-}
 
 int board_fit_config_name_match(const char *name)
 {
@@ -53,39 +15,3 @@ struct legacy_img_hdr *spl_get_load_buffer(ssize_t offset, size_t size)
 {
 	return map_sysmem(0x100000, 0);
 }
-
-static int spl_test_load(struct unit_test_state *uts)
-{
-	struct spl_image_info image;
-	struct legacy_img_hdr *header;
-	struct text_ctx text_ctx;
-	struct spl_load_info load;
-	char fname[256];
-	int ret;
-	int fd;
-
-	memset(&load, '\0', sizeof(load));
-	load.bl_len = 512;
-	load.read = read_fit_image;
-
-	ret = sandbox_find_next_phase(fname, sizeof(fname), true);
-	if (ret) {
-		printf("(%s not found, error %d)\n", fname, ret);
-		return ret;
-	}
-	load.filename = fname;
-
-	header = spl_get_load_buffer(-sizeof(*header), sizeof(*header));
-
-	fd = os_open(fname, OS_O_RDONLY);
-	ut_assert(fd >= 0);
-	ut_asserteq(512, os_read(fd, header, 512));
-	text_ctx.fd = fd;
-
-	load.priv = &text_ctx;
-
-	ut_assertok(spl_load_simple_fit(&image, &load, 0, header));
-
-	return 0;
-}
-SPL_TEST(spl_test_load, 0);
diff --git a/test/image/spl_load_os.c b/test/image/spl_load_os.c
new file mode 100644
index 00000000000..06daa3700b8
--- /dev/null
+++ b/test/image/spl_load_os.c
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <image.h>
+#include <mapmem.h>
+#include <os.h>
+#include <spl.h>
+#include <test/ut.h>
+
+/* Declare a new SPL test */
+#define SPL_TEST(_name, _flags)		UNIT_TEST(_name, _flags, spl_test)
+
+/* Context used for this test */
+struct text_ctx {
+	int fd;
+};
+
+static ulong read_fit_image(struct spl_load_info *load, ulong sector,
+			    ulong count, void *buf)
+{
+	struct text_ctx *text_ctx = load->priv;
+	off_t offset, ret;
+	ssize_t res;
+
+	offset = sector * load->bl_len;
+	ret = os_lseek(text_ctx->fd, offset, OS_SEEK_SET);
+	if (ret != offset) {
+		printf("Failed to seek to %zx, got %zx (errno=%d)\n", offset,
+		       ret, errno);
+		return 0;
+	}
+
+	res = os_read(text_ctx->fd, buf, count * load->bl_len);
+	if (res == -1) {
+		printf("Failed to read %lx bytes, got %ld (errno=%d)\n",
+		       count * load->bl_len, res, errno);
+		return 0;
+	}
+
+	return count;
+}
+
+static int spl_test_load(struct unit_test_state *uts)
+{
+	struct spl_image_info image;
+	struct legacy_img_hdr *header;
+	struct text_ctx text_ctx;
+	struct spl_load_info load;
+	char fname[256];
+	int ret;
+	int fd;
+
+	memset(&load, '\0', sizeof(load));
+	load.bl_len = 512;
+	load.read = read_fit_image;
+
+	ret = sandbox_find_next_phase(fname, sizeof(fname), true);
+	if (ret) {
+		printf("(%s not found, error %d)\n", fname, ret);
+		return ret;
+	}
+	load.filename = fname;
+
+	header = spl_get_load_buffer(-sizeof(*header), sizeof(*header));
+
+	fd = os_open(fname, OS_O_RDONLY);
+	ut_assert(fd >= 0);
+	ut_asserteq(512, os_read(fd, header, 512));
+	text_ctx.fd = fd;
+
+	load.priv = &text_ctx;
+
+	ut_assertok(spl_load_simple_fit(&image, &load, 0, header));
+
+	return 0;
+}
+SPL_TEST(spl_test_load, 0);
-- 
2.37.1


  parent reply	other threads:[~2023-10-12  2:34 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-12  1:56 [PATCH 00/26] test: spl: Test some load methods Sean Anderson
2023-10-12  1:56 ` [PATCH 01/26] spl: legacy: Fix referencing _image_binary_end Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:30     ` Sean Anderson
2023-10-12 15:28       ` Simon Glass
2023-10-12  1:56 ` [PATCH 02/26] spl: nor: Don't allocate header on stack Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  7:26     ` Michael Nazzareno Trimarchi
2023-10-12  1:56 ` [PATCH 03/26] spl: fit: Fix entry point for SPL_LOAD_FIT_FULL Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:28     ` Sean Anderson
2023-10-12 15:20       ` Tom Rini
2023-10-12 15:28       ` Simon Glass
2023-10-12  1:56 ` [PATCH 04/26] arm: imx: Fix i.MX8 container load address Sean Anderson
2023-10-12  1:56 ` [PATCH 05/26] arm: imx: Add newlines after error messages Sean Anderson
2023-10-12  7:33   ` Heinrich Schuchardt
2023-10-12  1:56 ` [PATCH 06/26] arm: imx: Add function to validate i.MX8 containers Sean Anderson
2023-10-12  1:56 ` [PATCH 07/26] arm: imx: Check header before calling spl_load_imx_container Sean Anderson
2023-10-12  7:44   ` Heinrich Schuchardt
2023-10-13  0:48     ` Sean Anderson
2023-10-12 16:40   ` Tom Rini
2023-10-13  1:39     ` Sean Anderson
2023-10-13 12:55       ` Tom Rini
2023-10-12  1:56 ` [PATCH 08/26] Move i.MX8 container image loading support to common/spl Sean Anderson
2023-10-12  1:56 ` [PATCH 09/26] spl: Allow enabling SPL_OF_REAL and SPL_OF_PLATDATA at the same time Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:22     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 10/26] lib: acpi: Fix linking SPL when ACPIGEN is enabled Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  1:56 ` [PATCH 11/26] fs: ext4: Fix building ext4 in SPL if write " Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  1:56 ` [PATCH 12/26] fs: Compile in sandbox filesystem in SPL if it " Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  6:39   ` Heinrich Schuchardt
2023-10-12 14:15     ` Sean Anderson
2023-10-12 14:50       ` Tom Rini
2023-10-12 14:52       ` Tom Rini
2023-10-12  1:56 ` [PATCH 13/26] net: Fix compiling SPL when fastboot " Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  6:52   ` Heinrich Schuchardt
2023-10-12 14:16     ` Sean Anderson
2023-10-12 14:52   ` Tom Rini
2023-10-12  1:56 ` [PATCH 14/26] net: bootp: Move port numbers to header Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  6:53   ` Heinrich Schuchardt
2023-10-12  1:56 ` [PATCH 15/26] net: bootp: Fall back to BOOTP from DHCP when unit testing Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  7:16   ` Heinrich Schuchardt
2023-10-12 14:18     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 16/26] spl: Don't cache devices when UNIT_TEST is enabled Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:18     ` Sean Anderson
2023-10-12  7:23   ` Heinrich Schuchardt
2023-10-12 14:19     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 17/26] spl: Use map_sysmem where appropriate Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  1:56 ` Sean Anderson [this message]
2023-10-12  3:41   ` [PATCH 18/26] test: spl: Split tests up and use some configs Simon Glass
2023-10-12  1:56 ` [PATCH 19/26] test: spl: Fix spl_test_load not failing if fname doesn't exist Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  1:56 ` [PATCH 20/26] test: spl: Add functions to create images Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-13 19:44   ` [SPAM] " Xavier Drudis Ferran
2023-10-14 14:37     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 21/26] test: spl: Add functions to create filesystems Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:11     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 22/26] test: spl: Add a test for spl_blk_load_image Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  1:56 ` [PATCH 23/26] test: spl: Add a test for the MMC load method Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:12     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 24/26] test: spl: Add a test for the NET " Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:11     ` Sean Anderson
2023-10-12  1:56 ` [PATCH 25/26] test: spl: Add a test for the NOR " Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  4:16     ` Sean Anderson
2023-10-12 15:28       ` Simon Glass
2023-10-12  1:56 ` [PATCH 26/26] test: spl: Add a test for the SPI " Sean Anderson
2023-10-12  3:41   ` Simon Glass
2023-10-12  1:59 ` [PATCH 00/26] test: spl: Test some load methods Sean Anderson
2023-10-12  3:41 ` Simon Glass

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=20231012015626.3487451-19-seanga2@gmail.com \
    --to=seanga2@gmail.com \
    --cc=hws@denx.de \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox