Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Biggest commit ever (SIMIX2): the user processes can now run in parallel
authorthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 2 Dec 2010 13:05:32 +0000 (13:05 +0000)
committerthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 2 Dec 2010 13:05:32 +0000 (13:05 +0000)
in SIMIX

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8873 48e7efb5-ca39-0410-a469-dd3cf9ba447f

158 files changed:
ChangeLog
buildtools/Cmake/DefinePackages.cmake
examples/gras/all2all/test_sg_32 [changed mode: 0755->0644]
examples/gras/all2all/test_sg_64 [changed mode: 0755->0644]
examples/gras/mmrpc/test_sg_32 [changed mode: 0755->0644]
examples/gras/mmrpc/test_sg_64 [changed mode: 0755->0644]
examples/gras/ping/ping_client.c
examples/gras/ping/test_sg_32 [changed mode: 0755->0644]
examples/gras/ping/test_sg_64 [changed mode: 0755->0644]
examples/gras/pmm/test_sg_32 [changed mode: 0755->0644]
examples/gras/pmm/test_sg_64 [changed mode: 0755->0644]
examples/gras/properties/test_sg [changed mode: 0755->0644]
examples/gras/rpc/test_sg_32
examples/gras/rpc/test_sg_64
examples/lua/mult_matrix.tesh
examples/msg/actions/actions.c
examples/msg/actions/actions.tesh
examples/msg/icomms/peer.tesh
examples/msg/masterslave/masterslave.tesh
examples/msg/masterslave/masterslave_bypass.tesh
examples/msg/masterslave/masterslave_console.tesh
examples/msg/masterslave/masterslave_cpu_ti.tesh
examples/msg/masterslave/masterslave_failure.tesh
examples/msg/masterslave/masterslave_forwarder.tesh
examples/msg/masterslave/masterslave_mailbox.tesh
examples/msg/mc/bugged1.c
examples/msg/migration/migration.tesh
examples/msg/parallel_task/parallel_task.tesh
examples/msg/priority/priority.tesh
examples/msg/properties/msg_prop.tesh
examples/msg/sendrecv/sendrecv_CLM03.tesh
examples/msg/sendrecv/sendrecv_Reno.tesh
examples/msg/sendrecv/sendrecv_Vegas.tesh
examples/msg/suspend/suspend.tesh
examples/msg/trace/trace.tesh
include/msg/datatypes.h
include/msg/msg.h
include/xbt/dynar.h
include/xbt/ex.h
include/xbt/threadpool.h [new file with mode: 0644]
src/bindings/lua/simgrid_lua.c
src/gras/Msg/rpc.c
src/gras/Msg/sg_msg.c
src/gras/Transport/README
src/gras/Transport/sg_transport.c
src/gras/Transport/transport_plugin_sg.c
src/gras/Virtu/rl_process.c
src/gras/Virtu/sg_dns.c
src/gras/Virtu/sg_emul.c
src/gras/Virtu/sg_process.c
src/gras/Virtu/virtu_sg.h
src/gras/gras.c
src/include/mc/mc.h
src/include/simix/context.h
src/include/simix/datatypes.h
src/include/simix/simix.h
src/include/surf/surf.h
src/include/xbt/xbt_os_thread.h
src/instr/smpi_instr.c
src/instr/smx_instr.c
src/mc/mc_checkpoint.c
src/mc/mc_dfs.c [deleted file]
src/mc/mc_dpor.c
src/mc/mc_global.c
src/mc/mc_memory.c
src/mc/mc_request.c [new file with mode: 0644]
src/mc/mc_state.c [new file with mode: 0644]
src/mc/mc_transition.c [deleted file]
src/mc/memory_map.c
src/mc/private.h
src/msg/environment.c
src/msg/global.c
src/msg/gos.c
src/msg/host.c
src/msg/m_process.c
src/msg/mailbox.h
src/msg/msg_mailbox.c
src/msg/private.h
src/msg/task.c
src/simdag/sd_global.c
src/simix/host_private.h [new file with mode: 0644]
src/simix/network_private.h [new file with mode: 0644]
src/simix/private.h
src/simix/process_private.h [new file with mode: 0644]
src/simix/smurf_private.h [new file with mode: 0644]
src/simix/smx_action.c [deleted file]
src/simix/smx_context_base.c
src/simix/smx_context_java.c
src/simix/smx_context_private.h
src/simix/smx_context_ruby.c
src/simix/smx_context_sysv.c
src/simix/smx_context_sysv_private.h
src/simix/smx_context_thread.c
src/simix/smx_deployment.c
src/simix/smx_environment.c
src/simix/smx_global.c
src/simix/smx_host.c
src/simix/smx_network.c
src/simix/smx_process.c
src/simix/smx_smurf.c [new file with mode: 0644]
src/simix/smx_synchro.c
src/simix/smx_user.c [new file with mode: 0644]
src/simix/synchro_private.h [new file with mode: 0644]
src/smpi/private.h
src/smpi/smpi_base.c
src/smpi/smpi_bench.c
src/smpi/smpi_global.c
src/smpi/smpi_pmpi.c
src/smpi/smpi_util.c
src/surf/surf.c
src/surf/surf_config.c
src/surf/surf_model_timer.c [deleted file]
src/xbt/dynar.c
src/xbt/ex.c
src/xbt/mmalloc/attach.c
src/xbt/mmalloc/detach.c
src/xbt/mmalloc/mm_legacy.c
src/xbt/mmalloc/mmprivate.h
src/xbt/threadpool.c [new file with mode: 0644]
src/xbt/threadpool_private.h [new file with mode: 0644]
src/xbt/xbt_log_layout_format.c
src/xbt/xbt_os_thread.c
src/xbt/xbt_rl_synchro.c
src/xbt/xbt_sg_stubs.c
src/xbt/xbt_sg_synchro.c
src/xbt/xbt_sg_time.c
teshsuite/gras/msg_handle/test_sg_32 [changed mode: 0755->0644]
teshsuite/gras/msg_handle/test_sg_64 [changed mode: 0755->0644]
teshsuite/msg/get_sender.tesh
teshsuite/simdag/basic0.tesh
teshsuite/simdag/basic1.tesh
teshsuite/simdag/basic2.tesh
teshsuite/simdag/basic3.tesh
teshsuite/simdag/basic4.tesh
teshsuite/simdag/basic5.tesh
teshsuite/simdag/basic6.tesh
teshsuite/simdag/network/mxn/test_intra_all2all.tesh
teshsuite/simdag/network/mxn/test_intra_independent_comm.tesh
teshsuite/simdag/network/mxn/test_intra_scatter.tesh
teshsuite/simdag/network/p2p/test_latency1.tesh
teshsuite/simdag/network/p2p/test_latency2.tesh
teshsuite/simdag/network/p2p/test_latency3.tesh
teshsuite/simdag/network/p2p/test_latency_bound.tesh
teshsuite/simdag/network/test_reinit_costs.tesh
teshsuite/simdag/partask/test_comp_only_par.tesh
teshsuite/simdag/partask/test_comp_only_seq.tesh
teshsuite/simdag/platforms/basic_parsing_test.tesh
teshsuite/simdag/platforms/basic_parsing_test_failing.tesh
teshsuite/simdag/platforms/basic_parsing_test_sym_full.tesh
teshsuite/simdag/platforms/flatifier.tesh
teshupdate.pl [new file with mode: 0755]
testsuite/surf/CMakeLists.txt
testsuite/surf/surf_usage.c
testsuite/surf/surf_usage2.c
testsuite/xbt/CMakeLists.txt
tools/tesh/README.tesh
tools/tesh/run_context.c
tools/tesh/run_context.h

