From 0827b006e4943a670dbe193dd8b522d7cc3b4bf5 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 11 Mar 2015 15:05:13 +0000 Subject: [PATCH 2/2] v2v: test-harness: Fix boot loop so it detects disk inactivity properly. --- v2v/test-harness/v2v_test_harness.ml | 50 +++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/v2v/test-harness/v2v_test_harness.ml b/v2v/test-harness/v2v_test_harness.ml index 998903a..fe09d6f 100644 --- a/v2v/test-harness/v2v_test_harness.ml +++ b/v2v/test-harness/v2v_test_harness.ml @@ -280,30 +280,34 @@ let run ~test ?input_disk ?input_xml ?(test_plan = default_plan) () = if active then ( printf "%s: disk activity detected\n" (timestamp t); loop start t stats - ) else if t -. last_activity <= float test_plan.boot_idle_time then ( - let screenshot = take_screenshot t in - (* Reached the final screenshot? *) - let done_ = - match test_plan.boot_plan with - | Boot_to_screenshot final_screenshot -> - if display_matches_screenshot screenshot final_screenshot then ( - printf "%s: guest reached final screenshot\n" (timestamp t); - true - ) else false - | _ -> false in - if not done_ then ( - (* A screenshot matching one of the screenshots in the set - * resets the timeout. - *) - let waiting_in_known_good_state = - List.exists (display_matches_screenshot screenshot) - test_plan.boot_known_good_screenshots in - if waiting_in_known_good_state then ( - printf "%s: guest at known-good screenshot\n" (timestamp t); - loop t last_activity stats - ) else - loop start last_activity stats + ) else ( + if t -. last_activity <= float test_plan.boot_idle_time then ( + let screenshot = take_screenshot t in + (* Reached the final screenshot? *) + let done_ = + match test_plan.boot_plan with + | Boot_to_screenshot final_screenshot -> + if display_matches_screenshot screenshot final_screenshot then ( + printf "%s: guest reached final screenshot\n" (timestamp t); + true + ) else false + | _ -> false in + if not done_ then ( + (* A screenshot matching one of the screenshots in the set + * resets the timeouts. + *) + let waiting_in_known_good_state = + List.exists (display_matches_screenshot screenshot) + test_plan.boot_known_good_screenshots in + if waiting_in_known_good_state then ( + printf "%s: guest at known-good screenshot\n" (timestamp t); + loop t t stats + ) else + loop start last_activity stats + ) ) + else + bootfail t "guest timed out with no disk activity before reaching final state" ) in loop start last_activity stats; -- 2.3.1