summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2013-01-23 12:25:10 -0800
committerChromeBot <chrome-bot@google.com>2013-01-23 14:31:29 -0800
commit6dbf9d9160b2927d76017d0f51919e0880f9b2cc (patch)
treee4bf45eaeb872be8220af6876eef0ba94b29c23c
parent61a2eb389d9903b1b5a88d3e11ad5d713b3a364a (diff)
downloadvboot-6dbf9d9160b2927d76017d0f51919e0880f9b2cc.tar.gz
Improve coverage of vbnvstorage test
BUG=chromium-os:38139 BRANCH=none TEST=make runtests Change-Id: I93aabedb99fdeba01954a4b59e3e089b4087380c Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/41850 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
-rw-r--r--Makefile5
-rw-r--r--tests/vboot_nvstorage_test.c35
2 files changed, 37 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 7c094015..62af1ed7 100644
--- a/Makefile
+++ b/Makefile
@@ -414,7 +414,6 @@ TEST_NAMES = \
tpm_bootmode_tests \
utility_string_tests \
utility_tests \
- vboot_nvstorage_test \
vboot_api_init_tests \
vboot_api_devmode_tests \
vboot_api_firmware_tests \
@@ -424,7 +423,8 @@ TEST_NAMES = \
vboot_common2_tests \
vboot_common3_tests \
vboot_ec_tests \
- vboot_firmware_tests
+ vboot_firmware_tests \
+ vboot_nvstorage_test
# Grrr
ifneq (${IN_CHROOT},)
@@ -946,6 +946,7 @@ runmisctests: test_setup
${RUNTEST} ${BUILD_RUN}/tests/vboot_common2_tests ${TEST_KEYS}
${RUNTEST} ${BUILD_RUN}/tests/vboot_common3_tests ${TEST_KEYS}
${RUNTEST} ${BUILD_RUN}/tests/vboot_firmware_tests
+ ${RUNTEST} ${BUILD_RUN}/tests/vboot_nvstorage_test
.PHONY: runfutiltests
runfutiltests: DESTDIR := ${TEST_INSTALL_DIR}
diff --git a/tests/vboot_nvstorage_test.c b/tests/vboot_nvstorage_test.c
index 19937d6d..15c229f3 100644
--- a/tests/vboot_nvstorage_test.c
+++ b/tests/vboot_nvstorage_test.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -35,6 +35,7 @@ static VbNvField nvfields[] = {
{VBNV_DISABLE_DEV_REQUEST, 0, 1, 0, "disable dev request"},
{VBNV_CLEAR_TPM_OWNER_REQUEST, 0, 1, 0, "clear tpm owner request"},
{VBNV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"},
+ {VBNV_OPROM_NEEDED, 0, 1, 0, "oprom needed"},
{0, 0, 0, 0, NULL}
};
@@ -102,6 +103,25 @@ static void VbNvStorageTest(void) {
/* That should have changed the CRC */
TEST_NEQ(c.raw[15], goodcrc, "VbNvTeardown() CRC changed due to flags clear");
+ /* Test explicitly setting the reset flags again */
+ VbNvSetup(&c);
+ VbNvSet(&c, VBNV_FIRMWARE_SETTINGS_RESET, 1);
+ VbNvGet(&c, VBNV_FIRMWARE_SETTINGS_RESET, &data);
+ TEST_EQ(data, 1, "Firmware settings forced reset");
+ VbNvSet(&c, VBNV_FIRMWARE_SETTINGS_RESET, 0);
+
+ VbNvSet(&c, VBNV_KERNEL_SETTINGS_RESET, 1);
+ VbNvGet(&c, VBNV_KERNEL_SETTINGS_RESET, &data);
+ TEST_EQ(data, 1, "Kernel settings forced reset");
+ VbNvSet(&c, VBNV_KERNEL_SETTINGS_RESET, 0);
+ VbNvTeardown(&c);
+
+ /* Get/set an invalid field */
+ VbNvSetup(&c);
+ TEST_EQ(VbNvGet(&c, -1, &data), 1, "Get invalid setting");
+ TEST_EQ(VbNvSet(&c, -1, 0), 1, "Set invalid setting");
+ VbNvTeardown(&c);
+
/* Test other fields */
VbNvSetup(&c);
for (vnf = nvfields; vnf->desc; vnf++) {
@@ -134,6 +154,19 @@ static void VbNvStorageTest(void) {
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");
+
+ /* Test out-of-range fields mapping to defaults */
+ VbNvSetup(&c);
+ VbNvSet(&c, VBNV_TRY_B_COUNT, 16);
+ VbNvGet(&c, VBNV_TRY_B_COUNT, &data);
+ TEST_EQ(data, 15, "Try b count out of range");
+ VbNvSet(&c, VBNV_RECOVERY_REQUEST, 0x101);
+ VbNvGet(&c, VBNV_RECOVERY_REQUEST, &data);
+ TEST_EQ(data, VBNV_RECOVERY_LEGACY, "Recovery request out of range");
+ VbNvSet(&c, VBNV_LOCALIZATION_INDEX, 0x102);
+ VbNvGet(&c, VBNV_LOCALIZATION_INDEX, &data);
+ TEST_EQ(data, 0, "Localization index out of range");
+ VbNvTeardown(&c);
}