* Put the StandaloneTeleportTest in a new thread and call Thread.Join() inside a try/Catch (ThreadAbortException) to try and get around scene code aborting the testing thread. Use a Messenger class to report the results back to the test thread.
parent
2c20d60de6
commit
1b933c9116
|
@ -38,6 +38,7 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion;
|
||||||
using OpenSim.Tests.Common;
|
using OpenSim.Tests.Common;
|
||||||
using OpenSim.Tests.Common.Mock;
|
using OpenSim.Tests.Common.Mock;
|
||||||
using OpenSim.Tests.Common.Setup;
|
using OpenSim.Tests.Common.Setup;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace OpenSim.Region.Framework.Scenes.Tests
|
namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
{
|
{
|
||||||
|
@ -55,9 +56,47 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
public void TestSimpleNotNeighboursTeleport()
|
public void TestSimpleNotNeighboursTeleport()
|
||||||
{
|
{
|
||||||
TestHelper.InMethod();
|
TestHelper.InMethod();
|
||||||
|
ThreadRunResults results = new ThreadRunResults();
|
||||||
|
results.Result = false;
|
||||||
|
results.Message = "Test did not run";
|
||||||
|
TestRunning testClass = new TestRunning(results);
|
||||||
|
|
||||||
|
Thread testThread = new Thread(testClass.run);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Seems kind of redundant to start a thread and then join it, however.. We need to protect against
|
||||||
|
// A thread abort exception in the simulator code.
|
||||||
|
testThread.Start();
|
||||||
|
testThread.Join();
|
||||||
|
}
|
||||||
|
catch (ThreadAbortException)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
Assert.That(testClass.results.Result, Is.EqualTo(true), testClass.results.Message);
|
||||||
// Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod());
|
// Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ThreadRunResults
|
||||||
|
{
|
||||||
|
public bool Result = false;
|
||||||
|
public string Message = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestRunning
|
||||||
|
{
|
||||||
|
public ThreadRunResults results;
|
||||||
|
public TestRunning(ThreadRunResults t)
|
||||||
|
{
|
||||||
|
results = t;
|
||||||
|
}
|
||||||
|
public void run(object o)
|
||||||
|
{
|
||||||
|
|
||||||
|
//results.Result = true;
|
||||||
log4net.Config.XmlConfigurator.Configure();
|
log4net.Config.XmlConfigurator.Configure();
|
||||||
|
|
||||||
UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100");
|
UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100");
|
||||||
|
@ -80,26 +119,62 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
|
|
||||||
ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>();
|
ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>();
|
||||||
|
|
||||||
|
results.Result = (sceneACapsModule.GetCapsPath(agentId) == client.CapsSeedUrl);
|
||||||
|
|
||||||
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Incorrect caps object path set up in sceneA";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
Assert.That(
|
Assert.That(
|
||||||
sceneACapsModule.GetCapsPath(agentId),
|
sceneACapsModule.GetCapsPath(agentId),
|
||||||
Is.EqualTo(client.CapsSeedUrl),
|
Is.EqualTo(client.CapsSeedUrl),
|
||||||
"Incorrect caps object path set up in sceneA");
|
"Incorrect caps object path set up in sceneA");
|
||||||
|
*/
|
||||||
// FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used.
|
// FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used.
|
||||||
|
|
||||||
|
|
||||||
client.TeleportTargetScene = sceneB;
|
client.TeleportTargetScene = sceneB;
|
||||||
client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40));
|
client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40));
|
||||||
|
|
||||||
Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
|
results.Result = (sceneB.GetScenePresence(agentId) != null);
|
||||||
Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Client does not have an agent in sceneB";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
|
||||||
|
|
||||||
|
//Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
|
||||||
|
|
||||||
|
results.Result = (sceneA.GetScenePresence(agentId) == null);
|
||||||
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Client still had an agent in sceneA";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>();
|
ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>();
|
||||||
|
|
||||||
|
|
||||||
|
results.Result = ("http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort +
|
||||||
|
"/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/" == client.CapsSeedUrl);
|
||||||
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Incorrect caps object path set up in sceneB";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Temporary assertion - caps url construction should at least be doable through a method.
|
// Temporary assertion - caps url construction should at least be doable through a method.
|
||||||
|
/*
|
||||||
Assert.That(
|
Assert.That(
|
||||||
"http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
|
"http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
|
||||||
Is.EqualTo(client.CapsSeedUrl),
|
Is.EqualTo(client.CapsSeedUrl),
|
||||||
"Incorrect caps object path set up in sceneB");
|
"Incorrect caps object path set up in sceneB");
|
||||||
|
*/
|
||||||
// This assertion will currently fail since we don't remove the caps paths when no longer needed
|
// This assertion will currently fail since we don't remove the caps paths when no longer needed
|
||||||
//Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path");
|
//Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue