Combined commits from prototype

commit 5b41e82b1acf9ee02c4fa552ae12c04025b3a5a4
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Jan 7 23:33:08 2013 +0000

    Preparing for merge to master

commit 83de4e7c7b1359ab4ce4fdd57024f6db52512759
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Jan 7 23:03:35 2013 +0000

    Added attribution notice

commit afd36d868368ed882e853a61ddecd036f040a2dc
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Jan 7 22:23:12 2013 +0000

    Small cleanup

commit e1ed08ef458f8a4d164f73d3c23c5089113f72dc
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Jan 7 22:06:22 2013 +0000

    Distributed throttled load test work locally

    And now for remote testing!...

commit bc4a015b20b3c0c167785b79bd7cb9b3a702004c
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Jan 6 00:44:21 2013 +0000

    WIP

commit 5f922add3e5ed5352fdbba024afe04c4ebe955fc
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 23:50:48 2013 +0000

    WIP

commit a72cff36b529650ae31f11f33d692e9792697b28
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 23:46:00 2013 +0000

    Integrated JCommander for command line params

commit 6d147f6788ad61ee2de60a92be22f313737a135c
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 22:53:22 2013 +0000

    WIP

    Getting distributed testing woring

commit b2077255a2e34d187fb168f7443f57c9557b118d
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 22:35:20 2013 +0000

    Throttled agent configuration

commit 83e7a179642ab3adafcd5a776b39ea6360f4744a
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 21:38:17 2013 +0000

    Throttled strategy working beautifully :-)

commit cf14c26949e167b4e39cc4cb0baddb26ee1272cb
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 19:27:55 2013 +0000

    WIP

commit 9eb4ff71a35fbb6ef30e243ac5779204223f20b5
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Jan 5 11:51:09 2013 +0000

    Let agent breath using yield()

commit f437cfc6db74d93cd77415e95a6fd0b3f8210328
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Jan 4 18:28:42 2013 +0000

    WIP

    Simple load test throwing up a concurrent mod exception when agents die.  Guess the agent is not actually dying; may need to look into the heartbeat timeout.

commit a09fb3bccf394ea7379390b727531b5e1bcf2499
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Jan 3 19:07:28 2013 +0000

    WIP

    Borked.  Ugh.

commit b8c37c2190f07a9ae8f43b01ea44239b85b8487c
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Jan 3 15:45:33 2013 +0000

    Restructuring with internal packages

    This demarcates the internal abstract implementations and interfaces

commit 373c23455bfa5842c3aa3be99680fa6ed37a0ad2
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Jan 3 15:33:04 2013 +0000

    Added an AbstractAgent

    We need to be able to customise the Agents too, in order to allow them to respond to WORK_AVAILABLE messages in their own way, e.g. throttling.

commit 7d83d7ea978a3d31dc1e50940cd1e1abbe9959d9
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Jan 3 14:52:08 2013 +0000

    All basic tests covered and green!

    :-)

commit 79519d4277f52d81a62a75b51769b253e1e3d9b2
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Jan 3 00:12:53 2013 +0000

    WIP

    All green but one last concurrent mod exception.  Uck.

commit 3b1bc03e0d7d2e633b1924c89ee9c59cf79716db
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Wed Jan 2 23:01:51 2013 +0000

    Lose the ghastly package names!

commit 781134c66fd722e0f3a75006781c403debf38b28
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Wed Jan 2 22:48:13 2013 +0000

    WIP

    Restored most of the failing tests

commit 5c62b66d0e02683dcdd37c617116a4ff412d4a7f
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Wed Jan 2 18:36:16 2013 +0000

    WIP

    Lots of things borked.  Boo hoo.

commit 6def1e63d28537658dd9d6ad94c59ee59583f716
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Wed Jan 2 17:45:10 2013 +0000

    WIP

    Redis backing store tests coming along

commit 9533638f0dd3dfc489a2ee1bf91459beca6aa3be
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Tue Jan 1 23:41:52 2013 +0000

    WIP

    Lots of data structure refactoring

commit fb1294151dbc5f742c34a0f00298d0aa7a67b857
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 31 18:38:41 2012 +0000

    WIP

    In the process of sorting out Redis-backed encapsulated data structures

commit a655c16bdbe549870dfb4d5b900cc4d10a9a68be
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 31 15:29:00 2012 +0000

    Now we can recover from agent death

commit cae01c94a3fe535cff4fd2c1dc53e7685fcf79f9
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 31 14:20:41 2012 +0000

    Reworked scheduling scheme

    Now uses a Schedule instead, which can be dispatched asynchronously if required.

commit 64ae72bf69db344294197aa856e9e12c4cebc3f4
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 31 11:19:13 2012 +0000

    Worker death dealt with

commit 3ca255b2bfa4bf6d5f1efe811ee541d2cbcec565
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 23:13:05 2012 +0000

    WIP

    Sorting out unexpected worker death

commit a54f2ad0a4ac5afa83ed0f7bad9e13f2a18dc766
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 21:14:47 2012 +0000

    WIP

commit 130985e270dde00d1f7856599941e60eec1135cc
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 18:14:26 2012 +0000

    All green.  Sweet!

commit f95a393a994f793f29c63acb8f5d1071c4152f6c
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 15:57:48 2012 +0000

    Cleaning up old scheduler implementation

commit f374fa614e9d0a6c9de816e4ce46404108bed8c6
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 15:48:36 2012 +0000

    JobProgressTest working again

commit f8155ebff96e125bc75109c6a0f94f38e507f79f
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 15:29:38 2012 +0000

    WorkerTest working again

commit 4c07e789c8ea475241e8be59449a3a88c7c3b349
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 14:56:40 2012 +0000

    WorkRequest test working again

commit d2abc075c99e13cc5b02b086d85305310a9c1a33
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 30 12:49:14 2012 +0000

    Job enquiring works properly

commit 7d010a1d530cd21c10af6954b9d92ce838ffccd9
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Dec 29 23:28:41 2012 +0000

    Agent presence tests work again

    Refactored to use Deadline instead.  Much neater!

commit 2cac56ce2e3fe3e8509d1fc313d813848e7d16c2
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Dec 29 20:34:09 2012 +0000

    WIP

    Refactoring Scheduler actor to use new abstract design pattern

commit 9090fbad135d5ec00ac2702aa83a68a72d142686
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Dec 29 20:02:00 2012 +0000

    Found a better pattern for partial actor implementations

    Out with Interfaces and in with Abstract Methods!

commit cd599e1c7c6064158118e616febaed2a2ff740f0
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Dec 29 00:22:54 2012 +0100

    WIP

commit 7486d0b7064ccacd1ff8de1ed271aeb19f2e618e
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Dec 28 21:44:09 2012 +0100

    Refactored configuration files

commit adca13877528d9195db7158c62f68d4089b0eed3
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Dec 28 21:26:45 2012 +0100

    Sorted out configuration for prod and testing

commit ef256f8699ed459199a41acfbdca29061b4aa89f
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Dec 28 01:10:31 2012 +0100

    Remoting an main class

commit 673822f0a5f9978263764af4fa923140c3dbee67
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Dec 27 20:55:18 2012 +0100

    WIP

    Back on-track.  ISchedulerStrategy much simplified.

commit 8cc133fd25e7b88d12d1c6dfc1f9e88e4712042f
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Dec 27 20:00:52 2012 +0100

    WIP

commit a387137d6c485a39475c6232851a4e00d2d5348e
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Dec 27 00:52:31 2012 +0100

    Redis APi taking shape

    The Redis Queue Monitor test is also in place

commit 87016b45c8ad808e081ff356baa1dec3c7a09509
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Wed Dec 26 23:26:18 2012 +0100

    WIP

    Checkpoint:  backing store design isn't quite correct...

commit c24bb1c8e70e838bd0964219c6a9c2b882efbef7
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Wed Dec 26 12:24:18 2012 +0100

    Job Progress monitoring sorted

commit d7f17638195bf66cc2129fcb944f2d24c13bb2d2
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Tue Dec 25 12:32:23 2012 +0100

    Worker now completes a job properly

commit f070e5b502db44d1c962127bfe8527fbaa2235ab
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Tue Dec 25 00:25:50 2012 +0100

    WIP

commit c679c6474fa10db0d24203bfe89d53c3aaff7245
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 24 23:00:05 2012 +0100

    Dead-end with Typed Actors

    I don't think a Typed Actor is the right bridging mechanism after all.  Let's try with a normal, UntypedActor...

commit 58e8c82ec28f6d64eec74fa15d97990a78c9a934
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Dec 20 23:27:42 2012 +0000

    Implemented Simple Queue-pop Strategy

commit 26f3514e1c78958069eb1214c18e52a5531d6a86
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Thu Dec 20 00:06:12 2012 +0000

    WIP

commit efb30bf3f468097c0e34253822ec8aca1b5f0c95
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 17 23:27:11 2012 +0000

    Add some more logging

commit 3b0ce191564b2724c383c6c1f751c9bf20ef9837
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 17 23:21:05 2012 +0000

    All tests working nicely

    Reworked all remaining tests to use the IgnoreMsg() construct, to keep them focussed.

commit cc26b9976a3915f5be990ea585e8e978cc21c64c
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 17 22:41:10 2012 +0000

    Introduced Agent registration message

    An Agent is sent a REGISTERED message after the heartbeat.  I've also simplified the testing approach, using the IgnoreMsg() construct to filter noise.

commit 22779a0260284523f5d406050768a7a3f909f6ca
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Mon Dec 17 00:15:32 2012 +0000

    WIP

    Sorting out a response to a "work available" broadcast

commit a3a17761ff26049c41f5b6badd898bbff6807c3b
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sun Dec 16 22:41:57 2012 +0000

    Initial work request case covered

commit 0fb8947f530c5928efccac2fc069c241082a3ddc
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Dec 15 16:29:13 2012 +0000

    Dead agent deregistration

commit 66321b5560f662699288e6ca185d1ab033c1a265
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Sat Dec 15 15:06:51 2012 +0000

    Basic heart beat test

commit d5e4a066aae4de3d4cfcfc0fa3a97fe86b75e38a
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Dec 14 18:02:55 2012 +0000

    Added Jnario test framework

commit ae32baa5ed54b4eae9af0fae27784daa9dfb8c76
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Dec 14 16:22:44 2012 +0000

    Basic Maven + Eclipse setup

commit fa46bd2227644138a12f9e6fa324d1123255eb2f
Author: Michael Marconi <michael@modeltwozero.com>
Date:   Fri Dec 14 16:12:13 2012 +0000

    Basic POM file to get things going

    I'm adding the akka framework and a Redis client