Sam and I have been teaching a first year course on programming and our
final project is a distributed, multi-player game similar to this one:
Students had to write clients, servers, and AI players, and during our
final exam period, we're going to hold a tournament between all the AI
players -- hosted on a server that Sam and I wrote.
One idea that we had, which turned out to be a good one, was to define
the language of client to server messages as a Redex language and then
use Redex's random term generation to stress test our server. We
constructed simple clients that did a rapid-fire send of random
messages. We tested on well-formed messages, messages that were "close"
to being well-formed, and messages that were just arbitrary junk (all
expressed in a couple lines using define-language). We found several
bugs in our server and running our students' clients against the server
has not uncovered any further bugs beyond what Redex found.
For list-related administrative tasks: