#! tesh

! output sort
! timeout 30
$ java -classpath ${classpath:=.} async/AsyncTest ${srcdir:=.}/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [  0.000000] (10:async.Slave@Robert) Receiving on 'slave_8'
> [  0.000000] (11:async.Slave@Sirois) Receiving on 'slave_9'
> [  0.000000] (12:async.Slave@Monique) Receiving on 'slave_10'
> [  0.000000] (1:async.Master@Jacquelin) Hello! Got 7 slaves and 5 tasks to process
> [  0.000000] (1:async.Master@Jacquelin) Sending "Task_0" to "slave_0"
> [  0.000000] (1:async.Master@Jacquelin) Sending "Task_1" to "slave_1"
> [  0.000000] (1:async.Master@Jacquelin) Sending "Task_2" to "slave_2"
> [  0.000000] (1:async.Master@Jacquelin) Sending "Task_3" to "slave_3"
> [  0.000000] (1:async.Master@Jacquelin) Sending "Task_4" to "slave_4"
> [  0.000000] (2:async.Forwarder@Jackson) Receiving on 'slave_0'
> [  0.000000] (3:async.Forwarder@Casavant) Receiving on 'slave_1'
> [  0.000000] (4:async.Slave@iRMX) Receiving on 'slave_2'
> [  0.000000] (5:async.Slave@Bousquet) Receiving on 'slave_3'
> [  0.000000] (6:async.Slave@Soucy) Receiving on 'slave_4'
> [  0.000000] (7:async.Slave@Kuenning) Receiving on 'slave_5'
> [  0.000000] (8:async.Slave@Browne) Receiving on 'slave_6'
> [  0.000000] (9:async.Slave@Stephen) Receiving on 'slave_7'
> [  0.851467] (2:async.Forwarder@Jackson) Sending "Task_0" to "slave_7"
> [  1.357014] (3:async.Forwarder@Casavant) Sending "Task_1" to "slave_9"
> [  2.000000] (11:async.Slave@Sirois) Received a task
> [  2.000000] (11:async.Slave@Sirois) Received "Task_1". Processing it.
> [  2.000000] (5:async.Slave@Bousquet) Received a task
> [  2.000000] (5:async.Slave@Bousquet) Received "Task_3". Processing it.
> [  2.000000] (6:async.Slave@Soucy) Received a task
> [  2.000000] (6:async.Slave@Soucy) Received "Task_4". Processing it.
> [  2.000364] (6:async.Slave@Soucy) Receiving on 'slave_4'
> [  2.000437] (11:async.Slave@Sirois) Receiving on 'slave_9'
> [  2.001165] (5:async.Slave@Bousquet) Receiving on 'slave_3'
> [  4.000000] (4:async.Slave@iRMX) Received a task
> [  4.000000] (4:async.Slave@iRMX) Received "Task_2". Processing it.
> [  4.000000] (9:async.Slave@Stephen) Received a task
> [  4.000000] (9:async.Slave@Stephen) Received "Task_0". Processing it.
> [  4.000728] (4:async.Slave@iRMX) Receiving on 'slave_2'
> [  4.000728] (9:async.Slave@Stephen) Receiving on 'slave_7'
> [  5.000000] (1:async.Master@Jacquelin) All tasks have been dispatched. Let's tell (asynchronously) everybody the computation is over, and sleep 20s so that nobody gets a message from a terminated process.
> [  5.851463] (2:async.Forwarder@Jackson) Got a finalize task. Let's forward (asynchronously) that we're done, and then sleep 20 seconds so that nobody gets a message from a terminated process.
> [  6.000000] (7:async.Slave@Kuenning) Received Finalize. I'm done. See you!
> [  6.000000] (8:async.Slave@Browne) Received Finalize. I'm done. See you!
> [  6.357007] (3:async.Forwarder@Casavant) Got a finalize task. Let's forward (asynchronously) that we're done, and then sleep 20 seconds so that nobody gets a message from a terminated process.
> [  7.000364] (6:async.Slave@Soucy) Received Finalize. I'm done. See you!
> [  7.000437] (11:async.Slave@Sirois) Received Finalize. I'm done. See you!
> [  7.001165] (5:async.Slave@Bousquet) Received Finalize. I'm done. See you!
> [  8.000000] (12:async.Slave@Monique) Received Finalize. I'm done. See you!
> [  9.000000] (10:async.Slave@Robert) Received Finalize. I'm done. See you!
> [  9.000728] (4:async.Slave@iRMX) Received Finalize. I'm done. See you!
> [  9.000728] (9:async.Slave@Stephen) Received Finalize. I'm done. See you!
> [ 25.000000] (1:async.Master@Jacquelin) Goodbye now!
> [ 25.851463] (2:async.Forwarder@Jackson) I'm done. See you!
> [ 26.357007] (3:async.Forwarder@Casavant) I'm done. See you!
> [ 29.000728] (0:@) MSG_main finished; Cleaning up the simulation...
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
