Since TestClient is used outside of Narya, it gets to live in with the rest of

the real source code. That's where reusable classes live. Amazing!

Also cleaned up some build.xml bits and nixed the Retroweaver stuff. I thought
we might have still been using that, but then I saw the hardcoded path to
/usr/local/jdk1.4 and knew that it couldn't be so.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6285 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2010-11-18 05:34:49 +00:00
parent 6cb678a2fc
commit 0a522606c9
2 changed files with 10 additions and 43 deletions
@@ -0,0 +1,189 @@
//
// $Id$
//
// Narya library - tools for developing networked games
// Copyright (C) 2002-2010 Three Rings Design, Inc., All Rights Reserved
// http://www.threerings.net/code/narya/
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package com.threerings.crowd.client;
import com.samskivert.util.BasicRunQueue;
import com.samskivert.util.Config;
import com.threerings.util.MessageManager;
import com.threerings.util.Name;
import com.threerings.presents.client.Client;
import com.threerings.presents.client.ClientObserver;
import com.threerings.presents.dobj.DObjectManager;
import com.threerings.presents.net.UsernamePasswordCreds;
import com.threerings.crowd.chat.client.ChatDirector;
import com.threerings.crowd.util.CrowdContext;
import static com.threerings.crowd.Log.log;
/**
* A client that is useful when doing unit testing.
*/
public class TestClient
implements ClientObserver
{
public TestClient (String username)
{
// create our context
_ctx = createContext();
// create the handles on our various services
_client = new Client(new UsernamePasswordCreds(new Name(username), "test"), _rqueue);
_locdir = new LocationDirector(_ctx);
_occdir = new OccupantDirector(_ctx);
_msgmgr = new MessageManager("rsrc");
_chatdir = new ChatDirector(_ctx, "global");
// we want to know about logon/logoff
_client.addClientObserver(this);
// for test purposes, hardcode the server info
_client.setServer("localhost", Client.DEFAULT_SERVER_PORTS);
}
public void run ()
{
// log on
_client.logon();
// loop over our queue, running the runnables
_rqueue.run();
}
public void clientWillLogon (Client client)
{
}
public void clientDidLogon (Client client)
{
log.info("Client did logon [client=" + client + "].");
// request to move to a place
_ctx.getLocationDirector().moveTo(15);
}
public void clientObjectDidChange (Client client)
{
log.info("Client object did change [client=" + client + "].");
}
public void clientFailedToLogon (Client client, Exception cause)
{
log.info("Client failed to logon [client=" + client +
", cause=" + cause + "].");
}
public void clientConnectionFailed (Client client, Exception cause)
{
log.info("Client connection failed [client=" + client +
", cause=" + cause + "].");
}
public boolean clientWillLogoff (Client client)
{
log.info("Client will logoff [client=" + client + "].");
return true;
}
public void clientDidLogoff (Client client)
{
log.info("Client did logoff [client=" + client + "].");
System.exit(0);
}
public void clientDidClear (Client client)
{
}
protected CrowdContext createContext ()
{
return new CrowdContextImpl();
}
public static void main (String[] args)
{
// create our test client
TestClient tclient = new TestClient("test");
// start it running
tclient.run();
}
protected class CrowdContextImpl implements CrowdContext
{
public Config getConfig ()
{
return null;
}
public Client getClient ()
{
return _client;
}
public DObjectManager getDObjectManager ()
{
return _client.getDObjectManager();
}
public LocationDirector getLocationDirector ()
{
return _locdir;
}
public OccupantDirector getOccupantDirector ()
{
return _occdir;
}
public ChatDirector getChatDirector ()
{
return _chatdir;
}
public MessageManager getMessageManager ()
{
return _msgmgr;
}
public void setPlaceView (PlaceView view)
{
// nothing to do because we don't create views
}
public void clearPlaceView (PlaceView view)
{
// nothing to do because we don't create views
}
}
protected Client _client;
protected CrowdContext _ctx;
protected LocationDirector _locdir;
protected OccupantDirector _occdir;
protected MessageManager _msgmgr;
protected ChatDirector _chatdir;
protected BasicRunQueue _rqueue = new BasicRunQueue();
}