summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranonymix007 <48598263+anonymix007@users.noreply.github.com>2024-11-06 21:06:32 +0100
committeranonymix007 <48598263+anonymix007@users.noreply.github.com>2024-11-07 22:53:22 +0100
commitab7c319268e83c4fdc117cb550bf5f2ace55aad3 (patch)
tree1e18b70ede91dbbbc13a63057435bf5d4970b02c
parentfundamental: Add userspace efi_guid_equal (diff)
downloadsystemd-ab7c319268e83c4fdc117cb550bf5f2ace55aad3.tar.xz
systemd-ab7c319268e83c4fdc117cb550bf5f2ace55aad3.zip
test: Add chid-fundamental test
-rw-r--r--src/shared/tests.h19
-rw-r--r--src/test/meson.build1
-rw-r--r--src/test/test-chid.c88
3 files changed, 108 insertions, 0 deletions
diff --git a/src/shared/tests.h b/src/shared/tests.h
index a7c2600d38..8caf4d9d83 100644
--- a/src/shared/tests.h
+++ b/src/shared/tests.h
@@ -559,3 +559,22 @@ static inline int run_test_table(void) {
abort(); \
} \
})
+
+#define EFI_GUID_Fmt "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x"
+#define EFI_GUID_Arg(guid) (guid).Data1, (guid).Data2, (guid).Data3, \
+ (guid).Data4[0], (guid).Data4[1], (guid).Data4[2], (guid).Data4[3], \
+ (guid).Data4[4], (guid).Data4[5], (guid).Data4[6], (guid).Data4[7] \
+
+#define ASSERT_EQ_EFI_GUID(expr1, expr2) \
+ ({ \
+ typeof(expr1) _expr1 = (expr1); \
+ typeof(expr2) _expr2 = (expr2); \
+ if (!efi_guid_equal(_expr1, _expr2)) { \
+ log_error("%s:%i: Assertion failed: expected \"%s == %s\", but " EFI_GUID_Fmt \
+ " != " EFI_GUID_Fmt, \
+ PROJECT_FILE, __LINE__, \
+ #expr1, #expr2, \
+ EFI_GUID_Arg(*_expr1), EFI_GUID_Arg(*_expr2)); \
+ abort(); \
+ } \
+ })
diff --git a/src/test/meson.build b/src/test/meson.build
index 9f74a7b56a..7d73e860c1 100644
--- a/src/test/meson.build
+++ b/src/test/meson.build
@@ -58,6 +58,7 @@ simple_tests += files(
'test-cgroup-util.c',
'test-cgroup.c',
'test-chase.c',
+ 'test-chid.c',
'test-clock.c',
'test-color-util.c',
'test-compare-operator.c',
diff --git a/src/test/test-chid.c b/src/test/test-chid.c
new file mode 100644
index 0000000000..ae1726679d
--- /dev/null
+++ b/src/test/test-chid.c
@@ -0,0 +1,88 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "chid-fundamental.h"
+#include "string-util.h"
+#include "tests.h"
+
+const char16_t *const test_fields[_CHID_SMBIOS_FIELDS_MAX] = {
+ [CHID_SMBIOS_MANUFACTURER] = u"Micro-Star International Co., Ltd.",
+ [CHID_SMBIOS_PRODUCT_NAME] = u"MS-7D70",
+ [CHID_SMBIOS_PRODUCT_SKU] = u"To be filled by O.E.M.",
+ [CHID_SMBIOS_FAMILY] = u"To be filled by O.E.M.",
+ [CHID_SMBIOS_BASEBOARD_PRODUCT] = u"MPG X670E CARBON WIFI (MS-7D70)",
+ [CHID_SMBIOS_BASEBOARD_MANUFACTURER] = u"Micro-Star International Co., Ltd.",
+};
+
+/* Actual output of `fwupdtool hwids`:
+BiosVendor: American Megatrends International, LLC.
+BiosVersion: 1.E5
+BiosMajorRelease: 5
+BiosMinorRelease: 32
+FirmwareMajorRelease: ff
+FirmwareMinorRelease: ff
+Manufacturer: Micro-Star International Co., Ltd.
+Family: To be filled by O.E.M.
+ProductName: MS-7D70
+ProductSku: To be filled by O.E.M.
+EnclosureKind: 3
+BaseboardManufacturer: Micro-Star International Co., Ltd.
+BaseboardProduct: MPG X670E CARBON WIFI (MS-7D70)
+Hardware IDs
+------------
+{f59668ca-22bc-52a0-b6b5-1f6ce81b08e0} <- Manufacturer + Family + ProductName + ProductSku + BiosVendor + BiosVersion + BiosMajorRelease + BiosMinorRelease
+{f735f7a0-40da-5bfe-8ac2-0090532ee6d0} <- Manufacturer + Family + ProductName + BiosVendor + BiosVersion + BiosMajorRelease + BiosMinorRelease
+{25880e68-e005-5ca7-88b6-650de596604f} <- Manufacturer + ProductName + BiosVendor + BiosVersion + BiosMajorRelease + BiosMinorRelease
+{01e09b32-de05-56ca-b9d1-9486ad5f381d} <- Manufacturer + Family + ProductName + ProductSku + BaseboardManufacturer + BaseboardProduct
+{cad87a11-1813-507b-9aab-9a5f457b649c} <- Manufacturer + Family + ProductName + ProductSku
+{377c823d-60d1-55b0-9678-76cd2af9d086} <- Manufacturer + Family + ProductName
+{28ac9cf2-5bde-59f7-aebe-4b3d008090fe} <- Manufacturer + ProductSku + BaseboardManufacturer + BaseboardProduct
+{e821e0e2-e11a-5e94-bf5d-ffe53c5e5048} <- Manufacturer + ProductSku
+{1c092f1d-dc7b-564f-8a3d-128d7292fab8} <- Manufacturer + ProductName + BaseboardManufacturer + BaseboardProduct
+{c12c1f4a-332d-5d72-aa36-7a3d413b479a} <- Manufacturer + ProductName
+{28ac9cf2-5bde-59f7-aebe-4b3d008090fe} <- Manufacturer + Family + BaseboardManufacturer + BaseboardProduct
+{e821e0e2-e11a-5e94-bf5d-ffe53c5e5048} <- Manufacturer + Family
+{bdd76d3e-147f-58a9-a0b2-42136454ed07} <- Manufacturer + EnclosureKind
+{b2e58e8b-fb10-5cd0-8fb0-5bd931f1871a} <- Manufacturer + BaseboardManufacturer + BaseboardProduct
+{50af5797-a2f2-58b1-9a1a-453bcbb2e025} <- Manufacturer
+Extra Hardware IDs
+------------------
+{e6ff1b45-1955-5701-89ab-04fe2280cb4a} <- Manufacturer + Family + ProductName + ProductSku + BiosVendor
+{8c4a76b9-e29e-5a3c-9072-9664898ecae6} <- Manufacturer + Family + ProductName + BiosVendor
+{7b3d90ce-ed79-5951-a48a-764ea9f11146} <- Manufacturer + BiosVendor
+*/
+
+static const EFI_GUID actual_chids[] = {
+ {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
+ {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
+ {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
+ {0x01e09b32, 0xde05, 0x56ca, {0xb9, 0xd1, 0x94, 0x86, 0xad, 0x5f, 0x38, 0x1d}},
+ {0xcad87a11, 0x1813, 0x507b, {0x9a, 0xab, 0x9a, 0x5f, 0x45, 0x7b, 0x64, 0x9c}},
+ {0x377c823d, 0x60d1, 0x55b0, {0x96, 0x78, 0x76, 0xcd, 0x2a, 0xf9, 0xd0, 0x86}},
+ {0x28ac9cf2, 0x5bde, 0x59f7, {0xae, 0xbe, 0x4b, 0x3d, 0x00, 0x80, 0x90, 0xfe}},
+ {0xe821e0e2, 0xe11a, 0x5e94, {0xbf, 0x5d, 0xff, 0xe5, 0x3c, 0x5e, 0x50, 0x48}},
+ {0x1c092f1d, 0xdc7b, 0x564f, {0x8a, 0x3d, 0x12, 0x8d, 0x72, 0x92, 0xfa, 0xb8}},
+ {0xc12c1f4a, 0x332d, 0x5d72, {0xaa, 0x36, 0x7a, 0x3d, 0x41, 0x3b, 0x47, 0x9a}},
+ {0x28ac9cf2, 0x5bde, 0x59f7, {0xae, 0xbe, 0x4b, 0x3d, 0x00, 0x80, 0x90, 0xfe}},
+ {0xe821e0e2, 0xe11a, 0x5e94, {0xbf, 0x5d, 0xff, 0xe5, 0x3c, 0x5e, 0x50, 0x48}},
+ {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
+ {0xb2e58e8b, 0xfb10, 0x5cd0, {0x8f, 0xb0, 0x5b, 0xd9, 0x31, 0xf1, 0x87, 0x1a}},
+ {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
+};
+
+TEST(chid) {
+ /* Results compared with output of 'fwupdtool hwids' */
+ EFI_GUID chids[CHID_TYPES_MAX];
+ chid_calculate(test_fields, chids);
+ for (size_t i = 0; i < ELEMENTSOF(chids); i++)
+ ASSERT_EQ_EFI_GUID(&chids[i], &actual_chids[i]);
+}
+
+static int intro(void) {
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ return EXIT_SUCCESS;
+#else
+ return log_tests_skipped("cannot run CHID calculation on big-endian machine");
+#endif
+}
+
+DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro);