[PATCH v5 11/11] test: lib/uuid: add tests for UUID version/variant bits
Simon Glass
sjg at chromium.org
Wed Jul 31 16:38:53 CEST 2024
Hi Caleb,
On Fri, 19 Jul 2024 at 06:43, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>
> Add a test to check the version/variant bits of v4 and v5 UUIDs.
>
> Signed-off-by: Caleb Connolly <caleb.connolly at linaro.org>
> ---
> test/lib/uuid.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/test/lib/uuid.c b/test/lib/uuid.c
> index 2c6cfd42ddc3..63d36e120623 100644
> --- a/test/lib/uuid.c
> +++ b/test/lib/uuid.c
> @@ -43,8 +43,44 @@ static int lib_test_uuid_to_le(struct unit_test_state *uts)
> }
>
> LIB_TEST(lib_test_uuid_to_le, 0);
>
> +/* Test UUID attribute bits (version, variant) */
> +static int lib_test_uuid_bits(struct unit_test_state *uts)
> +{
> + unsigned char uuid[16];
> + efi_guid_t guid;
> + int i;
> +
> + /*
> + * Reduce the chance of a randomly generated UUID disguising
> + * a regression by testing multiple times.
> + */
> + for (i = 0; i < 5; i++) {
> + /* Test UUID v4 */
> + gen_rand_uuid((unsigned char *)&uuid);
> +
> + printf("v4 UUID: %pUb\n", (efi_guid_t *)uuid);
> +
> + ut_assert((uuid[6] & 0xf0) == 0x40); /* version 4 */
ut_asserteq(0x40, uuid[6] & 0xf0); /* version 4 */
save below
> + ut_assert((uuid[8] & UUID_VARIANT_MASK) == (UUID_VARIANT << UUID_VARIANT_SHIFT)); /* variant 1 */
check line length
> +
> + /* Test v5, use the v4 UUID as the namespace */
> + gen_v5_guid((struct uuid *)uuid,
> + &guid, "test", 4, NULL);
> +
> + printf("v5 GUID: %pUl\n", (efi_guid_t *)uuid);
> +
> + /* This is a GUID so bits 6 and 7 are swapped (little endian) */
> + ut_assert((guid.b[7] & 0xf0) == 0x50); /* version 5 */
> + ut_assert((guid.b[8] & UUID_VARIANT_MASK) == (UUID_VARIANT << UUID_VARIANT_SHIFT)); /* variant 1 */
> + }
> +
> + return 0;
> +}
> +
> +LIB_TEST(lib_test_uuid_bits, 0);
> +
> struct dynamic_uuid_test_data {
> const char *compatible;
> const u16 *images[4];
> const char *expected_uuids[4];
>
> --
> 2.45.2
>
Regards,
Simon
More information about the U-Boot
mailing list