Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Tesh: Use 0 as a default sorting prefix
authorMartin Quinson <martin.quinson@loria.fr>
Sat, 25 Jul 2015 20:32:15 +0000 (22:32 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Sat, 25 Jul 2015 20:32:31 +0000 (22:32 +0200)
I used 'output sort' to deal with events that occure in order of map
traversal, and could not devise why it was uneffective. Until I digged
deep in tesh again.

So use a sensible, unsurprising value, and change it where needed. And
update the documentation, just in case someone would read it in a
parallel dimension.

53 files changed:
examples/java/async/async.tesh
examples/java/bittorrent/bittorrent.tesh
examples/java/chord/chord.tesh
examples/java/cloud/cloud.tesh
examples/java/commTime/commtime.tesh
examples/java/kademlia/kademlia.tesh
examples/java/master_slave_bypass/bypass.tesh
examples/java/master_slave_kill/kill.tesh
examples/java/masterslave/masterslave.tesh
examples/java/migration/migration.tesh
examples/java/mutualExclusion/mutualexclusion.tesh
examples/java/pingPong/pingpong.tesh
examples/java/priority/priority.tesh
examples/java/surfPlugin/surf_plugin.tesh
examples/java/suspend/suspend.tesh
examples/java/tracing/tracingPingPong.tesh
examples/lua/multi_matrix/mult_matrix.tesh
examples/msg/actions/actions.tesh
examples/msg/bittorrent/bittorrent.tesh
examples/msg/chainsend/chainsend.tesh
examples/msg/chord/chord.tesh
examples/msg/chord/chord_crosstraffic.tesh
examples/msg/energy/consumption/energy_consumption.tesh
examples/msg/energy/onoff/onoff.tesh
examples/msg/energy/pstate/pstate.tesh
examples/msg/exception/exception.tesh
examples/msg/icomms/peer.tesh
examples/msg/kademlia/kademlia.tesh
examples/msg/masterslave/masterslave.tesh
examples/msg/masterslave/masterslave_bypass.tesh
examples/msg/masterslave/masterslave_cpu_ti.tesh
examples/msg/masterslave/masterslave_cpu_ti_crosstraffic.tesh
examples/msg/masterslave/masterslave_failure.tesh
examples/msg/masterslave/masterslave_failure_crosstraffic.tesh
examples/msg/masterslave/masterslave_forwarder.tesh
examples/msg/masterslave/masterslave_mailbox.tesh
examples/msg/migration/migration.tesh
examples/msg/parallel_task/parallel_task.tesh
examples/msg/pastry/pastry.tesh
examples/msg/pastry/pastry_crosstraffic.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/scala/master_slave_bypass/bypass.tesh
examples/scala/master_slave_kill/kill.tesh
examples/scala/masterslave/masterslave.tesh
examples/smpi/replay/smpi_replay.tesh
tools/tesh/set-output-sort.tesh
tools/tesh/tesh.1
tools/tesh/tesh.pl

index d5b93f7..8a487e1 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index ae621b9..89c28c2 100644 (file)
@@ -1,6 +1,6 @@
 #! tesh
 
-! output sort
+! output sort 19
 ! timeout 15
 
 $ java -classpath ${classpath:=.} bittorrent/Bittorrent ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/bittorrent/bittorrent.xml
index f523ed0..4168a5c 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index a76287c..64a3c4b 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index bdc2531..cdd101c 100644 (file)
@@ -1,6 +1,6 @@
 #! tesh
 
-! output sort
+! output sort 19
 ! timeout 15
 
 $ java -classpath ${classpath:=.} commTime/CommTimeTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/commTime/commTimeDeployment.xml
index 1238bbd..d9a0acf 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 2e04e65..01efba0 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index bab8eb1..022b338 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 0e98d44..83b8fdb 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 5b195fd..9139002 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index f3d1def..c744230 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index aaa1d3b..69c7dfe 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index b19afc7..32747db 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index c425c63..f0f720d 100644 (file)
@@ -1,9 +1,13 @@
 #! 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__
index c726f18..ec22ec7 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 6f90c1d..f86e589 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 1710a8c..47aa928 100644 (file)
@@ -2,7 +2,7 @@
 
 # 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)
index 2a63d9a..0817df9 100644 (file)
@@ -1,6 +1,6 @@
 # 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.
@@ -10,7 +10,7 @@ $ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/
 > [ 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.
@@ -23,7 +23,7 @@ $ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/
 > [ 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.
@@ -37,7 +37,7 @@ $ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/
 > [  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.
@@ -59,7 +59,7 @@ $ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/
 > [ 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.
@@ -72,7 +72,7 @@ $ ${bindir:=.}/actions --log=actions.thres=verbose ${srcdir:=.}/../../platforms/
 > [ 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.
index 9b4961a..651b01d 100755 (executable)
@@ -3,7 +3,7 @@
 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
index 34851f7..c2db320 100644 (file)
@@ -3,7 +3,7 @@
 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).
index e60689d..4e6e121 100644 (file)
@@ -2,7 +2,7 @@
 
 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
@@ -456,7 +456,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../../platfor
 > [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'
index 08530a2..edfc3bc 100644 (file)
@@ -2,7 +2,7 @@
 
 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
@@ -455,7 +455,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../../platfor
 > [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
index 6f751c0..d701b8b 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index ed6091c..d9ad58a 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index 10ff8fa..89cc7de 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index ab67769..b03a3f6 100644 (file)
@@ -2,7 +2,7 @@
 
 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.
index 66d7bc3..184334e 100644 (file)
@@ -2,7 +2,7 @@
 
 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
@@ -30,7 +30,7 @@ $ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/de
 
 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
@@ -58,7 +58,7 @@ $ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/de
 
 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
@@ -87,7 +87,7 @@ $ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/de
 
 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
@@ -115,7 +115,7 @@ $ ./peer ${srcdir:=.}/../../platforms/small_platform_fatpipe.xml ${srcdir:=.}/de
 
 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
index 8b85394..991e80b 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index f5fb862..eec7035 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index 66e0838..f04c8c5 100644 (file)
@@ -1,7 +1,7 @@
 #! ./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) :
index c40acd5..c3a19d3 100644 (file)
@@ -2,7 +2,7 @@
 
 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'
@@ -127,7 +127,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platf
 
 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'
@@ -278,7 +278,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT msg_platform.xml mast
 
 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) :
@@ -372,7 +372,7 @@ $ ${bindir:=.}/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_
 
 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.
index 94063db..b357b91 100644 (file)
@@ -2,7 +2,7 @@
 
 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
@@ -127,7 +127,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platf
 
 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
@@ -278,7 +278,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/masterslave_forwarder$EXEEXT ${srcdir:=.}/../platf
 
 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) :
@@ -379,7 +379,7 @@ $ ${bindir:=.}/masterslave_failure$EXEEXT --log=xbt_cfg.thres:critical --log=no_
 
 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.
index f6596ff..7ff5688 100644 (file)
@@ -2,7 +2,7 @@
 
 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) :
index ad02729..c555d3c 100644 (file)
@@ -2,7 +2,7 @@
 
 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) :
index a9d700e..ebe9581 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index 1ef1bd9..325823a 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index 3de45ed..4c95507 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index 81e0feb..7d331e8 100644 (file)
@@ -2,13 +2,13 @@
 
 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 
index fd9708d..5e7d6d8 100644 (file)
@@ -2,5 +2,5 @@
 
 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"
index 97b3292..903f207 100644 (file)
@@ -2,7 +2,7 @@
 
 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
@@ -437,7 +437,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platfo
 > [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
index dddf7b5..4183859 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index a3d97db..d62e091 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index aa04542..6f8f5b6 100644 (file)
@@ -2,7 +2,7 @@
 
 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'
index 03fc500..888699d 100644 (file)
@@ -2,7 +2,7 @@
 
 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'
index 51fa358..3fa0467 100644 (file)
@@ -2,7 +2,7 @@
 
 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'
index bd28bc0..4a6f59d 100644 (file)
@@ -2,7 +2,7 @@
 
 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...
index f2cdf42..aa26972 100644 (file)
@@ -1,6 +1,6 @@
 #! 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!
index f3c6df2..12d0c9b 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 0e98d44..83b8fdb 100644 (file)
@@ -1,6 +1,6 @@
 #! 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.
index 65f8814..fdaf31b 100644 (file)
@@ -377,7 +377,7 @@ p Test of waitall replay with SMPI (one trace for all processes)
 < 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'
index c2856a2..b7ae307 100644 (file)
@@ -22,15 +22,15 @@ $ ${bindir:=.}/tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n' set-
 > [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
@@ -39,7 +39,7 @@ $ cat
 
 ! expect return 2
 ! output ignore
-< ! output sort
+< ! output sort 19
 < < 123456789012345678 B line
 < < 123456789012345678 A line
 < $ cat
index 7dee6bb..3c55b70 100644 (file)
@@ -104,32 +104,45 @@ and an error is raised on discrepancy. Metacommands to change this:
  "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. 
index 0bb1138..4bbeb20 100755 (executable)
@@ -29,7 +29,7 @@ my $enable_coverage=0;
 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;
@@ -339,14 +339,22 @@ sub parse_out {
         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'}};
       }
@@ -401,10 +409,13 @@ sub parse_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";