#! tesh
-! output sort
+! output sort 19
! timeout 30
$ java -classpath ${classpath:=.} async/AsyncTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
! timeout 15
$ java -classpath ${classpath:=.} bittorrent/Bittorrent ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/bittorrent/bittorrent.xml
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} chord/Chord ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/chord/chord.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} cloud/Cloud ${srcdir:=.}/../platforms/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
! timeout 15
$ java -classpath ${classpath:=.} commTime/CommTimeTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/commTime/commTimeDeployment.xml
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} kademlia/Kademlia ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/kademlia/kademlia.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/../platforms/platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/../platforms/platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} migration/Migration ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/migration/migrationDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} mutualExclusion/MutexCentral ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/mutualExclusion/mutex_centralized_deployment.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} pingPong/PingPongTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/pingPong/pingPongDeployment.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} priority/Priority ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/priority/priorityDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-# we have to sort the output as events are delivered in the order of
-# map traversal, which is not portable
-
+#
+# DONT GIVE A SORT LENGTH PREFIX HERE.
+#
+# we want to sort on the whole line so that link destruction events
+# (that are delivered in the order of map traversal) become reproducible
+#
! output sort
+#
$ java -classpath ${classpath:=.} surfPlugin/TestPlugin ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/surfPlugin/surfPluginDeployment.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [0.000000] [jmsg/INFO] Trace: Link created __loopback__
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} suspend/Suspend ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/suspend/suspendDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
> [ 0.000000] (1:suspend.DreamMaster@Jacquelin) Let's create a lazy guy.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} tracing/TracingTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/tracing/tracingPingPongDeployment.xml --cfg=tracing:yes --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:yes
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
# Later modify the commande and specify the platform and deployment path
-! output sort
+! output sort 19
$ lua mult_matrix.lua "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:Sender@Tremblay) Hello From Sender
> [ 0.000000] (1:Sender@Tremblay) Argc=4 (should be 4)
# A little tesh file testing most MPI-related actions
-! output sort
+! output sort 19
$ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml deployment_split.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> WARNING: THIS BINARY IS KINDA DEPRECATED
> This example is still relevant if you want to learn about MSG-based trace replay, but if you want to simulate MPI-like traces, you should use the newer version that is in the examples/smpi/replay directory instead.
> [ 32.703314] (2:p1@Ruby) p1 sleep 12 12.000000
> [ 32.703314] (0:@) Simulation time 32.7033
-! output sort
+! output sort 19
$ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml deployment.xml actions_allReduce.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> WARNING: THIS BINARY IS KINDA DEPRECATED
> This example is still relevant if you want to learn about MSG-based trace replay, but if you want to simulate MPI-like traces, you should use the newer version that is in the examples/smpi/replay directory instead.
> [ 12.268239] (3:p2@Perl) p2 compute 5e8 5.097100
> [ 12.268239] (0:@) Simulation time 12.2682
-! output sort
+! output sort 19
$ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml deployment.xml actions_barrier.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> WARNING: THIS BINARY IS KINDA DEPRECATED
> This example is still relevant if you want to learn about MSG-based trace replay, but if you want to simulate MPI-like traces, you should use the newer version that is in the examples/smpi/replay directory instead.
> [ 0.068527] (1:p0@Tremblay) p0 compute 4.5E6 0.045874
> [ 0.068527] (0:@) Simulation time 0.0685268
-! output sort
+! output sort 19
$ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml deployment.xml actions_bcast.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> WARNING: THIS BINARY IS KINDA DEPRECATED
> This example is still relevant if you want to learn about MSG-based trace replay, but if you want to simulate MPI-like traces, you should use the newer version that is in the examples/smpi/replay directory instead.
> [ 18.402358] (1:p0@Tremblay) p0 reduce 5e8 5e8 6.134119
> [ 18.402358] (0:@) Simulation time 18.4024
-! output sort
+! output sort 19
$ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml deployment.xml actions_reduce.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> WARNING: THIS BINARY IS KINDA DEPRECATED
> This example is still relevant if you want to learn about MSG-based trace replay, but if you want to simulate MPI-like traces, you should use the newer version that is in the examples/smpi/replay directory instead.
> [ 11.231219] (1:p0@Tremblay) p0 compute 5e8 5.097100
> [ 11.231219] (0:@) Simulation time 11.2312
-! output sort
+! output sort 19
$ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml deployment.xml actions_with_isend.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> WARNING: THIS BINARY IS KINDA DEPRECATED
> This example is still relevant if you want to learn about MSG-based trace replay, but if you want to simulate MPI-like traces, you should use the newer version that is in the examples/smpi/replay directory instead.
p Testing the Bittorrent implementation with MSG
! timeout 10
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/bittorrent ${srcdir:=.}/../../platforms/platform.xml ${srcdir:=.}/bittorrent.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:tracker@Jacquelin) Tracker launched.
> [ 0.000000] (2:peer@Boivin) Hi, I'm joining the network with id 2
p Testing the chainsend MSG implementation
! timeout 60
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chainsend ${srcdir:=.}/../../platforms/platform.xml ${srcdir:=.}/deployment_tesh.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n"
> [ 587.704210] (2:peer@Boivin) ### 587.704224 16777216 bytes (Avg 0.027225 MB/s); copy finished (simulated).
> [ 786.931829] (3:peer@Jean_Yves) ### 786.931824 16777216 bytes (Avg 0.020332 MB/s); copy finished (simulated).
p Testing the Chord implementation with MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../../platforms/platform.xml ${srcdir:=.}/chord.xml --cfg=network/crosstraffic:0 --log=msg_chord.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (1:node@Gatien) Joining the ring with id 48, knowing node 1
> [804.364963] (0:@) Messages created: 788
> [804.364963] (0:@) Simulated time: 804.365
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --cfg=network/crosstraffic:0 --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'Constant'
p> Testing the Chord implementation with MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../../platforms/platform.xml ${srcdir:=.}/chord.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:node@Gatien) Joining the ring with id 48, knowing node 1
> [ 0.000000] (2:node@McGee) Joining the ring with id 42, knowing node 1
> [804.365058] (0:@) Messages created: 788
> [804.365058] (0:@) Simulated time: 804.365
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'Constant'
> [ 0.000000] (10:node@node-9.acme.org) Joining the ring with id 2015253, knowing node 1319738
p Testing the mechanism for computing host energy consumption
-! output sort
+! output sort 19
$ $SG_TEST_EXENV energy/consumption/energy_consumption$EXEEXT ${srcdir:=.}/../platforms/energy_platform.xml ${srcdir:=.}/energy/consumption/deployment_consumption.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:dvfs_test@MyHost1) Energetic profile: 95.0:200.0, 93.0:170.0, 90.0:150.0
> [ 0.000000] (1:dvfs_test@MyHost1) Initial peak speed=1E+08 flop/s; Energy dissipated =0E+00 J
p Testing the mechanism for computing host energy consumption
-! output sort
+! output sort 19
$ $SG_TEST_EXENV energy/onoff/onoff$EXEEXT ${srcdir:=.}/energy/onoff/platform_onoff.xml ${srcdir:=.}/energy/onoff/deployment_onoff.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:onoff_test@MyHost2) Energetic profile: 95.0:200.0,93.0:170.0,90.0:150.0, 120:120,110:110
> [ 0.000000] (1:onoff_test@MyHost2) Initial peak speed=1E+08 flop/s; Energy dissipated =0E+00 J
p Testing the DVFS-related functions
-! output sort
+! output sort 19
$ $SG_TEST_EXENV energy/pstate/pstate$EXEEXT ${srcdir:=.}/../platforms/energy_platform.xml ${srcdir:=.}/energy/pstate/deployment_pstate.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3
> [ 0.000000] (2:dvfs_test@MyHost2) Count of Processor states=1
p Testing the remote exception raising feature
-! output sort
+! output sort 19
$ $SG_TEST_EXENV exception/exception ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/exception/deployment_exception.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" "--cfg=exception/cutpath:1"
> [ 0.000000] (1:terrorist@Jacquelin) Let's create a victim.
> [ 0.000000] (2:victim@Jacquelin) Let's work.
p Test1 MSG_comm_test() with Sleep_sender > Sleep_receiver
-! output sort
+! output sort 19
$ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/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
p Test2 MSG_comm_test() with Sleep_sender < Sleep_receiver
-! output sort
+! output sort 19
$ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/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
p Test1 MSG_comm_wait() with Sleep_sender > Sleep_receiver
-! output sort
+! output sort 19
$ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/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
p Test2 MSG_comm_wait() with Sleep_sender < Sleep_receiver
-! output sort
+! output sort 19
$ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/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
p Test1 MSG_comm_waitall() for sender
-! output sort
+! output sort 19
$ ./peer2 ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/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
p Testing the Kademlia implementation with MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/kademlia ${srcdir:=.}/../../platforms/platform.xml ${srcdir:=.}/kademlia.xml "--log=root.fmt:[%10.6r]%e(%02i:%P@%h)%e%m%n"
> [ 0.000000] ( 1:node@Jacquelin) Hi, I'm going to create the network with id 00000000
> [ 0.000000] ( 2:node@Boivin) Hi, I'm going to join the network with id 00000001
p Testing a simple master/slave example application
-! output sort
+! output sort 19
$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platforms/small_platform_with_routers.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
#! ./tesh
p Testing the bypassing of the flexml parser
-! output sort
+! output sort 19
$ $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) :
p Testing a simple master/slave example application
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml masterslave/deployment_masterslave.xml --cfg=network/crosstraffic:0 --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (0:@) Configuration change: Set 'cpu/optim' to 'TI'
p Testing a master/slave example application with a forwarder module
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT msg_platform.xml masterslave/deployment_masterslave_forwarder.xml --cfg=network/crosstraffic:0 --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (0:@) Configuration change: Set 'cpu/optim' to 'TI'
p Testing a simple master/slave example application handling failures
-! output sort
+! output sort 19
$ ${bindir:=.}/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc small_platform_with_failures.xml masterslave/deployment_masterslave.xml --cfg=network/crosstraffic:0 --cfg=path:${srcdir} --cfg=cpu/optim:TI "--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) :
p Testing the bypassing of the flexml parser
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/masterslave_bypass --log=no_loc --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'cpu/optim' to 'TI'
> [ 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.
p Testing a simple master/slave example application
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml masterslave/deployment_masterslave.xml --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'cpu/optim' to 'TI'
> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
p Testing a master/slave example application with a forwarder module
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platforms/platform.xml masterslave/deployment_masterslave_forwarder.xml --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'cpu/optim' to 'TI'
> [ 0.000000] (1:master@Jacquelin) Got 5 slaves and 20 tasks to process
p Testing a simple master/slave example application handling failures
-! output sort
+! output sort 19
$ ${bindir:=.}/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/../platforms/small_platform_with_failures.xml masterslave/deployment_masterslave.xml --cfg=path:${srcdir} --cfg=cpu/optim:TI "--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) :
p Testing the bypassing of the flexml parser
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/masterslave_bypass --log=no_loc --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'cpu/optim' to 'TI'
> [ 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.
p Testing a simple master/slave example application handling failures
-! output sort
+! output sort 19
$ masterslave/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/../platforms/small_platform_with_failures.xml ${srcdir:=.}/masterslave/deployment_masterslave.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--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) :
p Testing a simple master/slave example application handling failures
-! output sort
+! output sort 19
$ masterslave/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/../platforms/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) :
p Testing a master/slave example application with a forwarder module
-! output sort
+! output sort 19
$ $SG_TEST_EXENV masterslave/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/masterslave/deployment_masterslave_forwarder.xml --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (1:master@Jacquelin) Got 5 slaves and 20 tasks to process
p Testing a simple master/slave example application (mailbox version)
-! output sort
+! output sort 19
$ $SG_TEST_EXENV masterslave/masterslave_mailbox$EXEEXT ${srcdir:=.}/../platforms/small_platform_with_routers.xml ${srcdir:=.}/masterslave/deployment_masterslave_mailbox.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'network/crosstraffic' to '0'
> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
p Testing the migration feature of MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV migration/migration ${srcdir:=.}/../platforms/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
p Testing a simple master/slave example application
-! output sort
+! output sort 19
$ $SG_TEST_EXENV parallel_task/parallel_task$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Switching to the L07 model to handle parallel tasks.
> [ 0.009378] (1:test@Fafard) Goodbye now!
> [ 0.009378] (0:@) Simulation time 0.00937836
-! output sort
+! output sort 19
$ $SG_TEST_EXENV parallel_task/test_ptask$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/parallel_task/test_ptask_deployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Switching to the L07 model to handle parallel tasks.
> [ 20.625396] (1:execute@Ginette) execution_time=20.6254
p Testing the Chord implementation with MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/pastry$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platform.xml ${srcdir:=.}/chord.xml --cfg=network/crosstraffic:0 --log=msg_chord.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
p Testing the Chord implementation with MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platform.xml ${srcdir:=.}/chord.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:node@Gatien) Joining the ring with id 48, knowing node 1
> [ 0.000000] (2:node@McGee) Joining the ring with id 42, knowing node 1
> [803.668999] (0:@) Messages created: 768
> [803.668999] (0:@) Simulated time: 803.669
-! output sort
+! output sort 19
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'Constant'
> [ 0.000000] (10:node@node-9.acme.org) Joining the ring with id 2015253, knowing node 1319738
p Testing a simple master/slave example application
-! output sort
+! output sort 19
$ $SG_TEST_EXENV priority/priority$EXEEXT ${srcdir:=.}/../platforms/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
p Testing a MSG application with properties in the XML for Hosts, Links and Processes
-! output sort
+! output sort 19
$ $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] (0:@) There are 7 hosts in the environment
> [ 0.000000] (0:@) Host 'node-3.acme.org' runs at 1000000000 flops/s
p Testing the deprecated CM02 network model
-! output sort
+! output sort 19
$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml --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 'cpu/model' to 'Cas01'
> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
p Testing the surf network Reno fairness model using lagrangian approach
-! output sort
+! output sort 19
$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=host/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 'host/model' to 'compound'
> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
p Testing the surf network Vegas fairness model using lagrangian approach
-! output sort
+! output sort 19
$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=host/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 'host/model' to 'compound'
> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
p Testing the suspend/resume feature of MSG
-! output sort
+! output sort 19
$ $SG_TEST_EXENV suspend/suspend ${srcdir:=.}/../platforms/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...
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/../platforms/small_platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [Jupiter:process1:(1) 0.000000] [jmsg/INFO] Master Hello!
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/../platforms/small_platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
#! tesh
-! output sort
+! output sort 19
$ java -classpath ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Using regular java threads. Coroutines could speed your simulation up.
< replay/actions_waitall.txt
$ mkfile replay/one_trace
-! output sort
+! output sort 19
$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/../platforms/small_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace --log=smpi_kernel.thres:warning
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'surf/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [set-output-sort-1:64] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz'
> Test suite `set-output-sort-1' OK
-p Check the default prefix length (19) for "output sort"
-! output sort
+p Check the Right Prefix Length (19) for "output sort"
+! output sort 19
< 12345678901234567 B line
< 12345678901234567 A line
$ cat
> 12345678901234567 A line
> 12345678901234567 B line
-! output sort
+! output sort 19
< 123456789012345678 B line
< 123456789012345678 A line
$ cat
! expect return 2
! output ignore
-< ! output sort
+< ! output sort 19
< < 123456789012345678 B line
< < 123456789012345678 A line
< $ cat
"output display" -> output displayed (but not verified)
"output sort" -> sorts the display before verifying it (see below)
.SH SORTING OUTPUT
-Sorting the output seems to be a strange idea, but it is mandatory in
-SimGrid since the processes run out of order at any scheduling point
-(ie, every processes ready to run at simulated time t run in
-parallel). To ensure that the simulator outputs still match, we have
-to sort the output back before comparing it.
-
-We expect the simulators to run with that log formatting argument:
- --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
-Then, tesh sorts string on the 19 first chars only, and is stable when
-line beginnings are equal. This should ensure that:
- (1) tesh is effective (no false positive, no false negative)
- (2) scheduling points are separated from each other
- (3) at each scheduling point, processes are separated from each other
- (4) the order of what a given process says at a given scheduling
- point is preserved.
-
-This is of course very SimGrid oriented, breaking the generality of
-tesh, but who cares, actually?
-
-If you want to change the length of the prefix used for the sort,
-simply specify it after the output sort directive, like this:
-
-! output sort 22
+
+SimGrid is designed to produce perfectly reproducible results, so its
+output can usualy be compared without any preprocessing. This is not
+true anymore when the user activates parallel execution: User
+processes are run in parallel at each timestamp, and the output is not
+reproducible anymore. Until you sort the lines.
+
+If you ask for
+.B ! output sort
+then tesh will sort the whole lines. But it really complicates the
+analysis of the error detected: the logical order of the output is
+defeated by the lexicographical sort.
+
+The solution is to ask for
+.B ! output sort 19
+instead to sort only on the prefix of the line. Indeed, we run our simulation
+tests with the flag:
+ --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
+
+Then, the previous command sorts lines on the first 19 chars, that is
+exactly the length of the prefix indicating the timestamp and the
+process. That's exactly what we need:
+ - Every timestamps remain separated, as it should;
+ - In each timestamp, the output order of processes become
+ reproducible: that's the lexicographical order of their name;
+ - For each process, the order of its execution is preserved: its
+ messages within a given timestamp are not reordered.
+
+That way, tesh can do its job (no false positive, no false negative)
+despite the unpredictable order of executions of processes within a
+timestamp, and reported errors remain easy to analyze (execution of a
+given process preserved).
+
+This is of course very SimGrid oriented, but could even be usable by
+others, who knows?
+
.SH ENVIRONMENT
You can add some content to the tested processes environment with the
setenv metacommand. It works as expected. For example:
"setenv PATH=/bin"
.SH BUGS
-No known bugs.
+No known bugs.
my $diff_tool=0;
my $diff_tool_tmp_fh=0;
my $diff_tool_tmp_filename=0;
-my $sort_prefix = 19;
+my $sort_prefix = -1;
my $tesh_file;
my $tesh_name;
my $error=0;
substr($a, 0, $sort_prefix) cmp substr($b, 0, $sort_prefix)
}
use sort 'stable';
- @got = sort mysort @got;
+ if ($sort_prefix>0) {
+ @got = sort mysort @got;
+ } else {
+ @got = sort @got;
+ }
while (@got and $got[0] eq "") {
shift @got;
}
# Sort the expected output to make it easier to write for humans
if(defined($cmd{'out'})){
- @{$cmd{'out'}}=sort mysort @{$cmd{'out'}};
+ if ($sort_prefix>0) {
+ @{$cmd{'out'}} = sort mysort @{$cmd{'out'}};
+ } else {
+ @{$cmd{'out'}} = sort @{$cmd{'out'}};
+ }
while (@{$cmd{'out'}} and ${$cmd{'out'}}[0] eq "") {
shift @{$cmd{'out'}};
}
print "Output of <$cmd{'file'}:$cmd{'line'}> mismatch".($cmd{'sort'}?" (even after sorting)":"").":\n";
map { print "$_\n" } split(/\n/,$diff);
if ($cmd{'sort'}) {
- print "WARNING: both the observed output and expected output were sorted as requested.\n";
- print "----8<--------------- Begin of unprocessed observed output (as it should appear in file):\n";
- map {print "> $_\n"} @{$cmd{'unsorted got'}};
- print "--------------->8---- End of the unprocessed observed output.\n";
+ print "WARNING: Both the observed output and expected output were sorted as requested.\n";
+ print "WARNING: Output were only sorted using the $sort_prefix first chars.\n"
+ if ($sort_prefix>0);
+ print "WARNING: Use <! output sort 19> to sort by simulated date and process ID only.\n";
+ # print "----8<--------------- Begin of unprocessed observed output (as it should appear in file):\n";
+ # map {print "> $_\n"} @{$cmd{'unsorted got'}};
+ # print "--------------->8---- End of the unprocessed observed output.\n";
}
print "Test suite `$cmd{'file'}': NOK (<$cmd{'file'}:$cmd{'line'}> output mismatch)\n";