vboot/ui/tests: Remove unnecessary aborting delay check

- Do not check if delay is aborted every time since we already have
an individual test item.
- Do not save the last return value of vb2ex_mtime() to allow us to use
vb2ex_mtime() elsewhere.
- Use fuzzy match for `delay finished` test items.

BUG=b:156448738
BRANCH=none
TEST=CC=x86_64-pc-linux-gnu-clang;
     make clean && make runtests

Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org>
Change-Id: Ic211955637c67dc35ffd4c12194a8ccb77e1bf9c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2508104
Reviewed-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c
index 890c3e6..9d0642a 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -18,7 +18,7 @@
 /* Fixed value for ignoring some checks */
 #define MOCK_IGNORE 0xffffu
 
-/* Fuzzy matches for beep time */
+/* Fuzzy matches for check_time() */
 #define FUZZ_MS 200
 
 /* Mock data */
@@ -65,7 +65,6 @@
 static int mock_key_trusted[64];
 static int mock_key_total;
 
-static uint32_t mock_get_timer_last_ms;
 static uint32_t mock_time_ms;
 static const uint32_t mock_time_start_ms = 31ULL * VB2_MSEC_PER_SEC;
 
@@ -247,6 +246,13 @@
 	};
 }
 
+/* Check if the result time falls in range [expected, expected + FUZZ_MS) */
+static void check_time(uint32_t result, uint32_t expected, const char *desc)
+{
+	TEST_TRUE(result >= expected, desc);
+	TEST_TRUE(result - expected < FUZZ_MS, "  within FUZZ_MS");
+}
+
 /* Type of test to reset for */
 enum reset_type {
 	FOR_DEVELOPER,
@@ -301,7 +307,6 @@
 	mock_key_total = 0;
 
 	/* For vb2ex_mtime and vb2ex_msleep  */
-	mock_get_timer_last_ms = 0;
 	mock_time_ms = mock_time_start_ms;
 
 	/* For vb2ex_beep */
@@ -438,7 +443,6 @@
 
 uint32_t vb2ex_mtime(void)
 {
-	mock_get_timer_last_ms = mock_time_ms;
 	return mock_time_ms;
 }
 
@@ -467,10 +471,8 @@
 
 		TEST_EQ(msec, beep->msec, "  beep duration");
 		TEST_EQ(frequency, beep->frequency, "  beep frequency");
-		TEST_TRUE(cur_time >= beep->time_expected,
-			  "  beep started after expected time");
-		TEST_TRUE(cur_time - beep->time_expected < FUZZ_MS,
-			  "  beep started within FUZZ_MS");
+		check_time(cur_time, beep->time_expected,
+			   "  beep started after expected time");
 	}
 
 	mock_time_ms += msec;
@@ -590,8 +592,8 @@
 	expect_beep(250, 400, DEV_DELAY_BEEP2_MS);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"proceed to internal disk after timeout");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
-		  DEV_DELAY_NORMAL_MS, "  finished delay");
+	check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_NORMAL_MS,
+		   "  finished delay");
 	TEST_EQ(mock_beep_count, 2, "  beeped twice");
 	TEST_TRUE(mock_iters >= mock_vbtlk_total, "  used up mock_vbtlk");
 
@@ -601,10 +603,8 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"use short delay");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
-		  DEV_DELAY_SHORT_MS, "  finished delay");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  not a 30s delay");
+	check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_SHORT_MS,
+		   "  finished delay");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
 	/* Stop timer on any user input: normal delay */
@@ -613,6 +613,8 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"stop timer on any user input: normal delay");
+	TEST_TRUE(mock_time_ms - mock_time_start_ms > DEV_DELAY_NORMAL_MS,
+		  "  delay aborted");
 	TEST_EQ(mock_calls_until_shutdown, 0, "  loop forever");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
@@ -623,6 +625,8 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"stop timer on any user input: short delay");
+	TEST_TRUE(mock_time_ms - mock_time_start_ms > DEV_DELAY_SHORT_MS,
+		  "  delay aborted");
 	TEST_EQ(mock_calls_until_shutdown, 0, "  loop forever");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
@@ -638,8 +642,13 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"select boot internal in dev menu");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
+
+	/* Ctrl+U = boot external */
+	reset_common_data(FOR_DEVELOPER);
+	add_mock_keypress(VB_KEY_CTRL('U'));
+	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
+	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
+		"ctrl+u = boot external");
 
 	/* Ctrl+D = boot internal */
 	reset_common_data(FOR_DEVELOPER);
@@ -647,8 +656,6 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"ctrl+d = boot internal");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal */
 	if (DETACHABLE) {
@@ -657,8 +664,6 @@
 		add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 		TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 			"VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal");
-		TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-			  DEV_DELAY_NORMAL_MS, "  delay aborted");
 	}
 
 	/* Proceed to external disk after timeout */
@@ -669,8 +674,8 @@
 	expect_beep(250, 400, DEV_DELAY_BEEP2_MS);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"proceed to external disk after timeout");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
-		  DEV_DELAY_NORMAL_MS, "  finished delay");
+	check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_NORMAL_MS,
+		   "  finished delay");
 	TEST_EQ(mock_beep_count, 2, "  beeped twice");
 	TEST_TRUE(mock_iters >= mock_vbtlk_total, "  used up mock_vbtlk");
 
@@ -695,17 +700,6 @@
 	mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"select boot external in dev menu");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
-
-	/* Ctrl+U = boot external */
-	reset_common_data(FOR_DEVELOPER);
-	add_mock_keypress(VB_KEY_CTRL('U'));
-	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
-	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
-		"ctrl+u = boot external");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* Ctrl+L = boot legacy (allowed) */
 	reset_common_data(FOR_DEVELOPER);
@@ -714,8 +708,6 @@
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"ctrl+l = boot legacy");
 	TEST_EQ(mock_vbexlegacy_called, 1, "  VbExLegacy called");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* Ctrl+L = boot legacy (disallowed) */
 	reset_common_data(FOR_DEVELOPER);
@@ -723,8 +715,6 @@
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"ctrl+l = boot legacy");
 	TEST_EQ(mock_vbexlegacy_called, 0, "  VbExLegacy not called");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* VB_BUTTON_VOL_UP_LONG_PRESS = boot external */
 	if (DETACHABLE) {
@@ -733,8 +723,6 @@
 		add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
 		TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 			"VB_BUTTON_VOL_UP_LONG_PRESS = boot external");
-		TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-			  DEV_DELAY_NORMAL_MS, "  delay aborted");
 	}
 
 	/* If dev mode is disabled, goes to to_norm screen repeatedly */