Merge branch 'master' of git://opensimulator.org/git/opensim

remove-scene-viewer
Dan Lake 2011-10-31 15:21:39 -07:00
commit 3a2dcc7298
5 changed files with 98 additions and 102 deletions

View File

@ -53,7 +53,7 @@ namespace pCampBot
protected bool m_verbose = true;
protected Random somthing = new Random(Environment.TickCount);
protected int numbots = 0;
protected IConfig Previous_config;
private IConfig Config;
/// <summary>
/// Constructor Creates MainConsole.Instance to take commands and provide the place to write data
@ -81,16 +81,16 @@ namespace pCampBot
m_console.Commands.AddCommand("bot", false, "shutdown",
"shutdown",
"Gracefully shut down bots", HandleShutdown);
"Shutdown bots and exit", HandleShutdown);
m_console.Commands.AddCommand("bot", false, "quit",
"quit",
"Force quit (DANGEROUS, try shutdown first)",
"Shutdown bots and exit",
HandleShutdown);
m_console.Commands.AddCommand("bot", false, "add bots",
"add bots <number>",
"Add more bots", HandleAddBots);
// m_console.Commands.AddCommand("bot", false, "add bots",
// "add bots <number>",
// "Add more bots", HandleAddBots);
m_lBot = new List<PhysicsBot>();
}
@ -102,71 +102,64 @@ namespace pCampBot
/// <param name="cs">The configuration for the bots to use</param>
public void dobotStartup(int botcount, IConfig cs)
{
Previous_config = cs;
Config = cs;
m_td = new Thread[botcount];
string firstName = cs.GetString("firstname");
string lastNameStem = cs.GetString("lastname");
string password = cs.GetString("password");
string loginUri = cs.GetString("loginuri");
for (int i = 0; i < botcount; i++)
{
startupBot(i, cs);
string lastName = string.Format("{0}_{1}", lastNameStem, i);
startupBot(i, cs, firstName, lastName, password, loginUri);
}
}
/// <summary>
/// Add additional bots (and threads) to our bot pool
/// </summary>
/// <param name="botcount">How Many of them to add</param>
public void addbots(int botcount)
{
int len = m_td.Length;
Thread[] m_td2 = new Thread[len + botcount];
for (int i = 0; i < len; i++)
{
m_td2[i] = m_td[i];
}
m_td = m_td2;
int newlen = len + botcount;
for (int i = len; i < newlen; i++)
{
startupBot(i, Previous_config);
}
}
// /// <summary>
// /// Add additional bots (and threads) to our bot pool
// /// </summary>
// /// <param name="botcount">How Many of them to add</param>
// public void addbots(int botcount)
// {
// int len = m_td.Length;
// Thread[] m_td2 = new Thread[len + botcount];
// for (int i = 0; i < len; i++)
// {
// m_td2[i] = m_td[i];
// }
// m_td = m_td2;
// int newlen = len + botcount;
// for (int i = len; i < newlen; i++)
// {
// startupBot(i, Config);
// }
// }
/// <summary>
/// This starts up the bot and stores the thread for the bot in the thread array
/// </summary>
/// <param name="pos">The position in the thread array to stick the bot's thread</param>
/// <param name="cs">Configuration of the bot</param>
public void startupBot(int pos, IConfig cs)
/// <param name="firstName">First name</param>
/// <param name="lastName">Last name</param>
/// <param name="password">Password</param>
/// <param name="loginUri">Login URI</param>
public void startupBot(int pos, IConfig cs, string firstName, string lastName, string password, string loginUri)
{
PhysicsBot pb = new PhysicsBot(cs);
PhysicsBot pb = new PhysicsBot(cs, firstName, lastName, password, loginUri);
pb.OnConnected += handlebotEvent;
pb.OnDisconnected += handlebotEvent;
if (cs.GetString("firstname", "random") == "random") pb.firstname = CreateRandomName();
if (cs.GetString("lastname", "random") == "random") pb.lastname = CreateRandomName();
m_td[pos] = new Thread(pb.startup);
m_td[pos].Name = "CampBot_" + pos;
m_td[pos].Name = pb.Name;
m_td[pos].IsBackground = true;
m_td[pos].Start();
m_lBot.Add(pb);
}
/// <summary>
/// Creates a random name for the bot
/// </summary>
/// <returns></returns>
private string CreateRandomName()
{
string returnstring = "";
string chars = "abcdefghijklmnopqrstuvwxyz0123456789";
for (int i = 0; i < 7; i++)
{
returnstring += chars.Substring(somthing.Next(chars.Length),1);
}
return returnstring;
}
/// <summary>
/// High level connnected/disconnected events so we can keep track of our threads by proxy
/// </summary>
@ -177,14 +170,14 @@ namespace pCampBot
switch (eventt)
{
case EventType.CONNECTED:
m_log.Info("[ " + callbot.firstname + " " + callbot.lastname + "]: Connected");
m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected");
numbots++;
break;
case EventType.DISCONNECTED:
m_log.Info("[ " + callbot.firstname + " " + callbot.lastname + "]: Disconnected");
m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected");
m_td[m_lBot.IndexOf(callbot)].Abort();
numbots--;
if (numbots >1)
if (numbots <= 0)
Environment.Exit(0);
break;
}
@ -223,17 +216,17 @@ namespace pCampBot
Environment.Exit(0);
}
*/
private void HandleAddBots(string module, string[] cmd)
{
int newbots = 0;
if (cmd.Length > 2)
{
Int32.TryParse(cmd[2], out newbots);
}
if (newbots > 0)
addbots(newbots);
}
//
// private void HandleAddBots(string module, string[] cmd)
// {
// int newbots = 0;
//
// if (cmd.Length > 2)
// {
// Int32.TryParse(cmd[2], out newbots);
// }
// if (newbots > 0)
// addbots(newbots);
// }
}
}

