Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Unified Diff: tests/vboot_nvstorage_test.c

Issue 6597011: Add NV storage fields for firmware flags (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vboot_reference.git@master
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« host/lib/crossystem.c ('K') | « host/lib/crossystem.c ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/vboot_nvstorage_test.c
diff --git a/tests/vboot_nvstorage_test.c b/tests/vboot_nvstorage_test.c
index d5807c8701826af7025591df577e156cd36f5449..b3753713896f3d4c71031f2981a8da055050c0e6 100644
--- a/tests/vboot_nvstorage_test.c
+++ b/tests/vboot_nvstorage_test.c
@@ -2,7 +2,7 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
- * Tests for firmware image library.
+ * Tests for firmware NV storage library.
*/
#include <stdio.h>
@@ -13,9 +13,30 @@
#include "vboot_common.h"
#include "vboot_nvstorage.h"
+/* Single NV storage field to test */
+typedef struct VbNvField {
+ VbNvParam param; /* Parameter index */
+ uint32_t default_value; /* Expected default value */
+ uint32_t test_value; /* Value to test writing */
+ uint32_t test_value2; /* Second value to test writing */
+ char* desc; /* Field description */
+} VbNvField;
+
+/* Array of fields to test, terminated with a field with desc==NULL. */
+static VbNvField nvfields[] = {
+ {VBNV_DEBUG_RESET_MODE, 0, 1, 0, "debug reset mode"},
+ {VBNV_TRY_B_COUNT, 0, 6, 15, "try B count"},
+ {VBNV_RECOVERY_REQUEST, 0, 0x42, 0xED, "recovery request"},
+ {VBNV_LOCALIZATION_INDEX, 0, 0x69, 0xB0, "localization index"},
+ {VBNV_KERNEL_FIELD, 0, 0x12345678, 0xFEDCBA98, "kernel field"},
+ {VBNV_FW_USED_TRY_B, 0, 1, 0, "firmware used try B"},
+ {VBNV_FW_VERIFIED_KERNEL_KEY, 0, 1, 0, "firmware verified kernel key"},
+ {0, 0, 0, 0, NULL}
+};
static void VbNvStorageTest(void) {
+ VbNvField* vnf;
VbNvContext c;
uint8_t goodcrc;
uint32_t data;
@@ -77,65 +98,20 @@ static void VbNvStorageTest(void) {
/* That should have changed the CRC */
TEST_NEQ(c.raw[15], goodcrc, "VbNvTeardown() CRC changed due to flags clear");
- /* Test debug reset mode field */
+ /* Test other fields */
VbNvSetup(&c);
- TEST_EQ(VbNvGet(&c, VBNV_DEBUG_RESET_MODE, &data), 0,
- "Get debug reset mode");
- TEST_EQ(data, 0, "Debug reset mode default");
- TEST_EQ(VbNvSet(&c, VBNV_DEBUG_RESET_MODE, 1), 0,
- "Set debug reset mode");
- VbNvGet(&c, VBNV_DEBUG_RESET_MODE, &data);
- TEST_EQ(data, 1, "Debug reset mode set");
- VbNvTeardown(&c);
-
- /* Test try B count */
- VbNvSetup(&c);
- TEST_EQ(VbNvGet(&c, VBNV_TRY_B_COUNT, &data), 0, "Get try b count");
- TEST_EQ(data, 0, "Try b count default");
- TEST_EQ(VbNvSet(&c, VBNV_TRY_B_COUNT, 6), 0, "Set try b count");
- VbNvGet(&c, VBNV_TRY_B_COUNT, &data);
- TEST_EQ(data, 6, "Try b count set");
- VbNvSet(&c, VBNV_TRY_B_COUNT, 15);
- VbNvGet(&c, VBNV_TRY_B_COUNT, &data);
- TEST_EQ(data, 15, "Try b count set 2");
- VbNvTeardown(&c);
-
- /* Test recovery request */
- VbNvSetup(&c);
- TEST_EQ(VbNvGet(&c, VBNV_RECOVERY_REQUEST, &data), 0, "Get recovery request");
- TEST_EQ(data, 0, "Default recovery request");
- TEST_EQ(VbNvSet(&c, VBNV_RECOVERY_REQUEST, 0x42), 0, "Set recovery request");
- VbNvGet(&c, VBNV_RECOVERY_REQUEST, &data);
- TEST_EQ(data, 0x42, "Set recovery request");
- VbNvSet(&c, VBNV_RECOVERY_REQUEST, 0xED);
- VbNvGet(&c, VBNV_RECOVERY_REQUEST, &data);
- TEST_EQ(data, 0xED, "Set recovery request 2");
- VbNvTeardown(&c);
-
- /* Test localization index */
- VbNvSetup(&c);
- TEST_EQ(VbNvGet(&c, VBNV_LOCALIZATION_INDEX, &data), 0,
- "Get localization index");
- TEST_EQ(data, 0, "Default localization index");
- TEST_EQ(VbNvSet(&c, VBNV_LOCALIZATION_INDEX, 0x69), 0,
- "Set localization index");
- VbNvGet(&c, VBNV_LOCALIZATION_INDEX, &data);
- TEST_EQ(data, 0x69, "Set localization index");
- VbNvSet(&c, VBNV_LOCALIZATION_INDEX, 0xB0);
- VbNvGet(&c, VBNV_LOCALIZATION_INDEX, &data);
- TEST_EQ(data, 0xB0, "Set localization index 2");
- VbNvTeardown(&c);
-
- /* Test kernel field */
- VbNvSetup(&c);
- TEST_EQ(VbNvGet(&c, VBNV_KERNEL_FIELD, &data), 0, "Get kernel field");
- TEST_EQ(data, 0, "Default kernel field");
- TEST_EQ(VbNvSet(&c, VBNV_KERNEL_FIELD, 0x12345678), 0, "Set kernel field");
- VbNvGet(&c, VBNV_KERNEL_FIELD, &data);
- TEST_EQ(data, 0x12345678, "Set kernel field");
- VbNvSet(&c, VBNV_KERNEL_FIELD, 0xFEDCBA98);
- VbNvGet(&c, VBNV_KERNEL_FIELD, &data);
- TEST_EQ(data, 0xFEDCBA98, "Set kernel field 2");
+ for (vnf = nvfields; vnf->desc; vnf++) {
+ TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, vnf->desc);
+ TEST_EQ(data, vnf->default_value, vnf->desc);
+
+ TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value), 0, vnf->desc);
+ TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, vnf->desc);
+ TEST_EQ(data, vnf->test_value, vnf->desc);
+
+ TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value2), 0, vnf->desc);
+ TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, vnf->desc);
+ TEST_EQ(data, vnf->test_value2, vnf->desc);
+ }
VbNvTeardown(&c);
/* None of those changes should have caused a reset to defaults */
@@ -149,10 +125,8 @@ static void VbNvStorageTest(void) {
/* Verify writing identical settings doesn't cause the CRC to regenerate */
VbNvSetup(&c);
TEST_EQ(c.regenerate_crc, 0, "No regen CRC on open");
- VbNvSet(&c, VBNV_DEBUG_RESET_MODE, 1);
- VbNvSet(&c, VBNV_RECOVERY_REQUEST, 0xED);
- VbNvSet(&c, VBNV_LOCALIZATION_INDEX, 0xB0);
- VbNvSet(&c, VBNV_KERNEL_FIELD, 0xFEDCBA98);
+ for (vnf = nvfields; vnf->desc; vnf++)
+ TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value2), 0, vnf->desc);
TEST_EQ(c.regenerate_crc, 0, "No regen CRC if data not changed");
VbNvTeardown(&c);
TEST_EQ(c.raw_changed, 0, "No raw change if data not changed");
« host/lib/crossystem.c ('K') | « host/lib/crossystem.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698