diff --git a/tests/build.xml b/tests/build.xml
index c3c3d9ba9..fff1d2f7f 100644
--- a/tests/build.xml
+++ b/tests/build.xml
@@ -99,6 +99,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -180,6 +208,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/etc/asc-files.txt b/tests/etc/asc-files.txt
new file mode 100644
index 000000000..f9da2d836
--- /dev/null
+++ b/tests/etc/asc-files.txt
@@ -0,0 +1 @@
+com/threerings/bureau/client/TestClient.as
diff --git a/tests/src/as/com/threerings/bureau/client/TestClient.as b/tests/src/as/com/threerings/bureau/client/TestClient.as
new file mode 100644
index 000000000..811950266
--- /dev/null
+++ b/tests/src/as/com/threerings/bureau/client/TestClient.as
@@ -0,0 +1,50 @@
+package com.threerings.bureau.client {
+
+public class TestClient extends BureauClient
+{
+ public function TestClient (token :String, bureauId :String)
+ {
+ super(token, bureauId);
+ }
+
+ protected override function createDirector () :BureauDirector
+ {
+ return new TestDirector(_ctx);
+ }
+}
+
+}
+
+import com.threerings.bureau.client.Agent;
+import com.threerings.bureau.client.BureauDirector;
+import com.threerings.bureau.Log;
+import com.threerings.bureau.data.AgentObject;
+import com.threerings.bureau.util.BureauContext;
+
+class TestAgent extends Agent
+{
+ public override function start () :void
+ {
+ Log.info("Starting agent " + _agentObj.getOid());
+ }
+
+ public override function stop () :void
+ {
+ Log.info("Stopping agent " + _agentObj.getOid());
+ }
+}
+
+class TestDirector extends BureauDirector
+{
+ public function TestDirector (ctx :BureauContext)
+ {
+ super(ctx);
+ }
+
+ // just use our test agent exclusively - in the real world, the agent created would depend
+ // on the object's type and/or properties
+ protected override function createAgent (agentObj :AgentObject) :Agent
+ {
+ return new TestAgent();
+ }
+}
diff --git a/tests/src/as/com/threerings/bureau/client/TestClientMain.as b/tests/src/as/com/threerings/bureau/client/TestClientMain.as
new file mode 100644
index 000000000..5390fb026
--- /dev/null
+++ b/tests/src/as/com/threerings/bureau/client/TestClientMain.as
@@ -0,0 +1,28 @@
+
+/**
+ * The main entry point for the bureau test client to be run in thane. Arguments:
+ * 0: the token to use to log back into the server
+ * 1: the bureau id of this instance
+ * 2: the name of the server to log into
+ * 3: the port to connect to on the server
+ */
+
+import avmplus.System;
+
+for (var i :int = 0; i < System.argv.length; ++i) {
+ print("Argv[" + i + "] = " + System.argv[i]);
+}
+
+/*
+// create the client and log on
+var client :TestClient = new TestClient(
+ System.getProperty("token"),
+ System.getProperty("bureauId"));
+client.setServer(
+ System.getProperty("serverName"),
+ new int[] {Integer.parseInt(System.getProperty("serverPort"))});
+client.logon();
+
+// run it
+client.run();
+*/