index 8716ddd..82f0277 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 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
index fe62800..4d08ea5 100644 (file)
@@ -17,6 +17,7 @@ set(EXTRA_DIST
        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
@@ -197,6 +198,7 @@ set(XBT_SRC
        src/xbt/cunit.c
        src/xbt/graphxml_parse.c
        src/xbt/setset.c
+       src/xbt/threadpool.c
 )
 
 if(HAVE_MMAP)
@@ -230,7 +232,6 @@ set(SURF_SRC
        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
@@ -242,12 +243,13 @@ set(SIMIX_SRC
        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
@@ -357,11 +359,11 @@ set(RUBY_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
 )
 
old mode 100755 (executable)
new mode 100644 (file)
index 7c84f53..dd06cc4
@@ -1,61 +1,62 @@
-$ $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
old mode 100755 (executable)
new mode 100644 (file)
index 1f0f404..2c3af03
@@ -1,63 +1,64 @@
 #! ./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
old mode 100755 (executable)
new mode 100644 (file)
index 4522d96..9c7cb37
@@ -1,9 +1,10 @@
-$ $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
old mode 100755 (executable)
new mode 100644 (file)
index 6c15d37..490d4c5
@@ -1,10 +1,11 @@
-$ $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
 
index 701499f..3d0796c 100644 (file)
@@ -67,8 +67,7 @@ int client(int argc, char *argv[])
     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 {
old mode 100755 (executable)
new mode 100644 (file)
index dbf9fc8..ce11894
@@ -1,19 +1,20 @@
 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
old mode 100755 (executable)
new mode 100644 (file)
index 8b8e087..a19051c
@@ -1,20 +1,21 @@
 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
 
old mode 100755 (executable)
new mode 100644 (file)
index adc927d..393e8f2
@@ -1,37 +1,38 @@
-$ $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
old mode 100755 (executable)
new mode 100644 (file)
index ffb117a..dedda62
@@ -1,39 +1,40 @@
 #! ./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
old mode 100755 (executable)
new mode 100644 (file)
index c5102ed..ebf5a1a
@@ -1,22 +1,23 @@
 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
index da38cc5..b236540 100755 (executable)
@@ -5,9 +5,9 @@
 # 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
index da38cc5..b236540 100755 (executable)
@@ -5,9 +5,9 @@
 # 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
index 24fd093..6b389ba 100644 (file)
@@ -2,12 +2,13 @@
 
 # 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
index 63a1040..0e7e3f9 100644 (file)
@@ -251,27 +251,27 @@ static void barrier(xbt_dynar_t action)
     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;
   }
 
index 1936080..632a2bf 100644 (file)
@@ -1,76 +1,81 @@
 # 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
index 8646717..5c75a0f 100644 (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!
 
 
index f2f2dc0..8506b60 100644 (file)
 
 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!
index 5dd5019..3e870c9 100644 (file)
 #! ./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!
index fbd8ab2..2ab90f6 100644 (file)
@@ -1,95 +1,96 @@
 #! ./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!
index f11de06..be85695 100644 (file)
 
 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!
index c72f58b..d5b87d7 100644 (file)
@@ -2,93 +2,94 @@
 
 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!
index 82e2702..dac111d 100644 (file)
 
 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!
index 32138b6..2906429 100644 (file)
@@ -2,32 +2,33 @@
 
 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!
index b83efd7..10ef4ce 100644 (file)
@@ -58,6 +58,10 @@ int main(int argc, char *argv[])
 
   MSG_main();
 
+  INFO0("MSG_main finished");
+  
+  MSG_clean();
+
   return 0;
 
 }
index d5b681b..6ed1f1b 100644 (file)
@@ -2,9 +2,10 @@
 
 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
index 6bd609d..fd26898 100644 (file)
@@ -2,15 +2,17 @@
 
 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 
index 54f4edf..0d79753 100644 (file)
@@ -2,9 +2,10 @@
 
 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!
index 07f9070..472d8f9 100644 (file)
@@ -2,15 +2,16 @@
 
 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
index 478e23a..77ee06e 100644 (file)
@@ -2,22 +2,23 @@
 
 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 ----
 
index f01be06..296f8a0 100644 (file)
@@ -3,20 +3,21 @@
 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 ----
index 0f5a584..32229e4 100644 (file)
@@ -2,20 +2,21 @@
 
 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 ----
index ccac46f..51d26f6 100644 (file)
@@ -2,12 +2,13 @@
 
 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.
index 3d14f38..cb31bf4 100644 (file)
 
 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
index 494661e..84d956d 100644 (file)
@@ -65,7 +65,7 @@ typedef struct m_task *m_task_t;
 */
 #define MSG_TASK_UNINITIALIZED NULL
 
-typedef struct s_smx_comm *msg_comm_t;
+typedef struct s_smx_action *msg_comm_t;
 /** @} */
 
 
@@ -105,7 +105,7 @@ typedef int m_channel_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 @{ */
 
index 1d07841..f83be03 100644 (file)
@@ -155,9 +155,6 @@ XBT_PUBLIC(void) MSG_task_set_priority(m_task_t task, double priority);
 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);
 
@@ -197,9 +194,6 @@ 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);
 
index a1ff0f6..b38a3e6 100644 (file)
@@ -88,7 +88,8 @@ XBT_PUBLIC(void) xbt_dynar_dump(xbt_dynar_t dynar);
 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,
index 1f7e538..50a4ef7 100644 (file)
@@ -259,6 +259,7 @@ typedef enum {
   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 */
@@ -289,50 +290,53 @@ typedef struct {
   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 *);
@@ -344,7 +348,7 @@ extern void __xbt_ex_terminate_default(xbt_ex_t * e);
  */
 #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; \
@@ -393,18 +397,18 @@ extern void __xbt_ex_terminate_default(xbt_ex_t * e);
         } \
         __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
@@ -425,24 +429,23 @@ extern void __xbt_ex_terminate_default(xbt_ex_t * e);
  */
 
 #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 */
@@ -483,10 +486,11 @@ extern void __xbt_ex_terminate_default(xbt_ex_t * e);
  */
 #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)
 
@@ -494,8 +498,8 @@ extern void __xbt_ex_terminate_default(xbt_ex_t * e);
 #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);                                      \
diff --git a/include/xbt/threadpool.h b/include/xbt/threadpool.h
new file mode 100644 (file)
index 0000000..e941c9e
--- /dev/null
@@ -0,0 +1,46 @@
+/* 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
index 7682f08..96b2747 100644 (file)
@@ -558,11 +558,17 @@ static int create_environment(lua_State * L)
   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;
 }
index 61dc2fd..c2f794a 100644 (file)
@@ -189,23 +189,23 @@ void gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx, void *answer)
     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);
index a45a728..1f586f3 100644 (file)
@@ -41,11 +41,17 @@ int gras_socket_im_the_server(gras_socket_t sock) {
   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));
@@ -53,8 +59,10 @@ int gras_socket_im_the_server(gras_socket_t sock) {
   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) {
@@ -63,8 +71,10 @@ int gras_socket_im_the_server(gras_socket_t sock) {
     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!! */
@@ -90,10 +100,10 @@ gras_msg_t gras_msg_recv_any(void)
       (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) {
@@ -142,8 +152,8 @@ gras_msg_t gras_msg_recv_any(void)
                 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)?
@@ -152,16 +162,16 @@ gras_msg_t gras_msg_recv_any(void)
   }
   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) {
@@ -171,7 +181,7 @@ gras_msg_t gras_msg_recv_any(void)
   }
   */
   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);
 
@@ -187,7 +197,7 @@ void gras_msg_send_ext(gras_socket_t sock,
   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 =
@@ -231,8 +241,8 @@ void gras_msg_send_ext(gras_socket_t sock,
                                                 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)");
 
index d6b3aac..e65d53d 100644 (file)
@@ -37,7 +37,7 @@ typedef struct {
     
   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
index 6079f08..9056dd1 100644 (file)
@@ -41,8 +41,8 @@ gras_socket_t gras_trp_select(double timeout)
   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);
@@ -70,7 +70,7 @@ gras_socket_t gras_trp_select(double 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;
     }
@@ -107,21 +107,21 @@ gras_socket_t gras_trp_select(double timeout)
   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;
 }
index 5f419a5..af76cb1 100644 (file)
@@ -87,12 +87,13 @@ static int gras_trp_sg_peer_port(gras_socket_t s) {
   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) {
@@ -138,11 +139,11 @@ void gras_trp_sg_socket_client(gras_trp_plugin_t self,
   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);
@@ -178,15 +179,15 @@ void gras_trp_sg_socket_client(gras_trp_plugin_t self,
 
   /* 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);
 }
@@ -195,7 +196,7 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, int port, gras_socket_t s
 {
 
   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;
 
@@ -209,15 +210,15 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, int port, gras_socket_t s
   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);
@@ -226,14 +227,14 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, int port, gras_socket_t s
   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,
@@ -246,7 +247,7 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, int port, gras_socket_t s
 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;
 
@@ -316,7 +317,7 @@ void gras_trp_sg_chunk_send_raw(gras_socket_t sock,
     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);
@@ -330,7 +331,7 @@ int gras_trp_sg_chunk_recv(gras_socket_t sock,
   //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;
@@ -356,18 +357,18 @@ int gras_trp_sg_chunk_recv(gras_socket_t sock,
   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);
@@ -376,7 +377,7 @@ int gras_trp_sg_chunk_recv(gras_socket_t sock,
     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;
 }
index 33d37c0..20d26ed 100644 (file)
@@ -116,7 +116,7 @@ void gras_agent_spawn(const char *name,
   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);
 }
 
 /* **************************************************************************
index 9269b0e..cf15311 100644 (file)
 
 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();
 }
index 4734db0..62be7c2 100644 (file)
@@ -20,26 +20,11 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_virtu_emul, gras_virtu,
 /*** 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);
   }
 }
 
index 2e2ed98..d16c067 100644 (file)
@@ -27,8 +27,8 @@ void gras_agent_spawn(const char *name,
                       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);
 }
 
 /* **************************************************************************
@@ -38,27 +38,26 @@ void gras_agent_spawn(const char *name,
 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();
@@ -70,8 +69,8 @@ void gras_process_init()
   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()
@@ -81,9 +80,9 @@ 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");
@@ -98,7 +97,7 @@ void gras_process_exit()
   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;
@@ -137,7 +136,7 @@ void gras_process_exit()
 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)");
 
@@ -146,12 +145,12 @@ gras_procdata_t *gras_procdata_get(void)
 
 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);
 }
@@ -159,9 +158,8 @@ void *gras_libdata_by_name_from_remote(const char *name, smx_process_t p)
 /** @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
@@ -169,40 +167,20 @@ const char *gras_process_property_value(const char *name)
  */
 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;
 }
@@ -211,8 +189,8 @@ int gras_os_getpid(void)
 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);
 }
 
@@ -222,7 +200,7 @@ const char *gras_os_host_property_value(const char *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()));
 }
 
@@ -260,9 +238,7 @@ void gras_main()
   /* Clean IO before the run */
   fflush(stdout);
   fflush(stderr);
-  SIMIX_init();
-
-  while (SIMIX_solve(NULL, NULL) != -1.0);
+  SIMIX_run();
 
   return;
 }
index 1ff489f..70f7c10 100644 (file)
@@ -36,7 +36,7 @@ typedef struct {
 
   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;
index 9e826f7..dedb373 100644 (file)
@@ -70,7 +70,7 @@ XBT_LOG_EXTERNAL_CATEGORY(gras_virtu_process);
 
 void gras_init(int *argc, char **argv)
 {
-
+  int first = 0;
   gras_procdata_t *pd;
   gras_msg_procdata_t msg_pd;
   VERB0("Initialize GRAS");
@@ -83,6 +83,7 @@ void gras_init(int *argc, char **argv)
    *    - 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);
@@ -110,6 +111,7 @@ void gras_init(int *argc, char **argv)
     gras_trp_register();
     gras_msg_register();
   }
+  gras_running_process++;
 
   /*
    * Initialize the process specific stuff
@@ -119,7 +121,7 @@ void gras_init(int *argc, char **argv)
   /*
    * 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();
index 1d9f521..bdc16bd 100644 (file)
 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);
index 4d5b8d6..be146fe 100644 (file)
 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);
 
index fde4f6f..1064d27 100644 (file)
@@ -4,8 +4,8 @@
 /* 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"
@@ -27,32 +27,34 @@ SG_BEGIN_DECL()
     \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  
@@ -67,13 +69,25 @@ typedef struct s_smx_process *smx_process_t;
 
 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()
index 25fc374..a35d716 100644 (file)
 
 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 */
