First stab at test code to run a thane bureau - not yet runnable

* New directory tests/src/as with port of java test client
* New build target "abclib" to create a library of the test classes specified 
  in etc/asc_files.txt
* New target to compile TestClientMain.as against testslib.abc and another to 
  run it.

(This proposes the naming convention of *Main.as for "main" thane code and 
main-*.abc for the compiled code)


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5058 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Jamie Doornbos
2008-05-09 06:40:53 +00:00
parent 3ccea1c218
commit c626095393
4 changed files with 139 additions and 0 deletions
+60
View File
@@ -99,6 +99,34 @@
</javac>
</target>
<!-- builds our Flash (abc) library -->
<target name="abclib">
<loadfile property="ascfiles" srcFile="etc/asc-files.txt">
<filterchain>
<prefixlines prefix="src/as/"/>
<tokenfilter delimOutput=" "/>
</filterchain>
</loadfile>
<java classname="macromedia.asc.embedding.ScriptCompiler" fork="true" failonerror="true">
<classpath>
<fileset dir="../lib" includes="asc.jar"/>
</classpath>
<arg value="-AS3"/>
<arg value="-strict"/>
<arg value="-import"/>
<arg value="../lib/builtin.abc"/>
<arg value="-import"/>
<arg value="../lib/thane.abc"/>
<arg value="-import"/>
<arg value="../dist/naryalib.abc"/>
<arg value="-outdir"/>
<arg value="${deploy.dir}"/>
<arg value="-out"/>
<arg value="testslib"/>
<arg line="${ascfiles}"/>
</java>
</target>
<!-- test the component metadata bundling process -->
<target name="cbundles" description="Build component bundles.">
<!-- define our tasks -->
@@ -180,6 +208,38 @@
</junit>
</target>
<!-- builds the bureau thane test client -->
<target name="bureau-compile-thane-client" depends="abclib"
description="Compiles the thane client for testing the bureau library">
<java classname="macromedia.asc.embedding.ScriptCompiler" fork="true" failonerror="true">
<classpath>
<fileset dir="../lib" includes="asc.jar"/>
</classpath>
<arg value="-AS3"/>
<arg value="-strict"/>
<arg value="-import"/>
<arg value="../lib/builtin.abc"/>
<arg value="-import"/>
<arg value="../lib/thane.abc"/>
<arg value="-import"/>
<arg value="../dist/naryalib.abc"/>
<arg value="-import"/>
<arg value="dist/testslib.abc"/>
<arg value="-outdir"/>
<arg value="${deploy.dir}/thane/"/>
<arg value="-out"/>
<arg value="main-bureau-client"/>
<arg value="src/as/com/threerings/bureau/client/TestClientMain.as"/>
</java>
</target>
<!-- runs the thane test client -->
<target name="bureau-run-thane-client" depends="bureau-compile-thane-client"
description="Runs the thane client for testing the bureau library">
<!-- TODO: use a ${thane.path} property to launch the thane shell with
-- dist/main-bureau-client.abc as input -->
</target>
<target name="bureau-runserver" depends="compile"
description="Run the bureau test server.">
<java fork="true" classname="com.threerings.bureau.server.TestServer">
+1
View File
@@ -0,0 +1 @@
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();
}
}
@@ -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();
*/