From 6314dfce77402e03a06492f6cd483417f0ad7e06 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Sat, 30 Sep 2017 21:46:54 +0200 Subject: [PATCH 1/1] Complete s4u-actor-kill to include a test for Actor::killAll(). --- examples/s4u/actor-kill/s4u-actor-kill.cpp | 20 ++++++++++++++++-- examples/s4u/actor-kill/s4u-actor-kill.tesh | 23 +++++++++++++++++---- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/examples/s4u/actor-kill/s4u-actor-kill.cpp b/examples/s4u/actor-kill/s4u-actor-kill.cpp index 81ce0a2471..fe726b40ae 100644 --- a/examples/s4u/actor-kill/s4u-actor-kill.cpp +++ b/examples/s4u/actor-kill/s4u-actor-kill.cpp @@ -7,8 +7,15 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor_kill, "Messages specific for this s4u example"); +static int on_exit(void*, void*) +{ + XBT_INFO("I have been killed!"); + return 0; +} + static void victim() { + simgrid::s4u::this_actor::onExit(on_exit, nullptr); XBT_INFO("Hello!"); XBT_INFO("Suspending myself"); simgrid::s4u::this_actor::suspend(); /* - Start by suspending itself */ @@ -24,11 +31,16 @@ static void killer() simgrid::s4u::Actor::createActor("victim", simgrid::s4u::Host::by_name("Fafard"), victim); simgrid::s4u::this_actor::sleep_for(10); /* - Wait for 10 seconds */ - XBT_INFO("Resume process"); /* - Resume it from its suspended state */ + XBT_INFO("Resume the victim"); /* - Resume it from its suspended state */ poor_victim->resume(); + simgrid::s4u::this_actor::sleep_for(2); - XBT_INFO("Kill process"); /* - and then kill it */ + XBT_INFO("Kill the victim"); /* - and then kill it */ poor_victim->kill(); + simgrid::s4u::this_actor::sleep_for(1); + + XBT_INFO("Killing everybody but myself"); + simgrid::s4u::Actor::killAll(); XBT_INFO("OK, goodbye now. I commit a suicide."); simgrid::s4u::this_actor::kill(); @@ -44,6 +56,10 @@ int main(int argc, char* argv[]) e.loadPlatform(argv[1]); /* - Load the platform description */ /* - Create and deploy killer process, that will create the victim process */ simgrid::s4u::Actor::createActor("killer", simgrid::s4u::Host::by_name("Tremblay"), killer); + simgrid::s4u::Actor::createActor("Alice", simgrid::s4u::Host::by_name("Jupiter"), victim); + simgrid::s4u::Actor::createActor("Bob", simgrid::s4u::Host::by_name("Ginette"), victim); + simgrid::s4u::Actor::createActor("Carol", simgrid::s4u::Host::by_name("Bourassa"), victim); + simgrid::s4u::Actor::createActor("Dave", simgrid::s4u::Host::by_name("Boivin"), victim); e.run(); /* - Run the simulation */ diff --git a/examples/s4u/actor-kill/s4u-actor-kill.tesh b/examples/s4u/actor-kill/s4u-actor-kill.tesh index 0c876df6d8..0f68771e0f 100644 --- a/examples/s4u/actor-kill/s4u-actor-kill.tesh +++ b/examples/s4u/actor-kill/s4u-actor-kill.tesh @@ -2,9 +2,24 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-kill ${srcdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%P@%h)%e%m%n" > [ 0.000000] (killer@Tremblay) Hello! +> [ 0.000000] (Alice@Jupiter) Hello! +> [ 0.000000] (Alice@Jupiter) Suspending myself +> [ 0.000000] (Bob@Ginette) Hello! +> [ 0.000000] (Bob@Ginette) Suspending myself +> [ 0.000000] (Carol@Bourassa) Hello! +> [ 0.000000] (Carol@Bourassa) Suspending myself +> [ 0.000000] (Dave@Boivin) Hello! +> [ 0.000000] (Dave@Boivin) Suspending myself > [ 0.000000] (victim@Fafard) Hello! > [ 0.000000] (victim@Fafard) Suspending myself -> [ 10.000000] (killer@Tremblay) Resume process -> [ 10.000000] (killer@Tremblay) Kill process -> [ 10.000000] (killer@Tremblay) OK, goodbye now. I commit a suicide. -> [ 10.000000] (maestro@) Simulation time 10 +> [ 10.000000] (killer@Tremblay) Resume the victim +> [ 10.000000] (victim@Fafard) OK, OK. Let's work +> [ 12.000000] (killer@Tremblay) Kill the victim +> [ 12.000000] (victim@Fafard) I have been killed! +> [ 13.000000] (killer@Tremblay) Killing everybody but myself +> [ 13.000000] (Alice@Jupiter) I have been killed! +> [ 13.000000] (Bob@Ginette) I have been killed! +> [ 13.000000] (Carol@Bourassa) I have been killed! +> [ 13.000000] (Dave@Boivin) I have been killed! +> [ 13.000000] (killer@Tremblay) OK, goodbye now. I commit a suicide. +> [ 13.000000] (maestro@) Simulation time 13 -- 2.20.1