index 277069f..275b481 100644 (file)
@@ -144,16 +144,6 @@ XBT_PUBLIC_DATA(routing_global_t) global_routing;
  */
 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
@@ -292,7 +282,6 @@ typedef struct surf_model {
 
 
   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;
@@ -335,16 +324,6 @@ typedef struct surf_resource_lmm {
 /**************************************/
 
 
-/** \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
  */
@@ -607,11 +586,11 @@ XBT_PUBLIC_DATA(xbt_cfg_t) _surf_cfg_set;
  *
  *  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 */
@@ -640,6 +619,7 @@ XBT_PUBLIC(void) surf_presolve(void);
 
 /** \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
@@ -648,7 +628,7 @@ XBT_PUBLIC(void) surf_presolve(void);
  *  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
index 122d238..c88e733 100644 (file)
@@ -36,11 +36,15 @@ XBT_PUBLIC(int) xbt_os_thread_atfork(void (*prepare)(void),
 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);
index e02385f..07d8cc1 100644 (file)
@@ -79,7 +79,7 @@ void TRACE_smpi_init(int rank)
   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);
index 51be389..6924284 100644 (file)
@@ -10,7 +10,7 @@
 
 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)
index de1ec3a..d416f72 100644 (file)
@@ -1,23 +1,74 @@
 #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);
 }
diff --git a/src/mc/mc_dfs.c b/src/mc/mc_dfs.c
deleted file mode 100644 (file)
index a3dec04..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#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);
-}
index 93e7d07..02c1d05 100644 (file)
@@ -15,44 +15,33 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_dpor, mc,
 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); */
 }
 
 
@@ -62,176 +51,134 @@ void MC_dpor_init()
  */
 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
index 9cd6c7f..c4b4b15 100644 (file)
@@ -1,8 +1,13 @@
+#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)");
 
@@ -17,8 +22,10 @@ char mc_replay_mode = FALSE;
 /**
  *  \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;
@@ -37,74 +44,94 @@ void MC_init(int method)
   /* 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;
 }
 
 /**
@@ -114,40 +141,46 @@ int MC_random(int min, int max)
 */
 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 ****");
 }
 
