
On Fri, 19 Jul 2024 at 15:43, Caleb Connolly caleb.connolly@linaro.org wrote:
Add some basic unit tests to validate that the UUID generation behaves as expected. This matches the implementation in efi_loader for sandbox and a Qualcomm board and should catch any regressions.
Signed-off-by: Caleb Connolly caleb.connolly@linaro.org
test/lib/uuid.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+)
diff --git a/test/lib/uuid.c b/test/lib/uuid.c index 9629d378c329..2c6cfd42ddc3 100644 --- a/test/lib/uuid.c +++ b/test/lib/uuid.c @@ -7,15 +7,20 @@
- Authors:
- Abdellatif El Khlifi abdellatif.elkhlifi@arm.com
*/
+#include <charset.h> #include <u-boot/uuid.h> #include <test/lib.h> #include <test/test.h> #include <test/ut.h>
+#include <efi.h>
/* test UUID */ #define TEST_SVC_UUID "ed32d533-4209-99e6-2d72-cdd998a79cc0" +/* U-Boot default fw image namespace */ +#define DEFAULT_FW_IMAGE_NAMESPACE "8c9f137e-91dc-427b-b2d6-b420faebaf2a"
#define UUID_SIZE 16
/* The UUID binary data (little-endian format) */ @@ -37,4 +42,81 @@ static int lib_test_uuid_to_le(struct unit_test_state *uts) return 0; }
LIB_TEST(lib_test_uuid_to_le, 0);
+struct dynamic_uuid_test_data {
const char *compatible;
const u16 *images[4];
const char *expected_uuids[4];
+};
+static int lib_test_dynamic_uuid_case(struct unit_test_state *uts,
const struct dynamic_uuid_test_data *data)
+{
struct uuid namespace;
int j;
ut_assertok(uuid_str_to_bin(DEFAULT_FW_IMAGE_NAMESPACE, (unsigned char *)&namespace,
UUID_STR_FORMAT_GUID));
for (j = 0; data->images[j]; j++) {
const char *expected_uuid = data->expected_uuids[j];
const u16 *image = data->images[j];
efi_guid_t uuid;
char uuid_str[37];
gen_v5_guid(&namespace, &uuid,
data->compatible, strlen(data->compatible),
image, u16_strlen(image) * sizeof(uint16_t),
NULL);
uuid_bin_to_str((unsigned char *)&uuid, uuid_str, UUID_STR_FORMAT_GUID);
ut_asserteq_str(expected_uuid, uuid_str);
}
return 0;
+}
+static int lib_test_dynamic_uuid(struct unit_test_state *uts) +{
int ret, i;
const struct dynamic_uuid_test_data test_data[] = {
{
.compatible = "sandbox",
.images = {
u"SANDBOX-UBOOT",
u"SANDBOX-UBOOT-ENV",
u"SANDBOX-FIT",
NULL,
},
.expected_uuids = {
"985f2937-7c2e-5e9a-8a5e-8e063312964b",
"9e339473-c2eb-530a-a69b-0cd6bbbed40e",
"46610520-469e-59dc-a8dd-c11832b877ea",
NULL,
}
},
{
.compatible = "qcom,qrb4210-rb2",
.images = {
u"QUALCOMM-UBOOT",
NULL,
},
.expected_uuids = {
"d5021fac-8dd0-5ed7-90c2-763c304aaf86",
NULL,
}
},
};
for (i = 0; i < ARRAY_SIZE(test_data); i++) {
ret = lib_test_dynamic_uuid_case(uts, &test_data[i]);
if (ret)
return ret;
}
return 0;
+}
+LIB_TEST(lib_test_dynamic_uuid, 0);
-- 2.45.2
Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org