From: Arnaud Giersch Date: Wed, 10 Feb 2021 14:52:29 +0000 (+0100) Subject: Improve assertions about expected timeouts (still failing). X-Git-Tag: v3.27~408 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/50d58d66470ce0e6b3e8dd1013cae6cf3b7f839a?hp=af72ee01a6a0c01b1a67dc3095f952fd8ab1dd42 Improve assertions about expected timeouts (still failing). --- diff --git a/teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp b/teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp index 44c34d5b99..6aa60c148b 100644 --- a/teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp +++ b/teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp @@ -29,18 +29,25 @@ static bool tester_test(const simgrid::s4u::ActivityPtr& activity) // Calls activity->wait_for(Duration / 128.0) and returns true when activity is terminated, just like test() template bool tester_wait(const simgrid::s4u::ActivityPtr& activity) { + constexpr double duration = Duration / 128.0; + const double timeout = simgrid::s4u::Engine::get_clock() + duration; bool ret; try { - activity->wait_for(Duration / 128.0); + XBT_DEBUG("calling wait_for(%f)", duration); + activity->wait_for(duration); XBT_DEBUG("wait_for() returned normally"); ret = true; } catch (const simgrid::TimeoutException& e) { XBT_DEBUG("wait_for() timed out (%s)", e.what()); + INFO("wait_for() timeout should expire at expected date: " << timeout); + REQUIRE(simgrid::s4u::Engine::get_clock() == Approx(timeout)); ret = false; } catch (const simgrid::Exception& e) { XBT_DEBUG("wait_for() threw an exception: %s", e.what()); ret = true; } + INFO("wait_for() should return before timeout expiration at date: " << timeout); + REQUIRE(simgrid::s4u::Engine::get_clock() <= Approx(timeout)); return ret; } @@ -88,9 +95,10 @@ template void test_basic() assert_exit(true, 6.); simgrid::s4u::ActivityPtr activity = Create(5.0); for (int i = 0; i < 3; i++) { + const double timestep = simgrid::s4u::Engine::get_clock() + 2.0; INFO("activity should be still running (i = " << i << ")"); REQUIRE(not Test(activity)); - simgrid::s4u::this_actor::sleep_for(2.0); + simgrid::s4u::this_actor::sleep_until(timestep); } INFO("activity should be terminated now"); REQUIRE(Test(activity));