SimGrid (3.6) unstable; urgency=low
+ Simix
+ * completely rewrote this module to allow parallel execution.
+
-- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
SimGrid (3.5) stable; urgency=medium
src/xbt/backtrace_windows.c
src/xbt/backtrace_dummy.c
src/xbt/setset_private.h
+ src/xbt/threadpool_private.h
src/xbt/mmalloc/attach.c
src/xbt/mmalloc/detach.c
src/xbt/mmalloc/keys.c
src/xbt/cunit.c
src/xbt/graphxml_parse.c
src/xbt/setset.c
+ src/xbt/threadpool.c
)
if(HAVE_MMAP)
src/surf/network_vivaldi.c
src/surf/network_constant.c
src/surf/workstation.c
- src/surf/surf_model_timer.c
src/surf/workstation_ptask_L07.c
src/surf/cpu_ti.c
src/surf/cpu_im.c
src/simix/smx_deployment.c
src/simix/smx_environment.c
src/simix/smx_host.c
- src/simix/smx_action.c
src/simix/smx_process.c
src/simix/smx_context.c
src/simix/smx_synchro.c
src/simix/smx_network.c
src/simix/smx_context_base.c
+ src/simix/smx_user.c
+ src/simix/smx_smurf.c
)
set(MSG_SRC
set(MC_SRC
src/mc/mc_memory.c
src/mc/mc_checkpoint.c
+ src/mc/mc_state.c
src/mc/memory_map.c
src/mc/mc_global.c
- src/mc/mc_dfs.c
src/mc/mc_dpor.c
- src/mc/mc_transition.c
+ src/mc/mc_request.c
src/mc/private.h
)
-$ $SG_TEST_EXENV ./all2all_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/all2all.xml
-> [Tremblay:sender:(1) 0.000000] [all2all/INFO] Launch current node
-> [Jupiter:sender:(3) 0.000000] [all2all/INFO] Launch current node
-> [Fafard:sender:(5) 0.000000] [all2all/INFO] Launch current node
-> [Ginette:sender:(7) 0.000000] [all2all/INFO] Launch current node
-> [Bourassa:sender:(9) 0.000000] [all2all/INFO] Launch current node
-> [Tremblay:receiver:(2) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Jupiter:receiver:(4) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Fafard:receiver:(6) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Ginette:receiver:(8) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Bourassa:receiver:(10) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Jupiter:sender:(3) 0.015433] [all2all/INFO] Sent Data from Jupiter to Tremblay
-> [Tremblay:receiver:(2) 0.015433] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Tremblay:sender:(1) 0.025433] [all2all/INFO] Sent Data from Tremblay to Jupiter
-> [Jupiter:receiver:(4) 0.025433] [all2all/INFO] Got Data from Tremblay:5000 (still 3 to go)
-> [Fafard:sender:(5) 0.036085] [all2all/INFO] Sent Data from Fafard to Tremblay
-> [Tremblay:receiver:(2) 0.036085] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Ginette:sender:(7) 0.049382] [all2all/INFO] Sent Data from Ginette to Tremblay
-> [Tremblay:receiver:(2) 0.049382] [all2all/INFO] Got Data from Ginette:5000 (still 1 to go)
-> [Jupiter:sender:(3) 0.051516] [all2all/INFO] Sent Data from Jupiter to Fafard
-> [Fafard:receiver:(6) 0.051516] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Bourassa:sender:(9) 0.069818] [all2all/INFO] Sent Data from Bourassa to Tremblay
-> [Tremblay:receiver:(2) 0.069818] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Tremblay:receiver:(2) 0.069818] [gras/INFO] Exiting GRAS
-> [Fafard:sender:(5) 0.072168] [all2all/INFO] Sent Data from Fafard to Jupiter
-> [Jupiter:receiver:(4) 0.072168] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Tremblay:sender:(1) 0.072177] [all2all/INFO] Sent Data from Tremblay to Fafard
-> [Fafard:receiver:(6) 0.072177] [all2all/INFO] Got Data from Tremblay:5000 (still 2 to go)
-> [Jupiter:sender:(3) 0.080244] [all2all/INFO] Sent Data from Jupiter to Ginette
-> [Ginette:receiver:(8) 0.080244] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Fafard:sender:(5) 0.093415] [all2all/INFO] Sent Data from Fafard to Ginette
-> [Ginette:receiver:(8) 0.093415] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Ginette:sender:(7) 0.100740] [all2all/INFO] Sent Data from Ginette to Jupiter
-> [Jupiter:receiver:(4) 0.100740] [all2all/INFO] Got Data from Ginette:5000 (still 1 to go)
-> [Tremblay:sender:(1) 0.106712] [all2all/INFO] Sent Data from Tremblay to Ginette
-> [Ginette:receiver:(8) 0.106712] [all2all/INFO] Got Data from Tremblay:5000 (still 1 to go)
-> [Ginette:sender:(7) 0.114067] [all2all/INFO] Sent Data from Ginette to Fafard
-> [Fafard:receiver:(6) 0.114067] [all2all/INFO] Got Data from Ginette:5000 (still 1 to go)
-> [Jupiter:sender:(3) 0.116110] [all2all/INFO] Sent Data from Jupiter to Bourassa
-> [Jupiter:sender:(3) 0.116110] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.116110] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Fafard:sender:(5) 0.121591] [all2all/INFO] Sent Data from Fafard to Bourassa
-> [Fafard:sender:(5) 0.121591] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.121591] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Bourassa:sender:(9) 0.136451] [all2all/INFO] Sent Data from Bourassa to Jupiter
-> [Jupiter:receiver:(4) 0.136451] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Jupiter:receiver:(4) 0.136451] [gras/INFO] Exiting GRAS
-> [Tremblay:sender:(1) 0.142030] [all2all/INFO] Sent Data from Tremblay to Bourassa
-> [Tremblay:sender:(1) 0.142030] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.142030] [all2all/INFO] Got Data from Tremblay:5000 (still 1 to go)
-> [Bourassa:sender:(9) 0.142088] [all2all/INFO] Sent Data from Bourassa to Fafard
-> [Fafard:receiver:(6) 0.142088] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Fafard:receiver:(6) 0.142088] [gras/INFO] Exiting GRAS
-> [Ginette:sender:(7) 0.154982] [all2all/INFO] Sent Data from Ginette to Bourassa
-> [Ginette:sender:(7) 0.154982] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.154982] [all2all/INFO] Got Data from Ginette:5000 (still 0 to go)
-> [Bourassa:receiver:(10) 0.154982] [gras/INFO] Exiting GRAS
-> [Bourassa:sender:(9) 0.155196] [all2all/INFO] Sent Data from Bourassa to Ginette
-> [Bourassa:sender:(9) 0.155196] [gras/INFO] Exiting GRAS
-> [Ginette:receiver:(8) 0.155196] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Ginette:receiver:(8) 0.155196] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./all2all_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/all2all.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) Launch current node
+> [ 0.000000] (3:sender@Jupiter) Launch current node
+> [ 0.000000] (5:sender@Fafard) Launch current node
+> [ 0.000000] (7:sender@Ginette) Launch current node
+> [ 0.000000] (9:sender@Bourassa) Launch current node
+> [ 0.000156] (10:receiver@Bourassa) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (2:receiver@Tremblay) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (4:receiver@Jupiter) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (6:receiver@Fafard) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (8:receiver@Ginette) Listening on port 4000 (expecting 4 messages)
+> [ 0.015433] (2:receiver@Tremblay) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.015433] (3:sender@Jupiter) Sent Data from Jupiter to Tremblay
+> [ 0.025433] (1:sender@Tremblay) Sent Data from Tremblay to Jupiter
+> [ 0.025433] (4:receiver@Jupiter) Got Data from Tremblay:5000 (still 3 to go)
+> [ 0.036085] (2:receiver@Tremblay) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.036085] (5:sender@Fafard) Sent Data from Fafard to Tremblay
+> [ 0.049382] (2:receiver@Tremblay) Got Data from Ginette:5000 (still 1 to go)
+> [ 0.049382] (7:sender@Ginette) Sent Data from Ginette to Tremblay
+> [ 0.051516] (3:sender@Jupiter) Sent Data from Jupiter to Fafard
+> [ 0.051516] (6:receiver@Fafard) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.069818] (2:receiver@Tremblay) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.069818] (2:receiver@Tremblay) Exiting GRAS
+> [ 0.069818] (9:sender@Bourassa) Sent Data from Bourassa to Tremblay
+> [ 0.072168] (4:receiver@Jupiter) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.072168] (5:sender@Fafard) Sent Data from Fafard to Jupiter
+> [ 0.072177] (1:sender@Tremblay) Sent Data from Tremblay to Fafard
+> [ 0.072177] (6:receiver@Fafard) Got Data from Tremblay:5000 (still 2 to go)
+> [ 0.080244] (3:sender@Jupiter) Sent Data from Jupiter to Ginette
+> [ 0.080244] (8:receiver@Ginette) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.093415] (5:sender@Fafard) Sent Data from Fafard to Ginette
+> [ 0.093415] (8:receiver@Ginette) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.100740] (4:receiver@Jupiter) Got Data from Ginette:5000 (still 1 to go)
+> [ 0.100740] (7:sender@Ginette) Sent Data from Ginette to Jupiter
+> [ 0.106712] (1:sender@Tremblay) Sent Data from Tremblay to Ginette
+> [ 0.106712] (8:receiver@Ginette) Got Data from Tremblay:5000 (still 1 to go)
+> [ 0.114067] (6:receiver@Fafard) Got Data from Ginette:5000 (still 1 to go)
+> [ 0.114067] (7:sender@Ginette) Sent Data from Ginette to Fafard
+> [ 0.116110] (10:receiver@Bourassa) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.116110] (3:sender@Jupiter) Sent Data from Jupiter to Bourassa
+> [ 0.116110] (3:sender@Jupiter) Exiting GRAS
+> [ 0.121591] (10:receiver@Bourassa) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.121591] (5:sender@Fafard) Sent Data from Fafard to Bourassa
+> [ 0.121591] (5:sender@Fafard) Exiting GRAS
+> [ 0.136451] (4:receiver@Jupiter) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.136451] (4:receiver@Jupiter) Exiting GRAS
+> [ 0.136451] (9:sender@Bourassa) Sent Data from Bourassa to Jupiter
+> [ 0.142030] (1:sender@Tremblay) Sent Data from Tremblay to Bourassa
+> [ 0.142030] (1:sender@Tremblay) Exiting GRAS
+> [ 0.142030] (10:receiver@Bourassa) Got Data from Tremblay:5000 (still 1 to go)
+> [ 0.142088] (6:receiver@Fafard) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.142088] (6:receiver@Fafard) Exiting GRAS
+> [ 0.142088] (9:sender@Bourassa) Sent Data from Bourassa to Fafard
+> [ 0.154982] (10:receiver@Bourassa) Got Data from Ginette:5000 (still 0 to go)
+> [ 0.154982] (10:receiver@Bourassa) Exiting GRAS
+> [ 0.154982] (7:sender@Ginette) Sent Data from Ginette to Bourassa
+> [ 0.154982] (7:sender@Ginette) Exiting GRAS
+> [ 0.155196] (8:receiver@Ginette) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.155196] (8:receiver@Ginette) Exiting GRAS
+> [ 0.155196] (9:sender@Bourassa) Sent Data from Bourassa to Ginette
+> [ 0.155196] (9:sender@Bourassa) Exiting GRAS
#! ./tesh
-$ $SG_TEST_EXENV ./all2all_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/all2all.xml
-> [Tremblay:sender:(1) 0.000000] [all2all/INFO] Launch current node
-> [Jupiter:sender:(3) 0.000000] [all2all/INFO] Launch current node
-> [Fafard:sender:(5) 0.000000] [all2all/INFO] Launch current node
-> [Ginette:sender:(7) 0.000000] [all2all/INFO] Launch current node
-> [Bourassa:sender:(9) 0.000000] [all2all/INFO] Launch current node
-> [Tremblay:receiver:(2) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Jupiter:receiver:(4) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Fafard:receiver:(6) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Ginette:receiver:(8) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Bourassa:receiver:(10) 0.000156] [all2all/INFO] Listening on port 4000 (expecting 4 messages)
-> [Jupiter:sender:(3) 0.015433] [all2all/INFO] Sent Data from Jupiter to Tremblay
-> [Tremblay:receiver:(2) 0.015433] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Tremblay:sender:(1) 0.025433] [all2all/INFO] Sent Data from Tremblay to Jupiter
-> [Jupiter:receiver:(4) 0.025433] [all2all/INFO] Got Data from Tremblay:5000 (still 3 to go)
-> [Fafard:sender:(5) 0.036085] [all2all/INFO] Sent Data from Fafard to Tremblay
-> [Tremblay:receiver:(2) 0.036085] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Ginette:sender:(7) 0.049382] [all2all/INFO] Sent Data from Ginette to Tremblay
-> [Tremblay:receiver:(2) 0.049382] [all2all/INFO] Got Data from Ginette:5000 (still 1 to go)
-> [Jupiter:sender:(3) 0.051516] [all2all/INFO] Sent Data from Jupiter to Fafard
-> [Fafard:receiver:(6) 0.051516] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Bourassa:sender:(9) 0.069818] [all2all/INFO] Sent Data from Bourassa to Tremblay
-> [Tremblay:receiver:(2) 0.069818] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Tremblay:receiver:(2) 0.069818] [gras/INFO] Exiting GRAS
-> [Fafard:sender:(5) 0.072168] [all2all/INFO] Sent Data from Fafard to Jupiter
-> [Jupiter:receiver:(4) 0.072168] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Tremblay:sender:(1) 0.072177] [all2all/INFO] Sent Data from Tremblay to Fafard
-> [Fafard:receiver:(6) 0.072177] [all2all/INFO] Got Data from Tremblay:5000 (still 2 to go)
-> [Jupiter:sender:(3) 0.080244] [all2all/INFO] Sent Data from Jupiter to Ginette
-> [Ginette:receiver:(8) 0.080244] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Fafard:sender:(5) 0.093415] [all2all/INFO] Sent Data from Fafard to Ginette
-> [Ginette:receiver:(8) 0.093415] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Ginette:sender:(7) 0.100740] [all2all/INFO] Sent Data from Ginette to Jupiter
-> [Jupiter:receiver:(4) 0.100740] [all2all/INFO] Got Data from Ginette:5000 (still 1 to go)
-> [Tremblay:sender:(1) 0.106712] [all2all/INFO] Sent Data from Tremblay to Ginette
-> [Ginette:receiver:(8) 0.106712] [all2all/INFO] Got Data from Tremblay:5000 (still 1 to go)
-> [Ginette:sender:(7) 0.114067] [all2all/INFO] Sent Data from Ginette to Fafard
-> [Fafard:receiver:(6) 0.114067] [all2all/INFO] Got Data from Ginette:5000 (still 1 to go)
-> [Jupiter:sender:(3) 0.116110] [all2all/INFO] Sent Data from Jupiter to Bourassa
-> [Jupiter:sender:(3) 0.116110] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.116110] [all2all/INFO] Got Data from Jupiter:5000 (still 3 to go)
-> [Fafard:sender:(5) 0.121591] [all2all/INFO] Sent Data from Fafard to Bourassa
-> [Fafard:sender:(5) 0.121591] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.121591] [all2all/INFO] Got Data from Fafard:5000 (still 2 to go)
-> [Bourassa:sender:(9) 0.136451] [all2all/INFO] Sent Data from Bourassa to Jupiter
-> [Jupiter:receiver:(4) 0.136451] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Jupiter:receiver:(4) 0.136451] [gras/INFO] Exiting GRAS
-> [Tremblay:sender:(1) 0.142030] [all2all/INFO] Sent Data from Tremblay to Bourassa
-> [Tremblay:sender:(1) 0.142030] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.142030] [all2all/INFO] Got Data from Tremblay:5000 (still 1 to go)
-> [Bourassa:sender:(9) 0.142088] [all2all/INFO] Sent Data from Bourassa to Fafard
-> [Fafard:receiver:(6) 0.142088] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Fafard:receiver:(6) 0.142088] [gras/INFO] Exiting GRAS
-> [Ginette:sender:(7) 0.154982] [all2all/INFO] Sent Data from Ginette to Bourassa
-> [Ginette:sender:(7) 0.154982] [gras/INFO] Exiting GRAS
-> [Bourassa:receiver:(10) 0.154982] [all2all/INFO] Got Data from Ginette:5000 (still 0 to go)
-> [Bourassa:receiver:(10) 0.154982] [gras/INFO] Exiting GRAS
-> [Bourassa:sender:(9) 0.155196] [all2all/INFO] Sent Data from Bourassa to Ginette
-> [Bourassa:sender:(9) 0.155196] [gras/INFO] Exiting GRAS
-> [Ginette:receiver:(8) 0.155196] [all2all/INFO] Got Data from Bourassa:5000 (still 0 to go)
-> [Ginette:receiver:(8) 0.155196] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./all2all_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/all2all.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) Launch current node
+> [ 0.000000] (3:sender@Jupiter) Launch current node
+> [ 0.000000] (5:sender@Fafard) Launch current node
+> [ 0.000000] (7:sender@Ginette) Launch current node
+> [ 0.000000] (9:sender@Bourassa) Launch current node
+> [ 0.000156] (10:receiver@Bourassa) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (2:receiver@Tremblay) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (4:receiver@Jupiter) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (6:receiver@Fafard) Listening on port 4000 (expecting 4 messages)
+> [ 0.000156] (8:receiver@Ginette) Listening on port 4000 (expecting 4 messages)
+> [ 0.015433] (2:receiver@Tremblay) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.015433] (3:sender@Jupiter) Sent Data from Jupiter to Tremblay
+> [ 0.025433] (1:sender@Tremblay) Sent Data from Tremblay to Jupiter
+> [ 0.025433] (4:receiver@Jupiter) Got Data from Tremblay:5000 (still 3 to go)
+> [ 0.036085] (2:receiver@Tremblay) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.036085] (5:sender@Fafard) Sent Data from Fafard to Tremblay
+> [ 0.049382] (2:receiver@Tremblay) Got Data from Ginette:5000 (still 1 to go)
+> [ 0.049382] (7:sender@Ginette) Sent Data from Ginette to Tremblay
+> [ 0.051516] (3:sender@Jupiter) Sent Data from Jupiter to Fafard
+> [ 0.051516] (6:receiver@Fafard) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.069818] (2:receiver@Tremblay) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.069818] (2:receiver@Tremblay) Exiting GRAS
+> [ 0.069818] (9:sender@Bourassa) Sent Data from Bourassa to Tremblay
+> [ 0.072168] (4:receiver@Jupiter) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.072168] (5:sender@Fafard) Sent Data from Fafard to Jupiter
+> [ 0.072177] (1:sender@Tremblay) Sent Data from Tremblay to Fafard
+> [ 0.072177] (6:receiver@Fafard) Got Data from Tremblay:5000 (still 2 to go)
+> [ 0.080244] (3:sender@Jupiter) Sent Data from Jupiter to Ginette
+> [ 0.080244] (8:receiver@Ginette) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.093415] (5:sender@Fafard) Sent Data from Fafard to Ginette
+> [ 0.093415] (8:receiver@Ginette) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.100740] (4:receiver@Jupiter) Got Data from Ginette:5000 (still 1 to go)
+> [ 0.100740] (7:sender@Ginette) Sent Data from Ginette to Jupiter
+> [ 0.106712] (1:sender@Tremblay) Sent Data from Tremblay to Ginette
+> [ 0.106712] (8:receiver@Ginette) Got Data from Tremblay:5000 (still 1 to go)
+> [ 0.114067] (6:receiver@Fafard) Got Data from Ginette:5000 (still 1 to go)
+> [ 0.114067] (7:sender@Ginette) Sent Data from Ginette to Fafard
+> [ 0.116110] (10:receiver@Bourassa) Got Data from Jupiter:5000 (still 3 to go)
+> [ 0.116110] (3:sender@Jupiter) Sent Data from Jupiter to Bourassa
+> [ 0.116110] (3:sender@Jupiter) Exiting GRAS
+> [ 0.121591] (10:receiver@Bourassa) Got Data from Fafard:5000 (still 2 to go)
+> [ 0.121591] (5:sender@Fafard) Sent Data from Fafard to Bourassa
+> [ 0.121591] (5:sender@Fafard) Exiting GRAS
+> [ 0.136451] (4:receiver@Jupiter) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.136451] (4:receiver@Jupiter) Exiting GRAS
+> [ 0.136451] (9:sender@Bourassa) Sent Data from Bourassa to Jupiter
+> [ 0.142030] (1:sender@Tremblay) Sent Data from Tremblay to Bourassa
+> [ 0.142030] (1:sender@Tremblay) Exiting GRAS
+> [ 0.142030] (10:receiver@Bourassa) Got Data from Tremblay:5000 (still 1 to go)
+> [ 0.142088] (6:receiver@Fafard) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.142088] (6:receiver@Fafard) Exiting GRAS
+> [ 0.142088] (9:sender@Bourassa) Sent Data from Bourassa to Fafard
+> [ 0.154982] (10:receiver@Bourassa) Got Data from Ginette:5000 (still 0 to go)
+> [ 0.154982] (10:receiver@Bourassa) Exiting GRAS
+> [ 0.154982] (7:sender@Ginette) Sent Data from Ginette to Bourassa
+> [ 0.154982] (7:sender@Ginette) Exiting GRAS
+> [ 0.155196] (8:receiver@Ginette) Got Data from Bourassa:5000 (still 0 to go)
+> [ 0.155196] (8:receiver@Ginette) Exiting GRAS
+> [ 0.155196] (9:sender@Bourassa) Sent Data from Bourassa to Ginette
+> [ 0.155196] (9:sender@Bourassa) Exiting GRAS
-$ $SG_TEST_EXENV ./mmrpc_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/mmrpc.xml
-> [Tremblay:server:(1) 0.000000] [MatMult/INFO] Launch server (port=4000)
-> [Fafard:client:(2) 0.000000] [MatMult/INFO] Launch client (server on Tremblay:4000)
-> [Fafard:client:(2) 0.000156] [MatMult/INFO] Connected to Tremblay:4000.
-> [Fafard:client:(2) 0.000156] [MatMult/INFO] >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
-> [Fafard:client:(2) 0.072513] [MatMult/INFO] >>>>>>>> Request sent to Tremblay:4000 <<<<<<<<
-> [Tremblay:server:(1) 0.118967] [gras/INFO] Exiting GRAS
-> [Fafard:client:(2) 0.118967] [MatMult/INFO] >>>>>>>> Got answer from Tremblay:4000 (values are right) <<<<<<<<
-> [Fafard:client:(2) 0.118967] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./mmrpc_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/mmrpc.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:server@Tremblay) Launch server (port=4000)
+> [ 0.000000] (2:client@Fafard) Launch client (server on Tremblay:4000)
+> [ 0.000156] (2:client@Fafard) Connected to Tremblay:4000.
+> [ 0.000156] (2:client@Fafard) >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
+> [ 0.072513] (2:client@Fafard) >>>>>>>> Request sent to Tremblay:4000 <<<<<<<<
+> [ 0.118967] (1:server@Tremblay) Exiting GRAS
+> [ 0.118967] (2:client@Fafard) >>>>>>>> Got answer from Tremblay:4000 (values are right) <<<<<<<<
+> [ 0.118967] (2:client@Fafard) Exiting GRAS
-$ $SG_TEST_EXENV ./mmrpc_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/mmrpc.xml
-> [Tremblay:server:(1) 0.000000] [MatMult/INFO] Launch server (port=4000)
-> [Fafard:client:(2) 0.000000] [MatMult/INFO] Launch client (server on Tremblay:4000)
-> [Fafard:client:(2) 0.000156] [MatMult/INFO] Connected to Tremblay:4000.
-> [Fafard:client:(2) 0.000156] [MatMult/INFO] >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
-> [Fafard:client:(2) 0.072516] [MatMult/INFO] >>>>>>>> Request sent to Tremblay:4000 <<<<<<<<
-> [Tremblay:server:(1) 0.118972] [gras/INFO] Exiting GRAS
-> [Fafard:client:(2) 0.118972] [MatMult/INFO] >>>>>>>> Got answer from Tremblay:4000 (values are right) <<<<<<<<
-> [Fafard:client:(2) 0.118972] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./mmrpc_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/mmrpc.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:server@Tremblay) Launch server (port=4000)
+> [ 0.000000] (2:client@Fafard) Launch client (server on Tremblay:4000)
+> [ 0.000156] (2:client@Fafard) Connected to Tremblay:4000.
+> [ 0.000156] (2:client@Fafard) >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
+> [ 0.072516] (2:client@Fafard) >>>>>>>> Request sent to Tremblay:4000 <<<<<<<<
+> [ 0.118972] (1:server@Tremblay) Exiting GRAS
+> [ 0.118972] (2:client@Fafard) >>>>>>>> Got answer from Tremblay:4000 (values are right) <<<<<<<<
+> [ 0.118972] (2:client@Fafard) Exiting GRAS
RETHROW0("Failed to send PING to server: %s");
}
INFO3(">>>>>>>> Message PING(%d) sent to %s:%d <<<<<<<<",
- ping,
- gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+ ping, gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
/* 7. Wait for the answer from the server, and deal with issues */
TRY {
p Runs the 'ping' test within the simulator (simulation times valid for 32bits architectures)
-$ $SG_TEST_EXENV ./ping_simulator${EXEEXT:=} ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/ping.xml $ARGS
-> [Tremblay:server:(1) 0.000000] [Ping/INFO] Launch server (port=4000)
-> [Fafard:client:(2) 0.000000] [Ping/INFO] Launch client (server on Tremblay:4000)
-> [Tremblay:server:(1) 0.000156] [Ping/INFO] Messages registered
-> [Tremblay:server:(1) 0.000156] [Ping/INFO] Messages registered
-> [Tremblay:server:(1) 0.000156] [Ping/INFO] >>>>>>>> Listening on port 4000 <<<<<<<<
-> [Fafard:client:(2) 0.000156] [Ping/INFO] Connected to Tremblay:4000.
-> [Fafard:client:(2) 0.000156] [Ping/INFO] Messages registered
-> [Fafard:client:(2) 0.000156] [Ping/INFO] >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
-> [Fafard:client:(2) 0.020707] [Ping/INFO] >>>>>>>> Message PING(1234) sent to Tremblay:4000 <<<<<<<<
-> [Tremblay:server:(1) 0.020707] [Ping/INFO] >>>>>>>> Got message PING(1234) from Fafard:5000 <<<<<<<<
-> [Tremblay:server:(1) 0.041259] [Ping/INFO] >>>>>>>> Answered with PONG(4321) <<<<<<<<
-> [Tremblay:server:(1) 0.041259] [Ping/INFO] Done.
-> [Tremblay:server:(1) 0.041259] [gras/INFO] Exiting GRAS
-> [Fafard:client:(2) 0.041259] [Ping/INFO] >>>>>>>> Got PONG(4321) from Tremblay:4000 <<<<<<<<
-> [Fafard:client:(2) 0.041259] [Ping/INFO] Done.
-> [Fafard:client:(2) 0.041259] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./ping_simulator${EXEEXT:=} ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/ping.xml $ARGS --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:server@Tremblay) Launch server (port=4000)
+> [ 0.000000] (2:client@Fafard) Launch client (server on Tremblay:4000)
+> [ 0.000156] (1:server@Tremblay) Messages registered
+> [ 0.000156] (1:server@Tremblay) Messages registered
+> [ 0.000156] (1:server@Tremblay) >>>>>>>> Listening on port 4000 <<<<<<<<
+> [ 0.000156] (2:client@Fafard) Connected to Tremblay:4000.
+> [ 0.000156] (2:client@Fafard) Messages registered
+> [ 0.000156] (2:client@Fafard) >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
+> [ 0.020707] (1:server@Tremblay) >>>>>>>> Got message PING(1234) from Fafard:5000 <<<<<<<<
+> [ 0.020707] (2:client@Fafard) >>>>>>>> Message PING(1234) sent to Tremblay:4000 <<<<<<<<
+> [ 0.041259] (1:server@Tremblay) >>>>>>>> Answered with PONG(4321) <<<<<<<<
+> [ 0.041259] (1:server@Tremblay) Done.
+> [ 0.041259] (1:server@Tremblay) Exiting GRAS
+> [ 0.041259] (2:client@Fafard) >>>>>>>> Got PONG(4321) from Tremblay:4000 <<<<<<<<
+> [ 0.041259] (2:client@Fafard) Done.
+> [ 0.041259] (2:client@Fafard) Exiting GRAS
p Runs the 'ping' test within the simulator (simulation times valid for 64bits architectures)
-$ $SG_TEST_EXENV ./ping_simulator${EXEEXT:=} ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/ping.xml
-> [Tremblay:server:(1) 0.000000] [Ping/INFO] Launch server (port=4000)
-> [Fafard:client:(2) 0.000000] [Ping/INFO] Launch client (server on Tremblay:4000)
-> [Tremblay:server:(1) 0.000156] [Ping/INFO] Messages registered
-> [Tremblay:server:(1) 0.000156] [Ping/INFO] Messages registered
-> [Tremblay:server:(1) 0.000156] [Ping/INFO] >>>>>>>> Listening on port 4000 <<<<<<<<
-> [Fafard:client:(2) 0.000156] [Ping/INFO] Connected to Tremblay:4000.
-> [Fafard:client:(2) 0.000156] [Ping/INFO] Messages registered
-> [Fafard:client:(2) 0.000156] [Ping/INFO] >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
-> [Fafard:client:(2) 0.020707] [Ping/INFO] >>>>>>>> Message PING(1234) sent to Tremblay:4000 <<<<<<<<
-> [Tremblay:server:(1) 0.020707] [Ping/INFO] >>>>>>>> Got message PING(1234) from Fafard:5000 <<<<<<<<
-> [Tremblay:server:(1) 0.041259] [Ping/INFO] >>>>>>>> Answered with PONG(4321) <<<<<<<<
-> [Tremblay:server:(1) 0.041259] [Ping/INFO] Done.
-> [Tremblay:server:(1) 0.041259] [gras/INFO] Exiting GRAS
-> [Fafard:client:(2) 0.041259] [Ping/INFO] >>>>>>>> Got PONG(4321) from Tremblay:4000 <<<<<<<<
-> [Fafard:client:(2) 0.041259] [Ping/INFO] Done.
-> [Fafard:client:(2) 0.041259] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./ping_simulator${EXEEXT:=} ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/ping.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:server@Tremblay) Launch server (port=4000)
+> [ 0.000000] (2:client@Fafard) Launch client (server on Tremblay:4000)
+> [ 0.000156] (1:server@Tremblay) Messages registered
+> [ 0.000156] (1:server@Tremblay) Messages registered
+> [ 0.000156] (1:server@Tremblay) >>>>>>>> Listening on port 4000 <<<<<<<<
+> [ 0.000156] (2:client@Fafard) Connected to Tremblay:4000.
+> [ 0.000156] (2:client@Fafard) Messages registered
+> [ 0.000156] (2:client@Fafard) >>>>>>>> Connected to server which is on Tremblay:4000 <<<<<<<<
+> [ 0.020707] (2:client@Fafard) >>>>>>>> Message PING(1234) sent to Tremblay:4000 <<<<<<<<
+> [ 0.020707] (1:server@Tremblay) >>>>>>>> Got message PING(1234) from Fafard:5000 <<<<<<<<
+> [ 0.041259] (1:server@Tremblay) >>>>>>>> Answered with PONG(4321) <<<<<<<<
+> [ 0.041259] (1:server@Tremblay) Done.
+> [ 0.041259] (1:server@Tremblay) Exiting GRAS
+> [ 0.041259] (2:client@Fafard) >>>>>>>> Got PONG(4321) from Tremblay:4000 <<<<<<<<
+> [ 0.041259] (2:client@Fafard) Done.
+> [ 0.041259] (2:client@Fafard) Exiting GRAS
-$ $SG_TEST_EXENV ./pmm_simulator$EXEEXT ${srcdir:=.}/../../msg/msg_platform.xml ${srcdir:=.}/pmm.xml
-> [Jacquelin:master:(1) 0.000156] [pmm/INFO] Wait for peers for 2 sec
-> [Boivin:slave:(2) 0.000156] [pmm/INFO] Sensor 0 starting
-> [Jean_Yves:slave:(3) 0.000156] [pmm/INFO] Sensor 1 starting
-> [TeX:slave:(4) 0.000156] [pmm/INFO] Sensor 2 starting
-> [Geoff:slave:(5) 0.000156] [pmm/INFO] Sensor 3 starting
-> [Disney:slave:(6) 0.000156] [pmm/INFO] Sensor 4 starting
-> [iRMX:slave:(7) 0.000156] [pmm/INFO] Sensor 5 starting
-> [McGee:slave:(8) 0.000156] [pmm/INFO] Sensor 6 starting
-> [Gatien:slave:(9) 0.000156] [pmm/INFO] Sensor 7 starting
-> [Laroche:slave:(10) 0.000156] [pmm/INFO] Sensor 8 starting
-> [Jacquelin:master:(1) 2.416827] [pmm/INFO] Got only 2 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 4.476356] [pmm/INFO] Got only 3 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 6.476356] [pmm/INFO] Got only 5 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 9.355676] [pmm/INFO] Got only 6 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 12.524103] [pmm/INFO] Good. Got 9 pals
-> [Jacquelin:master:(1) 12.525507] [pmm/INFO] XXXXXXXXXXXXXXXXXXXXXX begin Multiplication
-> [Boivin:slave:(2) 14.369272] [pmm/INFO] Receive my pos (0,0) and assignment
-> [Jean_Yves:slave:(3) 15.113445] [pmm/INFO] Receive my pos (0,1) and assignment
-> [TeX:slave:(4) 16.571623] [pmm/INFO] Receive my pos (0,2) and assignment
-> [Geoff:slave:(5) 16.576168] [pmm/INFO] Receive my pos (1,0) and assignment
-> [Disney:slave:(6) 18.043128] [pmm/INFO] Receive my pos (1,1) and assignment
-> [iRMX:slave:(7) 20.491553] [pmm/INFO] Receive my pos (1,2) and assignment
-> [McGee:slave:(8) 21.206195] [pmm/INFO] Receive my pos (2,0) and assignment
-> [Gatien:slave:(9) 22.231455] [pmm/INFO] Receive my pos (2,1) and assignment
-> [Laroche:slave:(10) 23.679910] [pmm/INFO] Receive my pos (2,2) and assignment
-> [Jacquelin:master:(1) 73.315380] [pmm/INFO] XXXXXXXXXXXXXXXXXXXXXX Ok, the result matches expectations
-> [Boivin:slave:(2) 74.153996] [gras/INFO] Exiting GRAS
-> [Jean_Yves:slave:(3) 74.893654] [gras/INFO] Exiting GRAS
-> [TeX:slave:(4) 76.342765] [gras/INFO] Exiting GRAS
-> [Geoff:slave:(5) 76.347189] [gras/INFO] Exiting GRAS
-> [Disney:slave:(6) 77.805054] [gras/INFO] Exiting GRAS
-> [iRMX:slave:(7) 80.238265] [gras/INFO] Exiting GRAS
-> [McGee:slave:(8) 80.948556] [gras/INFO] Exiting GRAS
-> [Gatien:slave:(9) 81.967478] [gras/INFO] Exiting GRAS
-> [Jacquelin:master:(1) 83.407037] [gras/INFO] Exiting GRAS
-> [Laroche:slave:(10) 83.407037] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./pmm_simulator$EXEEXT ${srcdir:=.}/../../msg/msg_platform.xml ${srcdir:=.}/pmm.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000156] (10:slave@Laroche) Sensor 8 starting
+> [ 0.000156] (1:master@Jacquelin) Wait for peers for 2 sec
+> [ 0.000156] (2:slave@Boivin) Sensor 0 starting
+> [ 0.000156] (3:slave@Jean_Yves) Sensor 1 starting
+> [ 0.000156] (4:slave@TeX) Sensor 2 starting
+> [ 0.000156] (5:slave@Geoff) Sensor 3 starting
+> [ 0.000156] (6:slave@Disney) Sensor 4 starting
+> [ 0.000156] (7:slave@iRMX) Sensor 5 starting
+> [ 0.000156] (8:slave@McGee) Sensor 6 starting
+> [ 0.000156] (9:slave@Gatien) Sensor 7 starting
+> [ 2.416827] (1:master@Jacquelin) Got only 2 pals (of 9). Wait 2 more seconds
+> [ 4.476356] (1:master@Jacquelin) Got only 3 pals (of 9). Wait 2 more seconds
+> [ 6.476356] (1:master@Jacquelin) Got only 5 pals (of 9). Wait 2 more seconds
+> [ 9.355676] (1:master@Jacquelin) Got only 6 pals (of 9). Wait 2 more seconds
+> [ 12.524103] (1:master@Jacquelin) Good. Got 9 pals
+> [ 12.525507] (1:master@Jacquelin) XXXXXXXXXXXXXXXXXXXXXX begin Multiplication
+> [ 14.369272] (2:slave@Boivin) Receive my pos (0,0) and assignment
+> [ 15.113445] (3:slave@Jean_Yves) Receive my pos (0,1) and assignment
+> [ 16.571623] (4:slave@TeX) Receive my pos (0,2) and assignment
+> [ 16.576168] (5:slave@Geoff) Receive my pos (1,0) and assignment
+> [ 18.043128] (6:slave@Disney) Receive my pos (1,1) and assignment
+> [ 20.491553] (7:slave@iRMX) Receive my pos (1,2) and assignment
+> [ 21.206195] (8:slave@McGee) Receive my pos (2,0) and assignment
+> [ 22.231455] (9:slave@Gatien) Receive my pos (2,1) and assignment
+> [ 23.679910] (10:slave@Laroche) Receive my pos (2,2) and assignment
+> [ 73.315380] (1:master@Jacquelin) XXXXXXXXXXXXXXXXXXXXXX Ok, the result matches expectations
+> [ 74.153996] (2:slave@Boivin) Exiting GRAS
+> [ 74.893654] (3:slave@Jean_Yves) Exiting GRAS
+> [ 76.342765] (4:slave@TeX) Exiting GRAS
+> [ 76.347189] (5:slave@Geoff) Exiting GRAS
+> [ 77.805054] (6:slave@Disney) Exiting GRAS
+> [ 80.238265] (7:slave@iRMX) Exiting GRAS
+> [ 80.948556] (8:slave@McGee) Exiting GRAS
+> [ 81.967478] (9:slave@Gatien) Exiting GRAS
+> [ 83.407037] (1:master@Jacquelin) Exiting GRAS
+> [ 83.407037] (10:slave@Laroche) Exiting GRAS
#! ./tesh
-$ $SG_TEST_EXENV ./pmm_simulator$EXEEXT ${srcdir:=.}/../../msg/msg_platform.xml ${srcdir:=.}/pmm.xml
-> [Jacquelin:master:(1) 0.000156] [pmm/INFO] Wait for peers for 2 sec
-> [Boivin:slave:(2) 0.000156] [pmm/INFO] Sensor 0 starting
-> [Jean_Yves:slave:(3) 0.000156] [pmm/INFO] Sensor 1 starting
-> [TeX:slave:(4) 0.000156] [pmm/INFO] Sensor 2 starting
-> [Geoff:slave:(5) 0.000156] [pmm/INFO] Sensor 3 starting
-> [Disney:slave:(6) 0.000156] [pmm/INFO] Sensor 4 starting
-> [iRMX:slave:(7) 0.000156] [pmm/INFO] Sensor 5 starting
-> [McGee:slave:(8) 0.000156] [pmm/INFO] Sensor 6 starting
-> [Gatien:slave:(9) 0.000156] [pmm/INFO] Sensor 7 starting
-> [Laroche:slave:(10) 0.000156] [pmm/INFO] Sensor 8 starting
-> [Jacquelin:master:(1) 2.416827] [pmm/INFO] Got only 2 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 4.476356] [pmm/INFO] Got only 3 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 6.476356] [pmm/INFO] Got only 5 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 9.355676] [pmm/INFO] Got only 6 pals (of 9). Wait 2 more seconds
-> [Jacquelin:master:(1) 12.524103] [pmm/INFO] Good. Got 9 pals
-> [Jacquelin:master:(1) 12.525507] [pmm/INFO] XXXXXXXXXXXXXXXXXXXXXX begin Multiplication
-> [Boivin:slave:(2) 14.369401] [pmm/INFO] Receive my pos (0,0) and assignment
-> [Jean_Yves:slave:(3) 15.113688] [pmm/INFO] Receive my pos (0,1) and assignment
-> [TeX:slave:(4) 16.572089] [pmm/INFO] Receive my pos (0,2) and assignment
-> [Geoff:slave:(5) 16.576641] [pmm/INFO] Receive my pos (1,0) and assignment
-> [Disney:slave:(6) 18.043825] [pmm/INFO] Receive my pos (1,1) and assignment
-> [iRMX:slave:(7) 20.492624] [pmm/INFO] Receive my pos (1,2) and assignment
-> [McGee:slave:(8) 21.207375] [pmm/INFO] Receive my pos (2,0) and assignment
-> [Gatien:slave:(9) 22.232792] [pmm/INFO] Receive my pos (2,1) and assignment
-> [Laroche:slave:(10) 23.681469] [pmm/INFO] Receive my pos (2,2) and assignment
-> [Jacquelin:master:(1) 73.318369] [pmm/INFO] XXXXXXXXXXXXXXXXXXXXXX Ok, the result matches expectations
-> [Boivin:slave:(2) 74.156986] [gras/INFO] Exiting GRAS
-> [Jean_Yves:slave:(3) 74.896643] [gras/INFO] Exiting GRAS
-> [TeX:slave:(4) 76.345754] [gras/INFO] Exiting GRAS
-> [Geoff:slave:(5) 76.350179] [gras/INFO] Exiting GRAS
-> [Disney:slave:(6) 77.808044] [gras/INFO] Exiting GRAS
-> [iRMX:slave:(7) 80.241254] [gras/INFO] Exiting GRAS
-> [McGee:slave:(8) 80.951545] [gras/INFO] Exiting GRAS
-> [Gatien:slave:(9) 81.970467] [gras/INFO] Exiting GRAS
-> [Jacquelin:master:(1) 83.410027] [gras/INFO] Exiting GRAS
-> [Laroche:slave:(10) 83.410027] [gras/INFO] Exiting GRAS
\ No newline at end of file
+! output sort
+$ $SG_TEST_EXENV ./pmm_simulator$EXEEXT ${srcdir:=.}/../../msg/msg_platform.xml ${srcdir:=.}/pmm.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000156] (1:master@Jacquelin) Wait for peers for 2 sec
+> [ 0.000156] (2:slave@Boivin) Sensor 0 starting
+> [ 0.000156] (3:slave@Jean_Yves) Sensor 1 starting
+> [ 0.000156] (4:slave@TeX) Sensor 2 starting
+> [ 0.000156] (5:slave@Geoff) Sensor 3 starting
+> [ 0.000156] (6:slave@Disney) Sensor 4 starting
+> [ 0.000156] (7:slave@iRMX) Sensor 5 starting
+> [ 0.000156] (8:slave@McGee) Sensor 6 starting
+> [ 0.000156] (9:slave@Gatien) Sensor 7 starting
+> [ 0.000156] (10:slave@Laroche) Sensor 8 starting
+> [ 2.416827] (1:master@Jacquelin) Got only 2 pals (of 9). Wait 2 more seconds
+> [ 4.476356] (1:master@Jacquelin) Got only 3 pals (of 9). Wait 2 more seconds
+> [ 6.476356] (1:master@Jacquelin) Got only 5 pals (of 9). Wait 2 more seconds
+> [ 9.355676] (1:master@Jacquelin) Got only 6 pals (of 9). Wait 2 more seconds
+> [ 12.524103] (1:master@Jacquelin) Good. Got 9 pals
+> [ 12.525507] (1:master@Jacquelin) XXXXXXXXXXXXXXXXXXXXXX begin Multiplication
+> [ 14.369401] (2:slave@Boivin) Receive my pos (0,0) and assignment
+> [ 15.113688] (3:slave@Jean_Yves) Receive my pos (0,1) and assignment
+> [ 16.572089] (4:slave@TeX) Receive my pos (0,2) and assignment
+> [ 16.576641] (5:slave@Geoff) Receive my pos (1,0) and assignment
+> [ 18.043825] (6:slave@Disney) Receive my pos (1,1) and assignment
+> [ 20.492624] (7:slave@iRMX) Receive my pos (1,2) and assignment
+> [ 21.207375] (8:slave@McGee) Receive my pos (2,0) and assignment
+> [ 22.232792] (9:slave@Gatien) Receive my pos (2,1) and assignment
+> [ 23.681469] (10:slave@Laroche) Receive my pos (2,2) and assignment
+> [ 73.318369] (1:master@Jacquelin) XXXXXXXXXXXXXXXXXXXXXX Ok, the result matches expectations
+> [ 74.156986] (2:slave@Boivin) Exiting GRAS
+> [ 74.896643] (3:slave@Jean_Yves) Exiting GRAS
+> [ 76.345754] (4:slave@TeX) Exiting GRAS
+> [ 76.350179] (5:slave@Geoff) Exiting GRAS
+> [ 77.808044] (6:slave@Disney) Exiting GRAS
+> [ 80.241254] (7:slave@iRMX) Exiting GRAS
+> [ 80.951545] (8:slave@McGee) Exiting GRAS
+> [ 81.970467] (9:slave@Gatien) Exiting GRAS
+> [ 83.410027] (1:master@Jacquelin) Exiting GRAS
+> [ 83.410027] (10:slave@Laroche) Exiting GRAS
p Runs the 'properties' test within the simulator (simulation times valid for 32bits architectures)
-$ $SG_TEST_EXENV ./properties_simulator${EXEEXT:=} ${srcdir:=.}/../../platforms/prop.xml ${srcdir:=.}/properties.xml
-> [host1:bob:(2) 0.000000] [test/INFO] == Dump all the properties of host1
-> [host1:bob:(2) 0.000000] [test/INFO] Host property: 'SG_TEST_Hdd' has value: '180'
-> [host1:bob:(2) 0.000000] [test/INFO] Host property: 'SG_TEST_mem' has value: '4'
-> [host1:bob:(2) 0.000000] [test/INFO] == Try to get a property that does not exist
-> [host1:bob:(2) 0.000000] [test/INFO] == Set a host property that alice will try to retrieve in SG (from bob->hello)
-> [host1:bob:(2) 0.000000] [test/INFO] == Dump all the properties of host1 again to check the addition
-> [host1:bob:(2) 0.000000] [test/INFO] Host property: 'from bob' has value: 'hello'
-> [host1:bob:(2) 0.000000] [test/INFO] Host property: 'SG_TEST_Hdd' has value: '180'
-> [host1:bob:(2) 0.000000] [test/INFO] Host property: 'SG_TEST_mem' has value: '4'
-> [host1:alice:(1) 1.000000] [test/INFO] == Dump all the properties of current host
-> [host1:alice:(1) 1.000000] [test/INFO] Host property: 'from bob' has value: 'hello'
-> [host1:alice:(1) 1.000000] [test/INFO] Host property: 'SG_TEST_Hdd' has value: '180'
-> [host1:alice:(1) 1.000000] [test/INFO] Host property: 'SG_TEST_mem' has value: '4'
-> [host1:alice:(1) 1.000000] [test/INFO] == Dump all the properties of alice
-> [host1:alice:(1) 1.000000] [test/INFO] Process property: 'SG_TEST_blah' has value: 'blah'
-> [host1:alice:(1) 1.000000] [test/INFO] == Try to get a process property that does not exist
-> [host1:alice:(1) 1.000000] [test/INFO] == Trying to modify a process property
-> [host1:alice:(1) 1.000000] [gras/INFO] Exiting GRAS
-> [host1:bob:(2) 1.000000] [gras/INFO] Exiting GRAS
+! output sort
+$ $SG_TEST_EXENV ./properties_simulator${EXEEXT:=} ${srcdir:=.}/../../platforms/prop.xml ${srcdir:=.}/properties.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (2:bob@host1) == Dump all the properties of host1
+> [ 0.000000] (2:bob@host1) Host property: 'SG_TEST_Hdd' has value: '180'
+> [ 0.000000] (2:bob@host1) Host property: 'SG_TEST_mem' has value: '4'
+> [ 0.000000] (2:bob@host1) == Try to get a property that does not exist
+> [ 0.000000] (2:bob@host1) == Set a host property that alice will try to retrieve in SG (from bob->hello)
+> [ 0.000000] (2:bob@host1) == Dump all the properties of host1 again to check the addition
+> [ 0.000000] (2:bob@host1) Host property: 'from bob' has value: 'hello'
+> [ 0.000000] (2:bob@host1) Host property: 'SG_TEST_Hdd' has value: '180'
+> [ 0.000000] (2:bob@host1) Host property: 'SG_TEST_mem' has value: '4'
+> [ 1.000000] (1:alice@host1) == Dump all the properties of current host
+> [ 1.000000] (1:alice@host1) Host property: 'from bob' has value: 'hello'
+> [ 1.000000] (1:alice@host1) Host property: 'SG_TEST_Hdd' has value: '180'
+> [ 1.000000] (1:alice@host1) Host property: 'SG_TEST_mem' has value: '4'
+> [ 1.000000] (1:alice@host1) == Dump all the properties of alice
+> [ 1.000000] (1:alice@host1) Process property: 'SG_TEST_blah' has value: 'blah'
+> [ 1.000000] (1:alice@host1) == Try to get a process property that does not exist
+> [ 1.000000] (1:alice@host1) == Trying to modify a process property
+> [ 1.000000] (1:alice@host1) Exiting GRAS
+> [ 1.000000] (2:bob@host1) Exiting GRAS
# Trying to get it right would prevent me to ever submit that damn paper.
$ $SG_TEST_EXENV ./rpc_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/rpc.xml "--log=root.fmt:'[%h:%P:(%i)] [%c/%p] %m%n'"
-> [Tremblay:server:(1)] [Rpc/INFO] Launch server (port=4000)
-> [Ginette:forwarder:(2)] [Rpc/INFO] Launch forwarder (port=4000)
> [Fafard:client:(3)] [Rpc/INFO] Launch client (server on Tremblay:4000)
+> [Ginette:forwarder:(2)] [Rpc/INFO] Launch forwarder (port=4000)
+> [Tremblay:server:(1)] [Rpc/INFO] Launch server (port=4000)
> [Tremblay:server:(1)] [Rpc/INFO] Listening on port 4000
> [Fafard:client:(3)] [Rpc/INFO] Connected to Tremblay:4000.
> [Fafard:client:(3)] [Rpc/INFO] Connected to server which is on Tremblay:4000
# Trying to get it right would prevent me to ever submit that damn paper.
$ $SG_TEST_EXENV ./rpc_simulator$EXEEXT ${srcdir:=.}/../../msg/small_platform.xml ${srcdir:=.}/rpc.xml "--log=root.fmt:'[%h:%P:(%i)] [%c/%p] %m%n'"
-> [Tremblay:server:(1)] [Rpc/INFO] Launch server (port=4000)
-> [Ginette:forwarder:(2)] [Rpc/INFO] Launch forwarder (port=4000)
> [Fafard:client:(3)] [Rpc/INFO] Launch client (server on Tremblay:4000)
+> [Ginette:forwarder:(2)] [Rpc/INFO] Launch forwarder (port=4000)
+> [Tremblay:server:(1)] [Rpc/INFO] Launch server (port=4000)
> [Tremblay:server:(1)] [Rpc/INFO] Listening on port 4000
> [Fafard:client:(3)] [Rpc/INFO] Connected to Tremblay:4000.
> [Fafard:client:(3)] [Rpc/INFO] Connected to server which is on Tremblay:4000
# Later modify the commande and specify the platform and deployment path
-$ lua mult_matrix.lua
-> [Inmos:Sender:(1) 0.000000] [lua/INFO] Hello From Sender
-> [Inmos:Sender:(1) 0.000000] [lua/INFO] Argc=4 (should be 4)
-> [Inmos:Sender:(1) 0.000000] [lua/INFO] Sending matrix_task to Bellevue
-> [Bellevue:Receiver:(2) 0.000000] [lua/INFO] Hello From Receiver
-> [Bellevue:Receiver:(2) 0.000000] [lua/INFO] Receiving Task from Inmos
-> [Bellevue:Receiver:(2) 0.030276] [lua/INFO] Calcul is done ... Bye
-> [Inmos:Sender:(1) 0.030276] [lua/INFO] Got the Multiplication result ...Bye
-> [0.030276] [lua/INFO] Simulation's over.See you.
+! output sort
+$ lua mult_matrix.lua --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:Sender@Inmos) Hello From Sender
+> [ 0.000000] (1:Sender@Inmos) Argc=4 (should be 4)
+> [ 0.000000] (1:Sender@Inmos) Sending matrix_task to Bellevue
+> [ 0.000000] (2:Receiver@Bellevue) Hello From Receiver
+> [ 0.000000] (2:Receiver@Bellevue) Receiving Task from Inmos
+> [ 0.030276] (0:@) Simulation's over.See you.
+> [ 0.030276] (1:Sender@Inmos) Got the Multiplication result ...Bye
+> [ 0.030276] (2:Receiver@Bellevue) Calcul is done ... Bye
name = xbt_str_join(action, " ");
if (mutex == NULL) { // first arriving on the barrier
- mutex = SIMIX_mutex_init();
- cond = SIMIX_cond_init();
+ mutex = SIMIX_req_mutex_init();
+ cond = SIMIX_req_cond_init();
processes_arrived_sofar=0;
}
DEBUG2("Entering barrier: %s (%d already there)", name,processes_arrived_sofar);
- SIMIX_mutex_lock(mutex);
+ SIMIX_req_mutex_lock(mutex);
if (++processes_arrived_sofar == communicator_size) {
- SIMIX_cond_broadcast(cond);
- SIMIX_mutex_unlock(mutex);
+ SIMIX_req_cond_broadcast(cond);
+ SIMIX_req_mutex_unlock(mutex);
} else {
- SIMIX_cond_wait(cond,mutex);
- SIMIX_mutex_unlock(mutex);
+ SIMIX_req_cond_wait(cond,mutex);
+ SIMIX_req_mutex_unlock(mutex);
}
DEBUG1("Exiting barrier: %s", name);
processes_arrived_sofar--;
if (!processes_arrived_sofar) {
- SIMIX_cond_destroy(cond);
- SIMIX_mutex_destroy(mutex);
+ SIMIX_req_cond_destroy(cond);
+ SIMIX_req_mutex_destroy(mutex);
mutex=NULL;
}
# A little tesh file testing most MPI-related actions
-$ ./actions --log=actions.thres=verbose --log=root.fmt:[%h:%P:(%i)%e%r]%e%m%n homogeneous_3_hosts.xml deployment_split.xml
-> [host0:p0:(1) 500.005200] p0 recv p1 500.005200
-> [host1:p1:(2) 500.005200] p1 send p0 1e10 500.005200
-> [host0:p0:(1) 500.005201] p0 compute 12 0.000001
-> [host1:p1:(2) 512.005200] p1 sleep 12 12.000000
-> [::(0) 512.005200] Simulation time 512.005
+! output sort
+$ ./actions --log=actions.thres=verbose homogeneous_3_hosts.xml deployment_split.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [500.005200] (1:p0@host0) p0 recv p1 500.005200
+> [500.005200] (2:p1@host1) p1 send p0 1e10 500.005200
+> [500.005201] (1:p0@host0) p0 compute 12 0.000001
+> [512.005200] (0:@) Simulation time 512.005
+> [512.005200] (2:p1@host1) p1 sleep 12 12.000000
-$ ./actions --log=actions.thres=verbose --log=root.fmt:[%h:%P:(%i)%e%r]%e%m%n homogeneous_3_hosts.xml deployment.xml actions_allReduce.txt
-> [host0:p0:(1) 0.000000] p0 comm_size 3 0.000000
-> [host1:p1:(2) 100.015912] p1 allReduce 5e8 5e8 100.015912
-> [host2:p2:(3) 100.021112] p2 allReduce 5e8 5e8 100.021112
-> [host0:p0:(1) 100.021112] p0 allReduce 5e8 5e8 100.021112
-> [host1:p1:(2) 150.015912] p1 compute 5e8 50.000000
-> [host0:p0:(1) 150.021112] p0 compute 5e8 50.000000
-> [host2:p2:(3) 150.021112] p2 compute 5e8 50.000000
-> [::(0) 150.021112] Simulation time 150.021
+! output sort
+$ ./actions --log=actions.thres=verbose homogeneous_3_hosts.xml deployment.xml actions_allReduce.txt --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:p0@host0) p0 comm_size 3 0.000000
+> [100.015912] (2:p1@host1) p1 allReduce 5e8 5e8 100.015912
+> [100.021112] (1:p0@host0) p0 allReduce 5e8 5e8 100.021112
+> [100.021112] (3:p2@host2) p2 allReduce 5e8 5e8 100.021112
+> [150.015912] (2:p1@host1) p1 compute 5e8 50.000000
+> [150.021112] (0:@) Simulation time 150.021
+> [150.021112] (1:p0@host0) p0 compute 5e8 50.000000
+> [150.021112] (3:p2@host2) p2 compute 5e8 50.000000
-$ ./actions --log=actions.thres=verbose --log=root.fmt:[%h:%P:(%i)%e%r]%e%m%n homogeneous_3_hosts.xml deployment.xml actions_barrier.txt
-> [host0:p0:(1) 0.000000] p0 comm_size 3 0.000000
-> [host1:p1:(2) 0.000000] p1 comm_size 3 0.000000
-> [host2:p2:(3) 0.000000] p2 comm_size 3 0.000000
-> [host0:p0:(1) 0.505200] p0 send p1 1E7 0.505200
-> [host1:p1:(2) 0.505200] p1 recv p0 0.505200
-> [host1:p1:(2) 0.905200] p1 compute 4E6 0.400000
-> [host2:p2:(3) 0.905200] p2 compute 4E6 0.400000
-> [host0:p0:(1) 0.955200] p0 compute 4.5E6 0.450000
-> [::(0) 0.955200] Simulation time 0.9552
+! output sort
+$ ./actions --log=actions.thres=verbose homogeneous_3_hosts.xml deployment.xml actions_barrier.txt --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:p0@host0) p0 comm_size 3 0.000000
+> [ 0.000000] (2:p1@host1) p1 comm_size 3 0.000000
+> [ 0.000000] (3:p2@host2) p2 comm_size 3 0.000000
+> [ 0.505200] (1:p0@host0) p0 send p1 1E7 0.505200
+> [ 0.505200] (2:p1@host1) p1 recv p0 0.505200
+> [ 0.905200] (2:p1@host1) p1 compute 4E6 0.400000
+> [ 0.905200] (3:p2@host2) p2 compute 4E6 0.400000
+> [ 0.955200] (0:@) Simulation time 0.9552
+> [ 0.955200] (1:p0@host0) p0 compute 4.5E6 0.450000
-$ ./actions --log=actions.thres=verbose --log=root.fmt:[%h:%P:(%i)%e%r]%e%m%n homogeneous_3_hosts.xml deployment.xml actions_bcast.txt
-> [host0:p0:(1) 0.000000] p0 comm_size 3 0.000000
-> [host1:p1:(2) 25.010400] p1 bcast 5e8 25.010400
-> [host2:p2:(3) 25.015600] p2 bcast 5e8 25.015600
-> [host0:p0:(1) 25.015600] p0 bcast 5e8 25.015600
-> [host1:p1:(2) 45.010400] p1 compute 2e8 20.000000
-> [host0:p0:(1) 75.015600] p0 compute 5e8 50.000000
-> [host2:p2:(3) 75.015600] p2 compute 5e8 50.000000
-> [host1:p1:(2) 100.026000] p1 bcast 5e8 55.015600
-> [host2:p2:(3) 100.031200] p2 bcast 5e8 25.015600
-> [host0:p0:(1) 100.031200] p0 bcast 5e8 25.015600
-> [host1:p1:(2) 120.026000] p1 compute 2e8 20.000000
-> [host0:p0:(1) 150.031200] p0 compute 5e8 50.000000
-> [host2:p2:(3) 150.031200] p2 compute 5e8 50.000000
-> [host1:p1:(2) 175.036400] p1 reduce 5e8 5e8 55.010400
-> [host2:p2:(3) 175.036400] p2 reduce 5e8 5e8 25.005200
-> [host0:p0:(1) 225.036712] p0 reduce 5e8 5e8 75.005512
-> [::(0) 225.036712] Simulation time 225.037
+! output sort
+$ ./actions --log=actions.thres=verbose homogeneous_3_hosts.xml deployment.xml actions_bcast.txt --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:p0@host0) p0 comm_size 3 0.000000
+> [ 25.010400] (2:p1@host1) p1 bcast 5e8 25.010400
+> [ 25.015600] (1:p0@host0) p0 bcast 5e8 25.015600
+> [ 25.015600] (3:p2@host2) p2 bcast 5e8 25.015600
+> [ 45.010400] (2:p1@host1) p1 compute 2e8 20.000000
+> [ 75.015600] (1:p0@host0) p0 compute 5e8 50.000000
+> [ 75.015600] (3:p2@host2) p2 compute 5e8 50.000000
+> [100.026000] (2:p1@host1) p1 bcast 5e8 55.015600
+> [100.031200] (1:p0@host0) p0 bcast 5e8 25.015600
+> [100.031200] (3:p2@host2) p2 bcast 5e8 25.015600
+> [120.026000] (2:p1@host1) p1 compute 2e8 20.000000
+> [150.031200] (1:p0@host0) p0 compute 5e8 50.000000
+> [150.031200] (3:p2@host2) p2 compute 5e8 50.000000
+> [175.036400] (2:p1@host1) p1 reduce 5e8 5e8 55.010400
+> [175.036400] (3:p2@host2) p2 reduce 5e8 5e8 25.005200
+> [225.036712] (0:@) Simulation time 225.037
+> [225.036712] (1:p0@host0) p0 reduce 5e8 5e8 75.005512
-$ ./actions --log=actions.thres=verbose --log=root.fmt:[%h:%P:(%i)%e%r]%e%m%n homogeneous_3_hosts.xml deployment.xml actions_reduce.txt
-> [host0:p0:(1) 0.000000] p0 comm_size 3 0.000000
-> [host1:p1:(2) 25.005200] p1 reduce 5e8 5e8 25.005200
-> [host2:p2:(3) 25.005200] p2 reduce 5e8 5e8 25.005200
-> [host1:p1:(2) 75.005200] p1 compute 5e8 50.000000
-> [host2:p2:(3) 75.005200] p2 compute 5e8 50.000000
-> [host0:p0:(1) 75.005512] p0 reduce 5e8 5e8 75.005512
-> [host0:p0:(1) 125.005512] p0 compute 5e8 50.000000
-> [::(0) 125.005512] Simulation time 125.006
+! output sort
+$ ./actions --log=actions.thres=verbose homogeneous_3_hosts.xml deployment.xml actions_reduce.txt --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:p0@host0) p0 comm_size 3 0.000000
+> [ 25.005200] (2:p1@host1) p1 reduce 5e8 5e8 25.005200
+> [ 25.005200] (3:p2@host2) p2 reduce 5e8 5e8 25.005200
+> [ 75.005200] (2:p1@host1) p1 compute 5e8 50.000000
+> [ 75.005200] (3:p2@host2) p2 compute 5e8 50.000000
+> [ 75.005512] (1:p0@host0) p0 reduce 5e8 5e8 75.005512
+> [125.005512] (0:@) Simulation time 125.006
+> [125.005512] (1:p0@host0) p0 compute 5e8 50.000000
-$ ./actions --log=actions.thres=verbose --log=root.fmt:[%h:%P:(%i)%e%r]%e%m%n homogeneous_3_hosts.xml deployment.xml actions_with_isend.txt
-> [host1:p1:(2) 0.000000] p1 Irecv p0 0.000000
-> [host2:p2:(3) 0.000000] p2 Irecv p1 0.000000
-> [host2:p2:(3) 50.000000] p2 compute 5e8 50.000000
-> [host0:p0:(1) 50.005200] p0 send p1 1e9 50.005200
-> [host1:p1:(2) 100.000000] p1 compute 1e9 100.000000
-> [host1:p1:(2) 100.000156] p1 wait 0.000156
-> [host0:p0:(1) 150.005200] p0 compute 1e9 100.000000
-> [host1:p1:(2) 150.005356] p1 send p2 1e9 50.005200
-> [host2:p2:(3) 150.005512] p2 wait 100.005512
-> [host2:p2:(3) 150.005512] p2 Isend p0 1e9 0.000000
-> [host2:p2:(3) 200.005512] p2 compute 5e8 50.000000
-> [host0:p0:(1) 200.010712] p0 recv p2 50.005512
-> [::(0) 200.010712] Simulation time 200.011
+! output sort
+$ ./actions --log=actions.thres=verbose homogeneous_3_hosts.xml deployment.xml actions_with_isend.txt --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (2:p1@host1) p1 Irecv p0 0.000000
+> [ 0.000000] (3:p2@host2) p2 Irecv p1 0.000000
+> [ 50.000000] (3:p2@host2) p2 compute 5e8 50.000000
+> [ 50.005200] (1:p0@host0) p0 send p1 1e9 50.005200
+> [100.000000] (2:p1@host1) p1 compute 1e9 100.000000
+> [100.000156] (2:p1@host1) p1 wait 0.000156
+> [150.005200] (1:p0@host0) p0 compute 1e9 100.000000
+> [150.005356] (2:p1@host1) p1 send p2 1e9 50.005200
+> [150.005512] (3:p2@host2) p2 wait 100.005512
+> [150.005512] (3:p2@host2) p2 Isend p0 1e9 0.000000
+> [200.005512] (3:p2@host2) p2 compute 5e8 50.000000
+> [200.010712] (0:@) Simulation time 200.011
+> [200.010712] (1:p0@host0) p0 recv p2 50.005512
-
\ No newline at end of file
p Test1 MSG_comm_test() with Sleep_sender > Sleep_receiver
-$ ./peer small_platform.xml deployment_peer01.xml
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] sleep_start_time : 5.000000 , sleep_test_time : 0.100000
-> [Ruby:receiver:(2) 0.000000] [msg_test/INFO] sleep_start_time : 1.000000 , sleep_test_time : 0.100000
-> [Ruby:receiver:(2) 1.000000] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.000000] [msg_test/INFO] Send to receiver-0 Task_0
-> [Ruby:receiver:(2) 5.100000] [msg_test/INFO] Received "Task_0"
-> [Ruby:receiver:(2) 5.100000] [msg_test/INFO] Processing "Task_0"
-> [Tremblay:sender:(1) 5.100000] [msg_test/INFO] Send to receiver-0 Task_1
-> [Ruby:receiver:(2) 5.609710] [msg_test/INFO] "Task_0" done
-> [Ruby:receiver:(2) 5.609710] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.700000] [msg_test/INFO] Send to receiver-0 Task_2
-> [Ruby:receiver:(2) 5.709710] [msg_test/INFO] Received "Task_1"
-> [Ruby:receiver:(2) 5.709710] [msg_test/INFO] Processing "Task_1"
-> [Ruby:receiver:(2) 6.219420] [msg_test/INFO] "Task_1" done
-> [Ruby:receiver:(2) 6.219420] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.300000] [msg_test/INFO] Send to receiver-0 finalize
-> [Ruby:receiver:(2) 6.319420] [msg_test/INFO] Received "Task_2"
-> [Ruby:receiver:(2) 6.319420] [msg_test/INFO] Processing "Task_2"
-> [Ruby:receiver:(2) 6.829130] [msg_test/INFO] "Task_2" done
-> [Ruby:receiver:(2) 6.829130] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.900000] [msg_test/INFO] Goodbye now!
-> [Ruby:receiver:(2) 6.929130] [msg_test/INFO] Received "finalize"
-> [Ruby:receiver:(2) 6.929130] [msg_test/INFO] I'm done. See you!
-> [6.929130] [msg_test/INFO] Simulation time 6.92913
+! output sort
+$ ./peer small_platform.xml deployment_peer01.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 5.000000 , sleep_test_time : 0.100000
+> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 1.000000 , sleep_test_time : 0.100000
+> [ 1.000000] (2:receiver@Ruby) Wait to receive a task
+> [ 5.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
+> [ 5.100000] (1:sender@Tremblay) Send to receiver-0 Task_1
+> [ 5.100000] (2:receiver@Ruby) Received "Task_0"
+> [ 5.100000] (2:receiver@Ruby) Processing "Task_0"
+> [ 5.609710] (2:receiver@Ruby) "Task_0" done
+> [ 5.609710] (2:receiver@Ruby) Wait to receive a task
+> [ 5.700000] (1:sender@Tremblay) Send to receiver-0 Task_2
+> [ 5.709710] (2:receiver@Ruby) Received "Task_1"
+> [ 5.709710] (2:receiver@Ruby) Processing "Task_1"
+> [ 6.219420] (2:receiver@Ruby) "Task_1" done
+> [ 6.219420] (2:receiver@Ruby) Wait to receive a task
+> [ 6.300000] (1:sender@Tremblay) Send to receiver-0 finalize
+> [ 6.319420] (2:receiver@Ruby) Received "Task_2"
+> [ 6.319420] (2:receiver@Ruby) Processing "Task_2"
+> [ 6.829130] (2:receiver@Ruby) "Task_2" done
+> [ 6.829130] (2:receiver@Ruby) Wait to receive a task
+> [ 6.900000] (1:sender@Tremblay) Goodbye now!
+> [ 6.929130] (0:@) Simulation time 6.92913
+> [ 6.929130] (2:receiver@Ruby) Received "finalize"
+> [ 6.929130] (2:receiver@Ruby) I'm done. See you!
p Test2 MSG_comm_test() with Sleep_sender < Sleep_receiver
-$ ./peer small_platform.xml deployment_peer02.xml
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] sleep_start_time : 1.000000 , sleep_test_time : 0.100000
-> [Ruby:receiver:(2) 0.000000] [msg_test/INFO] sleep_start_time : 5.000000 , sleep_test_time : 0.100000
-> [Tremblay:sender:(1) 1.000000] [msg_test/INFO] Send to receiver-0 Task_0
-> [Ruby:receiver:(2) 5.000000] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.100000] [msg_test/INFO] Send to receiver-0 Task_1
-> [Ruby:receiver:(2) 5.100000] [msg_test/INFO] Received "Task_0"
-> [Ruby:receiver:(2) 5.100000] [msg_test/INFO] Processing "Task_0"
-> [Ruby:receiver:(2) 5.609710] [msg_test/INFO] "Task_0" done
-> [Ruby:receiver:(2) 5.609710] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.700000] [msg_test/INFO] Send to receiver-0 Task_2
-> [Ruby:receiver:(2) 5.709710] [msg_test/INFO] Received "Task_1"
-> [Ruby:receiver:(2) 5.709710] [msg_test/INFO] Processing "Task_1"
-> [Ruby:receiver:(2) 6.219420] [msg_test/INFO] "Task_1" done
-> [Ruby:receiver:(2) 6.219420] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.300000] [msg_test/INFO] Send to receiver-0 finalize
-> [Ruby:receiver:(2) 6.319420] [msg_test/INFO] Received "Task_2"
-> [Ruby:receiver:(2) 6.319420] [msg_test/INFO] Processing "Task_2"
-> [Ruby:receiver:(2) 6.829130] [msg_test/INFO] "Task_2" done
-> [Ruby:receiver:(2) 6.829130] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.900000] [msg_test/INFO] Goodbye now!
-> [Ruby:receiver:(2) 6.929130] [msg_test/INFO] Received "finalize"
-> [Ruby:receiver:(2) 6.929130] [msg_test/INFO] I'm done. See you!
-> [6.929130] [msg_test/INFO] Simulation time 6.92913
+! output sort
+$ ./peer small_platform.xml deployment_peer02.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 1.000000 , sleep_test_time : 0.100000
+> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 5.000000 , sleep_test_time : 0.100000
+> [ 1.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
+> [ 5.000000] (2:receiver@Ruby) Wait to receive a task
+> [ 5.100000] (1:sender@Tremblay) Send to receiver-0 Task_1
+> [ 5.100000] (2:receiver@Ruby) Received "Task_0"
+> [ 5.100000] (2:receiver@Ruby) Processing "Task_0"
+> [ 5.609710] (2:receiver@Ruby) "Task_0" done
+> [ 5.609710] (2:receiver@Ruby) Wait to receive a task
+> [ 5.700000] (1:sender@Tremblay) Send to receiver-0 Task_2
+> [ 5.709710] (2:receiver@Ruby) Received "Task_1"
+> [ 5.709710] (2:receiver@Ruby) Processing "Task_1"
+> [ 6.219420] (2:receiver@Ruby) "Task_1" done
+> [ 6.219420] (2:receiver@Ruby) Wait to receive a task
+> [ 6.300000] (1:sender@Tremblay) Send to receiver-0 finalize
+> [ 6.319420] (2:receiver@Ruby) Received "Task_2"
+> [ 6.319420] (2:receiver@Ruby) Processing "Task_2"
+> [ 6.829130] (2:receiver@Ruby) "Task_2" done
+> [ 6.829130] (2:receiver@Ruby) Wait to receive a task
+> [ 6.900000] (1:sender@Tremblay) Goodbye now!
+> [ 6.929130] (0:@) Simulation time 6.92913
+> [ 6.929130] (2:receiver@Ruby) Received "finalize"
+> [ 6.929130] (2:receiver@Ruby) I'm done. See you!
p Test1 MSG_comm_wait() with Sleep_sender > Sleep_receiver
-$ ./peer small_platform.xml deployment_peer03.xml
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] sleep_start_time : 5.000000 , sleep_test_time : 0.000000
-> [Ruby:receiver:(2) 0.000000] [msg_test/INFO] sleep_start_time : 1.000000 , sleep_test_time : 0.000000
-> [Ruby:receiver:(2) 1.000000] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.000000] [msg_test/INFO] Send to receiver-0 Task_0
-> [Ruby:receiver:(2) 5.016560] [msg_test/INFO] Received "Task_0"
-> [Ruby:receiver:(2) 5.016560] [msg_test/INFO] Processing "Task_0"
-> [Tremblay:sender:(1) 5.016560] [msg_test/INFO] Send to receiver-0 Task_1
-> [Ruby:receiver:(2) 5.526270] [msg_test/INFO] "Task_0" done
-> [Ruby:receiver:(2) 5.526270] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.542830] [msg_test/INFO] Send to receiver-0 Task_2
-> [Ruby:receiver:(2) 5.542830] [msg_test/INFO] Received "Task_1"
-> [Ruby:receiver:(2) 5.542830] [msg_test/INFO] Processing "Task_1"
-> [Ruby:receiver:(2) 6.052540] [msg_test/INFO] "Task_1" done
-> [Ruby:receiver:(2) 6.052540] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.069100] [msg_test/INFO] Send to receiver-0 finalize
-> [Ruby:receiver:(2) 6.069100] [msg_test/INFO] Received "Task_2"
-> [Ruby:receiver:(2) 6.069100] [msg_test/INFO] Processing "Task_2"
-> [Ruby:receiver:(2) 6.578810] [msg_test/INFO] "Task_2" done
-> [Ruby:receiver:(2) 6.578810] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.580370] [msg_test/INFO] Goodbye now!
-> [Ruby:receiver:(2) 6.580370] [msg_test/INFO] Received "finalize"
-> [Ruby:receiver:(2) 6.580370] [msg_test/INFO] I'm done. See you!
-> [6.580370] [msg_test/INFO] Simulation time 6.58037
+! output sort
+$ ./peer small_platform.xml deployment_peer03.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 5.000000 , sleep_test_time : 0.000000
+> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 1.000000 , sleep_test_time : 0.000000
+> [ 1.000000] (2:receiver@Ruby) Wait to receive a task
+> [ 5.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
+> [ 5.016560] (1:sender@Tremblay) Send to receiver-0 Task_1
+> [ 5.016560] (2:receiver@Ruby) Received "Task_0"
+> [ 5.016560] (2:receiver@Ruby) Processing "Task_0"
+> [ 5.526270] (2:receiver@Ruby) "Task_0" done
+> [ 5.526270] (2:receiver@Ruby) Wait to receive a task
+> [ 5.542830] (1:sender@Tremblay) Send to receiver-0 Task_2
+> [ 5.542830] (2:receiver@Ruby) Received "Task_1"
+> [ 5.542830] (2:receiver@Ruby) Processing "Task_1"
+> [ 6.052540] (2:receiver@Ruby) "Task_1" done
+> [ 6.052540] (2:receiver@Ruby) Wait to receive a task
+> [ 6.069100] (1:sender@Tremblay) Send to receiver-0 finalize
+> [ 6.069100] (2:receiver@Ruby) Received "Task_2"
+> [ 6.069100] (2:receiver@Ruby) Processing "Task_2"
+> [ 6.578810] (2:receiver@Ruby) "Task_2" done
+> [ 6.578810] (2:receiver@Ruby) Wait to receive a task
+> [ 6.580370] (0:@) Simulation time 6.58037
+> [ 6.580370] (1:sender@Tremblay) Goodbye now!
+> [ 6.580370] (2:receiver@Ruby) Received "finalize"
+> [ 6.580370] (2:receiver@Ruby) I'm done. See you!
p Test2 MSG_comm_wait() with Sleep_sender < Sleep_receiver
-$ ./peer small_platform.xml deployment_peer04.xml
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] sleep_start_time : 1.000000 , sleep_test_time : 0.000000
-> [Ruby:receiver:(2) 0.000000] [msg_test/INFO] sleep_start_time : 5.000000 , sleep_test_time : 0.000000
-> [Tremblay:sender:(1) 1.000000] [msg_test/INFO] Send to receiver-0 Task_0
-> [Ruby:receiver:(2) 5.000000] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.016560] [msg_test/INFO] Send to receiver-0 Task_1
-> [Ruby:receiver:(2) 5.016560] [msg_test/INFO] Received "Task_0"
-> [Ruby:receiver:(2) 5.016560] [msg_test/INFO] Processing "Task_0"
-> [Ruby:receiver:(2) 5.526270] [msg_test/INFO] "Task_0" done
-> [Ruby:receiver:(2) 5.526270] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 5.542830] [msg_test/INFO] Send to receiver-0 Task_2
-> [Ruby:receiver:(2) 5.542830] [msg_test/INFO] Received "Task_1"
-> [Ruby:receiver:(2) 5.542830] [msg_test/INFO] Processing "Task_1"
-> [Ruby:receiver:(2) 6.052540] [msg_test/INFO] "Task_1" done
-> [Ruby:receiver:(2) 6.052540] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.069100] [msg_test/INFO] Send to receiver-0 finalize
-> [Ruby:receiver:(2) 6.069100] [msg_test/INFO] Received "Task_2"
-> [Ruby:receiver:(2) 6.069100] [msg_test/INFO] Processing "Task_2"
-> [Ruby:receiver:(2) 6.578810] [msg_test/INFO] "Task_2" done
-> [Ruby:receiver:(2) 6.578810] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 6.580370] [msg_test/INFO] Goodbye now!
-> [Ruby:receiver:(2) 6.580370] [msg_test/INFO] Received "finalize"
-> [Ruby:receiver:(2) 6.580370] [msg_test/INFO] I'm done. See you!
-> [6.580370] [msg_test/INFO] Simulation time 6.58037
+! output sort
+$ ./peer small_platform.xml deployment_peer04.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 1.000000 , sleep_test_time : 0.000000
+> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 5.000000 , sleep_test_time : 0.000000
+> [ 1.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
+> [ 5.000000] (2:receiver@Ruby) Wait to receive a task
+> [ 5.016560] (1:sender@Tremblay) Send to receiver-0 Task_1
+> [ 5.016560] (2:receiver@Ruby) Received "Task_0"
+> [ 5.016560] (2:receiver@Ruby) Processing "Task_0"
+> [ 5.526270] (2:receiver@Ruby) "Task_0" done
+> [ 5.526270] (2:receiver@Ruby) Wait to receive a task
+> [ 5.542830] (1:sender@Tremblay) Send to receiver-0 Task_2
+> [ 5.542830] (2:receiver@Ruby) Received "Task_1"
+> [ 5.542830] (2:receiver@Ruby) Processing "Task_1"
+> [ 6.052540] (2:receiver@Ruby) "Task_1" done
+> [ 6.052540] (2:receiver@Ruby) Wait to receive a task
+> [ 6.069100] (1:sender@Tremblay) Send to receiver-0 finalize
+> [ 6.069100] (2:receiver@Ruby) Received "Task_2"
+> [ 6.069100] (2:receiver@Ruby) Processing "Task_2"
+> [ 6.578810] (2:receiver@Ruby) "Task_2" done
+> [ 6.578810] (2:receiver@Ruby) Wait to receive a task
+> [ 6.580370] (0:@) Simulation time 6.58037
+> [ 6.580370] (1:sender@Tremblay) Goodbye now!
+> [ 6.580370] (2:receiver@Ruby) Received "finalize"
+> [ 6.580370] (2:receiver@Ruby) I'm done. See you!
p Test1 MSG_comm_waitall() for sender
-$ ./peer2 small_platform.xml deployment_peer.xml
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] Send to receiver-0 Task_0
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] Send to receiver-0 Task_1
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] Send to receiver-0 Task_2
-> [Tremblay:sender:(1) 0.000000] [msg_test/INFO] Send to receiver-0 finalize
-> [Ruby:receiver:(2) 10.000000] [msg_test/INFO] Wait to receive a task
-> [Ruby:receiver:(2) 10.016560] [msg_test/INFO] Received "Task_0"
-> [Ruby:receiver:(2) 10.016560] [msg_test/INFO] Processing "Task_0"
-> [Ruby:receiver:(2) 10.526270] [msg_test/INFO] "Task_0" done
-> [Ruby:receiver:(2) 10.526270] [msg_test/INFO] Wait to receive a task
-> [Ruby:receiver:(2) 10.542830] [msg_test/INFO] Received "Task_1"
-> [Ruby:receiver:(2) 10.542830] [msg_test/INFO] Processing "Task_1"
-> [Ruby:receiver:(2) 11.052540] [msg_test/INFO] "Task_1" done
-> [Ruby:receiver:(2) 11.052540] [msg_test/INFO] Wait to receive a task
-> [Ruby:receiver:(2) 11.069100] [msg_test/INFO] Received "Task_2"
-> [Ruby:receiver:(2) 11.069100] [msg_test/INFO] Processing "Task_2"
-> [Ruby:receiver:(2) 11.578810] [msg_test/INFO] "Task_2" done
-> [Ruby:receiver:(2) 11.578810] [msg_test/INFO] Wait to receive a task
-> [Tremblay:sender:(1) 11.580370] [msg_test/INFO] Goodbye now!
-> [Ruby:receiver:(2) 11.580370] [msg_test/INFO] Received "finalize"
-> [Ruby:receiver:(2) 11.580370] [msg_test/INFO] I'm done. See you!
-> [11.580370] [msg_test/INFO] Simulation time 11.5804
+! output sort
+$ ./peer2 small_platform.xml deployment_peer.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
+> [ 0.000000] (1:sender@Tremblay) Send to receiver-0 Task_1
+> [ 0.000000] (1:sender@Tremblay) Send to receiver-0 Task_2
+> [ 0.000000] (1:sender@Tremblay) Send to receiver-0 finalize
+> [ 10.000000] (2:receiver@Ruby) Wait to receive a task
+> [ 10.016560] (2:receiver@Ruby) Received "Task_0"
+> [ 10.016560] (2:receiver@Ruby) Processing "Task_0"
+> [ 10.526270] (2:receiver@Ruby) "Task_0" done
+> [ 10.526270] (2:receiver@Ruby) Wait to receive a task
+> [ 10.542830] (2:receiver@Ruby) Received "Task_1"
+> [ 10.542830] (2:receiver@Ruby) Processing "Task_1"
+> [ 11.052540] (2:receiver@Ruby) "Task_1" done
+> [ 11.052540] (2:receiver@Ruby) Wait to receive a task
+> [ 11.069100] (2:receiver@Ruby) Received "Task_2"
+> [ 11.069100] (2:receiver@Ruby) Processing "Task_2"
+> [ 11.578810] (2:receiver@Ruby) "Task_2" done
+> [ 11.578810] (2:receiver@Ruby) Wait to receive a task
+> [ 11.580370] (0:@) Simulation time 11.5804
+> [ 11.580370] (1:sender@Tremblay) Goodbye now!
+> [ 11.580370] (2:receiver@Ruby) Received "finalize"
+> [ 11.580370] (2:receiver@Ruby) I'm done. See you!
p Testing a simple master/slave example application
-$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --trace
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 5 slaves and 20 tasks to process
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" to "Jupiter"
-> [Tremblay:master:(1) 0.165962] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.165962] [msg_test/INFO] Sending "Task_1" to "Fafard"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Received "Task_0"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Processing "Task_0"
-> [Fafard:slave:(4) 0.384115] [msg_test/INFO] Received "Task_1"
-> [Fafard:slave:(4) 0.384115] [msg_test/INFO] Processing "Task_1"
-> [Tremblay:master:(1) 0.384115] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.384115] [msg_test/INFO] Sending "Task_2" to "Ginette"
-> [Ginette:slave:(5) 0.524575] [msg_test/INFO] Received "Task_2"
-> [Ginette:slave:(5) 0.524575] [msg_test/INFO] Processing "Task_2"
-> [Tremblay:master:(1) 0.524575] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.524575] [msg_test/INFO] Sending "Task_3" to "Bourassa"
-> [Bourassa:slave:(6) 0.740447] [msg_test/INFO] Received "Task_3"
-> [Bourassa:slave:(6) 0.740447] [msg_test/INFO] Processing "Task_3"
-> [Tremblay:master:(1) 0.740447] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.740447] [msg_test/INFO] Sending "Task_4" to "Tremblay"
-> [Tremblay:master:(1) 0.740447] [msg_test/INFO] Hey ! It's me ! :)
-> [Tremblay:slave:(2) 0.742786] [msg_test/INFO] Received "Task_4"
-> [Tremblay:slave:(2) 0.742786] [msg_test/INFO] Processing "Task_4"
-> [Tremblay:master:(1) 0.742786] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.742786] [msg_test/INFO] Sending "Task_5" to "Jupiter"
-> [Jupiter:slave:(3) 0.821304] [msg_test/INFO] "Task_0" done
-> [Tremblay:master:(1) 0.987266] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.987266] [msg_test/INFO] Sending "Task_6" to "Fafard"
-> [Jupiter:slave:(3) 0.987266] [msg_test/INFO] Received "Task_5"
-> [Jupiter:slave:(3) 0.987266] [msg_test/INFO] Processing "Task_5"
-> [Fafard:slave:(4) 1.039457] [msg_test/INFO] "Task_1" done
-> [Tremblay:slave:(2) 1.252495] [msg_test/INFO] "Task_4" done
-> [Tremblay:master:(1) 1.257610] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.257610] [msg_test/INFO] Sending "Task_7" to "Ginette"
-> [Fafard:slave:(4) 1.257610] [msg_test/INFO] Received "Task_6"
-> [Fafard:slave:(4) 1.257610] [msg_test/INFO] Processing "Task_6"
-> [Ginette:slave:(5) 1.555672] [msg_test/INFO] "Task_2" done
-> [Jupiter:slave:(3) 1.642608] [msg_test/INFO] "Task_5" done
-> [Tremblay:master:(1) 1.696132] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.696132] [msg_test/INFO] Sending "Task_8" to "Bourassa"
-> [Ginette:slave:(5) 1.696132] [msg_test/INFO] Received "Task_7"
-> [Ginette:slave:(5) 1.696132] [msg_test/INFO] Processing "Task_7"
-> [Bourassa:slave:(6) 1.771545] [msg_test/INFO] "Task_3" done
-> [Fafard:slave:(4) 1.912953] [msg_test/INFO] "Task_6" done
-> [Tremblay:master:(1) 1.987417] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.987417] [msg_test/INFO] Sending "Task_9" to "Tremblay"
-> [Tremblay:master:(1) 1.987417] [msg_test/INFO] Hey ! It's me ! :)
-> [Bourassa:slave:(6) 1.987417] [msg_test/INFO] Received "Task_8"
-> [Bourassa:slave:(6) 1.987417] [msg_test/INFO] Processing "Task_8"
-> [Tremblay:slave:(2) 1.989756] [msg_test/INFO] Received "Task_9"
-> [Tremblay:slave:(2) 1.989756] [msg_test/INFO] Processing "Task_9"
-> [Tremblay:master:(1) 1.989756] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.989756] [msg_test/INFO] Sending "Task_10" to "Jupiter"
-> [Jupiter:slave:(3) 2.155718] [msg_test/INFO] Received "Task_10"
-> [Jupiter:slave:(3) 2.155718] [msg_test/INFO] Processing "Task_10"
-> [Tremblay:master:(1) 2.155718] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 2.155718] [msg_test/INFO] Sending "Task_11" to "Fafard"
-> [Fafard:slave:(4) 2.373871] [msg_test/INFO] Received "Task_11"
-> [Fafard:slave:(4) 2.373871] [msg_test/INFO] Processing "Task_11"
-> [Tremblay:master:(1) 2.373871] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 2.373871] [msg_test/INFO] Sending "Task_12" to "Ginette"
-> [Tremblay:slave:(2) 2.499466] [msg_test/INFO] "Task_9" done
-> [Ginette:slave:(5) 2.727230] [msg_test/INFO] "Task_7" done
-> [Jupiter:slave:(3) 2.811060] [msg_test/INFO] "Task_10" done
-> [Tremblay:master:(1) 2.867690] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 2.867690] [msg_test/INFO] Sending "Task_13" to "Bourassa"
-> [Ginette:slave:(5) 2.867690] [msg_test/INFO] Received "Task_12"
-> [Ginette:slave:(5) 2.867690] [msg_test/INFO] Processing "Task_12"
-> [Bourassa:slave:(6) 3.018515] [msg_test/INFO] "Task_8" done
-> [Fafard:slave:(4) 3.029213] [msg_test/INFO] "Task_11" done
-> [Tremblay:master:(1) 3.234387] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.234387] [msg_test/INFO] Sending "Task_14" to "Tremblay"
-> [Tremblay:master:(1) 3.234387] [msg_test/INFO] Hey ! It's me ! :)
-> [Bourassa:slave:(6) 3.234387] [msg_test/INFO] Received "Task_13"
-> [Bourassa:slave:(6) 3.234387] [msg_test/INFO] Processing "Task_13"
-> [Tremblay:slave:(2) 3.236726] [msg_test/INFO] Received "Task_14"
-> [Tremblay:slave:(2) 3.236726] [msg_test/INFO] Processing "Task_14"
-> [Tremblay:master:(1) 3.236726] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.236726] [msg_test/INFO] Sending "Task_15" to "Jupiter"
-> [Jupiter:slave:(3) 3.402688] [msg_test/INFO] Received "Task_15"
-> [Jupiter:slave:(3) 3.402688] [msg_test/INFO] Processing "Task_15"
-> [Tremblay:master:(1) 3.402688] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.402688] [msg_test/INFO] Sending "Task_16" to "Fafard"
-> [Fafard:slave:(4) 3.620841] [msg_test/INFO] Received "Task_16"
-> [Fafard:slave:(4) 3.620841] [msg_test/INFO] Processing "Task_16"
-> [Tremblay:master:(1) 3.620841] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.620841] [msg_test/INFO] Sending "Task_17" to "Ginette"
-> [Tremblay:slave:(2) 3.746436] [msg_test/INFO] "Task_14" done
-> [Ginette:slave:(5) 3.898788] [msg_test/INFO] "Task_12" done
-> [Tremblay:master:(1) 4.039247] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 4.039247] [msg_test/INFO] Sending "Task_18" to "Bourassa"
-> [Ginette:slave:(5) 4.039247] [msg_test/INFO] Received "Task_17"
-> [Ginette:slave:(5) 4.039247] [msg_test/INFO] Processing "Task_17"
-> [Jupiter:slave:(3) 4.058030] [msg_test/INFO] "Task_15" done
-> [Bourassa:slave:(6) 4.265485] [msg_test/INFO] "Task_13" done
-> [Fafard:slave:(4) 4.276183] [msg_test/INFO] "Task_16" done
-> [Tremblay:master:(1) 4.481357] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 4.481357] [msg_test/INFO] Sending "Task_19" to "Tremblay"
-> [Tremblay:master:(1) 4.481357] [msg_test/INFO] Hey ! It's me ! :)
-> [Bourassa:slave:(6) 4.481357] [msg_test/INFO] Received "Task_18"
-> [Bourassa:slave:(6) 4.481357] [msg_test/INFO] Processing "Task_18"
-> [Tremblay:slave:(2) 4.483696] [msg_test/INFO] Received "Task_19"
-> [Tremblay:slave:(2) 4.483696] [msg_test/INFO] Processing "Task_19"
-> [Tremblay:master:(1) 4.483696] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 4.483696] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Jupiter:slave:(3) 4.498896] [msg_test/INFO] Received "finalize"
-> [Jupiter:slave:(3) 4.498896] [msg_test/INFO] I'm done. See you!
-> [Fafard:slave:(4) 4.519447] [msg_test/INFO] Received "finalize"
-> [Fafard:slave:(4) 4.519447] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(2) 4.993406] [msg_test/INFO] "Task_19" done
-> [Ginette:slave:(5) 5.070345] [msg_test/INFO] "Task_17" done
-> [Ginette:slave:(5) 5.083577] [msg_test/INFO] Received "finalize"
-> [Ginette:slave:(5) 5.083577] [msg_test/INFO] I'm done. See you!
-> [Bourassa:slave:(6) 5.512455] [msg_test/INFO] "Task_18" done
-> [Bourassa:slave:(6) 5.532791] [msg_test/INFO] Received "finalize"
-> [Bourassa:slave:(6) 5.532791] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(2) 5.532947] [msg_test/INFO] Received "finalize"
-> [Tremblay:slave:(2) 5.532947] [msg_test/INFO] I'm done. See you!
-> [Tremblay:master:(1) 5.532947] [msg_test/INFO] Goodbye now!
-> [5.532947] [msg_test/INFO] Simulation time 5.53295
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --trace --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
+> [ 0.165962] (1:master@Tremblay) Sent
+> [ 0.165962] (1:master@Tremblay) Sending "Task_1" to "Fafard"
+> [ 0.165962] (3:slave@Jupiter) Received "Task_0"
+> [ 0.165962] (3:slave@Jupiter) Processing "Task_0"
+> [ 0.384115] (1:master@Tremblay) Sent
+> [ 0.384115] (1:master@Tremblay) Sending "Task_2" to "Ginette"
+> [ 0.384115] (4:slave@Fafard) Received "Task_1"
+> [ 0.384115] (4:slave@Fafard) Processing "Task_1"
+> [ 0.524575] (1:master@Tremblay) Sent
+> [ 0.524575] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
+> [ 0.524575] (5:slave@Ginette) Received "Task_2"
+> [ 0.524575] (5:slave@Ginette) Processing "Task_2"
+> [ 0.740447] (1:master@Tremblay) Sent
+> [ 0.740447] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
+> [ 0.740447] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 0.740447] (6:slave@Bourassa) Received "Task_3"
+> [ 0.740447] (6:slave@Bourassa) Processing "Task_3"
+> [ 0.742786] (1:master@Tremblay) Sent
+> [ 0.742786] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
+> [ 0.742786] (2:slave@Tremblay) Received "Task_4"
+> [ 0.742786] (2:slave@Tremblay) Processing "Task_4"
+> [ 0.821304] (3:slave@Jupiter) "Task_0" done
+> [ 0.987266] (1:master@Tremblay) Sent
+> [ 0.987266] (1:master@Tremblay) Sending "Task_6" to "Fafard"
+> [ 0.987266] (3:slave@Jupiter) Received "Task_5"
+> [ 0.987266] (3:slave@Jupiter) Processing "Task_5"
+> [ 1.039457] (4:slave@Fafard) "Task_1" done
+> [ 1.252495] (2:slave@Tremblay) "Task_4" done
+> [ 1.257610] (1:master@Tremblay) Sent
+> [ 1.257610] (1:master@Tremblay) Sending "Task_7" to "Ginette"
+> [ 1.257610] (4:slave@Fafard) Received "Task_6"
+> [ 1.257610] (4:slave@Fafard) Processing "Task_6"
+> [ 1.555672] (5:slave@Ginette) "Task_2" done
+> [ 1.642608] (3:slave@Jupiter) "Task_5" done
+> [ 1.696132] (1:master@Tremblay) Sent
+> [ 1.696132] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
+> [ 1.696132] (5:slave@Ginette) Received "Task_7"
+> [ 1.696132] (5:slave@Ginette) Processing "Task_7"
+> [ 1.771545] (6:slave@Bourassa) "Task_3" done
+> [ 1.912953] (4:slave@Fafard) "Task_6" done
+> [ 1.987417] (1:master@Tremblay) Sent
+> [ 1.987417] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
+> [ 1.987417] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 1.987417] (6:slave@Bourassa) Received "Task_8"
+> [ 1.987417] (6:slave@Bourassa) Processing "Task_8"
+> [ 1.989756] (1:master@Tremblay) Sent
+> [ 1.989756] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
+> [ 1.989756] (2:slave@Tremblay) Received "Task_9"
+> [ 1.989756] (2:slave@Tremblay) Processing "Task_9"
+> [ 2.155718] (1:master@Tremblay) Sent
+> [ 2.155718] (1:master@Tremblay) Sending "Task_11" to "Fafard"
+> [ 2.155718] (3:slave@Jupiter) Received "Task_10"
+> [ 2.155718] (3:slave@Jupiter) Processing "Task_10"
+> [ 2.373871] (1:master@Tremblay) Sent
+> [ 2.373871] (1:master@Tremblay) Sending "Task_12" to "Ginette"
+> [ 2.373871] (4:slave@Fafard) Received "Task_11"
+> [ 2.373871] (4:slave@Fafard) Processing "Task_11"
+> [ 2.499466] (2:slave@Tremblay) "Task_9" done
+> [ 2.727230] (5:slave@Ginette) "Task_7" done
+> [ 2.811060] (3:slave@Jupiter) "Task_10" done
+> [ 2.867690] (1:master@Tremblay) Sent
+> [ 2.867690] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
+> [ 2.867690] (5:slave@Ginette) Received "Task_12"
+> [ 2.867690] (5:slave@Ginette) Processing "Task_12"
+> [ 3.018515] (6:slave@Bourassa) "Task_8" done
+> [ 3.029213] (4:slave@Fafard) "Task_11" done
+> [ 3.234387] (1:master@Tremblay) Sent
+> [ 3.234387] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
+> [ 3.234387] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 3.234387] (6:slave@Bourassa) Received "Task_13"
+> [ 3.234387] (6:slave@Bourassa) Processing "Task_13"
+> [ 3.236726] (1:master@Tremblay) Sent
+> [ 3.236726] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
+> [ 3.236726] (2:slave@Tremblay) Received "Task_14"
+> [ 3.236726] (2:slave@Tremblay) Processing "Task_14"
+> [ 3.402688] (1:master@Tremblay) Sent
+> [ 3.402688] (1:master@Tremblay) Sending "Task_16" to "Fafard"
+> [ 3.402688] (3:slave@Jupiter) Received "Task_15"
+> [ 3.402688] (3:slave@Jupiter) Processing "Task_15"
+> [ 3.620841] (1:master@Tremblay) Sent
+> [ 3.620841] (1:master@Tremblay) Sending "Task_17" to "Ginette"
+> [ 3.620841] (4:slave@Fafard) Received "Task_16"
+> [ 3.620841] (4:slave@Fafard) Processing "Task_16"
+> [ 3.746436] (2:slave@Tremblay) "Task_14" done
+> [ 3.898788] (5:slave@Ginette) "Task_12" done
+> [ 4.039247] (1:master@Tremblay) Sent
+> [ 4.039247] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
+> [ 4.039247] (5:slave@Ginette) Received "Task_17"
+> [ 4.039247] (5:slave@Ginette) Processing "Task_17"
+> [ 4.058030] (3:slave@Jupiter) "Task_15" done
+> [ 4.265485] (6:slave@Bourassa) "Task_13" done
+> [ 4.276183] (4:slave@Fafard) "Task_16" done
+> [ 4.481357] (1:master@Tremblay) Sent
+> [ 4.481357] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
+> [ 4.481357] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 4.481357] (6:slave@Bourassa) Received "Task_18"
+> [ 4.481357] (6:slave@Bourassa) Processing "Task_18"
+> [ 4.483696] (1:master@Tremblay) Sent
+> [ 4.483696] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.483696] (2:slave@Tremblay) Received "Task_19"
+> [ 4.483696] (2:slave@Tremblay) Processing "Task_19"
+> [ 4.498896] (3:slave@Jupiter) Received "finalize"
+> [ 4.498896] (3:slave@Jupiter) I'm done. See you!
+> [ 4.519447] (4:slave@Fafard) Received "finalize"
+> [ 4.519447] (4:slave@Fafard) I'm done. See you!
+> [ 4.993406] (2:slave@Tremblay) "Task_19" done
+> [ 5.070345] (5:slave@Ginette) "Task_17" done
+> [ 5.083577] (5:slave@Ginette) Received "finalize"
+> [ 5.083577] (5:slave@Ginette) I'm done. See you!
+> [ 5.512455] (6:slave@Bourassa) "Task_18" done
+> [ 5.532791] (6:slave@Bourassa) Received "finalize"
+> [ 5.532791] (6:slave@Bourassa) I'm done. See you!
+> [ 5.532947] (0:@) Simulation time 5.53295
+> [ 5.532947] (1:master@Tremblay) Goodbye now!
+> [ 5.532947] (2:slave@Tremblay) Received "finalize"
+> [ 5.532947] (2:slave@Tremblay) I'm done. See you!
#! ./tesh
p Testing the bypassing of the flexml parser
-$ $SG_TEST_EXENV masterslave/masterslave_bypass --log=no_loc
-> [0.000000] [surf_parse/WARNING] Bypassing the XML parser since surf_parse_open received a NULL pointer. If it is not what you want, go fix your code.
-> [host A:master:(1) 0.000000] [msg_test/INFO] Got 1 slave(s) :
-> [host A:master:(1) 0.000000] [msg_test/INFO] host B
-> [host A:master:(1) 0.000000] [msg_test/INFO] Got 20 task to process :
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_0"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_1"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_2"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_3"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_4"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_5"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_6"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_7"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_8"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_9"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_10"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_11"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_12"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_13"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_14"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_15"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_16"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_17"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_18"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_19"
-> [host A:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" to "host B"
-> [host B:slave:(2) 0.000000] [msg_test/INFO] I'm a slave
-> [host A:master:(1) 4.080000] [msg_test/INFO] Send completed
-> [host A:master:(1) 4.080000] [msg_test/INFO] Sending "Task_1" to "host B"
-> [host B:slave:(2) 4.080000] [msg_test/INFO] Received "Task_0"
-> [host B:slave:(2) 4.080000] [msg_test/INFO] Processing "Task_0"
-> [host B:slave:(2) 4.130000] [msg_test/INFO] "Task_0" done
-> [host A:master:(1) 8.210000] [msg_test/INFO] Send completed
-> [host A:master:(1) 8.210000] [msg_test/INFO] Sending "Task_2" to "host B"
-> [host B:slave:(2) 8.210000] [msg_test/INFO] Received "Task_1"
-> [host B:slave:(2) 8.210000] [msg_test/INFO] Processing "Task_1"
-> [host B:slave:(2) 8.260000] [msg_test/INFO] "Task_1" done
-> [host A:master:(1) 12.340000] [msg_test/INFO] Send completed
-> [host A:master:(1) 12.340000] [msg_test/INFO] Sending "Task_3" to "host B"
-> [host B:slave:(2) 12.340000] [msg_test/INFO] Received "Task_2"
-> [host B:slave:(2) 12.340000] [msg_test/INFO] Processing "Task_2"
-> [host B:slave:(2) 12.390000] [msg_test/INFO] "Task_2" done
-> [host A:master:(1) 16.470000] [msg_test/INFO] Send completed
-> [host A:master:(1) 16.470000] [msg_test/INFO] Sending "Task_4" to "host B"
-> [host B:slave:(2) 16.470000] [msg_test/INFO] Received "Task_3"
-> [host B:slave:(2) 16.470000] [msg_test/INFO] Processing "Task_3"
-> [host B:slave:(2) 16.520000] [msg_test/INFO] "Task_3" done
-> [host A:master:(1) 20.600000] [msg_test/INFO] Send completed
-> [host A:master:(1) 20.600000] [msg_test/INFO] Sending "Task_5" to "host B"
-> [host B:slave:(2) 20.600000] [msg_test/INFO] Received "Task_4"
-> [host B:slave:(2) 20.600000] [msg_test/INFO] Processing "Task_4"
-> [host B:slave:(2) 20.650000] [msg_test/INFO] "Task_4" done
-> [host A:master:(1) 24.730000] [msg_test/INFO] Send completed
-> [host A:master:(1) 24.730000] [msg_test/INFO] Sending "Task_6" to "host B"
-> [host B:slave:(2) 24.730000] [msg_test/INFO] Received "Task_5"
-> [host B:slave:(2) 24.730000] [msg_test/INFO] Processing "Task_5"
-> [host B:slave:(2) 24.780000] [msg_test/INFO] "Task_5" done
-> [host A:master:(1) 28.860000] [msg_test/INFO] Send completed
-> [host A:master:(1) 28.860000] [msg_test/INFO] Sending "Task_7" to "host B"
-> [host B:slave:(2) 28.860000] [msg_test/INFO] Received "Task_6"
-> [host B:slave:(2) 28.860000] [msg_test/INFO] Processing "Task_6"
-> [host B:slave:(2) 28.910000] [msg_test/INFO] "Task_6" done
-> [host A:master:(1) 32.990000] [msg_test/INFO] Send completed
-> [host A:master:(1) 32.990000] [msg_test/INFO] Sending "Task_8" to "host B"
-> [host B:slave:(2) 32.990000] [msg_test/INFO] Received "Task_7"
-> [host B:slave:(2) 32.990000] [msg_test/INFO] Processing "Task_7"
-> [host B:slave:(2) 33.040000] [msg_test/INFO] "Task_7" done
-> [host A:master:(1) 37.120000] [msg_test/INFO] Send completed
-> [host A:master:(1) 37.120000] [msg_test/INFO] Sending "Task_9" to "host B"
-> [host B:slave:(2) 37.120000] [msg_test/INFO] Received "Task_8"
-> [host B:slave:(2) 37.120000] [msg_test/INFO] Processing "Task_8"
-> [host B:slave:(2) 37.170000] [msg_test/INFO] "Task_8" done
-> [host A:master:(1) 41.250000] [msg_test/INFO] Send completed
-> [host A:master:(1) 41.250000] [msg_test/INFO] Sending "Task_10" to "host B"
-> [host B:slave:(2) 41.250000] [msg_test/INFO] Received "Task_9"
-> [host B:slave:(2) 41.250000] [msg_test/INFO] Processing "Task_9"
-> [host B:slave:(2) 41.300000] [msg_test/INFO] "Task_9" done
-> [host A:master:(1) 45.380000] [msg_test/INFO] Send completed
-> [host A:master:(1) 45.380000] [msg_test/INFO] Sending "Task_11" to "host B"
-> [host B:slave:(2) 45.380000] [msg_test/INFO] Received "Task_10"
-> [host B:slave:(2) 45.380000] [msg_test/INFO] Processing "Task_10"
-> [host B:slave:(2) 45.430000] [msg_test/INFO] "Task_10" done
-> [host A:master:(1) 49.510000] [msg_test/INFO] Send completed
-> [host A:master:(1) 49.510000] [msg_test/INFO] Sending "Task_12" to "host B"
-> [host B:slave:(2) 49.510000] [msg_test/INFO] Received "Task_11"
-> [host B:slave:(2) 49.510000] [msg_test/INFO] Processing "Task_11"
-> [host B:slave:(2) 49.560000] [msg_test/INFO] "Task_11" done
-> [host A:master:(1) 53.640000] [msg_test/INFO] Send completed
-> [host A:master:(1) 53.640000] [msg_test/INFO] Sending "Task_13" to "host B"
-> [host B:slave:(2) 53.640000] [msg_test/INFO] Received "Task_12"
-> [host B:slave:(2) 53.640000] [msg_test/INFO] Processing "Task_12"
-> [host B:slave:(2) 53.690000] [msg_test/INFO] "Task_12" done
-> [host A:master:(1) 57.770000] [msg_test/INFO] Send completed
-> [host A:master:(1) 57.770000] [msg_test/INFO] Sending "Task_14" to "host B"
-> [host B:slave:(2) 57.770000] [msg_test/INFO] Received "Task_13"
-> [host B:slave:(2) 57.770000] [msg_test/INFO] Processing "Task_13"
-> [host B:slave:(2) 57.820000] [msg_test/INFO] "Task_13" done
-> [host A:master:(1) 61.900000] [msg_test/INFO] Send completed
-> [host A:master:(1) 61.900000] [msg_test/INFO] Sending "Task_15" to "host B"
-> [host B:slave:(2) 61.900000] [msg_test/INFO] Received "Task_14"
-> [host B:slave:(2) 61.900000] [msg_test/INFO] Processing "Task_14"
-> [host B:slave:(2) 61.950000] [msg_test/INFO] "Task_14" done
-> [host A:master:(1) 66.030000] [msg_test/INFO] Send completed
-> [host A:master:(1) 66.030000] [msg_test/INFO] Sending "Task_16" to "host B"
-> [host B:slave:(2) 66.030000] [msg_test/INFO] Received "Task_15"
-> [host B:slave:(2) 66.030000] [msg_test/INFO] Processing "Task_15"
-> [host B:slave:(2) 66.080000] [msg_test/INFO] "Task_15" done
-> [host A:master:(1) 70.160000] [msg_test/INFO] Send completed
-> [host A:master:(1) 70.160000] [msg_test/INFO] Sending "Task_17" to "host B"
-> [host B:slave:(2) 70.160000] [msg_test/INFO] Received "Task_16"
-> [host B:slave:(2) 70.160000] [msg_test/INFO] Processing "Task_16"
-> [host B:slave:(2) 70.210000] [msg_test/INFO] "Task_16" done
-> [host A:master:(1) 74.290000] [msg_test/INFO] Send completed
-> [host A:master:(1) 74.290000] [msg_test/INFO] Sending "Task_18" to "host B"
-> [host B:slave:(2) 74.290000] [msg_test/INFO] Received "Task_17"
-> [host B:slave:(2) 74.290000] [msg_test/INFO] Processing "Task_17"
-> [host B:slave:(2) 74.340000] [msg_test/INFO] "Task_17" done
-> [host A:master:(1) 78.420000] [msg_test/INFO] Send completed
-> [host A:master:(1) 78.420000] [msg_test/INFO] Sending "Task_19" to "host B"
-> [host B:slave:(2) 78.420000] [msg_test/INFO] Received "Task_18"
-> [host B:slave:(2) 78.420000] [msg_test/INFO] Processing "Task_18"
-> [host B:slave:(2) 78.470000] [msg_test/INFO] "Task_18" done
-> [host A:master:(1) 82.550000] [msg_test/INFO] Send completed
-> [host A:master:(1) 82.550000] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [host B:slave:(2) 82.550000] [msg_test/INFO] Received "Task_19"
-> [host B:slave:(2) 82.550000] [msg_test/INFO] Processing "Task_19"
-> [host B:slave:(2) 82.600000] [msg_test/INFO] "Task_19" done
-> [host A:master:(1) 84.680000] [msg_test/INFO] Goodbye now!
-> [host B:slave:(2) 84.680000] [msg_test/INFO] Received "finalize"
-> [host B:slave:(2) 84.680000] [msg_test/INFO] I'm done. See you!
-> [84.680000] [msg_test/INFO] Simulation time 84.68
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_bypass --log=no_loc --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Bypassing the XML parser since surf_parse_open received a NULL pointer. If it is not what you want, go fix your code.
+> [ 0.000000] (1:master@host A) Got 1 slave(s) :
+> [ 0.000000] (1:master@host A) host B
+> [ 0.000000] (1:master@host A) Got 20 task to process :
+> [ 0.000000] (1:master@host A) "Task_0"
+> [ 0.000000] (1:master@host A) "Task_1"
+> [ 0.000000] (1:master@host A) "Task_2"
+> [ 0.000000] (1:master@host A) "Task_3"
+> [ 0.000000] (1:master@host A) "Task_4"
+> [ 0.000000] (1:master@host A) "Task_5"
+> [ 0.000000] (1:master@host A) "Task_6"
+> [ 0.000000] (1:master@host A) "Task_7"
+> [ 0.000000] (1:master@host A) "Task_8"
+> [ 0.000000] (1:master@host A) "Task_9"
+> [ 0.000000] (1:master@host A) "Task_10"
+> [ 0.000000] (1:master@host A) "Task_11"
+> [ 0.000000] (1:master@host A) "Task_12"
+> [ 0.000000] (1:master@host A) "Task_13"
+> [ 0.000000] (1:master@host A) "Task_14"
+> [ 0.000000] (1:master@host A) "Task_15"
+> [ 0.000000] (1:master@host A) "Task_16"
+> [ 0.000000] (1:master@host A) "Task_17"
+> [ 0.000000] (1:master@host A) "Task_18"
+> [ 0.000000] (1:master@host A) "Task_19"
+> [ 0.000000] (1:master@host A) Sending "Task_0" to "host B"
+> [ 0.000000] (2:slave@host B) I'm a slave
+> [ 4.080000] (1:master@host A) Send completed
+> [ 4.080000] (1:master@host A) Sending "Task_1" to "host B"
+> [ 4.080000] (2:slave@host B) Received "Task_0"
+> [ 4.080000] (2:slave@host B) Processing "Task_0"
+> [ 4.130000] (2:slave@host B) "Task_0" done
+> [ 8.210000] (1:master@host A) Send completed
+> [ 8.210000] (1:master@host A) Sending "Task_2" to "host B"
+> [ 8.210000] (2:slave@host B) Received "Task_1"
+> [ 8.210000] (2:slave@host B) Processing "Task_1"
+> [ 8.260000] (2:slave@host B) "Task_1" done
+> [ 12.340000] (1:master@host A) Send completed
+> [ 12.340000] (1:master@host A) Sending "Task_3" to "host B"
+> [ 12.340000] (2:slave@host B) Received "Task_2"
+> [ 12.340000] (2:slave@host B) Processing "Task_2"
+> [ 12.390000] (2:slave@host B) "Task_2" done
+> [ 16.470000] (1:master@host A) Send completed
+> [ 16.470000] (1:master@host A) Sending "Task_4" to "host B"
+> [ 16.470000] (2:slave@host B) Received "Task_3"
+> [ 16.470000] (2:slave@host B) Processing "Task_3"
+> [ 16.520000] (2:slave@host B) "Task_3" done
+> [ 20.600000] (1:master@host A) Send completed
+> [ 20.600000] (1:master@host A) Sending "Task_5" to "host B"
+> [ 20.600000] (2:slave@host B) Received "Task_4"
+> [ 20.600000] (2:slave@host B) Processing "Task_4"
+> [ 20.650000] (2:slave@host B) "Task_4" done
+> [ 24.730000] (1:master@host A) Send completed
+> [ 24.730000] (1:master@host A) Sending "Task_6" to "host B"
+> [ 24.730000] (2:slave@host B) Received "Task_5"
+> [ 24.730000] (2:slave@host B) Processing "Task_5"
+> [ 24.780000] (2:slave@host B) "Task_5" done
+> [ 28.860000] (1:master@host A) Send completed
+> [ 28.860000] (1:master@host A) Sending "Task_7" to "host B"
+> [ 28.860000] (2:slave@host B) Received "Task_6"
+> [ 28.860000] (2:slave@host B) Processing "Task_6"
+> [ 28.910000] (2:slave@host B) "Task_6" done
+> [ 32.990000] (1:master@host A) Send completed
+> [ 32.990000] (1:master@host A) Sending "Task_8" to "host B"
+> [ 32.990000] (2:slave@host B) Received "Task_7"
+> [ 32.990000] (2:slave@host B) Processing "Task_7"
+> [ 33.040000] (2:slave@host B) "Task_7" done
+> [ 37.120000] (1:master@host A) Send completed
+> [ 37.120000] (1:master@host A) Sending "Task_9" to "host B"
+> [ 37.120000] (2:slave@host B) Received "Task_8"
+> [ 37.120000] (2:slave@host B) Processing "Task_8"
+> [ 37.170000] (2:slave@host B) "Task_8" done
+> [ 41.250000] (1:master@host A) Send completed
+> [ 41.250000] (1:master@host A) Sending "Task_10" to "host B"
+> [ 41.250000] (2:slave@host B) Received "Task_9"
+> [ 41.250000] (2:slave@host B) Processing "Task_9"
+> [ 41.300000] (2:slave@host B) "Task_9" done
+> [ 45.380000] (1:master@host A) Send completed
+> [ 45.380000] (1:master@host A) Sending "Task_11" to "host B"
+> [ 45.380000] (2:slave@host B) Received "Task_10"
+> [ 45.380000] (2:slave@host B) Processing "Task_10"
+> [ 45.430000] (2:slave@host B) "Task_10" done
+> [ 49.510000] (1:master@host A) Send completed
+> [ 49.510000] (1:master@host A) Sending "Task_12" to "host B"
+> [ 49.510000] (2:slave@host B) Received "Task_11"
+> [ 49.510000] (2:slave@host B) Processing "Task_11"
+> [ 49.560000] (2:slave@host B) "Task_11" done
+> [ 53.640000] (1:master@host A) Send completed
+> [ 53.640000] (1:master@host A) Sending "Task_13" to "host B"
+> [ 53.640000] (2:slave@host B) Received "Task_12"
+> [ 53.640000] (2:slave@host B) Processing "Task_12"
+> [ 53.690000] (2:slave@host B) "Task_12" done
+> [ 57.770000] (1:master@host A) Send completed
+> [ 57.770000] (1:master@host A) Sending "Task_14" to "host B"
+> [ 57.770000] (2:slave@host B) Received "Task_13"
+> [ 57.770000] (2:slave@host B) Processing "Task_13"
+> [ 57.820000] (2:slave@host B) "Task_13" done
+> [ 61.900000] (1:master@host A) Send completed
+> [ 61.900000] (1:master@host A) Sending "Task_15" to "host B"
+> [ 61.900000] (2:slave@host B) Received "Task_14"
+> [ 61.900000] (2:slave@host B) Processing "Task_14"
+> [ 61.950000] (2:slave@host B) "Task_14" done
+> [ 66.030000] (1:master@host A) Send completed
+> [ 66.030000] (1:master@host A) Sending "Task_16" to "host B"
+> [ 66.030000] (2:slave@host B) Received "Task_15"
+> [ 66.030000] (2:slave@host B) Processing "Task_15"
+> [ 66.080000] (2:slave@host B) "Task_15" done
+> [ 70.160000] (1:master@host A) Send completed
+> [ 70.160000] (1:master@host A) Sending "Task_17" to "host B"
+> [ 70.160000] (2:slave@host B) Received "Task_16"
+> [ 70.160000] (2:slave@host B) Processing "Task_16"
+> [ 70.210000] (2:slave@host B) "Task_16" done
+> [ 74.290000] (1:master@host A) Send completed
+> [ 74.290000] (1:master@host A) Sending "Task_18" to "host B"
+> [ 74.290000] (2:slave@host B) Received "Task_17"
+> [ 74.290000] (2:slave@host B) Processing "Task_17"
+> [ 74.340000] (2:slave@host B) "Task_17" done
+> [ 78.420000] (1:master@host A) Send completed
+> [ 78.420000] (1:master@host A) Sending "Task_19" to "host B"
+> [ 78.420000] (2:slave@host B) Received "Task_18"
+> [ 78.420000] (2:slave@host B) Processing "Task_18"
+> [ 78.470000] (2:slave@host B) "Task_18" done
+> [ 82.550000] (1:master@host A) Send completed
+> [ 82.550000] (1:master@host A) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 82.550000] (2:slave@host B) Received "Task_19"
+> [ 82.550000] (2:slave@host B) Processing "Task_19"
+> [ 82.600000] (2:slave@host B) "Task_19" done
+> [ 84.680000] (0:@) Simulation time 84.68
+> [ 84.680000] (1:master@host A) Goodbye now!
+> [ 84.680000] (2:slave@host B) Received "finalize"
+> [ 84.680000] (2:slave@host B) I'm done. See you!
#! ./tesh
-$ $SG_TEST_EXENV ./masterslave_console platform_script.lua --log=surf_parse.thres:critical
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 4 slaves and 20 tasks to process
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 221.119476] [msg_test/INFO] Sending "Task_1" (of 20) to mailbox "slave-1"
-> [Bourassa:slave:(5) 221.119476] [msg_test/INFO] Received "Task_0"
-> [Bourassa:slave:(5) 221.119476] [msg_test/INFO] Processing "Task_0"
-> [Jupiter:slave:(2) 230.754144] [msg_test/INFO] Received "Task_1"
-> [Jupiter:slave:(2) 230.754144] [msg_test/INFO] Processing "Task_1"
-> [Tremblay:master:(1) 230.754144] [msg_test/INFO] Sending "Task_2" (of 20) to mailbox "slave-2"
-> [Bourassa:slave:(5) 232.461553] [msg_test/INFO] "Task_0" done
-> [Jupiter:slave:(2) 237.962910] [msg_test/INFO] "Task_1" done
-> [Fafard:slave:(3) 403.819753] [msg_test/INFO] Received "Task_2"
-> [Fafard:slave:(3) 403.819753] [msg_test/INFO] Processing "Task_2"
-> [Tremblay:master:(1) 403.819753] [msg_test/INFO] Sending "Task_3" (of 20) to mailbox "slave-3"
-> [Fafard:slave:(3) 411.028519] [msg_test/INFO] "Task_2" done
-> [Ginette:slave:(4) 519.166957] [msg_test/INFO] Received "Task_3"
-> [Ginette:slave:(4) 519.166957] [msg_test/INFO] Processing "Task_3"
-> [Tremblay:master:(1) 519.166957] [msg_test/INFO] Sending "Task_4" (of 20) to mailbox "slave-0"
-> [Ginette:slave:(4) 530.509034] [msg_test/INFO] "Task_3" done
-> [Bourassa:slave:(5) 740.286433] [msg_test/INFO] Received "Task_4"
-> [Bourassa:slave:(5) 740.286433] [msg_test/INFO] Processing "Task_4"
-> [Tremblay:master:(1) 740.286433] [msg_test/INFO] Sending "Task_5" (of 20) to mailbox "slave-1"
-> [Jupiter:slave:(2) 749.921101] [msg_test/INFO] Received "Task_5"
-> [Jupiter:slave:(2) 749.921101] [msg_test/INFO] Processing "Task_5"
-> [Tremblay:master:(1) 749.921101] [msg_test/INFO] Sending "Task_6" (of 20) to mailbox "slave-2"
-> [Bourassa:slave:(5) 751.628510] [msg_test/INFO] "Task_4" done
-> [Jupiter:slave:(2) 757.129867] [msg_test/INFO] "Task_5" done
-> [Fafard:slave:(3) 922.986710] [msg_test/INFO] Received "Task_6"
-> [Fafard:slave:(3) 922.986710] [msg_test/INFO] Processing "Task_6"
-> [Tremblay:master:(1) 922.986710] [msg_test/INFO] Sending "Task_7" (of 20) to mailbox "slave-3"
-> [Fafard:slave:(3) 930.195476] [msg_test/INFO] "Task_6" done
-> [Ginette:slave:(4) 1038.333914] [msg_test/INFO] Received "Task_7"
-> [Ginette:slave:(4) 1038.333914] [msg_test/INFO] Processing "Task_7"
-> [Tremblay:master:(1) 1038.333914] [msg_test/INFO] Sending "Task_8" (of 20) to mailbox "slave-0"
-> [Ginette:slave:(4) 1049.675991] [msg_test/INFO] "Task_7" done
-> [Bourassa:slave:(5) 1259.453390] [msg_test/INFO] Received "Task_8"
-> [Bourassa:slave:(5) 1259.453390] [msg_test/INFO] Processing "Task_8"
-> [Tremblay:master:(1) 1259.453390] [msg_test/INFO] Sending "Task_9" (of 20) to mailbox "slave-1"
-> [Jupiter:slave:(2) 1269.088058] [msg_test/INFO] Received "Task_9"
-> [Jupiter:slave:(2) 1269.088058] [msg_test/INFO] Processing "Task_9"
-> [Tremblay:master:(1) 1269.088058] [msg_test/INFO] Sending "Task_10" (of 20) to mailbox "slave-2"
-> [Bourassa:slave:(5) 1270.795467] [msg_test/INFO] "Task_8" done
-> [Jupiter:slave:(2) 1276.296824] [msg_test/INFO] "Task_9" done
-> [Fafard:slave:(3) 1442.153667] [msg_test/INFO] Received "Task_10"
-> [Fafard:slave:(3) 1442.153667] [msg_test/INFO] Processing "Task_10"
-> [Tremblay:master:(1) 1442.153667] [msg_test/INFO] Sending "Task_11" (of 20) to mailbox "slave-3"
-> [Fafard:slave:(3) 1449.362433] [msg_test/INFO] "Task_10" done
-> [Ginette:slave:(4) 1557.500871] [msg_test/INFO] Received "Task_11"
-> [Ginette:slave:(4) 1557.500871] [msg_test/INFO] Processing "Task_11"
-> [Tremblay:master:(1) 1557.500871] [msg_test/INFO] Sending "Task_12" (of 20) to mailbox "slave-0"
-> [Ginette:slave:(4) 1568.842948] [msg_test/INFO] "Task_11" done
-> [Bourassa:slave:(5) 1778.620347] [msg_test/INFO] Received "Task_12"
-> [Bourassa:slave:(5) 1778.620347] [msg_test/INFO] Processing "Task_12"
-> [Tremblay:master:(1) 1778.620347] [msg_test/INFO] Sending "Task_13" (of 20) to mailbox "slave-1"
-> [Jupiter:slave:(2) 1788.255015] [msg_test/INFO] Received "Task_13"
-> [Jupiter:slave:(2) 1788.255015] [msg_test/INFO] Processing "Task_13"
-> [Tremblay:master:(1) 1788.255015] [msg_test/INFO] Sending "Task_14" (of 20) to mailbox "slave-2"
-> [Bourassa:slave:(5) 1789.962424] [msg_test/INFO] "Task_12" done
-> [Jupiter:slave:(2) 1795.463781] [msg_test/INFO] "Task_13" done
-> [Fafard:slave:(3) 1961.320624] [msg_test/INFO] Received "Task_14"
-> [Fafard:slave:(3) 1961.320624] [msg_test/INFO] Processing "Task_14"
-> [Tremblay:master:(1) 1961.320624] [msg_test/INFO] Sending "Task_15" (of 20) to mailbox "slave-3"
-> [Fafard:slave:(3) 1968.529390] [msg_test/INFO] "Task_14" done
-> [Ginette:slave:(4) 2076.667828] [msg_test/INFO] Received "Task_15"
-> [Ginette:slave:(4) 2076.667828] [msg_test/INFO] Processing "Task_15"
-> [Tremblay:master:(1) 2076.667828] [msg_test/INFO] Sending "Task_16" (of 20) to mailbox "slave-0"
-> [Ginette:slave:(4) 2088.009905] [msg_test/INFO] "Task_15" done
-> [Bourassa:slave:(5) 2297.787304] [msg_test/INFO] Received "Task_16"
-> [Bourassa:slave:(5) 2297.787304] [msg_test/INFO] Processing "Task_16"
-> [Tremblay:master:(1) 2297.787304] [msg_test/INFO] Sending "Task_17" (of 20) to mailbox "slave-1"
-> [Jupiter:slave:(2) 2307.421972] [msg_test/INFO] Received "Task_17"
-> [Jupiter:slave:(2) 2307.421972] [msg_test/INFO] Processing "Task_17"
-> [Tremblay:master:(1) 2307.421972] [msg_test/INFO] Sending "Task_18" (of 20) to mailbox "slave-2"
-> [Bourassa:slave:(5) 2309.129381] [msg_test/INFO] "Task_16" done
-> [Jupiter:slave:(2) 2314.630738] [msg_test/INFO] "Task_17" done
-> [Fafard:slave:(3) 2480.487581] [msg_test/INFO] Received "Task_18"
-> [Fafard:slave:(3) 2480.487581] [msg_test/INFO] Processing "Task_18"
-> [Tremblay:master:(1) 2480.487581] [msg_test/INFO] Sending "Task_19" (of 20) to mailbox "slave-3"
-> [Fafard:slave:(3) 2487.696347] [msg_test/INFO] "Task_18" done
-> [Ginette:slave:(4) 2595.834785] [msg_test/INFO] Received "Task_19"
-> [Ginette:slave:(4) 2595.834785] [msg_test/INFO] Processing "Task_19"
-> [Tremblay:master:(1) 2595.834785] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Ginette:slave:(4) 2607.176862] [msg_test/INFO] "Task_19" done
-> [Bourassa:slave:(5) 2616.664880] [msg_test/INFO] Received "finalize"
-> [Bourassa:slave:(5) 2616.664880] [msg_test/INFO] I'm done. See you!
-> [Jupiter:slave:(2) 2617.572494] [msg_test/INFO] Received "finalize"
-> [Jupiter:slave:(2) 2617.572494] [msg_test/INFO] I'm done. See you!
-> [Fafard:slave:(3) 2633.875776] [msg_test/INFO] Received "finalize"
-> [Fafard:slave:(3) 2633.875776] [msg_test/INFO] I'm done. See you!
-> [Ginette:slave:(4) 2644.741817] [msg_test/INFO] Received "finalize"
-> [Ginette:slave:(4) 2644.741817] [msg_test/INFO] I'm done. See you!
-> [Tremblay:master:(1) 2644.741817] [msg_test/INFO] Goodbye now!
-> [2644.741817] [msg_test/INFO] Simulation time 2644.74
+! output sort
+$ $SG_TEST_EXENV masterslave_console platform_script.lua --log=surf_parse.thres:critical --log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:master@Tremblay) Got 4 slaves and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "slave-0"
+> [ 221.119476] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "slave-1"
+> [ 221.119476] (5:slave@Bourassa) Received "Task_0"
+> [ 221.119476] (5:slave@Bourassa) Processing "Task_0"
+> [ 230.754144] (1:master@Tremblay) Sending "Task_2" (of 20) to mailbox "slave-2"
+> [ 230.754144] (2:slave@Jupiter) Received "Task_1"
+> [ 230.754144] (2:slave@Jupiter) Processing "Task_1"
+> [ 232.461553] (5:slave@Bourassa) "Task_0" done
+> [ 237.962910] (2:slave@Jupiter) "Task_1" done
+> [ 403.819753] (1:master@Tremblay) Sending "Task_3" (of 20) to mailbox "slave-3"
+> [ 403.819753] (3:slave@Fafard) Received "Task_2"
+> [ 403.819753] (3:slave@Fafard) Processing "Task_2"
+> [ 411.028519] (3:slave@Fafard) "Task_2" done
+> [ 519.166957] (1:master@Tremblay) Sending "Task_4" (of 20) to mailbox "slave-0"
+> [ 519.166957] (4:slave@Ginette) Received "Task_3"
+> [ 519.166957] (4:slave@Ginette) Processing "Task_3"
+> [ 530.509034] (4:slave@Ginette) "Task_3" done
+> [ 740.286433] (1:master@Tremblay) Sending "Task_5" (of 20) to mailbox "slave-1"
+> [ 740.286433] (5:slave@Bourassa) Received "Task_4"
+> [ 740.286433] (5:slave@Bourassa) Processing "Task_4"
+> [ 749.921101] (1:master@Tremblay) Sending "Task_6" (of 20) to mailbox "slave-2"
+> [ 749.921101] (2:slave@Jupiter) Received "Task_5"
+> [ 749.921101] (2:slave@Jupiter) Processing "Task_5"
+> [ 751.628510] (5:slave@Bourassa) "Task_4" done
+> [ 757.129867] (2:slave@Jupiter) "Task_5" done
+> [ 922.986710] (1:master@Tremblay) Sending "Task_7" (of 20) to mailbox "slave-3"
+> [ 922.986710] (3:slave@Fafard) Received "Task_6"
+> [ 922.986710] (3:slave@Fafard) Processing "Task_6"
+> [ 930.195476] (3:slave@Fafard) "Task_6" done
+> [1038.333914] (1:master@Tremblay) Sending "Task_8" (of 20) to mailbox "slave-0"
+> [1038.333914] (4:slave@Ginette) Received "Task_7"
+> [1038.333914] (4:slave@Ginette) Processing "Task_7"
+> [1049.675991] (4:slave@Ginette) "Task_7" done
+> [1259.453390] (1:master@Tremblay) Sending "Task_9" (of 20) to mailbox "slave-1"
+> [1259.453390] (5:slave@Bourassa) Received "Task_8"
+> [1259.453390] (5:slave@Bourassa) Processing "Task_8"
+> [1269.088058] (1:master@Tremblay) Sending "Task_10" (of 20) to mailbox "slave-2"
+> [1269.088058] (2:slave@Jupiter) Received "Task_9"
+> [1269.088058] (2:slave@Jupiter) Processing "Task_9"
+> [1270.795467] (5:slave@Bourassa) "Task_8" done
+> [1276.296824] (2:slave@Jupiter) "Task_9" done
+> [1442.153667] (1:master@Tremblay) Sending "Task_11" (of 20) to mailbox "slave-3"
+> [1442.153667] (3:slave@Fafard) Received "Task_10"
+> [1442.153667] (3:slave@Fafard) Processing "Task_10"
+> [1449.362433] (3:slave@Fafard) "Task_10" done
+> [1557.500871] (1:master@Tremblay) Sending "Task_12" (of 20) to mailbox "slave-0"
+> [1557.500871] (4:slave@Ginette) Received "Task_11"
+> [1557.500871] (4:slave@Ginette) Processing "Task_11"
+> [1568.842948] (4:slave@Ginette) "Task_11" done
+> [1778.620347] (1:master@Tremblay) Sending "Task_13" (of 20) to mailbox "slave-1"
+> [1778.620347] (5:slave@Bourassa) Received "Task_12"
+> [1778.620347] (5:slave@Bourassa) Processing "Task_12"
+> [1788.255015] (1:master@Tremblay) Sending "Task_14" (of 20) to mailbox "slave-2"
+> [1788.255015] (2:slave@Jupiter) Received "Task_13"
+> [1788.255015] (2:slave@Jupiter) Processing "Task_13"
+> [1789.962424] (5:slave@Bourassa) "Task_12" done
+> [1795.463781] (2:slave@Jupiter) "Task_13" done
+> [1961.320624] (1:master@Tremblay) Sending "Task_15" (of 20) to mailbox "slave-3"
+> [1961.320624] (3:slave@Fafard) Received "Task_14"
+> [1961.320624] (3:slave@Fafard) Processing "Task_14"
+> [1968.529390] (3:slave@Fafard) "Task_14" done
+> [2076.667828] (1:master@Tremblay) Sending "Task_16" (of 20) to mailbox "slave-0"
+> [2076.667828] (4:slave@Ginette) Received "Task_15"
+> [2076.667828] (4:slave@Ginette) Processing "Task_15"
+> [2088.009905] (4:slave@Ginette) "Task_15" done
+> [2297.787304] (1:master@Tremblay) Sending "Task_17" (of 20) to mailbox "slave-1"
+> [2297.787304] (5:slave@Bourassa) Received "Task_16"
+> [2297.787304] (5:slave@Bourassa) Processing "Task_16"
+> [2307.421972] (1:master@Tremblay) Sending "Task_18" (of 20) to mailbox "slave-2"
+> [2307.421972] (2:slave@Jupiter) Received "Task_17"
+> [2307.421972] (2:slave@Jupiter) Processing "Task_17"
+> [2309.129381] (5:slave@Bourassa) "Task_16" done
+> [2314.630738] (2:slave@Jupiter) "Task_17" done
+> [2480.487581] (1:master@Tremblay) Sending "Task_19" (of 20) to mailbox "slave-3"
+> [2480.487581] (3:slave@Fafard) Received "Task_18"
+> [2480.487581] (3:slave@Fafard) Processing "Task_18"
+> [2487.696347] (3:slave@Fafard) "Task_18" done
+> [2595.834785] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [2595.834785] (4:slave@Ginette) Received "Task_19"
+> [2595.834785] (4:slave@Ginette) Processing "Task_19"
+> [2607.176862] (4:slave@Ginette) "Task_19" done
+> [2616.664880] (5:slave@Bourassa) Received "finalize"
+> [2616.664880] (5:slave@Bourassa) I'm done. See you!
+> [2617.572494] (2:slave@Jupiter) Received "finalize"
+> [2617.572494] (2:slave@Jupiter) I'm done. See you!
+> [2633.875776] (3:slave@Fafard) Received "finalize"
+> [2633.875776] (3:slave@Fafard) I'm done. See you!
+> [2644.741817] (0:@) Simulation time 2644.74
+> [2644.741817] (1:master@Tremblay) Goodbye now!
+> [2644.741817] (4:slave@Ginette) Received "finalize"
+> [2644.741817] (4:slave@Ginette) I'm done. See you!
p Testing a simple master/slave example application
-$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 5 slaves and 20 tasks to process
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" to "Jupiter"
-> [Tremblay:master:(1) 0.165962] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.165962] [msg_test/INFO] Sending "Task_1" to "Fafard"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Received "Task_0"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Processing "Task_0"
-> [Fafard:slave:(4) 0.384115] [msg_test/INFO] Received "Task_1"
-> [Fafard:slave:(4) 0.384115] [msg_test/INFO] Processing "Task_1"
-> [Tremblay:master:(1) 0.384115] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.384115] [msg_test/INFO] Sending "Task_2" to "Ginette"
-> [Ginette:slave:(5) 0.524575] [msg_test/INFO] Received "Task_2"
-> [Ginette:slave:(5) 0.524575] [msg_test/INFO] Processing "Task_2"
-> [Tremblay:master:(1) 0.524575] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.524575] [msg_test/INFO] Sending "Task_3" to "Bourassa"
-> [Bourassa:slave:(6) 0.740447] [msg_test/INFO] Received "Task_3"
-> [Bourassa:slave:(6) 0.740447] [msg_test/INFO] Processing "Task_3"
-> [Tremblay:master:(1) 0.740447] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.740447] [msg_test/INFO] Sending "Task_4" to "Tremblay"
-> [Tremblay:master:(1) 0.740447] [msg_test/INFO] Hey ! It's me ! :)
-> [Tremblay:slave:(2) 0.742786] [msg_test/INFO] Received "Task_4"
-> [Tremblay:slave:(2) 0.742786] [msg_test/INFO] Processing "Task_4"
-> [Tremblay:master:(1) 0.742786] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.742786] [msg_test/INFO] Sending "Task_5" to "Jupiter"
-> [Jupiter:slave:(3) 0.821304] [msg_test/INFO] "Task_0" done
-> [Tremblay:master:(1) 0.987266] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 0.987266] [msg_test/INFO] Sending "Task_6" to "Fafard"
-> [Jupiter:slave:(3) 0.987266] [msg_test/INFO] Received "Task_5"
-> [Jupiter:slave:(3) 0.987266] [msg_test/INFO] Processing "Task_5"
-> [Fafard:slave:(4) 1.039457] [msg_test/INFO] "Task_1" done
-> [Tremblay:slave:(2) 1.252495] [msg_test/INFO] "Task_4" done
-> [Tremblay:master:(1) 1.257610] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.257610] [msg_test/INFO] Sending "Task_7" to "Ginette"
-> [Fafard:slave:(4) 1.257610] [msg_test/INFO] Received "Task_6"
-> [Fafard:slave:(4) 1.257610] [msg_test/INFO] Processing "Task_6"
-> [Ginette:slave:(5) 1.555672] [msg_test/INFO] "Task_2" done
-> [Jupiter:slave:(3) 1.642608] [msg_test/INFO] "Task_5" done
-> [Tremblay:master:(1) 1.696132] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.696132] [msg_test/INFO] Sending "Task_8" to "Bourassa"
-> [Ginette:slave:(5) 1.696132] [msg_test/INFO] Received "Task_7"
-> [Ginette:slave:(5) 1.696132] [msg_test/INFO] Processing "Task_7"
-> [Bourassa:slave:(6) 1.771545] [msg_test/INFO] "Task_3" done
-> [Fafard:slave:(4) 1.912953] [msg_test/INFO] "Task_6" done
-> [Tremblay:master:(1) 1.987417] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.987417] [msg_test/INFO] Sending "Task_9" to "Tremblay"
-> [Tremblay:master:(1) 1.987417] [msg_test/INFO] Hey ! It's me ! :)
-> [Bourassa:slave:(6) 1.987417] [msg_test/INFO] Received "Task_8"
-> [Bourassa:slave:(6) 1.987417] [msg_test/INFO] Processing "Task_8"
-> [Tremblay:slave:(2) 1.989756] [msg_test/INFO] Received "Task_9"
-> [Tremblay:slave:(2) 1.989756] [msg_test/INFO] Processing "Task_9"
-> [Tremblay:master:(1) 1.989756] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 1.989756] [msg_test/INFO] Sending "Task_10" to "Jupiter"
-> [Jupiter:slave:(3) 2.155718] [msg_test/INFO] Received "Task_10"
-> [Jupiter:slave:(3) 2.155718] [msg_test/INFO] Processing "Task_10"
-> [Tremblay:master:(1) 2.155718] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 2.155718] [msg_test/INFO] Sending "Task_11" to "Fafard"
-> [Fafard:slave:(4) 2.373871] [msg_test/INFO] Received "Task_11"
-> [Fafard:slave:(4) 2.373871] [msg_test/INFO] Processing "Task_11"
-> [Tremblay:master:(1) 2.373871] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 2.373871] [msg_test/INFO] Sending "Task_12" to "Ginette"
-> [Tremblay:slave:(2) 2.499466] [msg_test/INFO] "Task_9" done
-> [Ginette:slave:(5) 2.727230] [msg_test/INFO] "Task_7" done
-> [Jupiter:slave:(3) 2.811060] [msg_test/INFO] "Task_10" done
-> [Tremblay:master:(1) 2.867690] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 2.867690] [msg_test/INFO] Sending "Task_13" to "Bourassa"
-> [Ginette:slave:(5) 2.867690] [msg_test/INFO] Received "Task_12"
-> [Ginette:slave:(5) 2.867690] [msg_test/INFO] Processing "Task_12"
-> [Bourassa:slave:(6) 3.018515] [msg_test/INFO] "Task_8" done
-> [Fafard:slave:(4) 3.029213] [msg_test/INFO] "Task_11" done
-> [Tremblay:master:(1) 3.234387] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.234387] [msg_test/INFO] Sending "Task_14" to "Tremblay"
-> [Tremblay:master:(1) 3.234387] [msg_test/INFO] Hey ! It's me ! :)
-> [Bourassa:slave:(6) 3.234387] [msg_test/INFO] Received "Task_13"
-> [Bourassa:slave:(6) 3.234387] [msg_test/INFO] Processing "Task_13"
-> [Tremblay:slave:(2) 3.236726] [msg_test/INFO] Received "Task_14"
-> [Tremblay:slave:(2) 3.236726] [msg_test/INFO] Processing "Task_14"
-> [Tremblay:master:(1) 3.236726] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.236726] [msg_test/INFO] Sending "Task_15" to "Jupiter"
-> [Jupiter:slave:(3) 3.402688] [msg_test/INFO] Received "Task_15"
-> [Jupiter:slave:(3) 3.402688] [msg_test/INFO] Processing "Task_15"
-> [Tremblay:master:(1) 3.402688] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.402688] [msg_test/INFO] Sending "Task_16" to "Fafard"
-> [Fafard:slave:(4) 3.620841] [msg_test/INFO] Received "Task_16"
-> [Fafard:slave:(4) 3.620841] [msg_test/INFO] Processing "Task_16"
-> [Tremblay:master:(1) 3.620841] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 3.620841] [msg_test/INFO] Sending "Task_17" to "Ginette"
-> [Tremblay:slave:(2) 3.746436] [msg_test/INFO] "Task_14" done
-> [Ginette:slave:(5) 3.898788] [msg_test/INFO] "Task_12" done
-> [Tremblay:master:(1) 4.039247] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 4.039247] [msg_test/INFO] Sending "Task_18" to "Bourassa"
-> [Ginette:slave:(5) 4.039247] [msg_test/INFO] Received "Task_17"
-> [Ginette:slave:(5) 4.039247] [msg_test/INFO] Processing "Task_17"
-> [Jupiter:slave:(3) 4.058030] [msg_test/INFO] "Task_15" done
-> [Bourassa:slave:(6) 4.265485] [msg_test/INFO] "Task_13" done
-> [Fafard:slave:(4) 4.276183] [msg_test/INFO] "Task_16" done
-> [Tremblay:master:(1) 4.481357] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 4.481357] [msg_test/INFO] Sending "Task_19" to "Tremblay"
-> [Tremblay:master:(1) 4.481357] [msg_test/INFO] Hey ! It's me ! :)
-> [Bourassa:slave:(6) 4.481357] [msg_test/INFO] Received "Task_18"
-> [Bourassa:slave:(6) 4.481357] [msg_test/INFO] Processing "Task_18"
-> [Tremblay:slave:(2) 4.483696] [msg_test/INFO] Received "Task_19"
-> [Tremblay:slave:(2) 4.483696] [msg_test/INFO] Processing "Task_19"
-> [Tremblay:master:(1) 4.483696] [msg_test/INFO] Sent
-> [Tremblay:master:(1) 4.483696] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Jupiter:slave:(3) 4.498896] [msg_test/INFO] Received "finalize"
-> [Jupiter:slave:(3) 4.498896] [msg_test/INFO] I'm done. See you!
-> [Fafard:slave:(4) 4.519447] [msg_test/INFO] Received "finalize"
-> [Fafard:slave:(4) 4.519447] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(2) 4.993406] [msg_test/INFO] "Task_19" done
-> [Ginette:slave:(5) 5.070345] [msg_test/INFO] "Task_17" done
-> [Ginette:slave:(5) 5.083577] [msg_test/INFO] Received "finalize"
-> [Ginette:slave:(5) 5.083577] [msg_test/INFO] I'm done. See you!
-> [Bourassa:slave:(6) 5.512455] [msg_test/INFO] "Task_18" done
-> [Bourassa:slave:(6) 5.532791] [msg_test/INFO] Received "finalize"
-> [Bourassa:slave:(6) 5.532791] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(2) 5.532947] [msg_test/INFO] Received "finalize"
-> [Tremblay:slave:(2) 5.532947] [msg_test/INFO] I'm done. See you!
-> [Tremblay:master:(1) 5.532947] [msg_test/INFO] Goodbye now!
-> [5.532947] [msg_test/INFO] Simulation time 5.53295
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
+> [ 0.165962] (1:master@Tremblay) Sent
+> [ 0.165962] (1:master@Tremblay) Sending "Task_1" to "Fafard"
+> [ 0.165962] (3:slave@Jupiter) Received "Task_0"
+> [ 0.165962] (3:slave@Jupiter) Processing "Task_0"
+> [ 0.384115] (1:master@Tremblay) Sent
+> [ 0.384115] (1:master@Tremblay) Sending "Task_2" to "Ginette"
+> [ 0.384115] (4:slave@Fafard) Received "Task_1"
+> [ 0.384115] (4:slave@Fafard) Processing "Task_1"
+> [ 0.524575] (1:master@Tremblay) Sent
+> [ 0.524575] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
+> [ 0.524575] (5:slave@Ginette) Received "Task_2"
+> [ 0.524575] (5:slave@Ginette) Processing "Task_2"
+> [ 0.740447] (1:master@Tremblay) Sent
+> [ 0.740447] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
+> [ 0.740447] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 0.740447] (6:slave@Bourassa) Received "Task_3"
+> [ 0.740447] (6:slave@Bourassa) Processing "Task_3"
+> [ 0.742786] (1:master@Tremblay) Sent
+> [ 0.742786] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
+> [ 0.742786] (2:slave@Tremblay) Received "Task_4"
+> [ 0.742786] (2:slave@Tremblay) Processing "Task_4"
+> [ 0.821304] (3:slave@Jupiter) "Task_0" done
+> [ 0.987266] (1:master@Tremblay) Sent
+> [ 0.987266] (1:master@Tremblay) Sending "Task_6" to "Fafard"
+> [ 0.987266] (3:slave@Jupiter) Received "Task_5"
+> [ 0.987266] (3:slave@Jupiter) Processing "Task_5"
+> [ 1.039457] (4:slave@Fafard) "Task_1" done
+> [ 1.252495] (2:slave@Tremblay) "Task_4" done
+> [ 1.257610] (1:master@Tremblay) Sent
+> [ 1.257610] (1:master@Tremblay) Sending "Task_7" to "Ginette"
+> [ 1.257610] (4:slave@Fafard) Received "Task_6"
+> [ 1.257610] (4:slave@Fafard) Processing "Task_6"
+> [ 1.555672] (5:slave@Ginette) "Task_2" done
+> [ 1.642608] (3:slave@Jupiter) "Task_5" done
+> [ 1.696132] (1:master@Tremblay) Sent
+> [ 1.696132] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
+> [ 1.696132] (5:slave@Ginette) Received "Task_7"
+> [ 1.696132] (5:slave@Ginette) Processing "Task_7"
+> [ 1.771545] (6:slave@Bourassa) "Task_3" done
+> [ 1.912953] (4:slave@Fafard) "Task_6" done
+> [ 1.987417] (1:master@Tremblay) Sent
+> [ 1.987417] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
+> [ 1.987417] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 1.987417] (6:slave@Bourassa) Received "Task_8"
+> [ 1.987417] (6:slave@Bourassa) Processing "Task_8"
+> [ 1.989756] (1:master@Tremblay) Sent
+> [ 1.989756] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
+> [ 1.989756] (2:slave@Tremblay) Received "Task_9"
+> [ 1.989756] (2:slave@Tremblay) Processing "Task_9"
+> [ 2.155718] (1:master@Tremblay) Sent
+> [ 2.155718] (1:master@Tremblay) Sending "Task_11" to "Fafard"
+> [ 2.155718] (3:slave@Jupiter) Received "Task_10"
+> [ 2.155718] (3:slave@Jupiter) Processing "Task_10"
+> [ 2.373871] (1:master@Tremblay) Sent
+> [ 2.373871] (1:master@Tremblay) Sending "Task_12" to "Ginette"
+> [ 2.373871] (4:slave@Fafard) Received "Task_11"
+> [ 2.373871] (4:slave@Fafard) Processing "Task_11"
+> [ 2.499466] (2:slave@Tremblay) "Task_9" done
+> [ 2.727230] (5:slave@Ginette) "Task_7" done
+> [ 2.811060] (3:slave@Jupiter) "Task_10" done
+> [ 2.867690] (1:master@Tremblay) Sent
+> [ 2.867690] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
+> [ 2.867690] (5:slave@Ginette) Received "Task_12"
+> [ 2.867690] (5:slave@Ginette) Processing "Task_12"
+> [ 3.018515] (6:slave@Bourassa) "Task_8" done
+> [ 3.029213] (4:slave@Fafard) "Task_11" done
+> [ 3.234387] (1:master@Tremblay) Sent
+> [ 3.234387] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
+> [ 3.234387] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 3.234387] (6:slave@Bourassa) Received "Task_13"
+> [ 3.234387] (6:slave@Bourassa) Processing "Task_13"
+> [ 3.236726] (1:master@Tremblay) Sent
+> [ 3.236726] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
+> [ 3.236726] (2:slave@Tremblay) Received "Task_14"
+> [ 3.236726] (2:slave@Tremblay) Processing "Task_14"
+> [ 3.402688] (1:master@Tremblay) Sent
+> [ 3.402688] (1:master@Tremblay) Sending "Task_16" to "Fafard"
+> [ 3.402688] (3:slave@Jupiter) Received "Task_15"
+> [ 3.402688] (3:slave@Jupiter) Processing "Task_15"
+> [ 3.620841] (1:master@Tremblay) Sent
+> [ 3.620841] (1:master@Tremblay) Sending "Task_17" to "Ginette"
+> [ 3.620841] (4:slave@Fafard) Received "Task_16"
+> [ 3.620841] (4:slave@Fafard) Processing "Task_16"
+> [ 3.746436] (2:slave@Tremblay) "Task_14" done
+> [ 3.898788] (5:slave@Ginette) "Task_12" done
+> [ 4.039247] (1:master@Tremblay) Sent
+> [ 4.039247] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
+> [ 4.039247] (5:slave@Ginette) Received "Task_17"
+> [ 4.039247] (5:slave@Ginette) Processing "Task_17"
+> [ 4.058030] (3:slave@Jupiter) "Task_15" done
+> [ 4.265485] (6:slave@Bourassa) "Task_13" done
+> [ 4.276183] (4:slave@Fafard) "Task_16" done
+> [ 4.481357] (1:master@Tremblay) Sent
+> [ 4.481357] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
+> [ 4.481357] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 4.481357] (6:slave@Bourassa) Received "Task_18"
+> [ 4.481357] (6:slave@Bourassa) Processing "Task_18"
+> [ 4.483696] (1:master@Tremblay) Sent
+> [ 4.483696] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.483696] (2:slave@Tremblay) Received "Task_19"
+> [ 4.483696] (2:slave@Tremblay) Processing "Task_19"
+> [ 4.498896] (3:slave@Jupiter) Received "finalize"
+> [ 4.498896] (3:slave@Jupiter) I'm done. See you!
+> [ 4.519447] (4:slave@Fafard) Received "finalize"
+> [ 4.519447] (4:slave@Fafard) I'm done. See you!
+> [ 4.993406] (2:slave@Tremblay) "Task_19" done
+> [ 5.070345] (5:slave@Ginette) "Task_17" done
+> [ 5.083577] (5:slave@Ginette) Received "finalize"
+> [ 5.083577] (5:slave@Ginette) I'm done. See you!
+> [ 5.512455] (6:slave@Bourassa) "Task_18" done
+> [ 5.532791] (6:slave@Bourassa) Received "finalize"
+> [ 5.532791] (6:slave@Bourassa) I'm done. See you!
+> [ 5.532947] (0:@) Simulation time 5.53295
+> [ 5.532947] (1:master@Tremblay) Goodbye now!
+> [ 5.532947] (2:slave@Tremblay) Received "finalize"
+> [ 5.532947] (2:slave@Tremblay) I'm done. See you!
p Testing a master/slave example application with a forwarder module
-$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/masterslave/deployment_masterslave_forwarder.xml --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Jacquelin:master:(1) 0.000000] [msg_test/INFO] Got 5 slaves and 20 tasks to process
-> [Jacquelin:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" to "iRMX"
-> [Jacquelin:master:(1) 4.772530] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 4.772530] [msg_test/INFO] Sending "Task_1" to "Casavant"
-> [iRMX:slave:(4) 4.772530] [msg_test/INFO] Received "Task_0"
-> [iRMX:slave:(4) 4.772530] [msg_test/INFO] Processing "Task_0"
-> [iRMX:slave:(4) 4.845345] [msg_test/INFO] "Task_0" done
-> [Casavant:forwarder:(3) 6.900351] [msg_test/INFO] Received "Task_1"
-> [Casavant:forwarder:(3) 6.900351] [msg_test/INFO] Sending "Task_1" to "Robert"
-> [Jacquelin:master:(1) 6.900351] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 6.900351] [msg_test/INFO] Sending "Task_2" to "Bousquet"
-> [Bousquet:slave:(5) 8.491392] [msg_test/INFO] Received "Task_2"
-> [Bousquet:slave:(5) 8.491392] [msg_test/INFO] Processing "Task_2"
-> [Jacquelin:master:(1) 8.491392] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 8.491392] [msg_test/INFO] Sending "Task_3" to "Soucy"
-> [Bousquet:slave:(5) 8.607896] [msg_test/INFO] "Task_2" done
-> [Robert:slave:(10) 9.260549] [msg_test/INFO] Received "Task_1"
-> [Robert:slave:(10) 9.260549] [msg_test/INFO] Processing "Task_1"
-> [Robert:slave:(10) 9.296956] [msg_test/INFO] "Task_1" done
-> [Soucy:slave:(6) 10.755127] [msg_test/INFO] Received "Task_3"
-> [Soucy:slave:(6) 10.755127] [msg_test/INFO] Processing "Task_3"
-> [Jacquelin:master:(1) 10.755127] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 10.755127] [msg_test/INFO] Sending "Task_4" to "Jackson"
-> [Soucy:slave:(6) 10.791535] [msg_test/INFO] "Task_3" done
-> [Jackson:forwarder:(2) 12.090242] [msg_test/INFO] Received "Task_4"
-> [Jackson:forwarder:(2) 12.090242] [msg_test/INFO] Sending "Task_4" to "Kuenning"
-> [Jacquelin:master:(1) 12.090242] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 12.090242] [msg_test/INFO] Sending "Task_5" to "iRMX"
-> [Kuenning:slave:(7) 12.173866] [msg_test/INFO] Received "Task_4"
-> [Kuenning:slave:(7) 12.173866] [msg_test/INFO] Processing "Task_4"
-> [Kuenning:slave:(7) 12.232118] [msg_test/INFO] "Task_4" done
-> [iRMX:slave:(4) 16.862772] [msg_test/INFO] Received "Task_5"
-> [iRMX:slave:(4) 16.862772] [msg_test/INFO] Processing "Task_5"
-> [Jacquelin:master:(1) 16.862772] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 16.862772] [msg_test/INFO] Sending "Task_6" to "Casavant"
-> [iRMX:slave:(4) 16.935587] [msg_test/INFO] "Task_5" done
-> [Casavant:forwarder:(3) 18.990593] [msg_test/INFO] Received "Task_6"
-> [Casavant:forwarder:(3) 18.990593] [msg_test/INFO] Sending "Task_6" to "Sirois"
-> [Jacquelin:master:(1) 18.990593] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 18.990593] [msg_test/INFO] Sending "Task_7" to "Bousquet"
-> [Sirois:slave:(11) 19.793293] [msg_test/INFO] Received "Task_6"
-> [Sirois:slave:(11) 19.793293] [msg_test/INFO] Processing "Task_6"
-> [Sirois:slave:(11) 19.836983] [msg_test/INFO] "Task_6" done
-> [Bousquet:slave:(5) 20.581634] [msg_test/INFO] Received "Task_7"
-> [Bousquet:slave:(5) 20.581634] [msg_test/INFO] Processing "Task_7"
-> [Jacquelin:master:(1) 20.581634] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 20.581634] [msg_test/INFO] Sending "Task_8" to "Soucy"
-> [Bousquet:slave:(5) 20.698138] [msg_test/INFO] "Task_7" done
-> [Soucy:slave:(6) 22.845369] [msg_test/INFO] Received "Task_8"
-> [Soucy:slave:(6) 22.845369] [msg_test/INFO] Processing "Task_8"
-> [Jacquelin:master:(1) 22.845369] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 22.845369] [msg_test/INFO] Sending "Task_9" to "Jackson"
-> [Soucy:slave:(6) 22.881777] [msg_test/INFO] "Task_8" done
-> [Jackson:forwarder:(2) 24.180485] [msg_test/INFO] Received "Task_9"
-> [Jackson:forwarder:(2) 24.180485] [msg_test/INFO] Sending "Task_9" to "Browne"
-> [Jacquelin:master:(1) 24.180485] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 24.180485] [msg_test/INFO] Sending "Task_10" to "iRMX"
-> [Browne:slave:(8) 27.009931] [msg_test/INFO] Received "Task_9"
-> [Browne:slave:(8) 27.009931] [msg_test/INFO] Processing "Task_9"
-> [Browne:slave:(8) 27.046339] [msg_test/INFO] "Task_9" done
-> [iRMX:slave:(4) 28.953014] [msg_test/INFO] Received "Task_10"
-> [iRMX:slave:(4) 28.953014] [msg_test/INFO] Processing "Task_10"
-> [Jacquelin:master:(1) 28.953014] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 28.953014] [msg_test/INFO] Sending "Task_11" to "Casavant"
-> [iRMX:slave:(4) 29.025830] [msg_test/INFO] "Task_10" done
-> [Casavant:forwarder:(3) 31.080835] [msg_test/INFO] Received "Task_11"
-> [Casavant:forwarder:(3) 31.080835] [msg_test/INFO] Sending "Task_11" to "Monique"
-> [Jacquelin:master:(1) 31.080835] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 31.080835] [msg_test/INFO] Sending "Task_12" to "Bousquet"
-> [Monique:slave:(12) 32.472434] [msg_test/INFO] Received "Task_11"
-> [Monique:slave:(12) 32.472434] [msg_test/INFO] Processing "Task_11"
-> [Monique:slave:(12) 32.516124] [msg_test/INFO] "Task_11" done
-> [Bousquet:slave:(5) 32.671876] [msg_test/INFO] Received "Task_12"
-> [Bousquet:slave:(5) 32.671876] [msg_test/INFO] Processing "Task_12"
-> [Jacquelin:master:(1) 32.671876] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 32.671876] [msg_test/INFO] Sending "Task_13" to "Soucy"
-> [Bousquet:slave:(5) 32.788380] [msg_test/INFO] "Task_12" done
-> [Soucy:slave:(6) 34.935611] [msg_test/INFO] Received "Task_13"
-> [Soucy:slave:(6) 34.935611] [msg_test/INFO] Processing "Task_13"
-> [Jacquelin:master:(1) 34.935611] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 34.935611] [msg_test/INFO] Sending "Task_14" to "Jackson"
-> [Soucy:slave:(6) 34.972019] [msg_test/INFO] "Task_13" done
-> [Jackson:forwarder:(2) 36.270727] [msg_test/INFO] Received "Task_14"
-> [Jackson:forwarder:(2) 36.270727] [msg_test/INFO] Sending "Task_14" to "Stephen"
-> [Jacquelin:master:(1) 36.270727] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 36.270727] [msg_test/INFO] Sending "Task_15" to "iRMX"
-> [Stephen:slave:(9) 40.508273] [msg_test/INFO] Received "Task_14"
-> [Stephen:slave:(9) 40.508273] [msg_test/INFO] Processing "Task_14"
-> [Stephen:slave:(9) 40.581088] [msg_test/INFO] "Task_14" done
-> [iRMX:slave:(4) 41.043257] [msg_test/INFO] Received "Task_15"
-> [iRMX:slave:(4) 41.043257] [msg_test/INFO] Processing "Task_15"
-> [Jacquelin:master:(1) 41.043257] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 41.043257] [msg_test/INFO] Sending "Task_16" to "Casavant"
-> [iRMX:slave:(4) 41.116072] [msg_test/INFO] "Task_15" done
-> [Casavant:forwarder:(3) 43.171078] [msg_test/INFO] Received "Task_16"
-> [Casavant:forwarder:(3) 43.171078] [msg_test/INFO] Sending "Task_16" to "Robert"
-> [Jacquelin:master:(1) 43.171078] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 43.171078] [msg_test/INFO] Sending "Task_17" to "Bousquet"
-> [Bousquet:slave:(5) 44.762118] [msg_test/INFO] Received "Task_17"
-> [Bousquet:slave:(5) 44.762118] [msg_test/INFO] Processing "Task_17"
-> [Jacquelin:master:(1) 44.762118] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 44.762118] [msg_test/INFO] Sending "Task_18" to "Soucy"
-> [Bousquet:slave:(5) 44.878622] [msg_test/INFO] "Task_17" done
-> [Robert:slave:(10) 45.531275] [msg_test/INFO] Received "Task_16"
-> [Robert:slave:(10) 45.531275] [msg_test/INFO] Processing "Task_16"
-> [Robert:slave:(10) 45.567683] [msg_test/INFO] "Task_16" done
-> [Soucy:slave:(6) 47.025854] [msg_test/INFO] Received "Task_18"
-> [Soucy:slave:(6) 47.025854] [msg_test/INFO] Processing "Task_18"
-> [Jacquelin:master:(1) 47.025854] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 47.025854] [msg_test/INFO] Sending "Task_19" to "Jackson"
-> [Soucy:slave:(6) 47.062262] [msg_test/INFO] "Task_18" done
-> [Jackson:forwarder:(2) 48.360969] [msg_test/INFO] Received "Task_19"
-> [Jackson:forwarder:(2) 48.360969] [msg_test/INFO] Sending "Task_19" to "Kuenning"
-> [Jacquelin:master:(1) 48.360969] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 48.360969] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Kuenning:slave:(7) 48.444592] [msg_test/INFO] Received "Task_19"
-> [Kuenning:slave:(7) 48.444592] [msg_test/INFO] Processing "Task_19"
-> [Kuenning:slave:(7) 48.502845] [msg_test/INFO] "Task_19" done
-> [iRMX:slave:(4) 50.794024] [msg_test/INFO] Received "finalize"
-> [iRMX:slave:(4) 50.794024] [msg_test/INFO] I'm done. See you!
-> [Casavant:forwarder:(3) 51.878795] [msg_test/INFO] Received "finalize"
-> [Casavant:forwarder:(3) 51.878795] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Bousquet:slave:(5) 52.689914] [msg_test/INFO] Received "finalize"
-> [Bousquet:slave:(5) 52.689914] [msg_test/INFO] I'm done. See you!
-> [Robert:slave:(10) 53.082033] [msg_test/INFO] Received "finalize"
-> [Robert:slave:(10) 53.082033] [msg_test/INFO] I'm done. See you!
-> [Sirois:slave:(11) 53.491253] [msg_test/INFO] Received "finalize"
-> [Sirois:slave:(11) 53.491253] [msg_test/INFO] I'm done. See you!
-> [Soucy:slave:(6) 53.843975] [msg_test/INFO] Received "finalize"
-> [Soucy:slave:(6) 53.843975] [msg_test/INFO] I'm done. See you!
-> [Monique:slave:(12) 54.200695] [msg_test/INFO] Received "finalize"
-> [Monique:slave:(12) 54.200695] [msg_test/INFO] I'm done. See you!
-> [Casavant:forwarder:(3) 54.200695] [msg_test/INFO] I'm done. See you!
-> [Jackson:forwarder:(2) 54.524622] [msg_test/INFO] Received "finalize"
-> [Jackson:forwarder:(2) 54.524622] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Jacquelin:master:(1) 54.524622] [msg_test/INFO] Goodbye now!
-> [Kuenning:slave:(7) 54.529294] [msg_test/INFO] Received "finalize"
-> [Kuenning:slave:(7) 54.529294] [msg_test/INFO] I'm done. See you!
-> [Browne:slave:(8) 55.971757] [msg_test/INFO] Received "finalize"
-> [Browne:slave:(8) 55.971757] [msg_test/INFO] I'm done. See you!
-> [Stephen:slave:(9) 58.132075] [msg_test/INFO] Received "finalize"
-> [Stephen:slave:(9) 58.132075] [msg_test/INFO] I'm done. See you!
-> [Jackson:forwarder:(2) 58.132075] [msg_test/INFO] I'm done. See you!
-> [58.132075] [msg_test/INFO] Simulation time 58.1321
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/masterslave/deployment_masterslave_forwarder.xml --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.000000] (1:master@Jacquelin) Got 5 slaves and 20 tasks to process
+> [ 0.000000] (1:master@Jacquelin) Sending "Task_0" to "iRMX"
+> [ 4.772530] (1:master@Jacquelin) Sent
+> [ 4.772530] (1:master@Jacquelin) Sending "Task_1" to "Casavant"
+> [ 4.772530] (4:slave@iRMX) Received "Task_0"
+> [ 4.772530] (4:slave@iRMX) Processing "Task_0"
+> [ 4.845345] (4:slave@iRMX) "Task_0" done
+> [ 6.900351] (1:master@Jacquelin) Sent
+> [ 6.900351] (1:master@Jacquelin) Sending "Task_2" to "Bousquet"
+> [ 6.900351] (3:forwarder@Casavant) Received "Task_1"
+> [ 6.900351] (3:forwarder@Casavant) Sending "Task_1" to "Robert"
+> [ 8.491392] (1:master@Jacquelin) Sent
+> [ 8.491392] (1:master@Jacquelin) Sending "Task_3" to "Soucy"
+> [ 8.491392] (5:slave@Bousquet) Received "Task_2"
+> [ 8.491392] (5:slave@Bousquet) Processing "Task_2"
+> [ 8.607896] (5:slave@Bousquet) "Task_2" done
+> [ 9.260549] (10:slave@Robert) Received "Task_1"
+> [ 9.260549] (10:slave@Robert) Processing "Task_1"
+> [ 9.296956] (10:slave@Robert) "Task_1" done
+> [ 10.755127] (1:master@Jacquelin) Sent
+> [ 10.755127] (1:master@Jacquelin) Sending "Task_4" to "Jackson"
+> [ 10.755127] (6:slave@Soucy) Received "Task_3"
+> [ 10.755127] (6:slave@Soucy) Processing "Task_3"
+> [ 10.791535] (6:slave@Soucy) "Task_3" done
+> [ 12.090242] (1:master@Jacquelin) Sent
+> [ 12.090242] (1:master@Jacquelin) Sending "Task_5" to "iRMX"
+> [ 12.090242] (2:forwarder@Jackson) Received "Task_4"
+> [ 12.090242] (2:forwarder@Jackson) Sending "Task_4" to "Kuenning"
+> [ 12.173866] (7:slave@Kuenning) Received "Task_4"
+> [ 12.173866] (7:slave@Kuenning) Processing "Task_4"
+> [ 12.232118] (7:slave@Kuenning) "Task_4" done
+> [ 16.862772] (1:master@Jacquelin) Sent
+> [ 16.862772] (1:master@Jacquelin) Sending "Task_6" to "Casavant"
+> [ 16.862772] (4:slave@iRMX) Received "Task_5"
+> [ 16.862772] (4:slave@iRMX) Processing "Task_5"
+> [ 16.935587] (4:slave@iRMX) "Task_5" done
+> [ 18.990593] (1:master@Jacquelin) Sent
+> [ 18.990593] (1:master@Jacquelin) Sending "Task_7" to "Bousquet"
+> [ 18.990593] (3:forwarder@Casavant) Received "Task_6"
+> [ 18.990593] (3:forwarder@Casavant) Sending "Task_6" to "Sirois"
+> [ 19.793293] (11:slave@Sirois) Received "Task_6"
+> [ 19.793293] (11:slave@Sirois) Processing "Task_6"
+> [ 19.836983] (11:slave@Sirois) "Task_6" done
+> [ 20.581634] (1:master@Jacquelin) Sent
+> [ 20.581634] (1:master@Jacquelin) Sending "Task_8" to "Soucy"
+> [ 20.581634] (5:slave@Bousquet) Received "Task_7"
+> [ 20.581634] (5:slave@Bousquet) Processing "Task_7"
+> [ 20.698138] (5:slave@Bousquet) "Task_7" done
+> [ 22.845369] (1:master@Jacquelin) Sent
+> [ 22.845369] (1:master@Jacquelin) Sending "Task_9" to "Jackson"
+> [ 22.845369] (6:slave@Soucy) Received "Task_8"
+> [ 22.845369] (6:slave@Soucy) Processing "Task_8"
+> [ 22.881777] (6:slave@Soucy) "Task_8" done
+> [ 24.180485] (1:master@Jacquelin) Sent
+> [ 24.180485] (1:master@Jacquelin) Sending "Task_10" to "iRMX"
+> [ 24.180485] (2:forwarder@Jackson) Received "Task_9"
+> [ 24.180485] (2:forwarder@Jackson) Sending "Task_9" to "Browne"
+> [ 27.009931] (8:slave@Browne) Received "Task_9"
+> [ 27.009931] (8:slave@Browne) Processing "Task_9"
+> [ 27.046339] (8:slave@Browne) "Task_9" done
+> [ 28.953014] (1:master@Jacquelin) Sent
+> [ 28.953014] (1:master@Jacquelin) Sending "Task_11" to "Casavant"
+> [ 28.953014] (4:slave@iRMX) Received "Task_10"
+> [ 28.953014] (4:slave@iRMX) Processing "Task_10"
+> [ 29.025830] (4:slave@iRMX) "Task_10" done
+> [ 31.080835] (1:master@Jacquelin) Sent
+> [ 31.080835] (1:master@Jacquelin) Sending "Task_12" to "Bousquet"
+> [ 31.080835] (3:forwarder@Casavant) Received "Task_11"
+> [ 31.080835] (3:forwarder@Casavant) Sending "Task_11" to "Monique"
+> [ 32.472434] (12:slave@Monique) Received "Task_11"
+> [ 32.472434] (12:slave@Monique) Processing "Task_11"
+> [ 32.516124] (12:slave@Monique) "Task_11" done
+> [ 32.671876] (1:master@Jacquelin) Sent
+> [ 32.671876] (1:master@Jacquelin) Sending "Task_13" to "Soucy"
+> [ 32.671876] (5:slave@Bousquet) Received "Task_12"
+> [ 32.671876] (5:slave@Bousquet) Processing "Task_12"
+> [ 32.788380] (5:slave@Bousquet) "Task_12" done
+> [ 34.935611] (1:master@Jacquelin) Sent
+> [ 34.935611] (1:master@Jacquelin) Sending "Task_14" to "Jackson"
+> [ 34.935611] (6:slave@Soucy) Received "Task_13"
+> [ 34.935611] (6:slave@Soucy) Processing "Task_13"
+> [ 34.972019] (6:slave@Soucy) "Task_13" done
+> [ 36.270727] (1:master@Jacquelin) Sent
+> [ 36.270727] (1:master@Jacquelin) Sending "Task_15" to "iRMX"
+> [ 36.270727] (2:forwarder@Jackson) Received "Task_14"
+> [ 36.270727] (2:forwarder@Jackson) Sending "Task_14" to "Stephen"
+> [ 40.508273] (9:slave@Stephen) Received "Task_14"
+> [ 40.508273] (9:slave@Stephen) Processing "Task_14"
+> [ 40.581088] (9:slave@Stephen) "Task_14" done
+> [ 41.043257] (1:master@Jacquelin) Sent
+> [ 41.043257] (1:master@Jacquelin) Sending "Task_16" to "Casavant"
+> [ 41.043257] (4:slave@iRMX) Received "Task_15"
+> [ 41.043257] (4:slave@iRMX) Processing "Task_15"
+> [ 41.116072] (4:slave@iRMX) "Task_15" done
+> [ 43.171078] (1:master@Jacquelin) Sent
+> [ 43.171078] (1:master@Jacquelin) Sending "Task_17" to "Bousquet"
+> [ 43.171078] (3:forwarder@Casavant) Received "Task_16"
+> [ 43.171078] (3:forwarder@Casavant) Sending "Task_16" to "Robert"
+> [ 44.762118] (1:master@Jacquelin) Sent
+> [ 44.762118] (1:master@Jacquelin) Sending "Task_18" to "Soucy"
+> [ 44.762118] (5:slave@Bousquet) Received "Task_17"
+> [ 44.762118] (5:slave@Bousquet) Processing "Task_17"
+> [ 44.878622] (5:slave@Bousquet) "Task_17" done
+> [ 45.531275] (10:slave@Robert) Received "Task_16"
+> [ 45.531275] (10:slave@Robert) Processing "Task_16"
+> [ 45.567683] (10:slave@Robert) "Task_16" done
+> [ 47.025854] (1:master@Jacquelin) Sent
+> [ 47.025854] (1:master@Jacquelin) Sending "Task_19" to "Jackson"
+> [ 47.025854] (6:slave@Soucy) Received "Task_18"
+> [ 47.025854] (6:slave@Soucy) Processing "Task_18"
+> [ 47.062262] (6:slave@Soucy) "Task_18" done
+> [ 48.360969] (1:master@Jacquelin) Sent
+> [ 48.360969] (1:master@Jacquelin) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 48.360969] (2:forwarder@Jackson) Received "Task_19"
+> [ 48.360969] (2:forwarder@Jackson) Sending "Task_19" to "Kuenning"
+> [ 48.444592] (7:slave@Kuenning) Received "Task_19"
+> [ 48.444592] (7:slave@Kuenning) Processing "Task_19"
+> [ 48.502845] (7:slave@Kuenning) "Task_19" done
+> [ 50.794024] (4:slave@iRMX) Received "finalize"
+> [ 50.794024] (4:slave@iRMX) I'm done. See you!
+> [ 51.878795] (3:forwarder@Casavant) Received "finalize"
+> [ 51.878795] (3:forwarder@Casavant) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 52.689914] (5:slave@Bousquet) Received "finalize"
+> [ 52.689914] (5:slave@Bousquet) I'm done. See you!
+> [ 53.082033] (10:slave@Robert) Received "finalize"
+> [ 53.082033] (10:slave@Robert) I'm done. See you!
+> [ 53.491253] (11:slave@Sirois) Received "finalize"
+> [ 53.491253] (11:slave@Sirois) I'm done. See you!
+> [ 53.843975] (6:slave@Soucy) Received "finalize"
+> [ 53.843975] (6:slave@Soucy) I'm done. See you!
+> [ 54.200695] (12:slave@Monique) Received "finalize"
+> [ 54.200695] (12:slave@Monique) I'm done. See you!
+> [ 54.200695] (3:forwarder@Casavant) I'm done. See you!
+> [ 54.524622] (1:master@Jacquelin) Goodbye now!
+> [ 54.524622] (2:forwarder@Jackson) Received "finalize"
+> [ 54.524622] (2:forwarder@Jackson) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 54.529294] (7:slave@Kuenning) Received "finalize"
+> [ 54.529294] (7:slave@Kuenning) I'm done. See you!
+> [ 55.971757] (8:slave@Browne) Received "finalize"
+> [ 55.971757] (8:slave@Browne) I'm done. See you!
+> [ 58.132075] (0:@) Simulation time 58.1321
+> [ 58.132075] (2:forwarder@Jackson) I'm done. See you!
+> [ 58.132075] (9:slave@Stephen) Received "finalize"
+> [ 58.132075] (9:slave@Stephen) I'm done. See you!
p Testing a simple master/slave example application handling failures
-$ masterslave/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=path:${srcdir} --cfg=cpu/model:CpuTI
-> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [0.000000] [simix_process/WARNING] Cannot launch process 'slave' on failed host 'Fafard'
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 5 slave(s) :
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Jupiter
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Fafard
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Ginette
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Bourassa
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Tremblay
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 20 task to process :
-> [Tremblay:master:(1) 0.165962] [msg_test/INFO] Send completed
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Received "Task"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Communication time : "0.165962"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Processing "Task"
-> [Jupiter:slave:(3) 0.821304] [msg_test/INFO] "Task" done
-> [Jupiter:slave:(3) 1.100000] [msg_test/INFO] Gloups. The cpu on which I'm running just turned off!. See you!
-> [Tremblay:master:(1) 10.165962] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 10.306421] [msg_test/INFO] Received "Task"
-> [Ginette:slave:(4) 10.306421] [msg_test/INFO] Communication time : "0.140460"
-> [Ginette:slave:(4) 10.306421] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 10.306421] [msg_test/INFO] Send completed
-> [Bourassa:slave:(5) 10.522294] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 10.522294] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 10.522294] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 10.522294] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 10.524632] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 10.524632] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 10.524632] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 10.524632] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 11.034342] [msg_test/INFO] "Task" done
-> [Ginette:slave:(4) 11.337519] [msg_test/INFO] "Task" done
-> [Bourassa:slave:(5) 11.553392] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 20.524632] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 30.524632] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 30.524632] [msg_test/INFO] Mmh. Something went wrong. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 30.524632] [msg_test/INFO] Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
-> [Bourassa:slave:(5) 30.740505] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 30.740505] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 30.740505] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 30.740505] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 30.742843] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 30.742843] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 30.742843] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 30.742843] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 31.252553] [msg_test/INFO] "Task" done
-> [Bourassa:slave:(5) 31.771603] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 40.742843] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 50.742843] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 50.883303] [msg_test/INFO] Received "Task"
-> [Ginette:slave:(4) 50.883303] [msg_test/INFO] Communication time : "0.140460"
-> [Ginette:slave:(4) 50.883303] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 50.883303] [msg_test/INFO] Send completed
-> [Bourassa:slave:(5) 51.099175] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 51.099175] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 51.099175] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 51.099175] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 51.101514] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 51.101514] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 51.101514] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 51.101514] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 51.611224] [msg_test/INFO] "Task" done
-> [Ginette:slave:(4) 51.914401] [msg_test/INFO] "Task" done
-> [Bourassa:slave:(5) 52.130273] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 61.101514] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 71.101514] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 71.241973] [msg_test/INFO] Received "Task"
-> [Ginette:slave:(4) 71.241973] [msg_test/INFO] Communication time : "0.140460"
-> [Ginette:slave:(4) 71.241973] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 71.241973] [msg_test/INFO] Send completed
-> [Bourassa:slave:(5) 71.457846] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 71.457846] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 71.457846] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 71.457846] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 71.460184] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 71.460184] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 71.460184] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 71.460184] [msg_test/INFO] Send completed
-> [Tremblay:master:(1) 71.460184] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Tremblay:slave:(2) 71.969894] [msg_test/INFO] "Task" done
-> [Ginette:slave:(4) 72.273071] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 72.460184] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Bourassa:slave:(5) 72.488944] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 73.460184] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 73.473416] [msg_test/INFO] Received "finalize"
-> [Ginette:slave:(4) 73.473416] [msg_test/INFO] I'm done. See you!
-> [Bourassa:slave:(5) 73.493752] [msg_test/INFO] Received "finalize"
-> [Bourassa:slave:(5) 73.493752] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(2) 73.493908] [msg_test/INFO] Received "finalize"
-> [Tremblay:slave:(2) 73.493908] [msg_test/INFO] I'm done. See you!
-> [Tremblay:master:(1) 73.493908] [msg_test/INFO] Goodbye now!
-> [73.493908] [msg_test/INFO] Simulation time 73.4939
+! output sort
+$ masterslave/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=path:${srcdir} --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.000000] (0:@) Cannot launch process 'slave' on failed host 'Fafard'
+> [ 0.000000] (1:master@Tremblay) Got 5 slave(s) :
+> [ 0.000000] (1:master@Tremblay) Jupiter
+> [ 0.000000] (1:master@Tremblay) Fafard
+> [ 0.000000] (1:master@Tremblay) Ginette
+> [ 0.000000] (1:master@Tremblay) Bourassa
+> [ 0.000000] (1:master@Tremblay) Tremblay
+> [ 0.000000] (1:master@Tremblay) Got 20 task to process :
+> [ 0.165962] (1:master@Tremblay) Send completed
+> [ 0.165962] (3:slave@Jupiter) Received "Task"
+> [ 0.165962] (3:slave@Jupiter) Communication time : "0.165962"
+> [ 0.165962] (3:slave@Jupiter) Processing "Task"
+> [ 0.821304] (3:slave@Jupiter) "Task" done
+> [ 1.100000] (3:slave@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 10.165962] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 10.306421] (1:master@Tremblay) Send completed
+> [ 10.306421] (4:slave@Ginette) Received "Task"
+> [ 10.306421] (4:slave@Ginette) Communication time : "0.140460"
+> [ 10.306421] (4:slave@Ginette) Processing "Task"
+> [ 10.522294] (1:master@Tremblay) Send completed
+> [ 10.522294] (5:slave@Bourassa) Received "Task"
+> [ 10.522294] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 10.522294] (5:slave@Bourassa) Processing "Task"
+> [ 10.524632] (1:master@Tremblay) Send completed
+> [ 10.524632] (2:slave@Tremblay) Received "Task"
+> [ 10.524632] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 10.524632] (2:slave@Tremblay) Processing "Task"
+> [ 11.034342] (2:slave@Tremblay) "Task" done
+> [ 11.337519] (4:slave@Ginette) "Task" done
+> [ 11.553392] (5:slave@Bourassa) "Task" done
+> [ 20.524632] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 30.524632] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 30.524632] (1:master@Tremblay) Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
+> [ 30.524632] (4:slave@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 30.740505] (1:master@Tremblay) Send completed
+> [ 30.740505] (5:slave@Bourassa) Received "Task"
+> [ 30.740505] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 30.740505] (5:slave@Bourassa) Processing "Task"
+> [ 30.742843] (1:master@Tremblay) Send completed
+> [ 30.742843] (2:slave@Tremblay) Received "Task"
+> [ 30.742843] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 30.742843] (2:slave@Tremblay) Processing "Task"
+> [ 31.252553] (2:slave@Tremblay) "Task" done
+> [ 31.771603] (5:slave@Bourassa) "Task" done
+> [ 40.742843] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 50.742843] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 50.883303] (1:master@Tremblay) Send completed
+> [ 50.883303] (4:slave@Ginette) Received "Task"
+> [ 50.883303] (4:slave@Ginette) Communication time : "0.140460"
+> [ 50.883303] (4:slave@Ginette) Processing "Task"
+> [ 51.099175] (1:master@Tremblay) Send completed
+> [ 51.099175] (5:slave@Bourassa) Received "Task"
+> [ 51.099175] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 51.099175] (5:slave@Bourassa) Processing "Task"
+> [ 51.101514] (1:master@Tremblay) Send completed
+> [ 51.101514] (2:slave@Tremblay) Received "Task"
+> [ 51.101514] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 51.101514] (2:slave@Tremblay) Processing "Task"
+> [ 51.611224] (2:slave@Tremblay) "Task" done
+> [ 51.914401] (4:slave@Ginette) "Task" done
+> [ 52.130273] (5:slave@Bourassa) "Task" done
+> [ 61.101514] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 71.101514] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 71.241973] (1:master@Tremblay) Send completed
+> [ 71.241973] (4:slave@Ginette) Received "Task"
+> [ 71.241973] (4:slave@Ginette) Communication time : "0.140460"
+> [ 71.241973] (4:slave@Ginette) Processing "Task"
+> [ 71.457846] (1:master@Tremblay) Send completed
+> [ 71.457846] (5:slave@Bourassa) Received "Task"
+> [ 71.457846] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 71.457846] (5:slave@Bourassa) Processing "Task"
+> [ 71.460184] (1:master@Tremblay) Send completed
+> [ 71.460184] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 71.460184] (2:slave@Tremblay) Received "Task"
+> [ 71.460184] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 71.460184] (2:slave@Tremblay) Processing "Task"
+> [ 71.969894] (2:slave@Tremblay) "Task" done
+> [ 72.273071] (4:slave@Ginette) "Task" done
+> [ 72.460184] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 72.488944] (5:slave@Bourassa) "Task" done
+> [ 73.460184] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 73.473416] (4:slave@Ginette) Received "finalize"
+> [ 73.473416] (4:slave@Ginette) I'm done. See you!
+> [ 73.493752] (5:slave@Bourassa) Received "finalize"
+> [ 73.493752] (5:slave@Bourassa) I'm done. See you!
+> [ 73.493908] (0:@) Simulation time 73.4939
+> [ 73.493908] (1:master@Tremblay) Goodbye now!
+> [ 73.493908] (2:slave@Tremblay) Received "finalize"
+> [ 73.493908] (2:slave@Tremblay) I'm done. See you!
p Testing the bypassing of the flexml parser
-$ $SG_TEST_EXENV masterslave/masterslave_bypass --log=no_loc --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [0.000000] [surf_parse/WARNING] Bypassing the XML parser since surf_parse_open received a NULL pointer. If it is not what you want, go fix your code.
-> [host A:master:(1) 0.000000] [msg_test/INFO] Got 1 slave(s) :
-> [host A:master:(1) 0.000000] [msg_test/INFO] host B
-> [host A:master:(1) 0.000000] [msg_test/INFO] Got 20 task to process :
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_0"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_1"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_2"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_3"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_4"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_5"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_6"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_7"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_8"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_9"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_10"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_11"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_12"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_13"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_14"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_15"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_16"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_17"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_18"
-> [host A:master:(1) 0.000000] [msg_test/INFO] "Task_19"
-> [host A:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" to "host B"
-> [host B:slave:(2) 0.000000] [msg_test/INFO] I'm a slave
-> [host A:master:(1) 4.080000] [msg_test/INFO] Send completed
-> [host A:master:(1) 4.080000] [msg_test/INFO] Sending "Task_1" to "host B"
-> [host B:slave:(2) 4.080000] [msg_test/INFO] Received "Task_0"
-> [host B:slave:(2) 4.080000] [msg_test/INFO] Processing "Task_0"
-> [host B:slave:(2) 4.130000] [msg_test/INFO] "Task_0" done
-> [host A:master:(1) 8.210000] [msg_test/INFO] Send completed
-> [host A:master:(1) 8.210000] [msg_test/INFO] Sending "Task_2" to "host B"
-> [host B:slave:(2) 8.210000] [msg_test/INFO] Received "Task_1"
-> [host B:slave:(2) 8.210000] [msg_test/INFO] Processing "Task_1"
-> [host B:slave:(2) 8.260000] [msg_test/INFO] "Task_1" done
-> [host A:master:(1) 12.340000] [msg_test/INFO] Send completed
-> [host A:master:(1) 12.340000] [msg_test/INFO] Sending "Task_3" to "host B"
-> [host B:slave:(2) 12.340000] [msg_test/INFO] Received "Task_2"
-> [host B:slave:(2) 12.340000] [msg_test/INFO] Processing "Task_2"
-> [host B:slave:(2) 12.390000] [msg_test/INFO] "Task_2" done
-> [host A:master:(1) 16.470000] [msg_test/INFO] Send completed
-> [host A:master:(1) 16.470000] [msg_test/INFO] Sending "Task_4" to "host B"
-> [host B:slave:(2) 16.470000] [msg_test/INFO] Received "Task_3"
-> [host B:slave:(2) 16.470000] [msg_test/INFO] Processing "Task_3"
-> [host B:slave:(2) 16.520000] [msg_test/INFO] "Task_3" done
-> [host A:master:(1) 20.600000] [msg_test/INFO] Send completed
-> [host A:master:(1) 20.600000] [msg_test/INFO] Sending "Task_5" to "host B"
-> [host B:slave:(2) 20.600000] [msg_test/INFO] Received "Task_4"
-> [host B:slave:(2) 20.600000] [msg_test/INFO] Processing "Task_4"
-> [host B:slave:(2) 20.650000] [msg_test/INFO] "Task_4" done
-> [host A:master:(1) 24.730000] [msg_test/INFO] Send completed
-> [host A:master:(1) 24.730000] [msg_test/INFO] Sending "Task_6" to "host B"
-> [host B:slave:(2) 24.730000] [msg_test/INFO] Received "Task_5"
-> [host B:slave:(2) 24.730000] [msg_test/INFO] Processing "Task_5"
-> [host B:slave:(2) 24.780000] [msg_test/INFO] "Task_5" done
-> [host A:master:(1) 28.860000] [msg_test/INFO] Send completed
-> [host A:master:(1) 28.860000] [msg_test/INFO] Sending "Task_7" to "host B"
-> [host B:slave:(2) 28.860000] [msg_test/INFO] Received "Task_6"
-> [host B:slave:(2) 28.860000] [msg_test/INFO] Processing "Task_6"
-> [host B:slave:(2) 28.910000] [msg_test/INFO] "Task_6" done
-> [host A:master:(1) 32.990000] [msg_test/INFO] Send completed
-> [host A:master:(1) 32.990000] [msg_test/INFO] Sending "Task_8" to "host B"
-> [host B:slave:(2) 32.990000] [msg_test/INFO] Received "Task_7"
-> [host B:slave:(2) 32.990000] [msg_test/INFO] Processing "Task_7"
-> [host B:slave:(2) 33.040000] [msg_test/INFO] "Task_7" done
-> [host A:master:(1) 37.120000] [msg_test/INFO] Send completed
-> [host A:master:(1) 37.120000] [msg_test/INFO] Sending "Task_9" to "host B"
-> [host B:slave:(2) 37.120000] [msg_test/INFO] Received "Task_8"
-> [host B:slave:(2) 37.120000] [msg_test/INFO] Processing "Task_8"
-> [host B:slave:(2) 37.170000] [msg_test/INFO] "Task_8" done
-> [host A:master:(1) 41.250000] [msg_test/INFO] Send completed
-> [host A:master:(1) 41.250000] [msg_test/INFO] Sending "Task_10" to "host B"
-> [host B:slave:(2) 41.250000] [msg_test/INFO] Received "Task_9"
-> [host B:slave:(2) 41.250000] [msg_test/INFO] Processing "Task_9"
-> [host B:slave:(2) 41.300000] [msg_test/INFO] "Task_9" done
-> [host A:master:(1) 45.380000] [msg_test/INFO] Send completed
-> [host A:master:(1) 45.380000] [msg_test/INFO] Sending "Task_11" to "host B"
-> [host B:slave:(2) 45.380000] [msg_test/INFO] Received "Task_10"
-> [host B:slave:(2) 45.380000] [msg_test/INFO] Processing "Task_10"
-> [host B:slave:(2) 45.430000] [msg_test/INFO] "Task_10" done
-> [host A:master:(1) 49.510000] [msg_test/INFO] Send completed
-> [host A:master:(1) 49.510000] [msg_test/INFO] Sending "Task_12" to "host B"
-> [host B:slave:(2) 49.510000] [msg_test/INFO] Received "Task_11"
-> [host B:slave:(2) 49.510000] [msg_test/INFO] Processing "Task_11"
-> [host B:slave:(2) 49.560000] [msg_test/INFO] "Task_11" done
-> [host A:master:(1) 53.640000] [msg_test/INFO] Send completed
-> [host A:master:(1) 53.640000] [msg_test/INFO] Sending "Task_13" to "host B"
-> [host B:slave:(2) 53.640000] [msg_test/INFO] Received "Task_12"
-> [host B:slave:(2) 53.640000] [msg_test/INFO] Processing "Task_12"
-> [host B:slave:(2) 53.690000] [msg_test/INFO] "Task_12" done
-> [host A:master:(1) 57.770000] [msg_test/INFO] Send completed
-> [host A:master:(1) 57.770000] [msg_test/INFO] Sending "Task_14" to "host B"
-> [host B:slave:(2) 57.770000] [msg_test/INFO] Received "Task_13"
-> [host B:slave:(2) 57.770000] [msg_test/INFO] Processing "Task_13"
-> [host B:slave:(2) 57.820000] [msg_test/INFO] "Task_13" done
-> [host A:master:(1) 61.900000] [msg_test/INFO] Send completed
-> [host A:master:(1) 61.900000] [msg_test/INFO] Sending "Task_15" to "host B"
-> [host B:slave:(2) 61.900000] [msg_test/INFO] Received "Task_14"
-> [host B:slave:(2) 61.900000] [msg_test/INFO] Processing "Task_14"
-> [host B:slave:(2) 61.950000] [msg_test/INFO] "Task_14" done
-> [host A:master:(1) 66.030000] [msg_test/INFO] Send completed
-> [host A:master:(1) 66.030000] [msg_test/INFO] Sending "Task_16" to "host B"
-> [host B:slave:(2) 66.030000] [msg_test/INFO] Received "Task_15"
-> [host B:slave:(2) 66.030000] [msg_test/INFO] Processing "Task_15"
-> [host B:slave:(2) 66.080000] [msg_test/INFO] "Task_15" done
-> [host A:master:(1) 70.160000] [msg_test/INFO] Send completed
-> [host A:master:(1) 70.160000] [msg_test/INFO] Sending "Task_17" to "host B"
-> [host B:slave:(2) 70.160000] [msg_test/INFO] Received "Task_16"
-> [host B:slave:(2) 70.160000] [msg_test/INFO] Processing "Task_16"
-> [host B:slave:(2) 70.210000] [msg_test/INFO] "Task_16" done
-> [host A:master:(1) 74.290000] [msg_test/INFO] Send completed
-> [host A:master:(1) 74.290000] [msg_test/INFO] Sending "Task_18" to "host B"
-> [host B:slave:(2) 74.290000] [msg_test/INFO] Received "Task_17"
-> [host B:slave:(2) 74.290000] [msg_test/INFO] Processing "Task_17"
-> [host B:slave:(2) 74.340000] [msg_test/INFO] "Task_17" done
-> [host A:master:(1) 78.420000] [msg_test/INFO] Send completed
-> [host A:master:(1) 78.420000] [msg_test/INFO] Sending "Task_19" to "host B"
-> [host B:slave:(2) 78.420000] [msg_test/INFO] Received "Task_18"
-> [host B:slave:(2) 78.420000] [msg_test/INFO] Processing "Task_18"
-> [host B:slave:(2) 78.470000] [msg_test/INFO] "Task_18" done
-> [host A:master:(1) 82.550000] [msg_test/INFO] Send completed
-> [host A:master:(1) 82.550000] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [host B:slave:(2) 82.550000] [msg_test/INFO] Received "Task_19"
-> [host B:slave:(2) 82.550000] [msg_test/INFO] Processing "Task_19"
-> [host B:slave:(2) 82.600000] [msg_test/INFO] "Task_19" done
-> [host A:master:(1) 84.680000] [msg_test/INFO] Goodbye now!
-> [host B:slave:(2) 84.680000] [msg_test/INFO] Received "finalize"
-> [host B:slave:(2) 84.680000] [msg_test/INFO] I'm done. See you!
-> [84.680000] [msg_test/INFO] Simulation time 84.68
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_bypass --log=no_loc --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.000000] (0:@) Bypassing the XML parser since surf_parse_open received a NULL pointer. If it is not what you want, go fix your code.
+> [ 0.000000] (1:master@host A) Got 1 slave(s) :
+> [ 0.000000] (1:master@host A) host B
+> [ 0.000000] (1:master@host A) Got 20 task to process :
+> [ 0.000000] (1:master@host A) "Task_0"
+> [ 0.000000] (1:master@host A) "Task_1"
+> [ 0.000000] (1:master@host A) "Task_2"
+> [ 0.000000] (1:master@host A) "Task_3"
+> [ 0.000000] (1:master@host A) "Task_4"
+> [ 0.000000] (1:master@host A) "Task_5"
+> [ 0.000000] (1:master@host A) "Task_6"
+> [ 0.000000] (1:master@host A) "Task_7"
+> [ 0.000000] (1:master@host A) "Task_8"
+> [ 0.000000] (1:master@host A) "Task_9"
+> [ 0.000000] (1:master@host A) "Task_10"
+> [ 0.000000] (1:master@host A) "Task_11"
+> [ 0.000000] (1:master@host A) "Task_12"
+> [ 0.000000] (1:master@host A) "Task_13"
+> [ 0.000000] (1:master@host A) "Task_14"
+> [ 0.000000] (1:master@host A) "Task_15"
+> [ 0.000000] (1:master@host A) "Task_16"
+> [ 0.000000] (1:master@host A) "Task_17"
+> [ 0.000000] (1:master@host A) "Task_18"
+> [ 0.000000] (1:master@host A) "Task_19"
+> [ 0.000000] (1:master@host A) Sending "Task_0" to "host B"
+> [ 0.000000] (2:slave@host B) I'm a slave
+> [ 4.080000] (1:master@host A) Send completed
+> [ 4.080000] (1:master@host A) Sending "Task_1" to "host B"
+> [ 4.080000] (2:slave@host B) Received "Task_0"
+> [ 4.080000] (2:slave@host B) Processing "Task_0"
+> [ 4.130000] (2:slave@host B) "Task_0" done
+> [ 8.210000] (1:master@host A) Send completed
+> [ 8.210000] (1:master@host A) Sending "Task_2" to "host B"
+> [ 8.210000] (2:slave@host B) Received "Task_1"
+> [ 8.210000] (2:slave@host B) Processing "Task_1"
+> [ 8.260000] (2:slave@host B) "Task_1" done
+> [ 12.340000] (1:master@host A) Send completed
+> [ 12.340000] (1:master@host A) Sending "Task_3" to "host B"
+> [ 12.340000] (2:slave@host B) Received "Task_2"
+> [ 12.340000] (2:slave@host B) Processing "Task_2"
+> [ 12.390000] (2:slave@host B) "Task_2" done
+> [ 16.470000] (1:master@host A) Send completed
+> [ 16.470000] (1:master@host A) Sending "Task_4" to "host B"
+> [ 16.470000] (2:slave@host B) Received "Task_3"
+> [ 16.470000] (2:slave@host B) Processing "Task_3"
+> [ 16.520000] (2:slave@host B) "Task_3" done
+> [ 20.600000] (1:master@host A) Send completed
+> [ 20.600000] (1:master@host A) Sending "Task_5" to "host B"
+> [ 20.600000] (2:slave@host B) Received "Task_4"
+> [ 20.600000] (2:slave@host B) Processing "Task_4"
+> [ 20.650000] (2:slave@host B) "Task_4" done
+> [ 24.730000] (1:master@host A) Send completed
+> [ 24.730000] (1:master@host A) Sending "Task_6" to "host B"
+> [ 24.730000] (2:slave@host B) Received "Task_5"
+> [ 24.730000] (2:slave@host B) Processing "Task_5"
+> [ 24.780000] (2:slave@host B) "Task_5" done
+> [ 28.860000] (1:master@host A) Send completed
+> [ 28.860000] (1:master@host A) Sending "Task_7" to "host B"
+> [ 28.860000] (2:slave@host B) Received "Task_6"
+> [ 28.860000] (2:slave@host B) Processing "Task_6"
+> [ 28.910000] (2:slave@host B) "Task_6" done
+> [ 32.990000] (1:master@host A) Send completed
+> [ 32.990000] (1:master@host A) Sending "Task_8" to "host B"
+> [ 32.990000] (2:slave@host B) Received "Task_7"
+> [ 32.990000] (2:slave@host B) Processing "Task_7"
+> [ 33.040000] (2:slave@host B) "Task_7" done
+> [ 37.120000] (1:master@host A) Send completed
+> [ 37.120000] (1:master@host A) Sending "Task_9" to "host B"
+> [ 37.120000] (2:slave@host B) Received "Task_8"
+> [ 37.120000] (2:slave@host B) Processing "Task_8"
+> [ 37.170000] (2:slave@host B) "Task_8" done
+> [ 41.250000] (1:master@host A) Send completed
+> [ 41.250000] (1:master@host A) Sending "Task_10" to "host B"
+> [ 41.250000] (2:slave@host B) Received "Task_9"
+> [ 41.250000] (2:slave@host B) Processing "Task_9"
+> [ 41.300000] (2:slave@host B) "Task_9" done
+> [ 45.380000] (1:master@host A) Send completed
+> [ 45.380000] (1:master@host A) Sending "Task_11" to "host B"
+> [ 45.380000] (2:slave@host B) Received "Task_10"
+> [ 45.380000] (2:slave@host B) Processing "Task_10"
+> [ 45.430000] (2:slave@host B) "Task_10" done
+> [ 49.510000] (1:master@host A) Send completed
+> [ 49.510000] (1:master@host A) Sending "Task_12" to "host B"
+> [ 49.510000] (2:slave@host B) Received "Task_11"
+> [ 49.510000] (2:slave@host B) Processing "Task_11"
+> [ 49.560000] (2:slave@host B) "Task_11" done
+> [ 53.640000] (1:master@host A) Send completed
+> [ 53.640000] (1:master@host A) Sending "Task_13" to "host B"
+> [ 53.640000] (2:slave@host B) Received "Task_12"
+> [ 53.640000] (2:slave@host B) Processing "Task_12"
+> [ 53.690000] (2:slave@host B) "Task_12" done
+> [ 57.770000] (1:master@host A) Send completed
+> [ 57.770000] (1:master@host A) Sending "Task_14" to "host B"
+> [ 57.770000] (2:slave@host B) Received "Task_13"
+> [ 57.770000] (2:slave@host B) Processing "Task_13"
+> [ 57.820000] (2:slave@host B) "Task_13" done
+> [ 61.900000] (1:master@host A) Send completed
+> [ 61.900000] (1:master@host A) Sending "Task_15" to "host B"
+> [ 61.900000] (2:slave@host B) Received "Task_14"
+> [ 61.900000] (2:slave@host B) Processing "Task_14"
+> [ 61.950000] (2:slave@host B) "Task_14" done
+> [ 66.030000] (1:master@host A) Send completed
+> [ 66.030000] (1:master@host A) Sending "Task_16" to "host B"
+> [ 66.030000] (2:slave@host B) Received "Task_15"
+> [ 66.030000] (2:slave@host B) Processing "Task_15"
+> [ 66.080000] (2:slave@host B) "Task_15" done
+> [ 70.160000] (1:master@host A) Send completed
+> [ 70.160000] (1:master@host A) Sending "Task_17" to "host B"
+> [ 70.160000] (2:slave@host B) Received "Task_16"
+> [ 70.160000] (2:slave@host B) Processing "Task_16"
+> [ 70.210000] (2:slave@host B) "Task_16" done
+> [ 74.290000] (1:master@host A) Send completed
+> [ 74.290000] (1:master@host A) Sending "Task_18" to "host B"
+> [ 74.290000] (2:slave@host B) Received "Task_17"
+> [ 74.290000] (2:slave@host B) Processing "Task_17"
+> [ 74.340000] (2:slave@host B) "Task_17" done
+> [ 78.420000] (1:master@host A) Send completed
+> [ 78.420000] (1:master@host A) Sending "Task_19" to "host B"
+> [ 78.420000] (2:slave@host B) Received "Task_18"
+> [ 78.420000] (2:slave@host B) Processing "Task_18"
+> [ 78.470000] (2:slave@host B) "Task_18" done
+> [ 82.550000] (1:master@host A) Send completed
+> [ 82.550000] (1:master@host A) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 82.550000] (2:slave@host B) Received "Task_19"
+> [ 82.550000] (2:slave@host B) Processing "Task_19"
+> [ 82.600000] (2:slave@host B) "Task_19" done
+> [ 84.680000] (0:@) Simulation time 84.68
+> [ 84.680000] (1:master@host A) Goodbye now!
+> [ 84.680000] (2:slave@host B) Received "finalize"
+> [ 84.680000] (2:slave@host B) I'm done. See you!
p Testing a simple master/slave example application handling failures
-$ masterslave/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=path:${srcdir}
-> [0.000000] [simix_process/WARNING] Cannot launch process 'slave' on failed host 'Fafard'
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 5 slave(s) :
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Jupiter
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Fafard
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Ginette
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Bourassa
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Tremblay
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 20 task to process :
-> [Tremblay:master:(1) 0.165962] [msg_test/INFO] Send completed
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Received "Task"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Communication time : "0.165962"
-> [Jupiter:slave:(3) 0.165962] [msg_test/INFO] Processing "Task"
-> [Jupiter:slave:(3) 0.821304] [msg_test/INFO] "Task" done
-> [Jupiter:slave:(3) 1.100000] [msg_test/INFO] Gloups. The cpu on which I'm running just turned off!. See you!
-> [Tremblay:master:(1) 10.165962] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 10.306421] [msg_test/INFO] Received "Task"
-> [Ginette:slave:(4) 10.306421] [msg_test/INFO] Communication time : "0.140460"
-> [Ginette:slave:(4) 10.306421] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 10.306421] [msg_test/INFO] Send completed
-> [Bourassa:slave:(5) 10.522294] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 10.522294] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 10.522294] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 10.522294] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 10.524632] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 10.524632] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 10.524632] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 10.524632] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 11.034342] [msg_test/INFO] "Task" done
-> [Ginette:slave:(4) 11.337519] [msg_test/INFO] "Task" done
-> [Bourassa:slave:(5) 11.553392] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 20.524632] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 30.524632] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 30.524632] [msg_test/INFO] Mmh. Something went wrong. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 30.524632] [msg_test/INFO] Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
-> [Bourassa:slave:(5) 30.740505] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 30.740505] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 30.740505] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 30.740505] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 30.742843] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 30.742843] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 30.742843] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 30.742843] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 31.252553] [msg_test/INFO] "Task" done
-> [Bourassa:slave:(5) 31.771603] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 40.742843] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 50.742843] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 50.883303] [msg_test/INFO] Received "Task"
-> [Ginette:slave:(4) 50.883303] [msg_test/INFO] Communication time : "0.140460"
-> [Ginette:slave:(4) 50.883303] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 50.883303] [msg_test/INFO] Send completed
-> [Bourassa:slave:(5) 51.099175] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 51.099175] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 51.099175] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 51.099175] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 51.101514] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 51.101514] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 51.101514] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 51.101514] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 51.611224] [msg_test/INFO] "Task" done
-> [Ginette:slave:(4) 51.914401] [msg_test/INFO] "Task" done
-> [Bourassa:slave:(5) 52.130273] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 61.101514] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Tremblay:master:(1) 71.101514] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 71.241973] [msg_test/INFO] Received "Task"
-> [Ginette:slave:(4) 71.241973] [msg_test/INFO] Communication time : "0.140460"
-> [Ginette:slave:(4) 71.241973] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 71.241973] [msg_test/INFO] Send completed
-> [Bourassa:slave:(5) 71.457846] [msg_test/INFO] Received "Task"
-> [Bourassa:slave:(5) 71.457846] [msg_test/INFO] Communication time : "0.215872"
-> [Bourassa:slave:(5) 71.457846] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 71.457846] [msg_test/INFO] Send completed
-> [Tremblay:slave:(2) 71.460184] [msg_test/INFO] Received "Task"
-> [Tremblay:slave:(2) 71.460184] [msg_test/INFO] Communication time : "0.002339"
-> [Tremblay:slave:(2) 71.460184] [msg_test/INFO] Processing "Task"
-> [Tremblay:master:(1) 71.460184] [msg_test/INFO] Send completed
-> [Tremblay:master:(1) 71.460184] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Tremblay:slave:(2) 71.969894] [msg_test/INFO] "Task" done
-> [Ginette:slave:(4) 72.273071] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 72.460184] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
-> [Bourassa:slave:(5) 72.488944] [msg_test/INFO] "Task" done
-> [Tremblay:master:(1) 73.460184] [msg_test/INFO] Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [Ginette:slave:(4) 73.473416] [msg_test/INFO] Received "finalize"
-> [Ginette:slave:(4) 73.473416] [msg_test/INFO] I'm done. See you!
-> [Bourassa:slave:(5) 73.493752] [msg_test/INFO] Received "finalize"
-> [Bourassa:slave:(5) 73.493752] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(2) 73.493908] [msg_test/INFO] Received "finalize"
-> [Tremblay:slave:(2) 73.493908] [msg_test/INFO] I'm done. See you!
-> [Tremblay:master:(1) 73.493908] [msg_test/INFO] Goodbye now!
-> [73.493908] [msg_test/INFO] Simulation time 73.4939
+! output sort
+$ masterslave/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=path:${srcdir} --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Cannot launch process 'slave' on failed host 'Fafard'
+> [ 0.000000] (1:master@Tremblay) Got 5 slave(s) :
+> [ 0.000000] (1:master@Tremblay) Jupiter
+> [ 0.000000] (1:master@Tremblay) Fafard
+> [ 0.000000] (1:master@Tremblay) Ginette
+> [ 0.000000] (1:master@Tremblay) Bourassa
+> [ 0.000000] (1:master@Tremblay) Tremblay
+> [ 0.000000] (1:master@Tremblay) Got 20 task to process :
+> [ 0.165962] (1:master@Tremblay) Send completed
+> [ 0.165962] (3:slave@Jupiter) Received "Task"
+> [ 0.165962] (3:slave@Jupiter) Communication time : "0.165962"
+> [ 0.165962] (3:slave@Jupiter) Processing "Task"
+> [ 0.821304] (3:slave@Jupiter) "Task" done
+> [ 1.100000] (3:slave@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 10.165962] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 10.306421] (1:master@Tremblay) Send completed
+> [ 10.306421] (4:slave@Ginette) Received "Task"
+> [ 10.306421] (4:slave@Ginette) Communication time : "0.140460"
+> [ 10.306421] (4:slave@Ginette) Processing "Task"
+> [ 10.522294] (1:master@Tremblay) Send completed
+> [ 10.522294] (5:slave@Bourassa) Received "Task"
+> [ 10.522294] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 10.522294] (5:slave@Bourassa) Processing "Task"
+> [ 10.524632] (1:master@Tremblay) Send completed
+> [ 10.524632] (2:slave@Tremblay) Received "Task"
+> [ 10.524632] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 10.524632] (2:slave@Tremblay) Processing "Task"
+> [ 11.034342] (2:slave@Tremblay) "Task" done
+> [ 11.337519] (4:slave@Ginette) "Task" done
+> [ 11.553392] (5:slave@Bourassa) "Task" done
+> [ 20.524632] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 30.524632] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 30.524632] (1:master@Tremblay) Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
+> [ 30.524632] (4:slave@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 30.740505] (1:master@Tremblay) Send completed
+> [ 30.740505] (5:slave@Bourassa) Received "Task"
+> [ 30.740505] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 30.740505] (5:slave@Bourassa) Processing "Task"
+> [ 30.742843] (1:master@Tremblay) Send completed
+> [ 30.742843] (2:slave@Tremblay) Received "Task"
+> [ 30.742843] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 30.742843] (2:slave@Tremblay) Processing "Task"
+> [ 31.252553] (2:slave@Tremblay) "Task" done
+> [ 31.771603] (5:slave@Bourassa) "Task" done
+> [ 40.742843] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 50.742843] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 50.883303] (1:master@Tremblay) Send completed
+> [ 50.883303] (4:slave@Ginette) Received "Task"
+> [ 50.883303] (4:slave@Ginette) Communication time : "0.140460"
+> [ 50.883303] (4:slave@Ginette) Processing "Task"
+> [ 51.099175] (1:master@Tremblay) Send completed
+> [ 51.099175] (5:slave@Bourassa) Received "Task"
+> [ 51.099175] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 51.099175] (5:slave@Bourassa) Processing "Task"
+> [ 51.101514] (1:master@Tremblay) Send completed
+> [ 51.101514] (2:slave@Tremblay) Received "Task"
+> [ 51.101514] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 51.101514] (2:slave@Tremblay) Processing "Task"
+> [ 51.611224] (2:slave@Tremblay) "Task" done
+> [ 51.914401] (4:slave@Ginette) "Task" done
+> [ 52.130273] (5:slave@Bourassa) "Task" done
+> [ 61.101514] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 71.101514] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 71.241973] (1:master@Tremblay) Send completed
+> [ 71.241973] (4:slave@Ginette) Received "Task"
+> [ 71.241973] (4:slave@Ginette) Communication time : "0.140460"
+> [ 71.241973] (4:slave@Ginette) Processing "Task"
+> [ 71.457846] (1:master@Tremblay) Send completed
+> [ 71.457846] (5:slave@Bourassa) Received "Task"
+> [ 71.457846] (5:slave@Bourassa) Communication time : "0.215872"
+> [ 71.457846] (5:slave@Bourassa) Processing "Task"
+> [ 71.460184] (1:master@Tremblay) Send completed
+> [ 71.460184] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 71.460184] (2:slave@Tremblay) Received "Task"
+> [ 71.460184] (2:slave@Tremblay) Communication time : "0.002339"
+> [ 71.460184] (2:slave@Tremblay) Processing "Task"
+> [ 71.969894] (2:slave@Tremblay) "Task" done
+> [ 72.273071] (4:slave@Ginette) "Task" done
+> [ 72.460184] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Jupiter'. Nevermind. Let's keep going!
+> [ 72.488944] (5:slave@Bourassa) "Task" done
+> [ 73.460184] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
+> [ 73.473416] (4:slave@Ginette) Received "finalize"
+> [ 73.473416] (4:slave@Ginette) I'm done. See you!
+> [ 73.493752] (5:slave@Bourassa) Received "finalize"
+> [ 73.493752] (5:slave@Bourassa) I'm done. See you!
+> [ 73.493908] (0:@) Simulation time 73.4939
+> [ 73.493908] (1:master@Tremblay) Goodbye now!
+> [ 73.493908] (2:slave@Tremblay) Received "finalize"
+> [ 73.493908] (2:slave@Tremblay) I'm done. See you!
p Testing a master/slave example application with a forwarder module
-$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/masterslave/deployment_masterslave_forwarder.xml
-> [Jacquelin:master:(1) 0.000000] [msg_test/INFO] Got 5 slaves and 20 tasks to process
-> [Jacquelin:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" to "iRMX"
-> [Jacquelin:master:(1) 4.772530] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 4.772530] [msg_test/INFO] Sending "Task_1" to "Casavant"
-> [iRMX:slave:(4) 4.772530] [msg_test/INFO] Received "Task_0"
-> [iRMX:slave:(4) 4.772530] [msg_test/INFO] Processing "Task_0"
-> [iRMX:slave:(4) 4.845345] [msg_test/INFO] "Task_0" done
-> [Casavant:forwarder:(3) 6.900351] [msg_test/INFO] Received "Task_1"
-> [Casavant:forwarder:(3) 6.900351] [msg_test/INFO] Sending "Task_1" to "Robert"
-> [Jacquelin:master:(1) 6.900351] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 6.900351] [msg_test/INFO] Sending "Task_2" to "Bousquet"
-> [Bousquet:slave:(5) 8.491392] [msg_test/INFO] Received "Task_2"
-> [Bousquet:slave:(5) 8.491392] [msg_test/INFO] Processing "Task_2"
-> [Jacquelin:master:(1) 8.491392] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 8.491392] [msg_test/INFO] Sending "Task_3" to "Soucy"
-> [Bousquet:slave:(5) 8.607896] [msg_test/INFO] "Task_2" done
-> [Robert:slave:(10) 9.260549] [msg_test/INFO] Received "Task_1"
-> [Robert:slave:(10) 9.260549] [msg_test/INFO] Processing "Task_1"
-> [Robert:slave:(10) 9.296956] [msg_test/INFO] "Task_1" done
-> [Soucy:slave:(6) 10.755127] [msg_test/INFO] Received "Task_3"
-> [Soucy:slave:(6) 10.755127] [msg_test/INFO] Processing "Task_3"
-> [Jacquelin:master:(1) 10.755127] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 10.755127] [msg_test/INFO] Sending "Task_4" to "Jackson"
-> [Soucy:slave:(6) 10.791535] [msg_test/INFO] "Task_3" done
-> [Jackson:forwarder:(2) 12.090242] [msg_test/INFO] Received "Task_4"
-> [Jackson:forwarder:(2) 12.090242] [msg_test/INFO] Sending "Task_4" to "Kuenning"
-> [Jacquelin:master:(1) 12.090242] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 12.090242] [msg_test/INFO] Sending "Task_5" to "iRMX"
-> [Kuenning:slave:(7) 12.173866] [msg_test/INFO] Received "Task_4"
-> [Kuenning:slave:(7) 12.173866] [msg_test/INFO] Processing "Task_4"
-> [Kuenning:slave:(7) 12.232118] [msg_test/INFO] "Task_4" done
-> [iRMX:slave:(4) 16.862772] [msg_test/INFO] Received "Task_5"
-> [iRMX:slave:(4) 16.862772] [msg_test/INFO] Processing "Task_5"
-> [Jacquelin:master:(1) 16.862772] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 16.862772] [msg_test/INFO] Sending "Task_6" to "Casavant"
-> [iRMX:slave:(4) 16.935587] [msg_test/INFO] "Task_5" done
-> [Casavant:forwarder:(3) 18.990593] [msg_test/INFO] Received "Task_6"
-> [Casavant:forwarder:(3) 18.990593] [msg_test/INFO] Sending "Task_6" to "Sirois"
-> [Jacquelin:master:(1) 18.990593] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 18.990593] [msg_test/INFO] Sending "Task_7" to "Bousquet"
-> [Sirois:slave:(11) 19.793293] [msg_test/INFO] Received "Task_6"
-> [Sirois:slave:(11) 19.793293] [msg_test/INFO] Processing "Task_6"
-> [Sirois:slave:(11) 19.836983] [msg_test/INFO] "Task_6" done
-> [Bousquet:slave:(5) 20.581634] [msg_test/INFO] Received "Task_7"
-> [Bousquet:slave:(5) 20.581634] [msg_test/INFO] Processing "Task_7"
-> [Jacquelin:master:(1) 20.581634] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 20.581634] [msg_test/INFO] Sending "Task_8" to "Soucy"
-> [Bousquet:slave:(5) 20.698138] [msg_test/INFO] "Task_7" done
-> [Soucy:slave:(6) 22.845369] [msg_test/INFO] Received "Task_8"
-> [Soucy:slave:(6) 22.845369] [msg_test/INFO] Processing "Task_8"
-> [Jacquelin:master:(1) 22.845369] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 22.845369] [msg_test/INFO] Sending "Task_9" to "Jackson"
-> [Soucy:slave:(6) 22.881777] [msg_test/INFO] "Task_8" done
-> [Jackson:forwarder:(2) 24.180485] [msg_test/INFO] Received "Task_9"
-> [Jackson:forwarder:(2) 24.180485] [msg_test/INFO] Sending "Task_9" to "Browne"
-> [Jacquelin:master:(1) 24.180485] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 24.180485] [msg_test/INFO] Sending "Task_10" to "iRMX"
-> [Browne:slave:(8) 27.009931] [msg_test/INFO] Received "Task_9"
-> [Browne:slave:(8) 27.009931] [msg_test/INFO] Processing "Task_9"
-> [Browne:slave:(8) 27.046339] [msg_test/INFO] "Task_9" done
-> [iRMX:slave:(4) 28.953014] [msg_test/INFO] Received "Task_10"
-> [iRMX:slave:(4) 28.953014] [msg_test/INFO] Processing "Task_10"
-> [Jacquelin:master:(1) 28.953014] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 28.953014] [msg_test/INFO] Sending "Task_11" to "Casavant"
-> [iRMX:slave:(4) 29.025830] [msg_test/INFO] "Task_10" done
-> [Casavant:forwarder:(3) 31.080835] [msg_test/INFO] Received "Task_11"
-> [Casavant:forwarder:(3) 31.080835] [msg_test/INFO] Sending "Task_11" to "Monique"
-> [Jacquelin:master:(1) 31.080835] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 31.080835] [msg_test/INFO] Sending "Task_12" to "Bousquet"
-> [Monique:slave:(12) 32.472434] [msg_test/INFO] Received "Task_11"
-> [Monique:slave:(12) 32.472434] [msg_test/INFO] Processing "Task_11"
-> [Monique:slave:(12) 32.516124] [msg_test/INFO] "Task_11" done
-> [Bousquet:slave:(5) 32.671876] [msg_test/INFO] Received "Task_12"
-> [Bousquet:slave:(5) 32.671876] [msg_test/INFO] Processing "Task_12"
-> [Jacquelin:master:(1) 32.671876] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 32.671876] [msg_test/INFO] Sending "Task_13" to "Soucy"
-> [Bousquet:slave:(5) 32.788380] [msg_test/INFO] "Task_12" done
-> [Soucy:slave:(6) 34.935611] [msg_test/INFO] Received "Task_13"
-> [Soucy:slave:(6) 34.935611] [msg_test/INFO] Processing "Task_13"
-> [Jacquelin:master:(1) 34.935611] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 34.935611] [msg_test/INFO] Sending "Task_14" to "Jackson"
-> [Soucy:slave:(6) 34.972019] [msg_test/INFO] "Task_13" done
-> [Jackson:forwarder:(2) 36.270727] [msg_test/INFO] Received "Task_14"
-> [Jackson:forwarder:(2) 36.270727] [msg_test/INFO] Sending "Task_14" to "Stephen"
-> [Jacquelin:master:(1) 36.270727] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 36.270727] [msg_test/INFO] Sending "Task_15" to "iRMX"
-> [Stephen:slave:(9) 40.508273] [msg_test/INFO] Received "Task_14"
-> [Stephen:slave:(9) 40.508273] [msg_test/INFO] Processing "Task_14"
-> [Stephen:slave:(9) 40.581088] [msg_test/INFO] "Task_14" done
-> [iRMX:slave:(4) 41.043257] [msg_test/INFO] Received "Task_15"
-> [iRMX:slave:(4) 41.043257] [msg_test/INFO] Processing "Task_15"
-> [Jacquelin:master:(1) 41.043257] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 41.043257] [msg_test/INFO] Sending "Task_16" to "Casavant"
-> [iRMX:slave:(4) 41.116072] [msg_test/INFO] "Task_15" done
-> [Casavant:forwarder:(3) 43.171078] [msg_test/INFO] Received "Task_16"
-> [Casavant:forwarder:(3) 43.171078] [msg_test/INFO] Sending "Task_16" to "Robert"
-> [Jacquelin:master:(1) 43.171078] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 43.171078] [msg_test/INFO] Sending "Task_17" to "Bousquet"
-> [Bousquet:slave:(5) 44.762118] [msg_test/INFO] Received "Task_17"
-> [Bousquet:slave:(5) 44.762118] [msg_test/INFO] Processing "Task_17"
-> [Jacquelin:master:(1) 44.762118] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 44.762118] [msg_test/INFO] Sending "Task_18" to "Soucy"
-> [Bousquet:slave:(5) 44.878622] [msg_test/INFO] "Task_17" done
-> [Robert:slave:(10) 45.531275] [msg_test/INFO] Received "Task_16"
-> [Robert:slave:(10) 45.531275] [msg_test/INFO] Processing "Task_16"
-> [Robert:slave:(10) 45.567683] [msg_test/INFO] "Task_16" done
-> [Soucy:slave:(6) 47.025854] [msg_test/INFO] Received "Task_18"
-> [Soucy:slave:(6) 47.025854] [msg_test/INFO] Processing "Task_18"
-> [Jacquelin:master:(1) 47.025854] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 47.025854] [msg_test/INFO] Sending "Task_19" to "Jackson"
-> [Soucy:slave:(6) 47.062262] [msg_test/INFO] "Task_18" done
-> [Jackson:forwarder:(2) 48.360969] [msg_test/INFO] Received "Task_19"
-> [Jackson:forwarder:(2) 48.360969] [msg_test/INFO] Sending "Task_19" to "Kuenning"
-> [Jacquelin:master:(1) 48.360969] [msg_test/INFO] Sent
-> [Jacquelin:master:(1) 48.360969] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Kuenning:slave:(7) 48.444592] [msg_test/INFO] Received "Task_19"
-> [Kuenning:slave:(7) 48.444592] [msg_test/INFO] Processing "Task_19"
-> [Kuenning:slave:(7) 48.502845] [msg_test/INFO] "Task_19" done
-> [iRMX:slave:(4) 50.794024] [msg_test/INFO] Received "finalize"
-> [iRMX:slave:(4) 50.794024] [msg_test/INFO] I'm done. See you!
-> [Casavant:forwarder:(3) 51.878795] [msg_test/INFO] Received "finalize"
-> [Casavant:forwarder:(3) 51.878795] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Bousquet:slave:(5) 52.689914] [msg_test/INFO] Received "finalize"
-> [Bousquet:slave:(5) 52.689914] [msg_test/INFO] I'm done. See you!
-> [Robert:slave:(10) 53.082033] [msg_test/INFO] Received "finalize"
-> [Robert:slave:(10) 53.082033] [msg_test/INFO] I'm done. See you!
-> [Sirois:slave:(11) 53.491253] [msg_test/INFO] Received "finalize"
-> [Sirois:slave:(11) 53.491253] [msg_test/INFO] I'm done. See you!
-> [Soucy:slave:(6) 53.843975] [msg_test/INFO] Received "finalize"
-> [Soucy:slave:(6) 53.843975] [msg_test/INFO] I'm done. See you!
-> [Monique:slave:(12) 54.200695] [msg_test/INFO] Received "finalize"
-> [Monique:slave:(12) 54.200695] [msg_test/INFO] I'm done. See you!
-> [Casavant:forwarder:(3) 54.200695] [msg_test/INFO] I'm done. See you!
-> [Jackson:forwarder:(2) 54.524622] [msg_test/INFO] Received "finalize"
-> [Jackson:forwarder:(2) 54.524622] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Jacquelin:master:(1) 54.524622] [msg_test/INFO] Goodbye now!
-> [Kuenning:slave:(7) 54.529294] [msg_test/INFO] Received "finalize"
-> [Kuenning:slave:(7) 54.529294] [msg_test/INFO] I'm done. See you!
-> [Browne:slave:(8) 55.971757] [msg_test/INFO] Received "finalize"
-> [Browne:slave:(8) 55.971757] [msg_test/INFO] I'm done. See you!
-> [Stephen:slave:(9) 58.132075] [msg_test/INFO] Received "finalize"
-> [Stephen:slave:(9) 58.132075] [msg_test/INFO] I'm done. See you!
-> [Jackson:forwarder:(2) 58.132075] [msg_test/INFO] I'm done. See you!
-> [58.132075] [msg_test/INFO] Simulation time 58.1321
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/masterslave/deployment_masterslave_forwarder.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:master@Jacquelin) Got 5 slaves and 20 tasks to process
+> [ 0.000000] (1:master@Jacquelin) Sending "Task_0" to "iRMX"
+> [ 4.772530] (1:master@Jacquelin) Sent
+> [ 4.772530] (1:master@Jacquelin) Sending "Task_1" to "Casavant"
+> [ 4.772530] (4:slave@iRMX) Received "Task_0"
+> [ 4.772530] (4:slave@iRMX) Processing "Task_0"
+> [ 4.845345] (4:slave@iRMX) "Task_0" done
+> [ 6.900351] (1:master@Jacquelin) Sent
+> [ 6.900351] (1:master@Jacquelin) Sending "Task_2" to "Bousquet"
+> [ 6.900351] (3:forwarder@Casavant) Received "Task_1"
+> [ 6.900351] (3:forwarder@Casavant) Sending "Task_1" to "Robert"
+> [ 8.491392] (1:master@Jacquelin) Sent
+> [ 8.491392] (1:master@Jacquelin) Sending "Task_3" to "Soucy"
+> [ 8.491392] (5:slave@Bousquet) Received "Task_2"
+> [ 8.491392] (5:slave@Bousquet) Processing "Task_2"
+> [ 8.607896] (5:slave@Bousquet) "Task_2" done
+> [ 9.260549] (10:slave@Robert) Received "Task_1"
+> [ 9.260549] (10:slave@Robert) Processing "Task_1"
+> [ 9.296956] (10:slave@Robert) "Task_1" done
+> [ 10.755127] (1:master@Jacquelin) Sent
+> [ 10.755127] (1:master@Jacquelin) Sending "Task_4" to "Jackson"
+> [ 10.755127] (6:slave@Soucy) Received "Task_3"
+> [ 10.755127] (6:slave@Soucy) Processing "Task_3"
+> [ 10.791535] (6:slave@Soucy) "Task_3" done
+> [ 12.090242] (1:master@Jacquelin) Sent
+> [ 12.090242] (1:master@Jacquelin) Sending "Task_5" to "iRMX"
+> [ 12.090242] (2:forwarder@Jackson) Received "Task_4"
+> [ 12.090242] (2:forwarder@Jackson) Sending "Task_4" to "Kuenning"
+> [ 12.173866] (7:slave@Kuenning) Received "Task_4"
+> [ 12.173866] (7:slave@Kuenning) Processing "Task_4"
+> [ 12.232118] (7:slave@Kuenning) "Task_4" done
+> [ 16.862772] (1:master@Jacquelin) Sent
+> [ 16.862772] (1:master@Jacquelin) Sending "Task_6" to "Casavant"
+> [ 16.862772] (4:slave@iRMX) Received "Task_5"
+> [ 16.862772] (4:slave@iRMX) Processing "Task_5"
+> [ 16.935587] (4:slave@iRMX) "Task_5" done
+> [ 18.990593] (1:master@Jacquelin) Sent
+> [ 18.990593] (1:master@Jacquelin) Sending "Task_7" to "Bousquet"
+> [ 18.990593] (3:forwarder@Casavant) Received "Task_6"
+> [ 18.990593] (3:forwarder@Casavant) Sending "Task_6" to "Sirois"
+> [ 19.793293] (11:slave@Sirois) Received "Task_6"
+> [ 19.793293] (11:slave@Sirois) Processing "Task_6"
+> [ 19.836983] (11:slave@Sirois) "Task_6" done
+> [ 20.581634] (1:master@Jacquelin) Sent
+> [ 20.581634] (1:master@Jacquelin) Sending "Task_8" to "Soucy"
+> [ 20.581634] (5:slave@Bousquet) Received "Task_7"
+> [ 20.581634] (5:slave@Bousquet) Processing "Task_7"
+> [ 20.698138] (5:slave@Bousquet) "Task_7" done
+> [ 22.845369] (1:master@Jacquelin) Sent
+> [ 22.845369] (1:master@Jacquelin) Sending "Task_9" to "Jackson"
+> [ 22.845369] (6:slave@Soucy) Received "Task_8"
+> [ 22.845369] (6:slave@Soucy) Processing "Task_8"
+> [ 22.881777] (6:slave@Soucy) "Task_8" done
+> [ 24.180485] (1:master@Jacquelin) Sent
+> [ 24.180485] (1:master@Jacquelin) Sending "Task_10" to "iRMX"
+> [ 24.180485] (2:forwarder@Jackson) Received "Task_9"
+> [ 24.180485] (2:forwarder@Jackson) Sending "Task_9" to "Browne"
+> [ 27.009931] (8:slave@Browne) Received "Task_9"
+> [ 27.009931] (8:slave@Browne) Processing "Task_9"
+> [ 27.046339] (8:slave@Browne) "Task_9" done
+> [ 28.953014] (1:master@Jacquelin) Sent
+> [ 28.953014] (1:master@Jacquelin) Sending "Task_11" to "Casavant"
+> [ 28.953014] (4:slave@iRMX) Received "Task_10"
+> [ 28.953014] (4:slave@iRMX) Processing "Task_10"
+> [ 29.025830] (4:slave@iRMX) "Task_10" done
+> [ 31.080835] (1:master@Jacquelin) Sent
+> [ 31.080835] (1:master@Jacquelin) Sending "Task_12" to "Bousquet"
+> [ 31.080835] (3:forwarder@Casavant) Received "Task_11"
+> [ 31.080835] (3:forwarder@Casavant) Sending "Task_11" to "Monique"
+> [ 32.472434] (12:slave@Monique) Received "Task_11"
+> [ 32.472434] (12:slave@Monique) Processing "Task_11"
+> [ 32.516124] (12:slave@Monique) "Task_11" done
+> [ 32.671876] (1:master@Jacquelin) Sent
+> [ 32.671876] (1:master@Jacquelin) Sending "Task_13" to "Soucy"
+> [ 32.671876] (5:slave@Bousquet) Received "Task_12"
+> [ 32.671876] (5:slave@Bousquet) Processing "Task_12"
+> [ 32.788380] (5:slave@Bousquet) "Task_12" done
+> [ 34.935611] (1:master@Jacquelin) Sent
+> [ 34.935611] (1:master@Jacquelin) Sending "Task_14" to "Jackson"
+> [ 34.935611] (6:slave@Soucy) Received "Task_13"
+> [ 34.935611] (6:slave@Soucy) Processing "Task_13"
+> [ 34.972019] (6:slave@Soucy) "Task_13" done
+> [ 36.270727] (1:master@Jacquelin) Sent
+> [ 36.270727] (1:master@Jacquelin) Sending "Task_15" to "iRMX"
+> [ 36.270727] (2:forwarder@Jackson) Received "Task_14"
+> [ 36.270727] (2:forwarder@Jackson) Sending "Task_14" to "Stephen"
+> [ 40.508273] (9:slave@Stephen) Received "Task_14"
+> [ 40.508273] (9:slave@Stephen) Processing "Task_14"
+> [ 40.581088] (9:slave@Stephen) "Task_14" done
+> [ 41.043257] (1:master@Jacquelin) Sent
+> [ 41.043257] (1:master@Jacquelin) Sending "Task_16" to "Casavant"
+> [ 41.043257] (4:slave@iRMX) Received "Task_15"
+> [ 41.043257] (4:slave@iRMX) Processing "Task_15"
+> [ 41.116072] (4:slave@iRMX) "Task_15" done
+> [ 43.171078] (1:master@Jacquelin) Sent
+> [ 43.171078] (1:master@Jacquelin) Sending "Task_17" to "Bousquet"
+> [ 43.171078] (3:forwarder@Casavant) Received "Task_16"
+> [ 43.171078] (3:forwarder@Casavant) Sending "Task_16" to "Robert"
+> [ 44.762118] (1:master@Jacquelin) Sent
+> [ 44.762118] (1:master@Jacquelin) Sending "Task_18" to "Soucy"
+> [ 44.762118] (5:slave@Bousquet) Received "Task_17"
+> [ 44.762118] (5:slave@Bousquet) Processing "Task_17"
+> [ 44.878622] (5:slave@Bousquet) "Task_17" done
+> [ 45.531275] (10:slave@Robert) Received "Task_16"
+> [ 45.531275] (10:slave@Robert) Processing "Task_16"
+> [ 45.567683] (10:slave@Robert) "Task_16" done
+> [ 47.025854] (1:master@Jacquelin) Sent
+> [ 47.025854] (1:master@Jacquelin) Sending "Task_19" to "Jackson"
+> [ 47.025854] (6:slave@Soucy) Received "Task_18"
+> [ 47.025854] (6:slave@Soucy) Processing "Task_18"
+> [ 47.062262] (6:slave@Soucy) "Task_18" done
+> [ 48.360969] (1:master@Jacquelin) Sent
+> [ 48.360969] (1:master@Jacquelin) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 48.360969] (2:forwarder@Jackson) Received "Task_19"
+> [ 48.360969] (2:forwarder@Jackson) Sending "Task_19" to "Kuenning"
+> [ 48.444592] (7:slave@Kuenning) Received "Task_19"
+> [ 48.444592] (7:slave@Kuenning) Processing "Task_19"
+> [ 48.502845] (7:slave@Kuenning) "Task_19" done
+> [ 50.794024] (4:slave@iRMX) Received "finalize"
+> [ 50.794024] (4:slave@iRMX) I'm done. See you!
+> [ 51.878795] (3:forwarder@Casavant) Received "finalize"
+> [ 51.878795] (3:forwarder@Casavant) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 52.689914] (5:slave@Bousquet) Received "finalize"
+> [ 52.689914] (5:slave@Bousquet) I'm done. See you!
+> [ 53.082033] (10:slave@Robert) Received "finalize"
+> [ 53.082033] (10:slave@Robert) I'm done. See you!
+> [ 53.491253] (11:slave@Sirois) Received "finalize"
+> [ 53.491253] (11:slave@Sirois) I'm done. See you!
+> [ 53.843975] (6:slave@Soucy) Received "finalize"
+> [ 53.843975] (6:slave@Soucy) I'm done. See you!
+> [ 54.200695] (12:slave@Monique) Received "finalize"
+> [ 54.200695] (12:slave@Monique) I'm done. See you!
+> [ 54.200695] (3:forwarder@Casavant) I'm done. See you!
+> [ 54.524622] (1:master@Jacquelin) Goodbye now!
+> [ 54.524622] (2:forwarder@Jackson) Received "finalize"
+> [ 54.524622] (2:forwarder@Jackson) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 54.529294] (7:slave@Kuenning) Received "finalize"
+> [ 54.529294] (7:slave@Kuenning) I'm done. See you!
+> [ 55.971757] (8:slave@Browne) Received "finalize"
+> [ 55.971757] (8:slave@Browne) I'm done. See you!
+> [ 58.132075] (0:@) Simulation time 58.1321
+> [ 58.132075] (2:forwarder@Jackson) I'm done. See you!
+> [ 58.132075] (9:slave@Stephen) Received "finalize"
+> [ 58.132075] (9:slave@Stephen) I'm done. See you!
p Testing a simple master/slave example application (mailbox version)
-$ $SG_TEST_EXENV masterslave/masterslave_mailbox$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/masterslave/deployment_masterslave_mailbox.xml --trace
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 5 slaves and 20 tasks to process
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 0.002339] [msg_test/INFO] Sending "Task_1" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 0.168300] [msg_test/INFO] Sending "Task_2" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 0.386454] [msg_test/INFO] Sending "Task_3" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 0.526913] [msg_test/INFO] Sending "Task_4" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 0.742786] [msg_test/INFO] Sending "Task_5" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 0.745124] [msg_test/INFO] Sending "Task_6" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 0.989605] [msg_test/INFO] Sending "Task_7" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 1.259949] [msg_test/INFO] Sending "Task_8" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 1.698471] [msg_test/INFO] Sending "Task_9" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 1.989756] [msg_test/INFO] Sending "Task_10" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 1.992094] [msg_test/INFO] Sending "Task_11" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 2.158056] [msg_test/INFO] Sending "Task_12" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 2.376209] [msg_test/INFO] Sending "Task_13" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 2.870028] [msg_test/INFO] Sending "Task_14" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 3.236726] [msg_test/INFO] Sending "Task_15" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 3.239065] [msg_test/INFO] Sending "Task_16" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 3.405026] [msg_test/INFO] Sending "Task_17" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 3.623180] [msg_test/INFO] Sending "Task_18" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 4.041586] [msg_test/INFO] Sending "Task_19" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 4.483696] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Tremblay:slave:(2) 4.483852] [msg_test/INFO] I'm done. See you!
-> [Jupiter:slave:(3) 4.499052] [msg_test/INFO] I'm done. See you!
-> [Fafard:slave:(4) 4.519603] [msg_test/INFO] I'm done. See you!
-> [Ginette:slave:(5) 5.085915] [msg_test/INFO] I'm done. See you!
-> [Bourassa:slave:(6) 5.535130] [msg_test/INFO] I'm done. See you!
-> [5.535130] [msg_test/INFO] Simulation time 5.53513
+! output sort
+$ $SG_TEST_EXENV masterslave/masterslave_mailbox$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/masterslave/deployment_masterslave_mailbox.xml --trace --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "slave-0"
+> [ 0.002339] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "slave-1"
+> [ 0.168300] (1:master@Tremblay) Sending "Task_2" (of 20) to mailbox "slave-2"
+> [ 0.386454] (1:master@Tremblay) Sending "Task_3" (of 20) to mailbox "slave-3"
+> [ 0.526913] (1:master@Tremblay) Sending "Task_4" (of 20) to mailbox "slave-4"
+> [ 0.742786] (1:master@Tremblay) Sending "Task_5" (of 20) to mailbox "slave-0"
+> [ 0.745124] (1:master@Tremblay) Sending "Task_6" (of 20) to mailbox "slave-1"
+> [ 0.989605] (1:master@Tremblay) Sending "Task_7" (of 20) to mailbox "slave-2"
+> [ 1.259949] (1:master@Tremblay) Sending "Task_8" (of 20) to mailbox "slave-3"
+> [ 1.698471] (1:master@Tremblay) Sending "Task_9" (of 20) to mailbox "slave-4"
+> [ 1.989756] (1:master@Tremblay) Sending "Task_10" (of 20) to mailbox "slave-0"
+> [ 1.992094] (1:master@Tremblay) Sending "Task_11" (of 20) to mailbox "slave-1"
+> [ 2.158056] (1:master@Tremblay) Sending "Task_12" (of 20) to mailbox "slave-2"
+> [ 2.376209] (1:master@Tremblay) Sending "Task_13" (of 20) to mailbox "slave-3"
+> [ 2.870028] (1:master@Tremblay) Sending "Task_14" (of 20) to mailbox "slave-4"
+> [ 3.236726] (1:master@Tremblay) Sending "Task_15" (of 20) to mailbox "slave-0"
+> [ 3.239065] (1:master@Tremblay) Sending "Task_16" (of 20) to mailbox "slave-1"
+> [ 3.405026] (1:master@Tremblay) Sending "Task_17" (of 20) to mailbox "slave-2"
+> [ 3.623180] (1:master@Tremblay) Sending "Task_18" (of 20) to mailbox "slave-3"
+> [ 4.041586] (1:master@Tremblay) Sending "Task_19" (of 20) to mailbox "slave-4"
+> [ 4.483696] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.483852] (2:slave@Tremblay) I'm done. See you!
+> [ 4.499052] (3:slave@Jupiter) I'm done. See you!
+> [ 4.519603] (4:slave@Fafard) I'm done. See you!
+> [ 5.085915] (5:slave@Ginette) I'm done. See you!
+> [ 5.535130] (0:@) Simulation time 5.53513
+> [ 5.535130] (6:slave@Bourassa) I'm done. See you!
MSG_main();
+ INFO0("MSG_main finished");
+
+ MSG_clean();
+
return 0;
}
p Testing the migration feature of MSG
-$ $SG_TEST_EXENV migration/migration ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/migration/migration.deploy
-> [Jacquelin:emigrant:(1) 0.000000] [msg_test/INFO] I'll look for a new job on another machine where the grass is greener.
-> [Boivin:emigrant:(1) 0.000000] [msg_test/INFO] Yeah, found something to do
-> [Boivin:emigrant:(1) 3.000000] [msg_test/INFO] Moving back home after work
-> [Boivin:emigrant:(1) 7.000000] [msg_test/INFO] Uh, nothing to do here. Stopping now
-> [7.000000] [msg_test/INFO] Simulation time 7
+! output sort
+$ $SG_TEST_EXENV migration/migration ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/migration/migration.deploy --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:emigrant@Jacquelin) I'll look for a new job on another machine where the grass is greener.
+> [ 0.000000] (1:emigrant@Boivin) Yeah, found something to do
+> [ 3.000000] (1:emigrant@Boivin) Moving back home after work
+> [ 7.000000] (0:@) Simulation time 7
+> [ 7.000000] (1:emigrant@Boivin) Uh, nothing to do here. Stopping now
p Testing a simple master/slave example application
-$ $SG_TEST_EXENV parallel_task/parallel_task$EXEEXT ${srcdir:=.}/small_platform.xml
-> [0.000000] [xbt_cfg/INFO] type in variable = 2
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [Ginette:test:(1) 0.009378] [msg_test/INFO] Goodbye now!
-> [0.009378] [msg_test/INFO] Simulation time 0.00937836
+! output sort
+$ $SG_TEST_EXENV parallel_task/parallel_task$EXEEXT ${srcdir:=.}/small_platform.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) type in variable = 2
+> [ 0.000000] (0:@) surf_workstation_model_init_ptask_L07
+> [ 0.009378] (0:@) Simulation time 0.00937836
+> [ 0.009378] (1:test@Ginette) Goodbye now!
-$ $SG_TEST_EXENV parallel_task/test_ptask$EXEEXT ${srcdir:=.}/parallel_task/test_ptask_platform.xml ${srcdir:=.}/parallel_task/test_ptask_deployment.xml
-> [0.000000] [xbt_cfg/INFO] type in variable = 2
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [Ginette:execute:(1) 1.000300] [msg_test/INFO] execution_time=1.0003
-> [Ginette:redistribute:(2) 6.000900] [msg_test/INFO] redistribution_time=6.0009
-> [6.000900] [msg_test/INFO] Simulation time 6.0009
+! output sort
+$ $SG_TEST_EXENV parallel_task/test_ptask$EXEEXT ${srcdir:=.}/parallel_task/test_ptask_platform.xml ${srcdir:=.}/parallel_task/test_ptask_deployment.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) type in variable = 2
+> [ 0.000000] (0:@) surf_workstation_model_init_ptask_L07
+> [ 1.000300] (1:execute@Ginette) execution_time=1.0003
+> [ 6.000900] (0:@) Simulation time 6.0009
+> [ 6.000900] (2:redistribute@Ginette) redistribution_time=6.0009
p Testing a simple master/slave example application
-$ $SG_TEST_EXENV priority/priority$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/priority/deployment_priority.xml
-> [Fafard:test:(1) 0.000000] [msg_test/INFO] Hello! Running a task of size 7.6296e+07 with priority 1
-> [Fafard:test:(2) 0.000000] [msg_test/INFO] Hello! Running a task of size 7.6296e+07 with priority 2
-> [Fafard:test:(2) 1.500000] [msg_test/INFO] Goodbye now!
-> [Fafard:test:(1) 2.000000] [msg_test/INFO] Goodbye now!
-> [2.000000] [msg_test/INFO] Simulation time 2
+! output sort
+$ $SG_TEST_EXENV priority/priority$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/priority/deployment_priority.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:test@Fafard) Hello! Running a task of size 7.6296e+07 with priority 1
+> [ 0.000000] (2:test@Fafard) Hello! Running a task of size 7.6296e+07 with priority 2
+> [ 1.500000] (2:test@Fafard) Goodbye now!
+> [ 2.000000] (0:@) Simulation time 2
+> [ 2.000000] (1:test@Fafard) Goodbye now!
p Testing a MSG application with properties in the XML for Hosts, Links and Processes
-$ $SG_TEST_EXENV properties/msg_prop$EXEEXT ${srcdir:=.}/../platforms/prop.xml ${srcdir:=.}/properties/deployment_properties.xml
-> [host1:alice:(1) 0.000000] [test/INFO] == Print the properties of the host
-> [host1:alice:(1) 0.000000] [test/INFO] Host property: 'SG_TEST_Hdd' -> '180'
-> [host1:alice:(1) 0.000000] [test/INFO] Host property: 'SG_TEST_mem' -> '4'
-> [host1:alice:(1) 0.000000] [test/INFO] == Try to get a host property that does not exist
-> [host1:alice:(1) 0.000000] [test/INFO] == Try to get a host property that does exist
-> [host1:alice:(1) 0.000000] [test/INFO] Property: SG_TEST_Hdd old value: 180
-> [host1:alice:(1) 0.000000] [test/INFO] == Trying to modify a host property
-> [host1:alice:(1) 0.000000] [test/INFO] Property: SG_TEST_Hdd old value: 250
-> [host1:bob:(2) 0.000000] [test/INFO] == Print the properties of the process
-> [host1:bob:(2) 0.000000] [test/INFO] Process property: SomeProp -> SomeValue
-> [host1:bob:(2) 0.000000] [test/INFO] == Try to get a process property that does not exist
+! output sort
+$ $SG_TEST_EXENV properties/msg_prop$EXEEXT ${srcdir:=.}/../platforms/prop.xml ${srcdir:=.}/properties/deployment_properties.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:alice@host1) == Print the properties of the host
+> [ 0.000000] (1:alice@host1) Host property: 'SG_TEST_Hdd' -> '180'
+> [ 0.000000] (1:alice@host1) Host property: 'SG_TEST_mem' -> '4'
+> [ 0.000000] (1:alice@host1) == Try to get a host property that does not exist
+> [ 0.000000] (1:alice@host1) == Try to get a host property that does exist
+> [ 0.000000] (1:alice@host1) Property: SG_TEST_Hdd old value: 180
+> [ 0.000000] (1:alice@host1) == Trying to modify a host property
+> [ 0.000000] (1:alice@host1) Property: SG_TEST_Hdd old value: 250
+> [ 0.000000] (2:bob@host1) == Print the properties of the process
+> [ 0.000000] (2:bob@host1) Process property: SomeProp -> SomeValue
+> [ 0.000000] (2:bob@host1) == Try to get a process property that does not exist
p Testing the surf network maxmin fairness model
-$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml --cfg=workstation/model:CLM03 --cfg=cpu/model:Cas01 --cfg=network/model:CM02
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'CLM03'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [msg_test/INFO] test_all
-> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00
-> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver
-> [Inmos:sender:(1) 0.100100] [msg_test/INFO] task_bw->data = 1.001000e-01
-> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Task received : latency task
-> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Communic. time 1.001000e-01
-> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] --- la 0.100100 ----
-> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] Task received : bandwidth task
-> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] Communic. time 1.000010e+04
-> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] --- bw 99999.000010 ----
-> [10000.200100] [msg_test/INFO] Total simulation time: 1.000020e+04
+! output sort
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml --cfg=workstation/model:CLM03 --cfg=cpu/model:Cas01 --cfg=network/model:CM02 --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'CLM03'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) test_all
+> [ 0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.000000] (1:sender@Inmos) sender
+> [ 0.000000] (1:sender@Inmos) host = Bellevue
+> [ 0.000000] (1:sender@Inmos) task_la->data = 0.000000e+00
+> [ 0.000000] (2:receiver@Bellevue) receiver
+> [ 0.100100] (1:sender@Inmos) task_bw->data = 1.001000e-01
+> [ 0.100100] (2:receiver@Bellevue) Task received : latency task
+> [ 0.100100] (2:receiver@Bellevue) Communic. time 1.001000e-01
+> [ 0.100100] (2:receiver@Bellevue) --- la 0.100100 ----
+> [10000.200100] (0:@) Total simulation time: 1.000020e+04
+> [10000.200100] (2:receiver@Bellevue) Task received : bandwidth task
+> [10000.200100] (2:receiver@Bellevue) Communic. time 1.000010e+04
+> [10000.200100] (2:receiver@Bellevue) --- bw 99999.000010 ----
p Testing the surf network Reno fairness model using lagrangian approach
-$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=workstation/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'Reno'
-> [0.000000] [msg_test/INFO] test_all
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00
-> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver
-> [Inmos:sender:(1) 1.040100] [msg_test/INFO] task_bw->data = 1.040100e+00
-> [Bellevue:receiver:(2) 1.040100] [msg_test/INFO] Task received : latency task
-> [Bellevue:receiver:(2) 1.040100] [msg_test/INFO] Communic. time 1.040100e+00
-> [Bellevue:receiver:(2) 1.040100] [msg_test/INFO] --- la 1.040100 ----
-> [Bellevue:receiver:(2) 10002.080100] [msg_test/INFO] Task received : bandwidth task
-> [Bellevue:receiver:(2) 10002.080100] [msg_test/INFO] Communic. time 1.000104e+04
-> [Bellevue:receiver:(2) 10002.080100] [msg_test/INFO] --- bw 99989.601081 ----
-> [10002.080100] [msg_test/INFO] Total simulation time: 1.000208e+04
+! output sort
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=workstation/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'Reno'
+> [ 0.000000] (0:@) test_all
+> [ 0.000000] (1:sender@Inmos) sender
+> [ 0.000000] (1:sender@Inmos) host = Bellevue
+> [ 0.000000] (1:sender@Inmos) task_la->data = 0.000000e+00
+> [ 0.000000] (2:receiver@Bellevue) receiver
+> [ 1.040100] (1:sender@Inmos) task_bw->data = 1.040100e+00
+> [ 1.040100] (2:receiver@Bellevue) Task received : latency task
+> [ 1.040100] (2:receiver@Bellevue) Communic. time 1.040100e+00
+> [ 1.040100] (2:receiver@Bellevue) --- la 1.040100 ----
+> [10002.080100] (0:@) Total simulation time: 1.000208e+04
+> [10002.080100] (2:receiver@Bellevue) Task received : bandwidth task
+> [10002.080100] (2:receiver@Bellevue) Communic. time 1.000104e+04
+> [10002.080100] (2:receiver@Bellevue) --- bw 99989.601081 ----
p Testing the surf network Vegas fairness model using lagrangian approach
-$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=workstation/model:compound cpu/model:Cas01 network/model:Vegas"
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'Vegas'
-> [0.000000] [msg_test/INFO] test_all
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue
-> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00
-> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver
-> [Inmos:sender:(1) 1.040100] [msg_test/INFO] task_bw->data = 1.040100e+00
-> [Bellevue:receiver:(2) 1.040100] [msg_test/INFO] Task received : latency task
-> [Bellevue:receiver:(2) 1.040100] [msg_test/INFO] Communic. time 1.040100e+00
-> [Bellevue:receiver:(2) 1.040100] [msg_test/INFO] --- la 1.040100 ----
-> [Bellevue:receiver:(2) 10002.080100] [msg_test/INFO] Task received : bandwidth task
-> [Bellevue:receiver:(2) 10002.080100] [msg_test/INFO] Communic. time 1.000104e+04
-> [Bellevue:receiver:(2) 10002.080100] [msg_test/INFO] --- bw 99989.601081 ----
-> [10002.080100] [msg_test/INFO] Total simulation time: 1.000208e+04
+! output sort
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=workstation/model:compound cpu/model:Cas01 network/model:Vegas" --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'Vegas'
+> [ 0.000000] (0:@) test_all
+> [ 0.000000] (1:sender@Inmos) sender
+> [ 0.000000] (1:sender@Inmos) host = Bellevue
+> [ 0.000000] (1:sender@Inmos) task_la->data = 0.000000e+00
+> [ 0.000000] (2:receiver@Bellevue) receiver
+> [ 1.040100] (1:sender@Inmos) task_bw->data = 1.040100e+00
+> [ 1.040100] (2:receiver@Bellevue) Task received : latency task
+> [ 1.040100] (2:receiver@Bellevue) Communic. time 1.040100e+00
+> [ 1.040100] (2:receiver@Bellevue) --- la 1.040100 ----
+> [10002.080100] (0:@) Total simulation time: 1.000208e+04
+> [10002.080100] (2:receiver@Bellevue) Task received : bandwidth task
+> [10002.080100] (2:receiver@Bellevue) Communic. time 1.000104e+04
+> [10002.080100] (2:receiver@Bellevue) --- bw 99989.601081 ----
p Testing the suspend/resume feature of MSG
-$ $SG_TEST_EXENV suspend/suspend ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/suspend/deployment_suspend.xml
-> [Jacquelin:dream_master:(1) 0.000000] [msg_test/INFO] Let's create a lazy guy.
-> [Jacquelin:dream_master:(1) 0.000000] [msg_test/INFO] Let's wait a little bit...
-> [Jacquelin:Lazy:(2) 0.000000] [msg_test/INFO] Nobody's watching me ? Let's go to sleep.
-> [Jacquelin:dream_master:(1) 10.000000] [msg_test/INFO] Let's wake the lazy guy up! >:) BOOOOOUUUHHH!!!!
-> [Jacquelin:dream_master:(1) 10.000000] [msg_test/INFO] OK, goodbye now.
-> [Jacquelin:Lazy:(2) 10.000000] [msg_test/INFO] Uuuh ? Did somebody call me ?
-> [Jacquelin:Lazy:(2) 10.000000] [msg_test/INFO] Mmmh, goodbye now.
-> [10.000000] [msg_test/INFO] Simulation time 10
+! output sort
+$ $SG_TEST_EXENV suspend/suspend ${srcdir:=.}/msg_platform.xml ${srcdir:=.}/suspend/deployment_suspend.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (1:dream_master@Jacquelin) Let's create a lazy guy.
+> [ 0.000000] (1:dream_master@Jacquelin) Let's wait a little bit...
+> [ 0.000000] (2:Lazy@Jacquelin) Nobody's watching me ? Let's go to sleep.
+> [ 10.000000] (0:@) Simulation time 10
+> [ 10.000000] (1:dream_master@Jacquelin) Let's wake the lazy guy up! >:) BOOOOOUUUHHH!!!!
+> [ 10.000000] (1:dream_master@Jacquelin) OK, goodbye now.
+> [ 10.000000] (2:Lazy@Jacquelin) Uuuh ? Did somebody call me ?
+> [ 10.000000] (2:Lazy@Jacquelin) Mmmh, goodbye now.
p Testing trace integration using file.trace and test1.xml, a < max(time), b < max(time)
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test1.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 40.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test1.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 10.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 10.000000] (1:test_trace@CPU1) Task size: 400.000000
+> [ 10.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [ 40.000000] (1:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test2.xml, a < max(time), max(time) < b < 2 max(time)
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test2.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task size: 850.000000
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 85.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test2.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 10.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 10.000000] (1:test_trace@CPU1) Task size: 850.000000
+> [ 10.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [ 85.000000] (1:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test3.xml, a < max(time), b > 2 max(time)
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test3.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task size: 1980.000000
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 178.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test3.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 10.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 10.000000] (1:test_trace@CPU1) Task size: 1980.000000
+> [ 10.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [178.000000] (1:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test4.xml, max(time) < a < 2max(time), max(time) < b < 2max(time)
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test4.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 80.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 80.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(1) 80.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 110.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test4.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 80.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 80.000000] (1:test_trace@CPU1) Task size: 400.000000
+> [ 80.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [110.000000] (1:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test5.xml, max(time) < a < 2max(time), 2max(time) < b < 3max(time)
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test5.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 90.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 90.000000] [test_trace_integration/INFO] Task size: 850.000000
-> [CPU1:test_trace:(1) 90.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 162.500000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test5.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 90.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 90.000000] (1:test_trace@CPU1) Task size: 850.000000
+> [ 90.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [162.500000] (1:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test6.xml, max(time) < a < 2max(time), b > 3max(time)
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test6.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 80.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 80.000000] [test_trace_integration/INFO] Task size: 1980.000000
-> [CPU1:test_trace:(1) 80.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 248.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test6.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 80.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 80.000000] (1:test_trace@CPU1) Task size: 1980.000000
+> [ 80.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [248.000000] (1:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test7.xml, two process with same priority
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test7.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task prio: 1.500000
-> [CPU1:test_trace:(2) 20.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(2) 20.000000] [test_trace_integration/INFO] Task size: 300.000000
-> [CPU1:test_trace:(2) 20.000000] [test_trace_integration/INFO] Task prio: 1.500000
-> [CPU1:test_trace:(1) 70.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(2) 70.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test7.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 10.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 10.000000] (1:test_trace@CPU1) Task size: 400.000000
+> [ 10.000000] (1:test_trace@CPU1) Task prio: 1.500000
+> [ 20.000000] (2:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 20.000000] (2:test_trace@CPU1) Task size: 300.000000
+> [ 20.000000] (2:test_trace@CPU1) Task prio: 1.500000
+> [ 70.000000] (1:test_trace@CPU1) Test finished
+> [ 70.000000] (2:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test8.xml, two process with different priority
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test8.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(1) 10.000000] [test_trace_integration/INFO] Task prio: 2.500000
-> [CPU1:test_trace:(2) 10.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(2) 10.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(2) 10.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 56.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(2) 80.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test8.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 10.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 10.000000] (1:test_trace@CPU1) Task size: 400.000000
+> [ 10.000000] (1:test_trace@CPU1) Task prio: 2.500000
+> [ 10.000000] (2:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 10.000000] (2:test_trace@CPU1) Task size: 400.000000
+> [ 10.000000] (2:test_trace@CPU1) Task prio: 1.000000
+> [ 56.000000] (1:test_trace@CPU1) Test finished
+> [ 80.000000] (2:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test9.xml, three process with same priority
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test9.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Task size: 400.000000
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(3) 30.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(3) 30.000000] [test_trace_integration/INFO] Task size: 2000.000000
-> [CPU1:test_trace:(3) 30.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(1) 90.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(2) 90.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(3) 240.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test9.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 0.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 0.000000] (1:test_trace@CPU1) Task size: 400.000000
+> [ 0.000000] (1:test_trace@CPU1) Task prio: 1.000000
+> [ 0.000000] (2:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 0.000000] (2:test_trace@CPU1) Task size: 400.000000
+> [ 0.000000] (2:test_trace@CPU1) Task prio: 1.000000
+> [ 30.000000] (3:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 30.000000] (3:test_trace@CPU1) Task size: 2000.000000
+> [ 30.000000] (3:test_trace@CPU1) Task prio: 1.000000
+> [ 90.000000] (1:test_trace@CPU1) Test finished
+> [ 90.000000] (2:test_trace@CPU1) Test finished
+> [240.000000] (3:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test10.xml, three process with different priority
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test10.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Task size: 420.000000
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Task prio: 2.000000
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Task size: 310.000000
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(3) 50.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(3) 50.000000] [test_trace_integration/INFO] Task size: 990.000000
-> [CPU1:test_trace:(3) 50.000000] [test_trace_integration/INFO] Task prio: 9.000000
-> [CPU1:test_trace:(1) 62.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(2) 152.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(3) 152.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test10.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 0.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 0.000000] (1:test_trace@CPU1) Task size: 420.000000
+> [ 0.000000] (1:test_trace@CPU1) Task prio: 2.000000
+> [ 0.000000] (2:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 0.000000] (2:test_trace@CPU1) Task size: 310.000000
+> [ 0.000000] (2:test_trace@CPU1) Task prio: 1.000000
+> [ 50.000000] (3:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 50.000000] (3:test_trace@CPU1) Task size: 990.000000
+> [ 50.000000] (3:test_trace@CPU1) Task prio: 9.000000
+> [ 62.000000] (1:test_trace@CPU1) Test finished
+> [152.000000] (2:test_trace@CPU1) Test finished
+> [152.000000] (3:test_trace@CPU1) Test finished
p Testing trace integration using file.trace and test11.xml, three process with different priority. Changed timestep to 0.1.
-$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test11.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'CM02'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'CpuTI'
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Task size: 420.000000
-> [CPU1:test_trace:(1) 0.000000] [test_trace_integration/INFO] Task prio: 2.000000
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Task size: 310.000000
-> [CPU1:test_trace:(2) 0.000000] [test_trace_integration/INFO] Task prio: 1.000000
-> [CPU1:test_trace:(3) 50.000000] [test_trace_integration/INFO] Testing the trace integration cpu model: CpuTI
-> [CPU1:test_trace:(3) 50.000000] [test_trace_integration/INFO] Task size: 990.000000
-> [CPU1:test_trace:(3) 50.000000] [test_trace_integration/INFO] Task prio: 9.000000
-> [CPU1:test_trace:(1) 62.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(2) 152.000000] [test_trace_integration/INFO] Test finished
-> [CPU1:test_trace:(3) 152.000000] [test_trace_integration/INFO] Test finished
+! output sort
+$ $SG_TEST_EXENV trace/test_trace_integration$EXEEXT ${srcdir:=.}/trace/test11.xml --cfg=workstation/model:compound --cfg=network/model:CM02 --cfg=cpu/model:CpuTI --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+> [ 0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'CpuTI'
+> [ 0.000000] (1:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 0.000000] (1:test_trace@CPU1) Task size: 420.000000
+> [ 0.000000] (1:test_trace@CPU1) Task prio: 2.000000
+> [ 0.000000] (2:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 0.000000] (2:test_trace@CPU1) Task size: 310.000000
+> [ 0.000000] (2:test_trace@CPU1) Task prio: 1.000000
+> [ 50.000000] (3:test_trace@CPU1) Testing the trace integration cpu model: CpuTI
+> [ 50.000000] (3:test_trace@CPU1) Task size: 990.000000
+> [ 50.000000] (3:test_trace@CPU1) Task prio: 9.000000
+> [ 62.000000] (1:test_trace@CPU1) Test finished
+> [152.000000] (2:test_trace@CPU1) Test finished
+> [152.000000] (3:test_trace@CPU1) Test finished
*/
#define MSG_TASK_UNINITIALIZED NULL
-typedef struct s_smx_comm *msg_comm_t;
+typedef struct s_smx_action *msg_comm_t;
/** @} */
/* ******************************** Mailbox ************************************ */
-typedef struct s_msg_mailbox *msg_mailbox_t;
+typedef struct s_smx_rvpoint *msg_mailbox_t;
/** @brief Mailbox datatype
@ingroup m_datatypes_management_details @{ */
XBT_PUBLIC(int) MSG_task_Iprobe(m_channel_t channel);
XBT_PUBLIC(int) MSG_task_probe_from(m_channel_t channel);
XBT_PUBLIC(int) MSG_task_probe_from_host(int channel, m_host_t host);
-XBT_PUBLIC(MSG_error_t) MSG_channel_select_from(m_channel_t channel,
- double max_duration,
- int *PID);
XBT_PUBLIC(MSG_error_t) MSG_process_sleep(double nb_sec);
XBT_PUBLIC(MSG_error_t) MSG_get_errno(void);
XBT_PUBLIC(int) MSG_task_listen_from_host(const char *alias,
m_host_t host);
-XBT_PUBLIC(MSG_error_t)
- MSG_alias_select_from(const char *alias, double timeout, int *PID);
-
XBT_PUBLIC(MSG_error_t)
MSG_task_send_with_timeout(m_task_t task, const char *alias,
double timeout);
XBT_PUBLIC(void) xbt_dynar_get_cpy(const xbt_dynar_t dynar,
const unsigned long idx,
void *const dst);
-
+XBT_INLINE void *xbt_dynar_set_at_ptr(const xbt_dynar_t dynar,
+ const unsigned long idx);
XBT_PUBLIC(void) xbt_dynar_set(xbt_dynar_t dynar, const int idx,
const void *src);
XBT_PUBLIC(void) xbt_dynar_replace(xbt_dynar_t dynar,
system_error, /**< a syscall did fail */
network_error, /**< error while sending/receiving data */
timeout_error, /**< not quick enough, dude */
+ cancel_error, /**< an action was canceled */
thread_error, /**< error while [un]locking */
host_error, /**< host failed */
tracing_error /**< error during the simulation tracing */
void *bt[XBT_BACKTRACE_SIZE];
} xbt_ex_t;
-/* declare the context type (private) */
+/* declare the running context type
+ * (that's where we get the process name for the logs and the exception storage)
+ * -- do not mess with it --
+ */
typedef struct {
__ex_mctx_t *ctx_mctx; /* permanent machine context of enclosing try/catch */
volatile int ctx_caught; /* temporary flag whether exception was caught */
- volatile xbt_ex_t ctx_ex; /* temporary exception storage */
-} ex_ctx_t;
+ volatile xbt_ex_t exception; /* temporary exception storage */
+} xbt_running_ctx_t;
/* the static and dynamic initializers for a context structure */
-#define XBT_CTX_INITIALIZER \
+#define XBT_RUNNING_CTX_INITIALIZER \
{ NULL, 0, { /* content */ NULL, unknown_error, 0, \
/* throw point*/ 0,NULL, NULL,0, NULL, 0, NULL,\
/* backtrace */ 0,NULL,{NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL} } }
-#define XBT_CTX_INITIALIZE(ctx) \
+#define XBT_RUNNING_CTX_INITIALIZE(ctx) \
do { \
(ctx)->ctx_mctx = NULL; \
(ctx)->ctx_caught = 0; \
- (ctx)->ctx_ex.msg = NULL; \
- (ctx)->ctx_ex.category = 0; \
- (ctx)->ctx_ex.value = 0; \
- (ctx)->ctx_ex.remote = 0; \
- (ctx)->ctx_ex.host = NULL; \
- (ctx)->ctx_ex.procname = NULL; \
- (ctx)->ctx_ex.pid = 0; \
- (ctx)->ctx_ex.file = NULL; \
- (ctx)->ctx_ex.line = 0; \
- (ctx)->ctx_ex.func = NULL; \
- (ctx)->ctx_ex.bt[0] = NULL; \
- (ctx)->ctx_ex.bt[1] = NULL; \
- (ctx)->ctx_ex.bt[2] = NULL; \
- (ctx)->ctx_ex.bt[3] = NULL; \
- (ctx)->ctx_ex.bt[4] = NULL; \
- (ctx)->ctx_ex.bt[5] = NULL; \
- (ctx)->ctx_ex.bt[6] = NULL; \
- (ctx)->ctx_ex.bt[7] = NULL; \
- (ctx)->ctx_ex.bt[8] = NULL; \
- (ctx)->ctx_ex.bt[9] = NULL; \
- (ctx)->ctx_ex.used = 0; \
- (ctx)->ctx_ex.bt_strings = NULL; \
+ (ctx)->exception.msg = NULL; \
+ (ctx)->exception.category = 0; \
+ (ctx)->exception.value = 0; \
+ (ctx)->exception.remote = 0; \
+ (ctx)->exception.host = NULL; \
+ (ctx)->exception.procname = NULL; \
+ (ctx)->exception.pid = 0; \
+ (ctx)->exception.file = NULL; \
+ (ctx)->exception.line = 0; \
+ (ctx)->exception.func = NULL; \
+ (ctx)->exception.bt[0] = NULL; \
+ (ctx)->exception.bt[1] = NULL; \
+ (ctx)->exception.bt[2] = NULL; \
+ (ctx)->exception.bt[3] = NULL; \
+ (ctx)->exception.bt[4] = NULL; \
+ (ctx)->exception.bt[5] = NULL; \
+ (ctx)->exception.bt[6] = NULL; \
+ (ctx)->exception.bt[7] = NULL; \
+ (ctx)->exception.bt[8] = NULL; \
+ (ctx)->exception.bt[9] = NULL; \
+ (ctx)->exception.used = 0; \
+ (ctx)->exception.bt_strings = NULL; \
} while (0)
/* the exception context */
-typedef ex_ctx_t *(*ex_ctx_cb_t) (void);
-XBT_PUBLIC_DATA(ex_ctx_cb_t) __xbt_ex_ctx;
-extern ex_ctx_t *__xbt_ex_ctx_default(void);
+typedef xbt_running_ctx_t *(*xbt_running_ctx_fetcher_t) (void);
+XBT_PUBLIC_DATA(xbt_running_ctx_fetcher_t) __xbt_running_ctx_fetch;
+extern xbt_running_ctx_t *__xbt_ex_ctx_default(void);
/* the termination handler */
typedef void (*ex_term_cb_t) (xbt_ex_t *);
*/
#define TRY \
{ \
- ex_ctx_t *__xbt_ex_ctx_ptr = __xbt_ex_ctx(); \
+ xbt_running_ctx_t *__xbt_ex_ctx_ptr = __xbt_running_ctx_fetch(); \
int __ex_cleanup = 0; \
__ex_mctx_t *__ex_mctx_en; \
__ex_mctx_t __ex_mctx_me; \
} \
__xbt_ex_ctx_ptr->ctx_mctx = __ex_mctx_en; \
} \
- if ( !(__xbt_ex_ctx()->ctx_caught) \
- || ((e) = XBT_EX_T_CPLUSPLUSCAST __xbt_ex_ctx()->ctx_ex, MAYDAY_CATCH(e) 0)) { \
+ if ( !(__xbt_running_ctx_fetch()->ctx_caught) \
+ || ((e) = XBT_EX_T_CPLUSPLUSCAST __xbt_running_ctx_fetch()->exception, MAYDAY_CATCH(e) 0)) { \
} \
else
-#define DO_THROW(e) \
- /* deal with the exception */ \
- if (__xbt_ex_ctx()->ctx_mctx == NULL) \
- __xbt_ex_terminate((xbt_ex_t *)&(e)); /* not catched */\
- else \
- __ex_mctx_restore(__xbt_ex_ctx()->ctx_mctx); /* catched somewhere */ \
- abort() /* nope, stupid GCC, we won't survive a THROW (this won't be reached) */
+#define DO_THROW(running_ctx) \
+ /* deal with the exception */ \
+ if (running_ctx->ctx_mctx == NULL) \
+ __xbt_ex_terminate((xbt_ex_t*)&(running_ctx->exception)); /* not catched */ \
+ else \
+ __ex_mctx_restore(running_ctx->ctx_mctx); /* catched somewhere */ \
+ abort() /* nope, stupid GCC, we won't survive a THROW (this won't be reached) */
/** @brief Helper macro for THROWS0-6
* @hideinitializer
*/
#define _THROW(c,v,m) \
- do { /* change this sequence into one block */ \
- ex_ctx_t *_throw_ctx = __xbt_ex_ctx(); \
- /* build the exception */ \
- _throw_ctx->ctx_ex.msg = (m); \
- _throw_ctx->ctx_ex.category = (xbt_errcat_t)(c); \
- _throw_ctx->ctx_ex.value = (v); \
- _throw_ctx->ctx_ex.remote = 0; \
- _throw_ctx->ctx_ex.host = (char*)NULL; \
- _throw_ctx->ctx_ex.procname = (char*)xbt_procname(); \
- _throw_ctx->ctx_ex.pid = (*xbt_getpid)(); \
- _throw_ctx->ctx_ex.file = (char*)__FILE__; \
- _throw_ctx->ctx_ex.line = __LINE__; \
- _throw_ctx->ctx_ex.func = (char*)_XBT_FUNCTION; \
- _throw_ctx->ctx_ex.bt_strings = NULL; \
- xbt_backtrace_current( (xbt_ex_t *) &(_throw_ctx->ctx_ex) ); \
- DO_THROW(_throw_ctx->ctx_ex); \
+ do { /* change this sequence into one block */ \
+ xbt_running_ctx_t *_throw_ctx = __xbt_running_ctx_fetch(); \
+ /* build the exception */ \
+ _throw_ctx->exception.msg = (m); \
+ _throw_ctx->exception.category = (xbt_errcat_t)(c); \
+ _throw_ctx->exception.value = (v); \
+ _throw_ctx->exception.remote = 0; \
+ _throw_ctx->exception.host = (char*)NULL; \
+ _throw_ctx->exception.procname = (char*)xbt_procname(); \
+ _throw_ctx->exception.pid = (*xbt_getpid)(); \
+ _throw_ctx->exception.file = (char*)__FILE__; \
+ _throw_ctx->exception.line = __LINE__; \
+ _throw_ctx->exception.func = (char*)_XBT_FUNCTION; \
+ _throw_ctx->exception.bt_strings = NULL; \
+ xbt_backtrace_current( (xbt_ex_t *) &(_throw_ctx->exception) ); \
+ DO_THROW(_throw_ctx); \
} while (0)
-/* __xbt_ex_ctx()->ctx_ex.used = backtrace((void**)__xbt_ex_ctx()->ctx_ex.bt,XBT_BACKTRACE_SIZE); */
/** @brief Builds and throws an exception with a string taking no arguments
@hideinitializer */
*/
#define RETHROW \
do { \
- if (__xbt_ex_ctx()->ctx_mctx == NULL) \
- __xbt_ex_terminate((xbt_ex_t *)&(__xbt_ex_ctx()->ctx_ex)); \
+ xbt_running_ctx_t *ctx = __xbt_running_ctx_fetch(); \
+ if (ctx->ctx_mctx == NULL) \
+ __xbt_ex_terminate((xbt_ex_t*)&(ctx->exception)); \
else \
- __ex_mctx_restore(__xbt_ex_ctx()->ctx_mctx); \
+ __ex_mctx_restore(ctx->ctx_mctx); \
abort();\
} while(0)
#ifndef DOXYGEN_SKIP
#define _XBT_PRE_RETHROW \
do { \
- char *_xbt_ex_internal_msg = __xbt_ex_ctx()->ctx_ex.msg; \
- __xbt_ex_ctx()->ctx_ex.msg = bprintf(
+ char *_xbt_ex_internal_msg = __xbt_running_ctx_fetch()->exception.msg; \
+ __xbt_running_ctx_fetch()->exception.msg = bprintf(
#define _XBT_POST_RETHROW \
_xbt_ex_internal_msg); \
free(_xbt_ex_internal_msg); \
--- /dev/null
+/* A thread pool. */
+
+/* Copyright (c) 2007, 2009, 2010. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#ifndef _XBT_THREADPOOL_H
+#define _XBT_THREADPOOL_H
+
+#include "xbt/misc.h" /* SG_BEGIN_DECL */
+#include "xbt/function_types.h"
+
+SG_BEGIN_DECL()
+
+/** @addtogroup XBT_threadpool
+ * @brief Pool of threads.
+ *
+ * Jobs can be queued and the dispacher process can wait for the completion
+ * of all jobs.
+ * The call to "queue job" is non-blocking except the maximum amount of
+ * queued jobs is reached. In that case, it will block until a job is taken
+ * by a worker
+ * @{
+ */
+ /** \brief Queue data type (opaque type) */
+
+typedef struct s_xbt_tpool *xbt_tpool_t;
+
+XBT_PUBLIC(xbt_tpool_t) xbt_tpool_new(unsigned int num_workers,
+ unsigned int max_jobs);
+
+XBT_PUBLIC(void) xbt_tpool_queue_job(xbt_tpool_t tpool,
+ void_f_pvoid_t fun,
+ void* fun_arg);
+
+XBT_PUBLIC(void) xbt_tpool_wait_all(xbt_tpool_t tpool);
+
+XBT_PUBLIC(void) xbt_tpool_destroy(xbt_tpool_t tpool);
+
+/** @} */
+
+SG_END_DECL()
+
+#endif
\ No newline at end of file
const char *file = luaL_checkstring(L, 1);
DEBUG1("Loading environment file %s", file);
MSG_create_environment(file);
- smx_host_t *hosts = SIMIX_host_get_table();
- int i;
- for (i = 0; i < SIMIX_host_get_number(); i++) {
- DEBUG1("We have an host %s", SIMIX_host_get_name(hosts[i]));
+
+/*
+ xbt_dict_t hosts = SIMIX_host_get_dict();
+ smx_host_t host;
+ xbt_dict_cursor_t c;
+ const char *name;
+
+ xbt_dict_foreach(hosts, c, name, host) {
+ DEBUG1("We have an host %s", SIMIX_host_get_name(host));
}
+*/
return 0;
}
xbt_ex_t e;
memcpy(&e, received.payl, received.payl_size);
free(received.payl);
- VERB3("Raise a remote exception cat:%d comming from %s (%s)",
+ VERB3("Raise a remote exception cat:%d coming from %s (%s)",
e.category, e.host, e.msg);
- __xbt_ex_ctx()->ctx_ex.msg = e.msg;
- __xbt_ex_ctx()->ctx_ex.category = e.category;
- __xbt_ex_ctx()->ctx_ex.value = e.value;
- __xbt_ex_ctx()->ctx_ex.remote = 1;
- __xbt_ex_ctx()->ctx_ex.host = e.host;
- __xbt_ex_ctx()->ctx_ex.procname = e.procname;
- __xbt_ex_ctx()->ctx_ex.pid = e.pid;
- __xbt_ex_ctx()->ctx_ex.file = e.file;
- __xbt_ex_ctx()->ctx_ex.line = e.line;
- __xbt_ex_ctx()->ctx_ex.func = e.func;
- __xbt_ex_ctx()->ctx_ex.used = e.used;
- __xbt_ex_ctx()->ctx_ex.bt_strings = e.bt_strings;
- memset(&__xbt_ex_ctx()->ctx_ex.bt, 0,
- sizeof(__xbt_ex_ctx()->ctx_ex.bt));
- DO_THROW(__xbt_ex_ctx()->ctx_ex);
+ __xbt_running_ctx_fetch()->exception.msg = e.msg;
+ __xbt_running_ctx_fetch()->exception.category = e.category;
+ __xbt_running_ctx_fetch()->exception.value = e.value;
+ __xbt_running_ctx_fetch()->exception.remote = 1;
+ __xbt_running_ctx_fetch()->exception.host = e.host;
+ __xbt_running_ctx_fetch()->exception.procname = e.procname;
+ __xbt_running_ctx_fetch()->exception.pid = e.pid;
+ __xbt_running_ctx_fetch()->exception.file = e.file;
+ __xbt_running_ctx_fetch()->exception.line = e.line;
+ __xbt_running_ctx_fetch()->exception.func = e.func;
+ __xbt_running_ctx_fetch()->exception.used = e.used;
+ __xbt_running_ctx_fetch()->exception.bt_strings = e.bt_strings;
+ memset(&__xbt_running_ctx_fetch()->exception.bt, 0,
+ sizeof(__xbt_running_ctx_fetch()->exception.bt));
+ DO_THROW(__xbt_running_ctx_fetch());
}
memcpy(answer, received.payl, received.payl_size);
free(received.payl);
smx_process_t server_listener_process=NULL;
smx_process_t client_listener_process = NULL;
+ VERB4("Am I the server of socket %p (client = %p, server = %p) ? process self: %p", sock, sock_data->client, sock_data->server, SIMIX_process_self());
- if (sock_data->server == SIMIX_process_self())
+ if (sock_data->server == SIMIX_process_self()) {
+ VERB0("I am the server");
return 1;
- if (sock_data->client == SIMIX_process_self())
+ }
+ if (sock_data->client == SIMIX_process_self()) {
+ VERB0("I am the client");
return 0;
+ }
+ VERB0("I am neither the client nor the server, probably a listener");
/* neither the client nor the server. Check their respective listeners */
pd = ((gras_procdata_t*)SIMIX_process_get_data(sock_data->server));
if (l) {
listener_thread = ((fake_gras_msg_listener_t)l)->listener;
server_listener_process = ((fake_xbt_thread_t)listener_thread)->s_process;
- if (server_listener_process == SIMIX_process_self())
+ if (server_listener_process == SIMIX_process_self()) {
+ VERB0("I am the listener of the server");
return 1;
+ }
}
if (sock_data->client) {
if (l) {
listener_thread = ((fake_gras_msg_listener_t)l)->listener;
client_listener_process = ((fake_xbt_thread_t)listener_thread)->s_process;
- if (client_listener_process == SIMIX_process_self())
+ if (client_listener_process == SIMIX_process_self()) {
+ VERB0("I am the listener of the client");
return 0;
+ }
}
}
/* THAT'S BAD! I should be either client or server of the sockets I get messages on!! */
(gras_trp_procdata_t) gras_libdata_by_name("gras_trp");
gras_msg_t msg;
/* Build a dynar of all communications I could get something from */
- xbt_dynar_t comms = xbt_dynar_new(sizeof(smx_comm_t), NULL);
+ xbt_dynar_t comms = xbt_dynar_new(sizeof(smx_action_t), NULL);
unsigned int cursor = 0;
int got = 0;
- smx_comm_t comm = NULL;
+ smx_action_t comm = NULL;
gras_socket_t sock = NULL;
gras_trp_sg_sock_data_t sock_data;
xbt_dynar_foreach(trp_proc->sockets, cursor, sock) {
sock);
/* End of paranoia */
- VERB4("Consider receiving messages from on comm_recv %p (%s) rdv:%p (other rdv:%p)",
- sock_data->comm_recv, sock_data->comm_recv->type == comm_send? "send":"recv",
+ VERB3("Consider receiving messages from on comm_recv %p rdv:%p (other rdv:%p)",
+ sock_data->comm_recv,
gras_socket_im_the_server(sock)?
sock_data->rdv_server : sock_data->rdv_client,
gras_socket_im_the_server(sock)?
}
VERB1("Wait on %ld 'sockets'", xbt_dynar_length(comms));
/* Wait for the end of any of these communications */
- got = SIMIX_network_waitany(comms);
+ got = SIMIX_req_comm_waitany(comms);
/* retrieve the message sent in that communication */
xbt_dynar_get_cpy(comms, got, &(comm));
- msg = SIMIX_communication_get_data(comm);
+ msg = SIMIX_req_comm_get_data(comm);
sock = xbt_dynar_get_as(trp_proc->sockets, got, gras_socket_t);
sock_data = (gras_trp_sg_sock_data_t) sock->data;
VERB3("Got something. Communication %p's over rdv_server=%p, rdv_client=%p",
comm,sock_data->rdv_server,sock_data->rdv_client);
- SIMIX_communication_destroy(comm);
+ SIMIX_req_comm_destroy(comm);
/* Reinstall a waiting communication on that rdv */
/* xbt_dynar_foreach(trp_proc->sockets,cursor,sock) {
}
*/
sock_data->comm_recv =
- SIMIX_network_irecv(gras_socket_im_the_server(sock) ?
+ SIMIX_req_comm_irecv(gras_socket_im_the_server(sock) ?
sock_data->rdv_server : sock_data->rdv_client,
NULL, 0);
int whole_payload_size = 0; /* msg->payload_size is used to memcpy the payload.
This is used to report the load onto the simulator. It also counts the size of pointed stuff */
gras_msg_t msg; /* message to send */
- smx_comm_t comm;
+ smx_action_t comm;
gras_trp_sg_sock_data_t sock_data = (gras_trp_sg_sock_data_t) sock->data;
smx_rdv_t target_rdv =
payload, msg->payl);
}
- SIMIX_network_send(target_rdv, whole_payload_size, -1, -1, &msg,
- sizeof(void *), &comm, msg);
+ comm = SIMIX_req_comm_isend(target_rdv, whole_payload_size, -1, &msg, sizeof(void *), msg);
+ SIMIX_req_comm_wait(comm, -1);
VERB0("Message sent (and received)");
smx_rdv_t rdv_server; /* The rendez-vous point to use */
smx_rdv_t rdv_client; /* The rendez-vous point to use */
- smx_comm_t comm_recv; /* The comm of irecv on receiver side */
+ smx_action_t comm_recv; /* The comm of irecv on receiver side */
} s_gras_trp_sg_sock_data_t,*gras_trp_sg_sock_data_t;
In GRAS, there is a listener process, in charge of pumping everything
unsigned int cursor;
DEBUG3("select on %s@%s with timeout=%f",
- SIMIX_process_get_name(SIMIX_process_self()),
- SIMIX_host_get_name(SIMIX_host_self()), timeout);
+ SIMIX_process_self_get_name(),
+ SIMIX_host_self_get_name(), timeout);
if (timeout >= 0) {
xbt_queue_shift_timed(pd->msg_selectable_sockets,
&active_socket, timeout);
if ((sock_data->to_socket == active_socket) &&
(sock_data->to_host ==
- SIMIX_process_get_host(active_socket_data->from_process))) {
+ SIMIX_req_process_get_host(active_socket_data->from_process))) {
xbt_dynar_cursor_unlock(pd->sockets);
return sock_iter;
}
sockdata->to_socket = active_socket;
/*update the peer to_socket variable */
active_socket_data->to_socket = res;
- sockdata->cond = SIMIX_cond_init();
- sockdata->mutex = SIMIX_mutex_init();
+ sockdata->cond = SIMIX_req_cond_init();
+ sockdata->mutex = SIMIX_req_mutex_init();
sockdata->to_host =
- SIMIX_process_get_host(active_socket_data->from_process);
+ SIMIX_req_process_get_host(active_socket_data->from_process);
res->data = sockdata;
- res->peer_name = strdup(SIMIX_host_get_name(sockdata->to_host));
+ res->peer_name = strdup(SIMIX_req_host_get_name(sockdata->to_host));
gras_trp_buf_init_sock(res);
DEBUG4("Create socket to process:%s(Port %d) from process: %s(Port %d)",
- SIMIX_process_get_name(sockdata->from_process),
+ SIMIX_req_process_get_name(sockdata->from_process),
res->peer_port,
- SIMIX_process_get_name(sockdata->to_process), res->port);
+ SIMIX_req_process_get_name(sockdata->to_process), res->port);
return res;
}
else
return sockdata->server_port;
}
+
static const char* gras_trp_sg_peer_name(gras_socket_t s) {
gras_trp_sg_sock_data_t sockdata = s->data;
if (gras_socket_im_the_server(s))
- return SIMIX_host_get_name(SIMIX_process_get_host(sockdata->client));
+ return SIMIX_host_get_name(SIMIX_req_process_get_host(sockdata->client));
else {
- return SIMIX_host_get_name(SIMIX_process_get_host(sockdata->server));
+ return SIMIX_host_get_name(SIMIX_req_process_get_host(sockdata->server));
}
}
static const char* gras_trp_sg_peer_proc(gras_socket_t s) {
gras_sg_portrec_t pr;
/* make sure this socket will reach someone */
- if (!(peer = SIMIX_host_get_by_name(host)))
+ if (!(peer = SIMIX_req_host_get_by_name(host)))
THROW1(mismatch_error, 0,
"Can't connect to %s: no such host.\n", host);
- if (!(hd = (gras_hostdata_t *) SIMIX_host_get_data(peer)))
+ if (!(hd = (gras_hostdata_t *) SIMIX_req_host_get_data(peer)))
THROW1(mismatch_error, 0,
"can't connect to %s: no process on this host",
host);
/* initialize synchronization stuff on the socket */
data->rdv_server = pr->rdv;
- data->rdv_client = SIMIX_rdv_create(NULL);
- data->comm_recv = SIMIX_network_irecv(data->rdv_client, NULL, 0);
+ data->rdv_client = SIMIX_req_rdv_create(NULL);
+ data->comm_recv = SIMIX_req_comm_irecv(data->rdv_client, NULL, 0);
/* connect that simulation data to the socket */
sock->data = data;
sock->incoming = 1;
DEBUG8("%s (PID %d) connects in %s mode to %s:%d (rdv_ser:%p, rdv_cli:%p, comm:%p)",
- SIMIX_process_get_name(SIMIX_process_self()), gras_os_getpid(),
+ SIMIX_req_process_get_name(SIMIX_process_self()), gras_os_getpid(),
sock->meas ? "meas" : "regular", host, port,
data->rdv_server,data->rdv_client,data->comm_recv);
}
{
gras_hostdata_t *hd =
- (gras_hostdata_t *) SIMIX_host_get_data(SIMIX_host_self());
+ (gras_hostdata_t *) SIMIX_host_self_get_data();
gras_sg_portrec_t pr;
gras_trp_sg_sock_data_t data;
if (pr)
THROW2(mismatch_error, 0,
"can't listen on address %s:%d: port already in use.",
- SIMIX_host_get_name(SIMIX_host_self()), port);
+ SIMIX_host_self_get_name(), port);
/* This port is free, let's take it */
pr = xbt_new(s_gras_sg_portrec_t, 1);
pr->port = port;
pr->meas = sock->meas;
pr->server = SIMIX_process_self();
- pr->rdv = SIMIX_rdv_create(NULL);
xbt_dynar_push(hd->ports, &pr);
+ pr->rdv = SIMIX_req_rdv_create(NULL);
/* Create the socket */
data = xbt_new0(s_gras_trp_sg_sock_data_t, 1);
data->client = NULL;
data->rdv_server = pr->rdv;
data->rdv_client = NULL;
- data->comm_recv = SIMIX_network_irecv(pr->rdv, NULL, 0);
+ data->comm_recv = SIMIX_req_comm_irecv(pr->rdv, NULL, 0);
sock->data = data;
VERB10
("'%s' (%d) ears on %s:%d%s (%p; data:%p); Here rdv: %p; Remote rdv: %p; Comm %p",
- SIMIX_process_get_name(SIMIX_process_self()), gras_os_getpid(),
- SIMIX_host_get_name(SIMIX_host_self()), port,
+ SIMIX_req_process_get_name(SIMIX_process_self()), gras_os_getpid(),
+ SIMIX_host_self_get_name(), port,
sock->meas ? " (mode meas)" : "", sock, data,
(data->server ==
SIMIX_process_self())? data->rdv_server : data->rdv_client,
void gras_trp_sg_socket_close(gras_socket_t sock)
{
gras_hostdata_t *hd =
- (gras_hostdata_t *) SIMIX_host_get_data(SIMIX_host_self());
+ (gras_hostdata_t *) SIMIX_host_self_get_data();
unsigned int cpt;
gras_sg_portrec_t pr;
smx_process_t remote_dude =
(sock_data->server ==
SIMIX_process_self())? (sock_data->client) : (sock_data->server);
- smx_host_t remote_host = SIMIX_process_get_host(remote_dude);
+ smx_host_t remote_host = SIMIX_req_process_get_host(remote_dude);
}
*/
//SIMIX_network_send(sock_data->rdv,size,1,-1,NULL,0,NULL,NULL);
//gras_trp_sg_sock_data_t *sock_data =
// (gras_trp_sg_sock_data_t *) sock->data;
- //SIMIX_network_recv(sock_data->rdv,-1,NULL,0,NULL);
+ //SIMIX_req_comm_recv(sock_data->rdv,-1,NULL,0,NULL);
THROW_UNIMPLEMENTED;
#ifdef KILLME
gras_trp_sg_sock_data_t *remote_sock_data;
sock_data = (gras_trp_sg_sock_data_t *) sock->data;
/* ok, I'm here, you can continue the communication */
- SIMIX_cond_signal(remote_sock_data->cond);
+ SIMIX_req_cond_signal(remote_sock_data->cond);
- SIMIX_mutex_lock(remote_sock_data->mutex);
+ SIMIX_req_mutex_lock(remote_sock_data->mutex);
/* wait for communication end */
- SIMIX_cond_wait(remote_sock_data->cond, remote_sock_data->mutex);
+ SIMIX_req_cond_wait(remote_sock_data->cond, remote_sock_data->mutex);
if (msg_got->payl_size != size)
THROW5(mismatch_error, 0,
"Got %d bytes when %ld where expected (in %s->%s:%d)",
msg_got->payl_size, size,
- SIMIX_host_get_name(sock_data->to_host),
- SIMIX_host_get_name(SIMIX_host_self()), sock->peer_port);
+ SIMIX_req_host_get_name(sock_data->to_host),
+ SIMIX_host_self_get_name(), sock->peer_port);
if (data)
memcpy(data, msg_got->payl, size);
xbt_free(msg_got->payl);
xbt_free(msg_got);
- SIMIX_mutex_unlock(remote_sock_data->mutex);
+ SIMIX_req_mutex_unlock(remote_sock_data->mutex);
#endif
return 0;
}
args->argc=argc;
args->argv=argv;
args->code=code;
- xbt_os_thread_create(name,spawner_wrapper,args);
+ xbt_os_thread_create(name,spawner_wrapper,args, NULL);
}
/* **************************************************************************
const char *gras_os_myname(void)
{
- smx_host_t host;
- smx_process_t process = SIMIX_process_self();
-
- /*HACK: maestro used not have a simix process, now it does so
- SIMIX_process_self will return something different to NULL. This breaks
- the old xbt_log logic that assumed that NULL was equivalent to maestro,
- thus when printing it searches for maestro host name (which doesn't exists)
- and breaks the logging.
- As a hack we check for maestro by looking to the assigned host, if it is
- NULL then we are sure is maestro
- */
- if (process != NULL && (host = SIMIX_host_self()) != NULL)
- return SIMIX_host_get_name(host);
-
- return "";
+ return SIMIX_host_self_get_name();
}
/*** CPU burning */
void gras_cpu_burn(double flops)
{
- smx_action_t act;
- smx_cond_t cond;
- smx_mutex_t mutex;
+ smx_action_t execution;
- if (flops > 0) {
- cond = SIMIX_cond_init();
- mutex = SIMIX_mutex_init();
-
- SIMIX_mutex_lock(mutex);
- act = SIMIX_action_execute(SIMIX_host_self(), "task", flops);
-
- SIMIX_register_action_to_condition(act, cond);
- SIMIX_cond_wait(cond, mutex);
- SIMIX_unregister_action_to_condition(act, cond);
-
- SIMIX_action_destroy(act);
- SIMIX_mutex_unlock(mutex);
-
- SIMIX_cond_destroy(cond);
- SIMIX_mutex_destroy(mutex);
+ if (flops > 0){
+ execution = SIMIX_req_host_execute("task", SIMIX_host_self(), flops);
+ SIMIX_req_host_execution_wait(execution);
}
}
xbt_dict_t properties)
{
- SIMIX_process_create(name, code, NULL,
- gras_os_myname(), argc, argv, properties);
+ SIMIX_req_process_create(name, code, NULL,
+ gras_os_myname(), argc, argv, properties);
}
/* **************************************************************************
void gras_process_init()
{
gras_hostdata_t *hd =
- (gras_hostdata_t *) SIMIX_host_get_data(SIMIX_host_self());
+ (gras_hostdata_t *) SIMIX_host_self_get_data();
gras_procdata_t *pd = xbt_new0(gras_procdata_t, 1);
gras_trp_procdata_t trp_pd;
-
- SIMIX_process_set_data(SIMIX_process_self(), (void *) pd);
-
-
- gras_procdata_init();
+ long int pid = PID++; /* make sure the first process gets the first id */
if (!hd) {
- /* First process on this host */
+ /* First process on this host (FIXME: does not work if the SIMIX user contexts are truly parallel) */
hd = xbt_new(gras_hostdata_t, 1);
hd->refcount = 1;
hd->ports = xbt_dynar_new(sizeof(gras_sg_portrec_t), NULL);
- SIMIX_host_set_data(SIMIX_host_self(), (void *) hd);
+ SIMIX_host_self_set_data((void *) hd);
} else {
hd->refcount++;
}
+ SIMIX_process_self_set_data((void *) pd);
+ gras_procdata_init();
+
trp_pd = (gras_trp_procdata_t) gras_libdata_by_name("gras_trp");
- pd->pid = PID++;
+ pd->pid = pid;
if (SIMIX_process_self() != NULL) {
pd->ppid = gras_os_getpid();
trp_pd->meas_selectable_sockets =
xbt_queue_new(0, sizeof(gras_socket_t));
- VERB2("Creating process '%s' (%d)",
- SIMIX_process_get_name(SIMIX_process_self()), gras_os_getpid());
+ VERB2("Creating process '%s' (%d)", SIMIX_process_self_get_name(),
+ gras_os_getpid());
}
void gras_process_exit()
gras_socket_t sock_iter;
unsigned int cursor;
gras_hostdata_t *hd =
- (gras_hostdata_t *) SIMIX_host_get_data(SIMIX_host_self());
+ (gras_hostdata_t *) SIMIX_host_self_get_data();
gras_procdata_t *pd =
- (gras_procdata_t *) SIMIX_process_get_data(SIMIX_process_self());
+ (gras_procdata_t *) SIMIX_req_process_get_data(SIMIX_process_self());
gras_msg_procdata_t msg_pd =
(gras_msg_procdata_t) gras_libdata_by_name("gras_msg");
xbt_assert0(hd, "Run gras_process_init (ie, gras_init)!!");
VERB2("GRAS: Finalizing process '%s' (%d)",
- SIMIX_process_get_name(SIMIX_process_self()), gras_os_getpid());
+ SIMIX_req_process_get_name(SIMIX_process_self()), gras_os_getpid());
if (xbt_dynar_length(msg_pd->msg_queue)) {
unsigned int cpt;
gras_procdata_t *gras_procdata_get(void)
{
gras_procdata_t *pd =
- (gras_procdata_t *) SIMIX_process_get_data(SIMIX_process_self());
+ (gras_procdata_t *) SIMIX_req_process_get_data(SIMIX_process_self());
xbt_assert0(pd, "Run gras_process_init! (ie, gras_init)");
void *gras_libdata_by_name_from_remote(const char *name, smx_process_t p)
{
- gras_procdata_t *pd = (gras_procdata_t *) SIMIX_process_get_data(p);
+ gras_procdata_t *pd = (gras_procdata_t *) SIMIX_req_process_get_data(p);
xbt_assert2(pd,
"process '%s' on '%s' didn't run gras_process_init! (ie, gras_init)",
- SIMIX_process_get_name(p),
- SIMIX_host_get_name(SIMIX_process_get_host(p)));
+ SIMIX_req_process_get_name(p),
+ SIMIX_req_host_get_name(SIMIX_req_process_get_host(p)));
return gras_libdata_by_name_from_procdata(name, pd);
}
/** @brief retrieve the value of a given process property (or NULL if not defined) */
const char *gras_process_property_value(const char *name)
{
- return xbt_dict_get_or_null(
- SIMIX_process_get_properties(SIMIX_process_self()),
- name);
+ return xbt_dict_get_or_null(SIMIX_req_process_get_properties
+ (SIMIX_process_self()), name);
}
/** @brief retrieve the process properties dictionnary
*/
xbt_dict_t gras_process_properties(void)
{
- return SIMIX_process_get_properties(SIMIX_process_self());
+ return SIMIX_req_process_get_properties(SIMIX_process_self());
}
/* **************************************************************************
* OS virtualization function
* **************************************************************************/
-const char *xbt_procname(void)
-{
- smx_process_t process = SIMIX_process_self();
- /*FIXME: maestro used not have a simix process, now it does so
- SIMIX_process_self will return something different to NULL. This breaks
- the old xbt_log logic that assumed that NULL was equivalent to maestro,
- thus when printing it searches for maestro host name (which doesn't exists)
- and breaks the logging.
- As a hack we check for maestro by looking to the assigned host, if it is
- NULL then we are sure is maestro
- */
- if (process != NULL && SIMIX_process_get_host(process))
- return SIMIX_process_get_name(process);
-
- return "";
-}
int gras_os_getpid(void)
{
gras_procdata_t *data;
- smx_process_t process = SIMIX_process_self();
-
- if (process != NULL) {
- data = (gras_procdata_t *) SIMIX_process_get_data(process);
- if (data != NULL)
- return data->pid;
- }
+ data = (gras_procdata_t *) SIMIX_process_self_get_data();
+ if (data != NULL)
+ return data->pid;
return 0;
}
const char *gras_os_host_property_value(const char *name)
{
return
- xbt_dict_get_or_null(SIMIX_host_get_properties
- (SIMIX_process_get_host(SIMIX_process_self())),
+ xbt_dict_get_or_null(SIMIX_req_host_get_properties
+ (SIMIX_req_process_get_host(SIMIX_process_self())),
name);
}
xbt_dict_t gras_os_host_properties(void)
{
return
- SIMIX_host_get_properties(SIMIX_process_get_host
+ SIMIX_req_host_get_properties(SIMIX_req_process_get_host
(SIMIX_process_self()));
}
/* Clean IO before the run */
fflush(stdout);
fflush(stderr);
- SIMIX_init();
-
- while (SIMIX_solve(NULL, NULL) != -1.0);
+ SIMIX_run();
return;
}
smx_rdv_t rdv_server; /* The rendez-vous point to use */
smx_rdv_t rdv_client; /* The rendez-vous point to use */
- smx_comm_t comm_recv; /* The comm of irecv on receiver side */
+ smx_action_t comm_recv; /* The comm of irecv on receiver side */
int server_port;
int client_port;
void gras_init(int *argc, char **argv)
{
-
+ int first = 0;
gras_procdata_t *pd;
gras_msg_procdata_t msg_pd;
VERB0("Initialize GRAS");
* - declare process specific data we need (without creating them)
*/
if (gras_running_process == 0) {
+ first = 1;
/* Connect our log channels: that must be done manually under windows */
XBT_LOG_CONNECT(gras_ddt, gras);
XBT_LOG_CONNECT(gras_ddt_cbps, gras_ddt);
gras_trp_register();
gras_msg_register();
}
+ gras_running_process++;
/*
* Initialize the process specific stuff
/*
* Initialize the global stuff if it's not the first process created
*/
- if (gras_running_process++ == 0) {
+ if (first) {
gras_emul_init();
gras_msg_init();
gras_trp_init();
SG_BEGIN_DECL()
/********************************* Global *************************************/
-XBT_PUBLIC(void) MC_init(int);
-XBT_PUBLIC(void) MC_exit(int);
+XBT_PUBLIC(void) MC_init(void);
+XBT_PUBLIC(void) MC_exit(void);
XBT_PUBLIC(void) MC_assert(int);
-XBT_PUBLIC(void) MC_modelcheck(int);
+XBT_PUBLIC(void) MC_modelcheck(void);
XBT_PUBLIC(int) MC_random(int, int);
-/******************************* Transitions **********************************/
-XBT_PUBLIC(void) MC_trans_intercept_isend(smx_rdv_t);
-XBT_PUBLIC(void) MC_trans_intercept_irecv(smx_rdv_t);
-XBT_PUBLIC(void) MC_trans_intercept_wait(smx_comm_t);
-XBT_PUBLIC(void) MC_trans_intercept_test(smx_comm_t);
-XBT_PUBLIC(void) MC_trans_intercept_waitany(xbt_dynar_t);
-XBT_PUBLIC(void) MC_trans_intercept_random(int, int);
-
/********************************* Memory *************************************/
XBT_PUBLIC(void) MC_memory_init(void); /* Initialize the memory subsystem */
XBT_PUBLIC(void) MC_memory_exit(void);
SG_BEGIN_DECL()
typedef struct s_xbt_context *xbt_context_t;
+typedef void (*void_pfn_smxprocess_t) (smx_process_t);
+
XBT_PUBLIC(xbt_context_t) xbt_context_new(const char *name,
xbt_main_func_t code,
void_f_pvoid_t startup_func,
void *startup_arg,
- void_f_pvoid_t cleanup_func,
- void *cleanup_arg, int argc,
- char *argv[]);
+ void_pfn_smxprocess_t cleanup_func,
+ smx_process_t process,
+ int argc, char *argv[]);
XBT_PUBLIC(void) xbt_context_kill(xbt_context_t context);
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#ifndef SIMIX_DATATYPE_H
-#define SIMIX_DATATYPE_H
+#ifndef _SIMIX_DATATYPES_H
+#define _SIMIX_DATATYPES_H
#include "xbt/misc.h"
#include "xbt/swag.h"
#include "xbt/fifo.h"
\see m_host_management
@{ */
typedef struct s_smx_host *smx_host_t;
+typedef enum {
+ SIMIX_WAITING,
+ SIMIX_READY,
+ SIMIX_RUNNING,
+ SIMIX_DONE,
+ SIMIX_CANCELED,
+ SIMIX_FAILED,
+ SIMIX_SRC_HOST_FAILURE,
+ SIMIX_DST_HOST_FAILURE,
+ SIMIX_SRC_TIMEOUT,
+ SIMIX_DST_TIMEOUT,
+ SIMIX_LINK_FAILURE,
+} e_smx_state_t;
/** @} */
-/* ******************************** Syncro ************************************ */
-typedef struct s_smx_mutex {
- xbt_swag_t sleeping; /* list of sleeping process */
- int refcount;
-} s_smx_mutex_t;
-typedef s_smx_mutex_t *smx_mutex_t;
+typedef struct s_smx_timer* smx_timer_t;
-typedef struct s_smx_cond {
- xbt_swag_t sleeping; /* list of sleeping process */
- smx_mutex_t mutex;
- xbt_fifo_t actions; /* list of actions */
-} s_smx_cond_t;
-typedef s_smx_cond_t *smx_cond_t;
-typedef struct s_smx_sem {
- xbt_fifo_t sleeping; /* list of sleeping process */
- int capacity;
- xbt_fifo_t actions; /* list of actions */
-} s_smx_sem_t;
-typedef s_smx_sem_t *smx_sem_t;
+/* ******************************** Synchro ************************************ */
+typedef struct s_smx_mutex *smx_mutex_t;
+typedef struct s_smx_cond *smx_cond_t;
+typedef struct s_smx_sem *smx_sem_t;
/********************************** Action *************************************/
-typedef struct s_smx_action *smx_action_t;
+typedef struct s_smx_action *smx_action_t; /* FIXME: replace by specialized action handlers */
+
+
/* ****************************** Process *********************************** */
/** @brief Agent datatype
typedef struct s_smx_context *smx_context_t;
+/* User create and kill process, the function must accept the folling parameters:
+ * const char *name: a name for the object. It is for user-level information and can be NULL
+ * xbt_main_func_t code: is a function describing the behavior of the agent
+ * void *data: data a pointer to any data one may want to attach to the new object.
+ * smx_host_t host: the location where the new agent is executed
+ * int argc, char **argv: parameters passed to code
+ *
+ * */
+typedef void *(*smx_creation_func_t) ( /*name */ const char *,
+ /*code */ xbt_main_func_t,
+ /*userdata */ void *,
+ /*hostname */ char *,
+ /* argc */ int,
+ /* argv */ char **,
+ /* props */ xbt_dict_t);
+
+
/******************************* Networking ***********************************/
typedef struct s_smx_rvpoint *smx_rdv_t;
-typedef struct s_smx_comm *smx_comm_t;
-typedef enum { comm_send,
- comm_recv
-} smx_comm_type_t;
-
SG_END_DECL()
SG_BEGIN_DECL()
-
-/************************** Global ******************************************/
+/********************************** Global ************************************/
+/* Initialization and exit */
XBT_PUBLIC(void) SIMIX_global_init(int *argc, char **argv);
XBT_PUBLIC(void) SIMIX_clean(void);
-XBT_PUBLIC(void) SIMIX_function_register(const char *name,
- xbt_main_func_t code);
-XBT_PUBLIC(void) SIMIX_function_register_default(xbt_main_func_t code);
-XBT_PUBLIC(xbt_main_func_t) SIMIX_get_registered_function(const char
- *name);
-
-XBT_PUBLIC(void) SIMIX_launch_application(const char *file);
-/*
- * Deployment (Bypass the parser)
- */
-XBT_PUBLIC(void) SIMIX_process_set_function(const char *process_host,
- const char *process_function,
- xbt_dynar_t arguments,
- double process_start_time,
- double process_kill_time);
+/* Process creation/destruction callbacks */
+typedef void (*void_pfn_smxprocess_t) (smx_process_t);
+XBT_PUBLIC(void) SIMIX_function_register_process_cleanup(void_pfn_smxprocess_t function);
+XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t function);
+XBT_PUBLIC(void) SIMIX_function_register_process_kill(void_f_pvoid_t function);
-XBT_PUBLIC(double) SIMIX_get_clock(void);
-XBT_PUBLIC(void) SIMIX_init(void);
-XBT_PUBLIC(double) SIMIX_solve(xbt_fifo_t actions_done,
- xbt_fifo_t actions_failed);
+/* Simulation execution */
+XBT_PUBLIC(void) SIMIX_run(void);
-/* Timer functions */
+/* Timer functions FIXME: should these be public? */
XBT_PUBLIC(void) SIMIX_timer_set(double date, void *function, void *arg);
-XBT_PUBLIC(int) SIMIX_timer_get(void **function, void **arg);
-
-/* only for tests */
-XBT_PUBLIC(void) __SIMIX_main(void);
-
-/* User create and kill process, the function must accept the folling parameters:
- * const char *name: a name for the object. It is for user-level information and can be NULL
- * xbt_main_func_t code: is a function describing the behavior of the agent
- * void *data: data a pointer to any data one may want to attach to the new object.
- * smx_host_t host: the location where the new agent is executed
- * int argc, char **argv: parameters passed to code
- *
- * */
-typedef void *(*smx_creation_func_t) ( /*name */ const char *,
- /*code */ xbt_main_func_t,
- /*userdata */ void *,
- /*hostname */ char *,
- /* argc */ int,
- /* argv */ char **,
- /* props */ xbt_dict_t);
-XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t
- function);
-XBT_PUBLIC(void) SIMIX_function_register_process_kill(void_f_pvoid_t
- function);
-XBT_PUBLIC(void) SIMIX_function_register_process_cleanup(void_f_pvoid_t
- function);
-
-/************************** Host handling ***********************************/
-
-XBT_PUBLIC(void) SIMIX_host_set_data(smx_host_t host, void *data);
-XBT_PUBLIC(void *) SIMIX_host_get_data(smx_host_t host);
-
-XBT_PUBLIC(const char *) SIMIX_host_get_name(smx_host_t host);
-XBT_PUBLIC(void) SIMIX_process_set_name(smx_process_t process, char *name);
-XBT_PUBLIC(smx_host_t) SIMIX_host_self(void);
-XBT_PUBLIC(double) SIMIX_host_get_speed(smx_host_t host);
-XBT_PUBLIC(double) SIMIX_host_get_available_speed(smx_host_t host);
+XBT_PUBLIC(double) SIMIX_timer_next(void);
-XBT_PUBLIC(int) SIMIX_host_get_number(void);
-XBT_PUBLIC(smx_host_t *) SIMIX_host_get_table(void);
-XBT_PUBLIC(xbt_dict_t) SIMIX_host_get_dict(void);
+XBT_PUBLIC(void) SIMIX_display_process_status(void);
+/******************************* Environment **********************************/
XBT_PUBLIC(void) SIMIX_create_environment(const char *file);
-XBT_INLINE XBT_PUBLIC(smx_host_t) SIMIX_host_get_by_name(const char *name);
-XBT_PUBLIC(xbt_dict_t) SIMIX_host_get_properties(smx_host_t host);
+/******************************** Deployment **********************************/
-/* Two possible states, 1 - CPU ON and 0 CPU OFF */
-XBT_PUBLIC(int) SIMIX_host_get_state(smx_host_t host);
+XBT_PUBLIC(void) SIMIX_function_register(const char *name, xbt_main_func_t code);
+XBT_PUBLIC(void) SIMIX_function_register_default(xbt_main_func_t code);
+XBT_PUBLIC(xbt_main_func_t) SIMIX_get_registered_function(const char *name);
+XBT_PUBLIC(void) SIMIX_launch_application(const char *file);
+XBT_PUBLIC(void) SIMIX_process_set_function(const char* process_host,
+ const char *process_function,
+ xbt_dynar_t arguments,
+ double process_start_time,
+ double process_kill_time);
+
+/*********************************** Host *************************************/
+XBT_PUBLIC(xbt_dict_t) SIMIX_host_get_dict(void);
+XBT_PUBLIC(smx_host_t) SIMIX_host_get_by_name(const char *name);
+XBT_PUBLIC(smx_host_t) SIMIX_host_self(void);
+XBT_PUBLIC(const char*) SIMIX_host_self_get_name(void);
+XBT_PUBLIC(const char*) SIMIX_host_get_name(smx_host_t host); /* FIXME: make private: only the name of SIMIX_host_self() should be public without request */
+XBT_PUBLIC(void) SIMIX_host_self_set_data(void *data);
+XBT_PUBLIC(void*) SIMIX_host_self_get_data(void);
-/************************** Process handling *********************************/
+/********************************* Process ************************************/
+XBT_PUBLIC(void) SIMIX_process_cleanup(smx_process_t arg);
+XBT_PUBLIC(int) SIMIX_process_count(void);
+XBT_PUBLIC(smx_process_t) SIMIX_process_self(void);
+XBT_PUBLIC(const char*) SIMIX_process_self_get_name(void);
+XBT_PUBLIC(void) SIMIX_process_self_set_data(void *data);
+XBT_PUBLIC(void*) SIMIX_process_self_get_data(void);
XBT_PUBLIC(smx_process_t) SIMIX_process_create(const char *name,
+ xbt_main_func_t code,
+ void *data,
+ const char *hostname,
+ int argc, char **argv,
+ xbt_dict_t properties);
+
+/****************************** Communication *********************************/
+XBT_PUBLIC(void) SIMIX_comm_set_copy_data_callback(void (*callback) (smx_action_t, size_t));
+XBT_PUBLIC(void) SIMIX_comm_copy_pointer_callback(smx_action_t comm, size_t buff_size);
+XBT_PUBLIC(void) SIMIX_comm_copy_buffer_callback(smx_action_t comm, size_t buff_size);
+
+/******************************************************************************/
+/* SIMIX Smurf Proxy Functions */
+/******************************************************************************/
+/* These functions issue request through the Smurf proxy. */
+/* They cannot be called from maestro's context, and they are thread safe. */
+/******************************************************************************/
+
+XBT_PUBLIC(double) SIMIX_get_clock(void);
+
+/******************************* Host Requests ********************************/
+/* FIXME: use handlers and keep smx_host_t hidden from higher levels */
+XBT_PUBLIC(xbt_dict_t) SIMIX_req_host_get_dict(void);
+XBT_INLINE XBT_PUBLIC(smx_host_t) SIMIX_req_host_get_by_name(const char *name);
+XBT_PUBLIC(const char *) SIMIX_req_host_get_name(smx_host_t host);
+XBT_PUBLIC(xbt_dict_t) SIMIX_req_host_get_properties(smx_host_t host);
+XBT_PUBLIC(double) SIMIX_req_host_get_speed(smx_host_t host);
+XBT_PUBLIC(double) SIMIX_req_host_get_available_speed(smx_host_t host);
+/* Two possible states, 1 - CPU ON and 0 CPU OFF */
+XBT_PUBLIC(int) SIMIX_req_host_get_state(smx_host_t host);
+XBT_PUBLIC(void *) SIMIX_req_host_get_data(smx_host_t host);
+
+XBT_PUBLIC(void) SIMIX_req_host_set_data(smx_host_t host, void *data);
+
+XBT_PUBLIC(smx_action_t) SIMIX_req_host_execute(const char *name, smx_host_t host,
+ double computation_amount);
+XBT_PUBLIC(smx_action_t) SIMIX_req_host_parallel_execute(const char *name,
+ int host_nb,
+ smx_host_t *host_list,
+ double *computation_amount,
+ double *communication_amount,
+ double amount,
+ double rate);
+XBT_PUBLIC(void) SIMIX_req_host_execution_destroy(smx_action_t execution);
+XBT_PUBLIC(void) SIMIX_req_host_execution_cancel(smx_action_t execution);
+XBT_PUBLIC(double) SIMIX_req_host_execution_get_remains(smx_action_t execution);
+XBT_PUBLIC(e_smx_state_t) SIMIX_req_host_execution_get_state(smx_action_t execution);
+XBT_PUBLIC(void) SIMIX_req_host_execution_set_priority(smx_action_t execution, double priority);
+XBT_PUBLIC(void) SIMIX_req_host_execution_wait(smx_action_t execution);
+
+
+/**************************** Process Requests ********************************/
+/* Constructor and Destructor */
+XBT_PUBLIC(smx_process_t) SIMIX_req_process_create(const char *name,
xbt_main_func_t code,
void *data,
const char *hostname,
int argc, char **argv,
xbt_dict_t properties);
-XBT_PUBLIC(void) SIMIX_process_kill(smx_process_t process);
-XBT_PUBLIC(void) SIMIX_process_cleanup(void *arg);
-XBT_PUBLIC(void) SIMIX_process_killall(void);
-XBT_PUBLIC(void) SIMIX_process_change_host(smx_process_t process,
- char *source, char *dest);
-
-//above layer
-XBT_PUBLIC(void *) SIMIX_process_get_data(smx_process_t process);
-XBT_PUBLIC(void) SIMIX_process_set_data(smx_process_t process, void *data);
-
-XBT_INLINE XBT_PUBLIC(smx_host_t) SIMIX_process_get_host(smx_process_t
- process);
-XBT_PUBLIC(const char *) SIMIX_process_get_name(smx_process_t process);
-XBT_INLINE XBT_PUBLIC(smx_process_t) SIMIX_process_self(void);
-
-XBT_PUBLIC(void) SIMIX_process_yield(void);
-XBT_PUBLIC(void) SIMIX_process_suspend(smx_process_t process);
-XBT_PUBLIC(void) SIMIX_process_resume(smx_process_t process);
-XBT_PUBLIC(int) SIMIX_process_is_suspended(smx_process_t process);
-XBT_PUBLIC(int) SIMIX_process_is_blocked(smx_process_t process);
-
-/*property handlers*/
-XBT_PUBLIC(xbt_dict_t) SIMIX_process_get_properties(smx_process_t host);
-XBT_PUBLIC(int) SIMIX_process_count(void);
+XBT_PUBLIC(void) SIMIX_req_process_kill(smx_process_t process);
+
+/* Process handling */
+XBT_PUBLIC(void) SIMIX_req_process_cleanup(void *arg); /* FIXME: This function shouldn't be called from outside SIMIX */
+XBT_PUBLIC(void) SIMIX_req_process_change_host(smx_process_t process,
+ const char *source, const char *dest);
+XBT_PUBLIC(void) SIMIX_req_process_suspend(smx_process_t process);
+XBT_PUBLIC(void) SIMIX_req_process_resume(smx_process_t process);
+
+/* Getters and Setters */
+XBT_PUBLIC(int) SIMIX_req_process_count(void);
+XBT_PUBLIC(void *) SIMIX_req_process_get_data(smx_process_t process);
+XBT_PUBLIC(void) SIMIX_req_process_set_data(smx_process_t process, void *data);
+XBT_INLINE XBT_PUBLIC(smx_host_t) SIMIX_req_process_get_host(smx_process_t process);
+XBT_PUBLIC(const char *) SIMIX_req_process_get_name(smx_process_t process);
+XBT_PUBLIC(int) SIMIX_req_process_is_suspended(smx_process_t process);
+XBT_PUBLIC(xbt_dict_t) SIMIX_req_process_get_properties(smx_process_t host);
+
+/* Sleep control */
+XBT_PUBLIC(e_smx_state_t) SIMIX_req_process_sleep(double duration);
+
+/************************** Comunication Requests *****************************/
+/***** Rendez-vous points *****/
+XBT_PUBLIC(smx_rdv_t) SIMIX_req_rdv_create(const char *name);
+XBT_PUBLIC(void) SIMIX_req_rdv_destroy(smx_rdv_t rvp);
+XBT_PUBLIC(smx_rdv_t) SIMIX_req_rdv_get_by_name(const char *name);
+XBT_PUBLIC(int) SIMIX_req_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host);
+XBT_PUBLIC(smx_action_t) SIMIX_req_rdv_get_head(smx_rdv_t rdv);
+
+/***** Communication Requests *****/
+
+/* Constructors and Destructor */
+XBT_PUBLIC(smx_action_t) SIMIX_req_comm_isend(smx_rdv_t rdv, double task_size,
+ double rate, void *src_buff,
+ size_t src_buff_size,
+ void *data);
+
+XBT_PUBLIC(smx_action_t) SIMIX_req_comm_irecv(smx_rdv_t rdv, void *dst_buff,
+ size_t * dst_buff_size);
+
+XBT_PUBLIC(void) SIMIX_req_comm_destroy(smx_action_t comm);
+
+/* Communication handling */
+XBT_INLINE XBT_PUBLIC(void) SIMIX_req_comm_cancel(smx_action_t comm);
+
+/* FIXME: waitany is going to be a vararg function, and should take a timeout */
+XBT_PUBLIC(unsigned int) SIMIX_req_comm_waitany(xbt_dynar_t comms);
+XBT_PUBLIC(void) SIMIX_req_comm_wait(smx_action_t comm, double timeout);
+XBT_PUBLIC(int) SIMIX_req_comm_test(smx_action_t comm);
+
+/* Getters and setters */
+XBT_PUBLIC(double) SIMIX_req_comm_get_remains(smx_action_t comm);
+XBT_PUBLIC(e_smx_state_t) SIMIX_req_comm_get_state(smx_action_t comm);
+XBT_PUBLIC(void *) SIMIX_req_comm_get_data(smx_action_t comm);
+XBT_PUBLIC(void *) SIMIX_req_comm_get_src_buff(smx_action_t comm);
+XBT_PUBLIC(void *) SIMIX_req_comm_get_dst_buff(smx_action_t comm);
+XBT_PUBLIC(size_t) SIMIX_req_comm_get_src_buff_size(smx_action_t comm);
+XBT_PUBLIC(size_t) SIMIX_req_comm_get_dst_buff_size(smx_action_t comm);
+XBT_PUBLIC(smx_process_t) SIMIX_req_comm_get_src_proc(smx_action_t comm);
+XBT_PUBLIC(smx_process_t) SIMIX_req_comm_get_dst_proc(smx_action_t comm);
+XBT_PUBLIC(void) SIMIX_req_comm_set_copy_data_callback(void (*callback)(smx_action_t,size_t));
+XBT_PUBLIC(void) SIMIX_req_comm_copy_pointer_callback(smx_action_t comm, size_t buff_size);
+XBT_PUBLIC(void) SIMIX_req_comm_copy_buffer_callback(smx_action_t comm, size_t buff_size);
+
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+XBT_PUBLIC(int) SIMIX_req_comm_is_latency_bounded(smx_action_t comm);
+#endif
/************************** Synchro handling **********************************/
-/******Mutex******/
-XBT_PUBLIC(smx_mutex_t) SIMIX_mutex_init(void);
-XBT_PUBLIC(void) SIMIX_mutex_lock(smx_mutex_t mutex);
-XBT_PUBLIC(int) SIMIX_mutex_trylock(smx_mutex_t mutex);
-XBT_PUBLIC(void) SIMIX_mutex_unlock(smx_mutex_t mutex);
-XBT_PUBLIC(void) SIMIX_mutex_destroy(smx_mutex_t mutex);
-
-/*****Conditional*****/
-XBT_PUBLIC(smx_cond_t) SIMIX_cond_init(void);
-XBT_PUBLIC(void) SIMIX_cond_signal(smx_cond_t cond);
-XBT_PUBLIC(void) SIMIX_cond_wait(smx_cond_t cond, smx_mutex_t mutex);
-XBT_PUBLIC(void) SIMIX_cond_wait_timeout(smx_cond_t cond,
+XBT_PUBLIC(smx_mutex_t) SIMIX_req_mutex_init(void);
+XBT_PUBLIC(void) SIMIX_req_mutex_destroy(smx_mutex_t mutex);
+XBT_PUBLIC(void) SIMIX_req_mutex_lock(smx_mutex_t mutex);
+XBT_PUBLIC(int) SIMIX_req_mutex_trylock(smx_mutex_t mutex);
+XBT_PUBLIC(void) SIMIX_req_mutex_unlock(smx_mutex_t mutex);
+
+XBT_PUBLIC(smx_cond_t) SIMIX_req_cond_init(void);
+XBT_PUBLIC(void) SIMIX_req_cond_destroy(smx_cond_t cond);
+XBT_PUBLIC(void) SIMIX_req_cond_signal(smx_cond_t cond);
+XBT_PUBLIC(void) SIMIX_req_cond_wait(smx_cond_t cond, smx_mutex_t mutex);
+XBT_PUBLIC(void) SIMIX_req_cond_wait_timeout(smx_cond_t cond,
smx_mutex_t mutex,
double max_duration);
-XBT_PUBLIC(void) SIMIX_cond_broadcast(smx_cond_t cond);
-XBT_PUBLIC(void) SIMIX_cond_destroy(smx_cond_t cond);
-XBT_PUBLIC(xbt_fifo_t) SIMIX_cond_get_actions(smx_cond_t cond);
-XBT_PUBLIC(void) SIMIX_cond_display_info(smx_cond_t cond);
-
-/*****Semaphores*******/
-
-
-XBT_PUBLIC(smx_sem_t) SIMIX_sem_init(int capacity);
-XBT_PUBLIC(void) SIMIX_sem_destroy(smx_sem_t sem);
-XBT_PUBLIC(void) SIMIX_sem_release(smx_sem_t sem);
-XBT_PUBLIC(void) SIMIX_sem_release_forever(smx_sem_t sem);
-XBT_PUBLIC(int) SIMIX_sem_would_block(smx_sem_t sem);
-XBT_PUBLIC(void) SIMIX_sem_block_onto(smx_sem_t sem);
-XBT_PUBLIC(void) SIMIX_sem_acquire(smx_sem_t sem);
-XBT_PUBLIC(void) SIMIX_sem_acquire_timeout(smx_sem_t sem,
+XBT_PUBLIC(void) SIMIX_req_cond_broadcast(smx_cond_t cond);
+
+XBT_PUBLIC(smx_sem_t) SIMIX_req_sem_init(int capacity);
+XBT_PUBLIC(void) SIMIX_req_sem_destroy(smx_sem_t sem);
+XBT_PUBLIC(void) SIMIX_req_sem_release(smx_sem_t sem);
+XBT_PUBLIC(void) SIMIX_req_sem_release_forever(smx_sem_t sem);
+XBT_PUBLIC(int) SIMIX_req_sem_would_block(smx_sem_t sem);
+XBT_PUBLIC(void) SIMIX_req_sem_block_onto(smx_sem_t sem);
+XBT_PUBLIC(void) SIMIX_req_sem_acquire(smx_sem_t sem);
+XBT_PUBLIC(void) SIMIX_req_sem_acquire_timeout(smx_sem_t sem,
double max_duration);
-XBT_PUBLIC(unsigned int) SIMIX_sem_acquire_any(xbt_dynar_t sems);
-XBT_PUBLIC(int) SIMIX_sem_get_capacity(smx_sem_t sem);
-
-
-/************************** Action handling ************************************/
-XBT_PUBLIC(smx_action_t) SIMIX_action_communicate(smx_host_t sender,
- smx_host_t receiver,
- const char *name,
- double size,
- double rate);
-XBT_PUBLIC(smx_action_t) SIMIX_action_execute(smx_host_t host,
- const char *name,
- double amount);
-XBT_PUBLIC(smx_action_t) SIMIX_action_sleep(smx_host_t host,
- double amount);
-XBT_PUBLIC(void) SIMIX_action_cancel(smx_action_t action);
-XBT_PUBLIC(void) SIMIX_action_set_priority(smx_action_t action,
- double priority);
-XBT_PUBLIC(void) SIMIX_action_resume(smx_action_t action);
-XBT_PUBLIC(void) SIMIX_action_suspend(smx_action_t action);
-XBT_PUBLIC(int) SIMIX_action_destroy(smx_action_t action);
-XBT_PUBLIC(void) SIMIX_action_use(smx_action_t action);
-XBT_PUBLIC(void) SIMIX_action_release(smx_action_t action);
-
-XBT_PUBLIC(void) SIMIX_register_action_to_condition(smx_action_t action,
- smx_cond_t cond);
-XBT_PUBLIC(void) SIMIX_unregister_action_to_condition(smx_action_t action,
- smx_cond_t cond);
-XBT_PUBLIC(void) SIMIX_register_action_to_semaphore(smx_action_t action,
- smx_sem_t sem);
-XBT_INLINE XBT_PUBLIC(void)
-SIMIX_unregister_action_to_semaphore(smx_action_t action, smx_sem_t sem);
-
-
-XBT_PUBLIC(double) SIMIX_action_get_remains(smx_action_t action);
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-XBT_PUBLIC(int) SIMIX_action_is_latency_bounded(smx_action_t action);
-#endif
-
-XBT_PUBLIC(e_surf_action_state_t) SIMIX_action_get_state(smx_action_t
- action);
-
-XBT_PUBLIC(smx_action_t) SIMIX_action_parallel_execute(char *name,
- int host_nb,
- smx_host_t *
- host_list, double
- *computation_amount, double
- *communication_amount,
- double amount,
- double rate);
-
-XBT_PUBLIC(char *) SIMIX_action_get_name(smx_action_t action);
-XBT_PUBLIC(void) SIMIX_action_set_name(smx_action_t action, char *name);
-XBT_PUBLIC(void) SIMIX_action_signal_all(smx_action_t action);
-XBT_PUBLIC(void) SIMIX_display_process_status(void);
-/************************** Comunication Handling *****************************/
-
-/* Public */
-/*****Rendez-vous points*****/
-XBT_PUBLIC(smx_rdv_t) SIMIX_rdv_create(const char *name);
-XBT_PUBLIC(void) SIMIX_rdv_destroy(smx_rdv_t rvp);
-XBT_PUBLIC(int) SIMIX_rdv_get_count_waiting_comm(smx_rdv_t rdv,
- smx_host_t host);
-XBT_PUBLIC(smx_comm_t) SIMIX_rdv_get_head(smx_rdv_t rdv);
-XBT_PUBLIC(smx_comm_t) SIMIX_rdv_get_request(smx_rdv_t rdv,
- smx_comm_type_t type);
-XBT_PUBLIC(void) SIMIX_rdv_set_data(smx_rdv_t rdv, void *data);
-XBT_PUBLIC(void *) SIMIX_rdv_get_data(smx_rdv_t rdv);
-
-/*****Communication Requests*****/
-XBT_INLINE XBT_PUBLIC(void) SIMIX_communication_cancel(smx_comm_t comm);
-XBT_PUBLIC(void) SIMIX_communication_destroy(smx_comm_t comm);
-XBT_PUBLIC(double) SIMIX_communication_get_remains(smx_comm_t comm);
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-XBT_PUBLIC(int) SIMIX_communication_is_latency_bounded(smx_comm_t comm);
-#endif
-XBT_PUBLIC(void *) SIMIX_communication_get_data(smx_comm_t comm);
-
-XBT_PUBLIC(void *) SIMIX_communication_get_src_buf(smx_comm_t comm);
-XBT_PUBLIC(void *) SIMIX_communication_get_dst_buf(smx_comm_t comm);
-XBT_PUBLIC(size_t) SIMIX_communication_get_src_buf_size(smx_comm_t comm);
-XBT_PUBLIC(size_t) SIMIX_communication_get_dst_buf_size(smx_comm_t comm);
-
-/*****Networking*****/
-XBT_PUBLIC(void) SIMIX_network_set_copy_data_callback(void (*callback)
- (smx_comm_t,
- size_t));
-XBT_PUBLIC(void) SIMIX_network_copy_pointer_callback(smx_comm_t comm,
- size_t buff_size);
-XBT_PUBLIC(void) SIMIX_network_copy_buffer_callback(smx_comm_t comm,
- size_t buff_size);
-XBT_PUBLIC(void) SIMIX_network_send(smx_rdv_t rdv, double task_size,
- double rate, double timeout,
- void *src_buff, size_t src_buff_size,
- smx_comm_t * comm, void *data);
-XBT_PUBLIC(void) SIMIX_network_recv(smx_rdv_t rdv, double timeout,
- void *dst_buff, size_t * dst_buff_size,
- smx_comm_t * comm);
-XBT_PUBLIC(smx_comm_t) SIMIX_network_isend(smx_rdv_t rdv, double task_size,
- double rate, void *src_buff,
- size_t src_buff_size,
- void *data);
-XBT_PUBLIC(smx_comm_t) SIMIX_network_irecv(smx_rdv_t rdv, void *dst_buff,
- size_t * dst_buff_size);
-XBT_PUBLIC(unsigned int) SIMIX_network_waitany(xbt_dynar_t comms);
-XBT_INLINE XBT_PUBLIC(void) SIMIX_network_wait(smx_comm_t comm,
- double timeout);
-XBT_PUBLIC(int) SIMIX_network_test(smx_comm_t comm);
+XBT_PUBLIC(unsigned int) SIMIX_req_sem_acquire_any(xbt_dynar_t sems);
+XBT_PUBLIC(int) SIMIX_req_sem_get_capacity(smx_sem_t sem);
SG_END_DECL()
#endif /* _SIMIX_SIMIX_H */
*/
typedef struct surf_model_private *surf_model_private_t;
- /** \brief Timer model extension public
- * \ingroup SURF_model
- *
- * Additionnal functions specific to the timer model
- */
-typedef struct surf_timer_model_extension_public {
- void (*set) (double date, void *function, void *arg);
- int (*get) (void **function, void **arg);
-} s_surf_model_extension_timer_t;
-
/* Cpu model */
/** \brief CPU model extension public
union extension {
- s_surf_model_extension_timer_t timer;
s_surf_model_extension_cpu_t cpu;
s_surf_model_extension_network_t network;
s_surf_model_extension_workstation_t workstation;
/**************************************/
-/** \brief The timer model
- * \ingroup SURF_models
- */
-XBT_PUBLIC_DATA(surf_model_t) surf_timer_model;
-
-/** \brief Initializes the timer model
- * \ingroup SURF_models
- */
-XBT_PUBLIC(void) surf_timer_model_init(const char *filename);
-
/** \brief The CPU model
* \ingroup SURF_models
*/
*
* This function has to be called to initialize the common
* structures. Then you will have to create the environment by
- * calling surf_timer_model_init() and
+ * calling
* e.g. surf_workstation_model_init_CLM03() or
* surf_workstation_model_init_KCCFLN05().
*
- * \see surf_timer_model_init(), surf_workstation_model_init_CLM03(),
+ * \see surf_workstation_model_init_CLM03(),
* surf_workstation_model_init_KCCFLN05(), surf_workstation_model_init_compound(), surf_exit()
*/
XBT_PUBLIC(void) surf_init(int *argc, char **argv); /* initialize common structures */
/** \brief Performs a part of the simulation
* \ingroup SURF_simulation
+ * \param max_date Maximum date to update the simulation to, or -1
* \return the elapsed time, or -1.0 if no event could be executed
*
* This function execute all possible events, update the action states
* are not executed immediately but only when you call surf_solve.
* Note that the returned elapsed time can be zero.
*/
-XBT_PUBLIC(double) surf_solve(void);
+XBT_PUBLIC(double) surf_solve(double max_date);
/** \brief Return the current time
* \ingroup SURF_simulation
XBT_PUBLIC(xbt_os_thread_t) xbt_os_thread_create(const char *name,
pvoid_f_pvoid_t
start_routine,
- void *param);
+ void *param,
+ void *data);
XBT_PUBLIC(void) xbt_os_thread_exit(int *retcode);
+XBT_PUBLIC(void) xbt_os_thread_detach(xbt_os_thread_t thread);
XBT_PUBLIC(xbt_os_thread_t) xbt_os_thread_self(void);
XBT_PUBLIC(const char *) xbt_os_thread_self_name(void);
XBT_PUBLIC(const char *) xbt_os_thread_name(xbt_os_thread_t);
+XBT_PUBLIC(void) xbt_os_thread_set_extra_data(void *data);
+XBT_PUBLIC(void *) xbt_os_thread_get_extra_data(void);
/* xbt_os_thread_join frees the joined thread (ie the XBT wrapper around it, the OS frees the rest) */
XBT_PUBLIC(void) xbt_os_thread_join(xbt_os_thread_t thread,
void **thread_return);
TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
if (TRACE_smpi_is_grouped()){
pajeCreateContainer(SIMIX_get_clock(), str, "MPI_PROCESS",
- SIMIX_host_get_name(SIMIX_host_self()), str);
+ SIMIX_host_self_get_name(), str);
}else{
pajeCreateContainer(SIMIX_get_clock(), str, "MPI_PROCESS",
"platform", str);
static long long int counter = 0; /* to uniquely identify simix actions */
-void TRACE_smx_action_execute(smx_action_t act)
+void TRACE_smx_host_execute(smx_action_t act)
{
char *category = NULL;
if (!IS_TRACING)
#include "private.h"
+static mc_mem_region_t MC_region_new(void *start_addr, size_t size);
+static void MC_region_restore(mc_mem_region_t reg);
+static void MC_region_destroy(mc_mem_region_t reg);
+
+static void MC_snapshot_add_region(mc_snapshot_t snapshot, void *start_addr, size_t size);
+
+static mc_mem_region_t MC_region_new(void *start_addr, size_t size)
+{
+ mc_mem_region_t new_reg = xbt_new0(s_mc_mem_region_t, 1);
+ new_reg->start_addr = start_addr;
+ new_reg->size = size;
+ new_reg->data = xbt_malloc0(size);
+ memcpy(new_reg->data, start_addr, size);
+ return new_reg;
+}
+
+static void MC_region_restore(mc_mem_region_t reg)
+{
+ /*FIXME: check if start_addr is still mapped, if it is not, then map it
+ before copying the data */
+ memcpy(reg->start_addr, reg->data, reg->size);
+}
+
+static void MC_region_destroy(mc_mem_region_t reg)
+{
+ xbt_free(reg->data);
+ xbt_free(reg);
+}
+
+static void MC_snapshot_add_region(mc_snapshot_t snapshot, void *start_addr, size_t size)
+{
+ mc_mem_region_t new_reg = MC_region_new(start_addr, size);
+ snapshot->regions = xbt_realloc(snapshot->regions, (snapshot->num_reg + 1) * sizeof(mc_mem_region_t));
+ snapshot->regions[snapshot->num_reg] = new_reg;
+ snapshot->num_reg++;
+ return;
+}
+
void MC_take_snapshot(mc_snapshot_t snapshot)
{
-/* Save the heap! */
- snapshot->heap_size = MC_save_heap(&(snapshot->heap));
+ unsigned int i;
+ s_map_region reg;
+ memory_map_t maps = get_memory_map();
-/* Save data and bss that */
- snapshot->data_size = MC_save_dataseg(&(snapshot->data));
+ /* Save all the writable mapped pages except the and the stack */
+ for (i = 0; i < maps->mapsize; i++) {
+ reg = maps->regions[i];
+ if((reg.prot & PROT_WRITE)
+ && (reg.pathname == NULL
+ || (strncmp(reg.pathname, "/dev/zero", 9)
+ && strncmp(reg.pathname, "[stack]", 7)))){
+ MC_snapshot_add_region(snapshot, reg.start_addr,
+ (char*)reg.end_addr - (char*)reg.start_addr);
+ }
+ }
}
void MC_restore_snapshot(mc_snapshot_t snapshot)
{
- MC_restore_heap(snapshot->heap, snapshot->heap_size);
- MC_restore_dataseg(snapshot->data, snapshot->data_size);
+ unsigned int i;
+ for(i=0; i < snapshot->num_reg; i++)
+ MC_region_restore(snapshot->regions[i]);
}
void MC_free_snapshot(mc_snapshot_t snapshot)
{
- xbt_free(snapshot->heap);
- xbt_free(snapshot->data);
+ unsigned int i;
+ for(i=0; i < snapshot->num_reg; i++)
+ MC_region_destroy(snapshot->regions[i]);
+
xbt_free(snapshot);
}
+++ /dev/null
-#include "private.h"
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_dfs, mc,
- "Logging specific to MC DFS exploration");
-
-
-void MC_dfs_init()
-{
- mc_transition_t trans = NULL;
- mc_state_t initial_state = NULL;
- xbt_setset_cursor_t cursor = NULL;
-
- MC_SET_RAW_MEM;
- initial_state = MC_state_new();
- /* Add the state data structure for the initial state */
- xbt_fifo_unshift(mc_stack, initial_state);
- MC_UNSET_RAW_MEM;
-
- DEBUG0("**************************************************");
- DEBUG0("Initial state");
-
- /* Schedule all the processes to detect the transitions from the initial state */
- MC_schedule_enabled_processes();
-
- MC_SET_RAW_MEM;
- xbt_setset_add(initial_state->enabled_transitions,
- initial_state->transitions);
- xbt_setset_foreach(initial_state->enabled_transitions, cursor, trans) {
- if (trans->type == mc_wait
- && (trans->wait.comm->src_proc == NULL
- || trans->wait.comm->dst_proc == NULL)) {
- xbt_setset_set_remove(initial_state->enabled_transitions, trans);
- }
- }
-
- /* Fill the interleave set of the initial state with all enabled transitions */
- xbt_setset_add(initial_state->interleave,
- initial_state->enabled_transitions);
-
- /* Update Statistics */
- mc_stats->state_size +=
- xbt_setset_set_size(initial_state->enabled_transitions);
-
- MC_UNSET_RAW_MEM;
-}
-
-/**
- * \brief Perform the model-checking operation using a depth-first search exploration
- *
- * It performs the model-checking operation by executing all possible scheduling of the communication actions
- * \return The time spent to execute the simulation or -1 if the simulation ended
- */
-void MC_dfs(void)
-{
- mc_transition_t trans = NULL;
- mc_state_t current_state = NULL;
- mc_state_t next_state = NULL;
- xbt_setset_cursor_t cursor = NULL;
-
- while (xbt_fifo_size(mc_stack) > 0) {
- DEBUG0("**************************************************");
-
- /* FIXME: Think about what happens if there are no transitions but there are
- some actions on the models. (ex. all the processes do a sleep(0) in a round). */
-
- /* Get current state */
- current_state = (mc_state_t)
- xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack));
-
- /* If there are transitions to execute and the maximun depth has not been reached
- then perform one step of the exploration algorithm */
- if (xbt_setset_set_size(current_state->interleave) > 0
- && xbt_fifo_size(mc_stack) < MAX_DEPTH) {
-
- DEBUG3("Exploration detph=%d (state=%p)(%d transitions)",
- xbt_fifo_size(mc_stack), current_state,
- xbt_setset_set_size(current_state->interleave));
-
- /* Update statistics */
- mc_stats->visited_states++;
- mc_stats->executed_transitions++;
-
- /* Choose a transition to execute from the interleave set of the current state,
- and create the data structures for the new expanded state in the exploration
- stack. */
- MC_SET_RAW_MEM;
- trans = xbt_setset_set_extract(current_state->interleave);
-
- /* Define it as the executed transition of this state */
- current_state->executed_transition = trans;
-
- next_state = MC_state_new();
- xbt_fifo_unshift(mc_stack, next_state);
- MC_UNSET_RAW_MEM;
-
- DEBUG1("Executing transition %s", trans->name);
- SIMIX_process_schedule(trans->process);
-
- /* Do all surf's related black magic tricks to keep all working */
- MC_execute_surf_actions();
-
- /* Schedule every process that got enabled due to the executed transition */
- MC_schedule_enabled_processes();
-
- /* Calculate the enabled transitions set of the next state:
- -add the transition sets of the current state and the next state
- -remove the executed transition from that set
- -remove all the transitions that are disabled (mc_wait only)
- -use the resulting set as the enabled transitions of the next state */
- MC_SET_RAW_MEM;
- xbt_setset_add(next_state->transitions, current_state->transitions);
- xbt_setset_set_remove(next_state->transitions, trans);
- xbt_setset_add(next_state->enabled_transitions,
- next_state->transitions);
- xbt_setset_foreach(next_state->enabled_transitions, cursor, trans) {
- if (trans->type == mc_wait
- && (trans->wait.comm->src_proc == NULL
- || trans->wait.comm->dst_proc == NULL)) {
- xbt_setset_set_remove(next_state->enabled_transitions, trans);
- }
- }
-
- /* Fill the interleave set of the new state with all enabled transitions */
- xbt_setset_add(next_state->interleave,
- next_state->enabled_transitions);
- MC_UNSET_RAW_MEM;
-
- /* Update Statistics */
- mc_stats->state_size +=
- xbt_setset_set_size(next_state->enabled_transitions);
-
- /* Let's loop again */
-
- /* The interleave set is empty or the maximum depth is reached, let's back-track */
- } else {
- DEBUG0("There are no more actions to run");
-
- MC_SET_RAW_MEM;
- xbt_fifo_shift(mc_stack);
- MC_state_delete(current_state);
-
- /* Go backwards in the stack until we find a state with transitions in the interleave set */
- while (xbt_fifo_size(mc_stack) > 0
- && (current_state = (mc_state_t) xbt_fifo_shift(mc_stack))) {
- if (xbt_setset_set_size(current_state->interleave) == 0) {
- MC_state_delete(current_state);
- } else {
- xbt_fifo_unshift(mc_stack, current_state);
- DEBUG1("Back-tracking to depth %d", xbt_fifo_size(mc_stack));
- MC_replay(mc_stack);
- MC_UNSET_RAW_MEM;
- /* Let's loop again */
- break;
- }
- }
- }
- }
- MC_UNSET_RAW_MEM;
- /* We are done, show the statistics and return */
- MC_print_statistics(mc_stats);
-}
void MC_dpor_init()
{
mc_state_t initial_state = NULL;
- mc_transition_t trans, trans_tmp = NULL;
- xbt_setset_cursor_t cursor = NULL;
-
+ smx_process_t process;
+
/* Create the initial state and push it into the exploration stack */
MC_SET_RAW_MEM;
initial_state = MC_state_new();
xbt_fifo_unshift(mc_stack, initial_state);
MC_UNSET_RAW_MEM;
- /* Schedule all the processes to detect the transitions of the initial state */
DEBUG0("**************************************************");
DEBUG0("Initial state");
- while (xbt_swag_size(simix_global->process_to_run)) {
- MC_schedule_enabled_processes();
- MC_execute_surf_actions();
- }
+ /* Wait for requests (schedules processes) */
+ MC_wait_for_requests();
MC_SET_RAW_MEM;
- MC_trans_compute_enabled(initial_state->enabled_transitions,
- initial_state->transitions);
-
- /* Fill the interleave set of the initial state with an enabled process */
- trans = xbt_setset_set_choose(initial_state->enabled_transitions);
- if (trans) {
- DEBUG1("Choosing process %s for next interleave",
- trans->process->name);
- xbt_setset_foreach(initial_state->enabled_transitions, cursor,
- trans_tmp) {
- if (trans_tmp->process == trans->process)
- xbt_setset_set_insert(initial_state->interleave, trans_tmp);
+ /* Get an enabled process and insert it in the interleave set of the initial state */
+ xbt_swag_foreach(process, simix_global->process_list){
+ if(SIMIX_process_is_enabled(process)){
+ xbt_setset_set_insert(initial_state->interleave, process);
+ break;
}
}
MC_UNSET_RAW_MEM;
-
- /* Update Statistics */
+
+ /* FIXME: Update Statistics
mc_stats->state_size +=
- xbt_setset_set_size(initial_state->enabled_transitions);
+ xbt_setset_set_size(initial_state->enabled_transitions); */
}
*/
void MC_dpor(void)
{
- mc_transition_t trans, trans_tmp = NULL;
- mc_state_t next_state = NULL;
- xbt_setset_cursor_t cursor = NULL;
+ char *req_str;
+ smx_req_t req = NULL;
+ mc_state_t state = NULL, prev_state = NULL, next_state = NULL;
+ smx_process_t process = NULL;
+ xbt_fifo_item_t item = NULL;
while (xbt_fifo_size(mc_stack) > 0) {
DEBUG0("**************************************************");
- /* FIXME: Think about what happen if there are no transitions but there are
- some actions on the models. (ex. all the processes do a sleep(0) in a round). */
-
/* Get current state */
- mc_current_state = (mc_state_t)
- xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack));
+ state = (mc_state_t)
+ xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack));
- /* If there are transitions to execute and the maximun depth has not been reached
+ /* If there are processes to interleave and the maximun depth has not been reached
then perform one step of the exploration algorithm */
- if (xbt_setset_set_size(mc_current_state->interleave) > 0
+ if (xbt_setset_set_size(state->interleave) > 0
&& xbt_fifo_size(mc_stack) < MAX_DEPTH) {
- DEBUG4("Exploration detph=%d (state=%p)(%d interleave) (%d enabled)",
- xbt_fifo_size(mc_stack), mc_current_state,
- xbt_setset_set_size(mc_current_state->interleave),
- xbt_setset_set_size(mc_current_state->enabled_transitions));
+ DEBUG3("Exploration detph=%d (state=%p)(%d interleave)",
+ xbt_fifo_size(mc_stack), state,
+ xbt_setset_set_size(state->interleave));
/* Update statistics */
mc_stats->visited_states++;
mc_stats->executed_transitions++;
- /* Choose a transition to execute from the interleave set of the current
- state, and create the data structures for the new expanded state in the
- exploration stack. */
MC_SET_RAW_MEM;
- trans = xbt_setset_set_extract(mc_current_state->interleave);
-
- /* Add the transition in the done set of the current state */
- xbt_setset_set_insert(mc_current_state->done, trans);
-
- next_state = MC_state_new();
- xbt_fifo_unshift(mc_stack, next_state);
-
- /* Set it as the executed transition of the current state */
- mc_current_state->executed_transition = trans;
+ /* Choose a request to execute from the the current state */
+ req = MC_state_get_request(state);
MC_UNSET_RAW_MEM;
- /* Execute the selected transition by scheduling it's associated process.
- Then schedule every process that got ready to run due to the execution
- of the transition */
- DEBUG1("Executing transition %s", trans->name);
- SIMIX_process_schedule(trans->process);
- MC_execute_surf_actions();
+ if(req){
+ /* Answer the request */
+ /* Debug information */
+ if(XBT_LOG_ISENABLED(mc_dpor, xbt_log_priority_debug)){
+ req_str = MC_request_to_string(req);
+ DEBUG1("Execute: %s", req_str);
+ xbt_free(req_str);
+ }
- while (xbt_swag_size(simix_global->process_to_run)) {
- MC_schedule_enabled_processes();
- MC_execute_surf_actions();
- }
+ SIMIX_request_pre(req);
- /* Calculate the enabled transitions set of the next state */
- MC_SET_RAW_MEM;
+ MC_state_set_executed_request(state, req);
+
+ /* Wait for requests (schedules processes) */
+ MC_wait_for_requests();
- xbt_setset_foreach(mc_current_state->transitions, cursor, trans_tmp) {
- if (trans_tmp->process != trans->process) {
- xbt_setset_set_insert(next_state->transitions, trans_tmp);
- }
- }
+ /* Create the new expanded state */
+ MC_SET_RAW_MEM;
+ next_state = MC_state_new();
+ xbt_fifo_unshift(mc_stack, next_state);
+
- MC_trans_compute_enabled(next_state->enabled_transitions,
- next_state->transitions);
-
- /* Choose one transition to interleave from the enabled transition set */
- trans = xbt_setset_set_choose(next_state->enabled_transitions);
- if (trans) {
- DEBUG1("Choosing process %s for next interleave",
- trans->process->name);
- xbt_setset_foreach(next_state->enabled_transitions, cursor,
- trans_tmp) {
- if (trans_tmp->process == trans->process)
- xbt_setset_set_insert(next_state->interleave, trans_tmp);
+ /* Get an enabled process and insert it in the interleave set of the next state */
+ xbt_swag_foreach(process, simix_global->process_list){
+ if(SIMIX_process_is_enabled(process)){
+ xbt_setset_set_insert(next_state->interleave, process);
+ break;
+ }
}
+ MC_UNSET_RAW_MEM;
+
+ /* FIXME: Update Statistics
+ mc_stats->state_size +=
+ xbt_setset_set_size(next_state->enabled_transitions);*/
}
- MC_UNSET_RAW_MEM;
-
- /* Update Statistics */
- mc_stats->state_size +=
- xbt_setset_set_size(next_state->enabled_transitions);
-
/* Let's loop again */
/* The interleave set is empty or the maximum depth is reached, let's back-track */
} else {
- DEBUG0("There are no more transitions to interleave.");
-
+ DEBUG0("There are no more processes to interleave.");
/* Check for deadlocks */
- xbt_setset_substract(mc_current_state->transitions,
- mc_current_state->done);
- if (xbt_setset_set_size(mc_current_state->transitions) > 0) {
- INFO0("**************************");
- INFO0("*** DEAD-LOCK DETECTED ***");
- INFO0("**************************");
- INFO0("Locked transitions:");
- xbt_setset_foreach(mc_current_state->transitions, cursor, trans) {
- INFO3("%s [src=%p, dst=%p]", trans->name,
- trans->wait.comm->src_proc, trans->wait.comm->dst_proc);
+ xbt_swag_foreach(process, simix_global->process_list){
+ if(process->request && !SIMIX_request_isEnabled(process->request)){
+ *mc_exp_ctl = MC_DEADLOCK;
+ return;
}
-
- INFO0("Counter-example execution trace:");
- MC_dump_stack(mc_stack);
-
- MC_print_statistics(mc_stats);
- xbt_abort();
- }
-
- mc_transition_t q = NULL;
- xbt_fifo_item_t item = NULL;
- mc_state_t state = NULL;
+ }
/*
- INFO0("*********************************");
- MC_show_stack(mc_stack); */
+ INFO0("*********************************");
+ MC_show_stack(mc_stack); */
/* Trash the current state, no longer needed */
MC_SET_RAW_MEM;
xbt_fifo_shift(mc_stack);
- MC_state_delete(mc_current_state);
+ MC_state_delete(state);
/* Traverse the stack backwards until a state with a non empty interleave
set is found, deleting all the states that have it empty in the way.
- For each deleted state, check if the transition that has generated it
- (from it's predecesor state), depends on any other previous transition
+ For each deleted state, check if the request that has generated it
+ (from it's predecesor state), depends on any other previous request
executed before it. If it does then add it to the interleave set of the
- state that executed that previous transition. */
- while ((mc_current_state = xbt_fifo_shift(mc_stack)) != NULL) {
- q = mc_current_state->executed_transition;
- xbt_fifo_foreach(mc_stack, item, state, mc_state_t) {
- if (MC_transition_depend(q, state->executed_transition)) {
- xbt_setset_foreach(state->enabled_transitions, cursor, trans) {
- if ((trans->process == q->process)
- && !xbt_setset_set_belongs(state->done, trans)) {
- DEBUG3("%s depend with %s at %p", q->name,
- state->executed_transition->name, state);
-
- xbt_setset_foreach(state->enabled_transitions, cursor,
- trans) {
- if (trans->process == q->process)
- xbt_setset_set_insert(state->interleave, trans);
- }
- /* FIXME: hack to make it work */
- trans = q;
- break;
- }
+ state that executed that previous request. */
+ while ((state = xbt_fifo_shift(mc_stack)) != NULL) {
+ req = MC_state_get_executed_request(state);
+ xbt_fifo_foreach(mc_stack, item, prev_state, mc_state_t) {
+ if(MC_request_depend(req, MC_state_get_executed_request(prev_state))){
+ if(XBT_LOG_ISENABLED(mc_dpor, xbt_log_priority_debug)){
+ DEBUG0("Dependent Transitions:");
+ req_str = MC_request_to_string(MC_state_get_executed_request(prev_state));
+ DEBUG1("%s", req_str);
+ xbt_free(req_str);
+ req_str = MC_request_to_string(req);
+ DEBUG1("%s", req_str);
+ xbt_free(req_str);
}
- if (trans)
- break;
+ xbt_setset_set_insert(prev_state->interleave, req->issuer);
+ break;
}
}
- if (xbt_setset_set_size(mc_current_state->interleave) > 0) {
+ if (xbt_setset_set_size(state->interleave) > 0) {
/* We found a back-tracking point, let's loop */
- xbt_fifo_unshift(mc_stack, mc_current_state);
+ xbt_fifo_unshift(mc_stack, state);
DEBUG1("Back-tracking to depth %d", xbt_fifo_size(mc_stack));
- MC_replay(mc_stack);
+ *mc_exp_ctl = MC_EXPLORE;
MC_UNSET_RAW_MEM;
+ return;
break;
} else {
- MC_state_delete(mc_current_state);
+ MC_state_delete(state);
}
}
}
}
- DEBUG0("We are done");
- /* We are done, show the statistics and return */
- MC_print_statistics(mc_stats);
-}
+ MC_UNSET_RAW_MEM;
+ *mc_exp_ctl = MC_STOP;
+ return;
+}
\ No newline at end of file
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
#include "../surf/surf_private.h"
#include "../simix/private.h"
#include "xbt/fifo.h"
#include "private.h"
+
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_global, mc,
"Logging specific to MC (global)");
/**
* \brief Initialize the model-checker data structures
*/
-void MC_init(int method)
+void MC_init(void)
{
+ smx_process_t process;
+
/* Check if MC is already initialized */
if (initial_snapshot)
return;
/* Create the container for the sets */
mc_setset = xbt_setset_new(20);
- switch (method) {
- case 0:
- MC_dfs_init();
- break;
- case 1:
- MC_dpor_init();
- break;
- default:
- break;
+ /* Add the existing processes to mc's setset so they have an ID designated */
+ xbt_swag_foreach(process, simix_global->process_list){
+ xbt_setset_elm_add(mc_setset, process);
}
+
+ /* Initialize the control variable */
+ mc_exp_ctl = xbt_new0(e_mc_exp_ctl_t, 1);
+ *mc_exp_ctl = MC_EXPLORE;
+
+ MC_UNSET_RAW_MEM;
+
+
/* Save the initial state */
- MC_SET_RAW_MEM;
- initial_snapshot = xbt_new(s_mc_snapshot_t, 1);
+/* MC_SET_RAW_MEM;
+ initial_snapshot = xbt_new0(s_mc_snapshot_t, 1);
MC_take_snapshot(initial_snapshot);
- MC_UNSET_RAW_MEM;
+ MC_UNSET_RAW_MEM;*/
}
-void MC_modelcheck(int method)
+void MC_modelcheck(void)
{
-
- MC_init(method);
-
- switch (method) {
- case 0:
- MC_dfs();
- break;
- case 1:
- MC_dpor();
- break;
- default:
- break;
- }
-
- MC_exit(method);
+ int status;
+ pid_t pid;
+
+ /* Compute initial state */
+ MC_init();
+
+ /* Fork an mc's slave exploration process and wait for it. */
+ /* The forked process will explore a trace until:
+ - a back-tracking point is found (it sets mc_expl_ctl to MC_explore)
+ - there are no more states to explore (it sets mc_expl_ctl to MC_STOP)
+ - a property is invalid (or dead-lock)
+ */
+ while(*mc_exp_ctl == MC_EXPLORE){
+ if((pid = fork())){
+ waitpid(pid, &status, 0);
+ mmalloc_detach(raw_heap);
+ raw_heap = mmalloc_attach(raw_heap_fd, (char*)(std_heap) + STD_HEAP_SIZE + getpagesize());
+
+ if (WIFSIGNALED(status)) {
+ INFO1("killed by signal %d\n", WTERMSIG(status));
+ break;
+ }else if (WIFSTOPPED(status)) {
+ INFO1("stopped by signal %d\n", WSTOPSIG(status));
+ break;
+ }else if (WIFCONTINUED(status)) {
+ INFO0("continued\n");
+ break;
+ }
+
+ if(*mc_exp_ctl == MC_DEADLOCK){
+ INFO0("**************************");
+ INFO0("*** DEAD-LOCK DETECTED ***");
+ INFO0("**************************");
+ MC_dump_stack(mc_stack);
+ MC_print_statistics(mc_stats);
+ break;
+ }
+
+ }else{
+ /* if mc_stack is empty then create first state, otherwise replay */
+ if(xbt_fifo_size(mc_stack) == 0)
+ MC_dpor_init();
+ else
+ MC_replay(mc_stack);
+
+ MC_dpor();
+ MC_memory_exit();
+ break;
+ }
+ }
+
+ /* If we are the mc's master process then exit */
+ if(pid)
+ MC_exit();
}
-void MC_exit(int method)
+void MC_exit(void)
{
- mc_state_t state;
-
- switch (method) {
- case 0:
- //MC_dfs_exit();
- break;
- case 1:
- //MC_dpor_exit();
- break;
- default:
- break;
- }
-
- /* Destroy MC data structures (in RAW memory) */
- MC_SET_RAW_MEM;
- xbt_free(mc_stats);
-
- while ((state = (mc_state_t) xbt_fifo_pop(mc_stack)) != NULL)
- MC_state_delete(state);
-
- xbt_fifo_free(mc_stack);
- xbt_setset_destroy(mc_setset);
- MC_UNSET_RAW_MEM;
+ mmalloc_detach(raw_heap);
+ shm_unlink("raw_heap");
}
int MC_random(int min, int max)
{
- MC_trans_intercept_random(min, max);
- return mc_current_state->executed_transition->random.value;
+ /*FIXME: return mc_current_state->executed_transition->random.value;*/
+ return 0;
}
/**
*/
void MC_replay(xbt_fifo_t stack)
{
+ char *req_str;
+ smx_req_t req = NULL, saved_req = NULL;
xbt_fifo_item_t item;
- mc_transition_t trans;
+ mc_state_t state;
DEBUG0("**** Begin Replay ****");
/* Restore the initial state */
- MC_restore_snapshot(initial_snapshot);
+ /*MC_restore_snapshot(initial_snapshot);*/
- mc_replay_mode = TRUE;
-
- MC_UNSET_RAW_MEM;
+ MC_wait_for_requests();
/* Traverse the stack from the initial state and re-execute the transitions */
for (item = xbt_fifo_get_last_item(stack);
item != xbt_fifo_get_first_item(stack);
item = xbt_fifo_get_prev_item(item)) {
- mc_current_state = (mc_state_t) xbt_fifo_get_item_content(item);
- trans = mc_current_state->executed_transition;
-
+ state = (mc_state_t) xbt_fifo_get_item_content(item);
+ saved_req = MC_state_get_executed_request(state);
+
+ if(saved_req){
+ /* because we got a copy of the executed request, we have to fetch the
+ real one, pointed by the request field of the issuer process */
+ req = saved_req->issuer->request;
+
+ /* Debug information */
+ if(XBT_LOG_ISENABLED(mc_global, xbt_log_priority_debug)){
+ req_str = MC_request_to_string(req);
+ DEBUG1("Replay: %s", req_str);
+ xbt_free(req_str);
+ }
+ }
+
+ SIMIX_request_pre(req);
+ MC_wait_for_requests();
+
/* Update statistics */
mc_stats->visited_states++;
mc_stats->executed_transitions++;
-
- DEBUG1("Executing transition %s", trans->name);
- SIMIX_process_schedule(trans->process);
-
- /* Do all surf's related black magic tricks to keep all working */
- MC_execute_surf_actions();
-
- /* Schedule every process that got enabled due to the executed transition */
- MC_schedule_enabled_processes();
}
- mc_replay_mode = FALSE;
DEBUG0("**** End Replay ****");
}
void MC_show_stack(xbt_fifo_t stack)
{
mc_state_t state;
- mc_transition_t trans;
xbt_fifo_item_t item;
-
+ smx_req_t req;
+ char *req_str = NULL;
+
for (item = xbt_fifo_get_last_item(stack);
(item ? (state = (mc_state_t) (xbt_fifo_get_item_content(item)))
: (NULL)); item = xbt_fifo_get_prev_item(item)) {
- trans = state->executed_transition;
- if (trans) {
- INFO1("%s", trans->name);
+ req = MC_state_get_executed_request(state);
+ if(req){
+ req_str = MC_request_to_string(req);
+ INFO1("%s", req_str);
+ xbt_free(req_str);
}
}
}
/**
* \brief Schedules all the process that are ready to run
- * As a side effect it performs some clean-up required by SIMIX
*/
-void MC_schedule_enabled_processes(void)
+void MC_wait_for_requests(void)
{
- smx_process_t process;
-
- //SIMIX_process_empty_trash();
-
- /* Schedule every process that is ready to run due to an finished action */
- while ((process = xbt_swag_extract(simix_global->process_to_run))) {
- DEBUG2("Scheduling %s on %s", process->name, process->smx_host->name);
- SIMIX_process_schedule(process);
- }
-}
-
-/******************************** States **************************************/
-
-/**
- * \brief Creates a state data structure used by the exploration algorithm
- */
-mc_state_t MC_state_new(void)
-{
- mc_state_t state = NULL;
-
- state = xbt_new0(s_mc_state_t, 1);
- state->created_transitions = xbt_setset_new_set(mc_setset);
- state->transitions = xbt_setset_new_set(mc_setset);
- state->enabled_transitions = xbt_setset_new_set(mc_setset);
- state->interleave = xbt_setset_new_set(mc_setset);
- state->done = xbt_setset_new_set(mc_setset);
- state->executed_transition = NULL;
-
- mc_stats->expanded_states++;
-
- return state;
-}
-
-/**
- * \brief Deletes a state data structure
- * \param trans The state to be deleted
- */
-void MC_state_delete(mc_state_t state)
-{
- xbt_setset_cursor_t cursor;
- mc_transition_t trans;
-
- xbt_setset_foreach(state->created_transitions, cursor, trans) {
- xbt_setset_elm_remove(mc_setset, trans);
- MC_transition_delete(trans);
- }
-
- xbt_setset_destroy_set(state->created_transitions);
- xbt_setset_destroy_set(state->transitions);
- xbt_setset_destroy_set(state->enabled_transitions);
- xbt_setset_destroy_set(state->interleave);
- xbt_setset_destroy_set(state->done);
-
- xbt_free(state);
-}
-
-/************************** SURF Emulation ************************************/
-
-/* Dirty hack, we manipulate surf's clock to simplify the integration of the
- model-checker */
-extern double NOW;
-
-/**
- * \brief Executes all the actions at every model
- */
-void MC_execute_surf_actions(void)
-{
- unsigned int iter;
- surf_action_t action = NULL;
- surf_model_t model = NULL;
- smx_action_t smx_action = NULL;
-
- /* Execute all the actions in every model */
- xbt_dynar_foreach(model_list, iter, model) {
- while ((action = xbt_swag_extract(model->states.running_action_set))) {
- /* FIXME: timeouts are not calculated correctly */
- if (NOW >= action->max_duration) {
- surf_action_state_set(action, SURF_ACTION_DONE);
- smx_action = action->data;
- DEBUG5
- ("Resource [%s] (%d): Executing RUNNING action \"%s\" (%p) MaxDuration %lf",
- model->name, xbt_swag_size(model->states.running_action_set),
- smx_action->name, smx_action, action->max_duration);
-
- if (smx_action)
- SIMIX_action_signal_all(smx_action);
+ char *req_str = NULL;
+ smx_req_t req = NULL;
+
+ do {
+ SIMIX_context_runall(simix_global->process_to_run);
+ while((req = SIMIX_request_pop())){
+ if(!SIMIX_request_isVisible(req))
+ SIMIX_request_pre(req);
+ else if(req->call == REQ_COMM_WAITANY)
+ THROW_UNIMPLEMENTED;
+ else if(XBT_LOG_ISENABLED(mc_global, xbt_log_priority_debug)){
+ req_str = MC_request_to_string(req);
+ DEBUG1("Got: %s", req_str);
+ xbt_free(req_str);
}
}
- /*FIXME: check if this is always empty or not */
- while ((action = xbt_swag_extract(model->states.failed_action_set))) {
- smx_action = action->data;
- DEBUG4("Resource [%s] (%d): Executing FAILED action \"%s\" (%p)",
- model->name, xbt_swag_size(model->states.running_action_set),
- smx_action->name, smx_action);
- if (smx_action)
- SIMIX_action_signal_all(smx_action);
- }
- }
- /* That's it, now go one step deeper into the model-checking process! */
- NOW += 0.5; /* FIXME: Check time increases */
+ } while (xbt_swag_size(simix_global->process_to_run));
}
/****************************** Statistics ************************************/
/************************* Assertion Checking *********************************/
void MC_assert(int prop)
{
- if (!prop) {
+ if (_surf_do_model_check && !prop) {
INFO0("**************************");
INFO0("*** PROPERTY NOT VALID ***");
INFO0("**************************");
xbt_abort();
}
}
+
+void MC_show_deadlock(smx_req_t req)
+{
+ char *req_str = NULL;
+ INFO0("**************************");
+ INFO0("*** DEAD-LOCK DETECTED ***");
+ INFO0("**************************");
+ INFO0("Locked request:");
+ req_str = MC_request_to_string(req);
+ INFO1("%s", req_str);
+ xbt_free(req_str);
+ INFO0("Counter-example execution trace:");
+ MC_dump_stack(mc_stack);
+}
\ No newline at end of file