[PATCH v5 10/11] test: lib/uuid: add unit tests for dynamic UUIDs

Ilias Apalodimas ilias.apalodimas at linaro.org
Thu Jul 25 12:17:43 CEST 2024


On Fri, 19 Jul 2024 at 15:43, Caleb Connolly <caleb.connolly at 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 at 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 at 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 at linaro.org>


More information about the U-Boot mailing list