Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sleep activities throw exception on host failure
[simgrid.git] / teshsuite / s4u / host_on_off_wait / host_on_off_wait.cpp
index 4d3e71e..0ee7ad1 100644 (file)
@@ -4,6 +4,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "simgrid/s4u.hpp"
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "simgrid/s4u.hpp"
+#include <xbt/ex.hpp>
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example");
 
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example");
 
@@ -14,28 +15,35 @@ static void master()
   simgrid::s4u::this_actor::sleep_for(1);
 
   XBT_INFO("Turning off the worker host");
   simgrid::s4u::this_actor::sleep_for(1);
 
   XBT_INFO("Turning off the worker host");
-  jupiter->turnOff();
+  jupiter->turn_off();
   XBT_INFO("Master has finished");
 }
 
 static void worker()
 {
   XBT_INFO("Worker waiting");
   XBT_INFO("Master has finished");
 }
 
 static void worker()
 {
   XBT_INFO("Worker waiting");
-  // TODO, This should really be MSG_HOST_FAILURE
-  simgrid::s4u::this_actor::sleep_for(5);
-  XBT_ERROR("Worker should be off already.");
+  try {
+    simgrid::s4u::this_actor::sleep_for(5);
+  } catch (xbt_ex& e) {
+    if (e.category == host_error) {
+      XBT_INFO("The host has died ... as expected.");
+    } else {
+      XBT_ERROR("An unexpected exception has been raised.");
+      throw;
+    }
+  }
 }
 
 int main(int argc, char* argv[])
 {
   simgrid::s4u::Engine e(&argc, argv);
 }
 
 int main(int argc, char* argv[])
 {
   simgrid::s4u::Engine e(&argc, argv);
-  e.loadPlatform(argv[1]);
+  e.load_platform(argv[1]);
 
   simgrid::s4u::Actor::create("master", simgrid::s4u::Host::by_name("Tremblay"), master);
   simgrid::s4u::Actor::create("worker", simgrid::s4u::Host::by_name("Jupiter"), worker);
 
   e.run();
 
   simgrid::s4u::Actor::create("master", simgrid::s4u::Host::by_name("Tremblay"), master);
   simgrid::s4u::Actor::create("worker", simgrid::s4u::Host::by_name("Jupiter"), worker);
 
   e.run();
-  XBT_INFO("Simulation time %g", e.getClock());
+  XBT_INFO("Simulation time %g", e.get_clock());
 
   return 0;
 }
 
   return 0;
 }