@@ -171,125 +204,44 @@ void MC_dump_stack(xbt_fifo_t stack)
 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 ************************************/
@@ -308,7 +260,7 @@ void MC_print_statistics(mc_stats_t stats)
 /************************* Assertion Checking *********************************/
 void MC_assert(int prop)
 {
-  if (!prop) {
+  if (_surf_do_model_check && !prop) {
     INFO0("**************************");
     INFO0("*** PROPERTY NOT VALID ***");
     INFO0("**************************");
@@ -318,3 +270,17 @@ void MC_assert(int prop)
     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
index 7b191a9..769f948 100644 (file)
@@ -1,15 +1,11 @@
-#include <stdlib.h>
-#include <stdio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
 #include "mc/mc.h"
-#include "xbt/sysdep.h"
 #include "private.h"
 #include "xbt/log.h"
-#include <unistd.h>
 #define _GNU_SOURCE
 
-extern char *basename(__const char *__filename);
 
-#define STD_HEAP_SIZE   20480000        /* Maximum size of the system's heap */
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_memory, mc,
                                 "Logging specific to MC (memory)");
@@ -18,70 +14,18 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_memory, mc,
 void *std_heap = NULL;          /* memory erased each time the MC stuff rollbacks to the beginning. Almost everything goes here */
 void *raw_heap = NULL;          /* memory persistent over the MC rollbacks. Only MC stuff should go there */
 
-/* Pointers to the beginning and end of the .data and .bss segment of libsimgrid */
-/* They are initialized once at memory_init */
-void *libsimgrid_data_addr_start = NULL;
-size_t libsimgrid_data_size = 0;
-
 /* Initialize the model-checker memory subsystem */
-/* It creates the heap regions and set the default one */
<