diff options
author | Randall Spangler <rspangler@chromium.org> | 2013-01-23 12:25:10 -0800 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-01-23 14:31:29 -0800 |
commit | 6dbf9d9160b2927d76017d0f51919e0880f9b2cc (patch) | |
tree | e4bf45eaeb872be8220af6876eef0ba94b29c23c | |
parent | 61a2eb389d9903b1b5a88d3e11ad5d713b3a364a (diff) | |
download | vboot-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-- | Makefile | 5 | ||||
-rw-r--r-- | tests/vboot_nvstorage_test.c | 35 |
2 files changed, 37 insertions, 3 deletions
@@ -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); } |