From: Martin Quinson Date: Wed, 29 Nov 2017 15:39:08 +0000 (+0100) Subject: adapt the s4u test to check that killing dead actors also work there X-Git-Tag: v3.18~207^2~3 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c0e7a78c4c454e54ac376f96ee423e211b25f61d adapt the s4u test to check that killing dead actors also work there --- diff --git a/examples/s4u/actor-kill/s4u-actor-kill.cpp b/examples/s4u/actor-kill/s4u-actor-kill.cpp index fe726b40ae..78658b9f7e 100644 --- a/examples/s4u/actor-kill/s4u-actor-kill.cpp +++ b/examples/s4u/actor-kill/s4u-actor-kill.cpp @@ -13,7 +13,7 @@ static int on_exit(void*, void*) return 0; } -static void victim() +static void victimA_fun() { simgrid::s4u::this_actor::onExit(on_exit, nullptr); XBT_INFO("Hello!"); @@ -24,19 +24,29 @@ static void victim() XBT_INFO("Bye!"); /* - But will never reach the end of it */ } +static void victimB_fun() +{ + XBT_INFO("Terminate before being killed"); +} + static void killer() { XBT_INFO("Hello!"); /* - First start a victim process */ - simgrid::s4u::ActorPtr poor_victim = - simgrid::s4u::Actor::createActor("victim", simgrid::s4u::Host::by_name("Fafard"), victim); + simgrid::s4u::ActorPtr victimA = + simgrid::s4u::Actor::createActor("victim A", simgrid::s4u::Host::by_name("Fafard"), victimA_fun); + simgrid::s4u::ActorPtr victimB = + simgrid::s4u::Actor::createActor("victim B", simgrid::s4u::Host::by_name("Jupiter"), victimB_fun); simgrid::s4u::this_actor::sleep_for(10); /* - Wait for 10 seconds */ - XBT_INFO("Resume the victim"); /* - Resume it from its suspended state */ - poor_victim->resume(); + XBT_INFO("Resume the victim A"); /* - Resume it from its suspended state */ + victimA->resume(); simgrid::s4u::this_actor::sleep_for(2); - XBT_INFO("Kill the victim"); /* - and then kill it */ - poor_victim->kill(); + XBT_INFO("Kill the victim A"); /* - and then kill it */ + victimA->kill(); + + XBT_INFO("Kill victimB, even if it's already dead"); /* that's a no-op, there is no zombies in SimGrid */ + victimB->kill(); simgrid::s4u::this_actor::sleep_for(1); XBT_INFO("Killing everybody but myself"); @@ -54,12 +64,8 @@ int main(int argc, char* argv[]) xbt_assert(argc == 2, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]); e.loadPlatform(argv[1]); /* - Load the platform description */ - /* - Create and deploy killer process, that will create the victim process */ + /* - Create and deploy killer process, that will create the victim actors */ 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 0f68771e0f..631e899857 100644 --- a/examples/s4u/actor-kill/s4u-actor-kill.tesh +++ b/examples/s4u/actor-kill/s4u-actor-kill.tesh @@ -2,24 +2,14 @@ $ $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 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! +> [ 0.000000] (victim A@Fafard) Hello! +> [ 0.000000] (victim A@Fafard) Suspending myself +> [ 0.000000] (victim B@Jupiter) Terminate before being killed +> [ 10.000000] (killer@Tremblay) Resume the victim A +> [ 10.000000] (victim A@Fafard) OK, OK. Let's work +> [ 12.000000] (killer@Tremblay) Kill the victim A +> [ 12.000000] (victim A@Fafard) I have been killed! +> [ 12.000000] (killer@Tremblay) Kill victimB, even if it's already dead > [ 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