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>
This commit is contained in:
Randall Spangler
2013-01-23 12:25:10 -08:00
committed by ChromeBot
parent 61a2eb389d
commit 6dbf9d9160
2 changed files with 37 additions and 3 deletions

View File

@@ -414,7 +414,6 @@ TEST_NAMES = \
tpm_bootmode_tests \ tpm_bootmode_tests \
utility_string_tests \ utility_string_tests \
utility_tests \ utility_tests \
vboot_nvstorage_test \
vboot_api_init_tests \ vboot_api_init_tests \
vboot_api_devmode_tests \ vboot_api_devmode_tests \
vboot_api_firmware_tests \ vboot_api_firmware_tests \
@@ -424,7 +423,8 @@ TEST_NAMES = \
vboot_common2_tests \ vboot_common2_tests \
vboot_common3_tests \ vboot_common3_tests \
vboot_ec_tests \ vboot_ec_tests \
vboot_firmware_tests vboot_firmware_tests \
vboot_nvstorage_test
# Grrr # Grrr
ifneq (${IN_CHROOT},) ifneq (${IN_CHROOT},)
@@ -946,6 +946,7 @@ runmisctests: test_setup
${RUNTEST} ${BUILD_RUN}/tests/vboot_common2_tests ${TEST_KEYS} ${RUNTEST} ${BUILD_RUN}/tests/vboot_common2_tests ${TEST_KEYS}
${RUNTEST} ${BUILD_RUN}/tests/vboot_common3_tests ${TEST_KEYS} ${RUNTEST} ${BUILD_RUN}/tests/vboot_common3_tests ${TEST_KEYS}
${RUNTEST} ${BUILD_RUN}/tests/vboot_firmware_tests ${RUNTEST} ${BUILD_RUN}/tests/vboot_firmware_tests
${RUNTEST} ${BUILD_RUN}/tests/vboot_nvstorage_test
.PHONY: runfutiltests .PHONY: runfutiltests
runfutiltests: DESTDIR := ${TEST_INSTALL_DIR} runfutiltests: DESTDIR := ${TEST_INSTALL_DIR}

View File

@@ -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 * Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file. * found in the LICENSE file.
* *
@@ -35,6 +35,7 @@ static VbNvField nvfields[] = {
{VBNV_DISABLE_DEV_REQUEST, 0, 1, 0, "disable dev request"}, {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_REQUEST, 0, 1, 0, "clear tpm owner request"},
{VBNV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"}, {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} {0, 0, 0, 0, NULL}
}; };
@@ -102,6 +103,25 @@ static void VbNvStorageTest(void) {
/* That should have changed the CRC */ /* That should have changed the CRC */
TEST_NEQ(c.raw[15], goodcrc, "VbNvTeardown() CRC changed due to flags clear"); 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 */ /* Test other fields */
VbNvSetup(&c); VbNvSetup(&c);
for (vnf = nvfields; vnf->desc; vnf++) { 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"); TEST_EQ(c.regenerate_crc, 0, "No regen CRC if data not changed");
VbNvTeardown(&c); VbNvTeardown(&c);
TEST_EQ(c.raw_changed, 0, "No raw change if data not changed"); 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);
} }