View File

@ -45,10 +45,11 @@ namespace pCampBot
public delegate void AnEvent(PhysicsBot callbot, EventType someevent); // event delegate for bot events
public IConfig startupConfig; // bot config, passed from BotManager
public string firstname;
public string lastname;
public string password;
public string loginURI;
public string FirstName { get; private set; }
public string LastName { get; private set; }
public string Name { get; private set; }
public string Password { get; private set; }
public string LoginUri { get; private set; }
public string saveDir;
public string wear;
@ -60,16 +61,28 @@ namespace pCampBot
protected Random somthing = new Random(Environment.TickCount);// We do stuff randomly here
//New instance of a SecondLife client
/// <summary>
/// New instance of a SecondLife client
/// </summary>
public GridClient client = new GridClient();
protected string[] talkarray;
/// <summary>
///
/// Constructor
/// </summary>
/// <param name="bsconfig">nini config for the bot</param>
public PhysicsBot(IConfig bsconfig)
/// <param name="bsconfig"></param>
/// <param name="firstName"></param>
/// <param name="lastName"></param>
/// <param name="password"></param>
/// <param name="loginUri"></param>
public PhysicsBot(IConfig bsconfig, string firstName, string lastName, string password, string loginUri)
{
FirstName = firstName;
LastName = lastName;
Name = string.Format("{0} {1}", FirstName, LastName);
Password = password;
LoginUri = loginUri;
startupConfig = bsconfig;
readconfig();
talkarray = readexcuses();
@ -116,10 +129,6 @@ namespace pCampBot
/// </summary>
public void readconfig()
{
firstname = startupConfig.GetString("firstname", "random");
lastname = startupConfig.GetString("lastname", "random");
password = startupConfig.GetString("password", "12345");
loginURI = startupConfig.GetString("loginuri");
wear = startupConfig.GetString("wear","no");
}
@ -136,7 +145,7 @@ namespace pCampBot
/// </summary>
public void startup()
{
client.Settings.LOGIN_SERVER = loginURI;
client.Settings.LOGIN_SERVER = LoginUri;
client.Settings.ALWAYS_DECODE_OBJECTS = false;
client.Settings.AVATAR_TRACKING = false;
client.Settings.OBJECT_TRACKING = false;
@ -153,10 +162,10 @@ namespace pCampBot
client.Throttle.Total = 400000;
client.Network.LoginProgress += this.Network_LoginProgress;
client.Network.SimConnected += this.Network_SimConnected;
client.Network.Disconnected += this.Network_OnDisconnected;
// client.Network.Disconnected += this.Network_OnDisconnected;
client.Objects.ObjectUpdate += Objects_NewPrim;
//client.Assets.OnAssetReceived += Asset_ReceivedCallback;
if (client.Network.Login(firstname, lastname, password, "pCampBot", "Your name"))
if (client.Network.Login(FirstName, LastName, Password, "pCampBot", "Your name"))
{
if (OnConnected != null)
{
@ -165,7 +174,7 @@ namespace pCampBot
m_action.AutoReset = false;
m_action.Elapsed += new ElapsedEventHandler(m_action_Elapsed);
m_action.Start();
OnConnected(this, EventType.CONNECTED);
// OnConnected(this, EventType.CONNECTED);
if (wear == "save")
{
client.Appearance.SetPreviousAppearance();
@ -180,7 +189,9 @@ namespace pCampBot
}
else
{
MainConsole.Instance.Output(firstname + " " + lastname + " Can't login: " + client.Network.LoginMessage);
MainConsole.Instance.OutputFormat(
"{0} {1} cannot login: {2}", FirstName, LastName, client.Network.LoginMessage);
if (OnDisconnected != null)
{
OnDisconnected(this, EventType.DISCONNECTED);
@ -190,7 +201,7 @@ namespace pCampBot
public void SaveDefaultAppearance()
{
saveDir = "MyAppearance/" + firstname + "_" + lastname;
saveDir = "MyAppearance/" + FirstName + "_" + LastName;
if (!Directory.Exists(saveDir))
{
Directory.CreateDirectory(saveDir);
@ -384,6 +395,7 @@ namespace pCampBot
{
client.Assets.RequestImage(prim.Textures.DefaultTexture.TextureID, ImageType.Normal, Asset_TextureCallback_Texture);
}
for (int i = 0; i < prim.Textures.FaceTextures.Length; i++)
{
if (prim.Textures.FaceTextures[i] != null)
@ -392,10 +404,10 @@ namespace pCampBot
{
client.Assets.RequestImage(prim.Textures.FaceTextures[i].TextureID, ImageType.Normal, Asset_TextureCallback_Texture);
}
}
}
}
if (prim.Sculpt.SculptTexture != UUID.Zero)
{
client.Assets.RequestImage(prim.Sculpt.SculptTexture, ImageType.Normal, Asset_TextureCallback_Texture);

View File

@ -1,10 +1,13 @@
This is the PhysicsCamperbot libslBot tester.
This is designed to be run in standalone mode with authorize accounts
turned off as a way to stress test the simulator. It creates <N>
clients that log in, randomly jump/walk around, and say excuses from
This is designed to stress test the simulator. It creates <N>
clients that log in, randomly jump/walk around, and can say excuses from
the BOFH.
Bots must have accounts already created. Each bot will have the same firstname and password
but their lastname will be appended with _<bot-number> starting from 0. So if you have two bots called ima bot, their
first names will be ima_bot_0 and ima_bot_1.
*** WARNING ***
Using this bot on a public grid could get you banned permanently, so
just say No! to griefing!
@ -21,19 +24,8 @@ pCampBot.exe will end up in the regular opensim/bin folder
----- Running the bot -----
windows: pCampBot.exe -botcount <N> -loginuri <URI>
*nix: mono pCampBot.exe -botcount <N> -loginuri <URI>
The names it produces are random by default, however, you can specify
either a firstname or a lastname in the command line also.
ex: pCampBot.exe -botcount <N> -loginuri <URI> -lastname <lastname>
If you specify both a firstname *and* a lastname, you'll likely run
into trouble unless you're only running a single bot. In that case,
there's also a password option.
pCampBot.exe -botcount 1 -loginuri http://somegrid.com:8002 -firstname SomeDude -lastname SomeDude -password GobbleDeGook
windows: pCampBot.exe -botcount <N> -loginuri <URI> -firstname <bot-first-name> -lastname <bot-last-name-stem> -password <bot-password>
*nix: mono pCampBot.exe -botcount <N> -loginuri <URI> -firstname <bot-first-name> -lastname <bot-last-name-stem> -password <bot-password>
----- Commands -----
@ -41,4 +33,3 @@ The bot has console commands:
help - lists the console commands and what they do
shutdown - gracefully shuts down the bots
quit - forcefully shuts things down leaving stuff unclean
addbots N - adds N number of random bots. (replace 'N' with a number)

View File

@ -95,9 +95,9 @@ namespace pCampBot
"Spawns a set of bots to test an OpenSim region\n\n" +
" -l, -loginuri loginuri for sim to log into (required)\n" +
" -n, -botcount number of bots to start (default: 1)\n" +
" -firstname first name for the bot(s) (default: random string)\n" +
" -lastname lastname for the bot(s) (default: random string)\n" +
" -password password for the bots(s) (default: random string)\n" +
" -firstname first name for the bots\n" +
" -lastname lastname for the bots. Each lastname will have _<bot-number> appended, e.g. Ima Bot_0\n" +
" -password password for the bots\n" +
" -wear set appearance folder to load from (default: no)\n" +
" -h, -help show this message"
);

Binary file not shown.