From 884009ed33eab204588cc3978a46abff1098b832 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 22 Jan 2009 19:46:31 +0000 Subject: * Add some caps seed capability path checking to the simple non neighbours standalone region teleport test --- .../Environment/Scenes/Tests/SceneTestUtils.cs | 71 ++++++++++++++++------ .../Scenes/Tests/StandaloneTeleportTests.cs | 25 ++++++-- OpenSim/Tests/Common/Mock/TestClient.cs | 10 ++- 3 files changed, 82 insertions(+), 24 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs index dee3914..6fa918a 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs @@ -99,40 +99,73 @@ namespace OpenSim.Region.Environment.Scenes.Tests } /// - /// Add a root agent + /// Generate some standard agent connection data. /// - /// /// - /// - public static TestClient AddRootAgent(Scene scene, UUID agentId) + /// + public static AgentCircuitData GenerateAgentData(UUID agentId) { string firstName = "testfirstname"; - AgentCircuitData agent = new AgentCircuitData(); - agent.AgentID = agentId; - agent.firstname = firstName; - agent.lastname = "testlastname"; - agent.SessionID = UUID.Zero; - agent.SecureSessionID = UUID.Zero; - agent.circuitcode = 123; - agent.BaseFolder = UUID.Zero; - agent.InventoryFolder = UUID.Zero; - agent.startpos = Vector3.Zero; - agent.CapsPath = "http://wibble.com"; + AgentCircuitData agentData = new AgentCircuitData(); + agentData.AgentID = agentId; + agentData.firstname = firstName; + agentData.lastname = "testlastname"; + agentData.SessionID = UUID.Zero; + agentData.SecureSessionID = UUID.Zero; + agentData.circuitcode = 123; + agentData.BaseFolder = UUID.Zero; + agentData.InventoryFolder = UUID.Zero; + agentData.startpos = Vector3.Zero; + agentData.CapsPath = "http://wibble.com"; + return agentData; + } + + /// + /// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test + /// + /// + /// + /// + public static TestClient AddRootAgent(Scene scene, UUID agentId) + { + return AddRootAgent(scene, GenerateAgentData(agentId)); + } + + /// + /// Add a root agent. + /// + /// + /// This function + /// + /// 1) Tells the scene that an agent is coming. Normally, the login service (local if standalone, from the + /// userserver if grid) would give initial login data back to the client and separately tell the scene that the + /// agent was coming. + /// + /// 2) Connects the agent with the scene + /// + /// This function performs actions equivalent with notifying the scene that an agent is + /// coming and then actually connecting the agent to the scene. The one step missed out is the very first + /// + /// + /// + /// + public static TestClient AddRootAgent(Scene scene, AgentCircuitData agentData) + { // We emulate the proper login sequence here by doing things in three stages // Stage 1: simulate login by telling the scene to expect a new user connection - scene.NewUserConnection(agent); + scene.NewUserConnection(agentData); // Stage 2: add the new client as a child agent to the scene - TestClient client = new TestClient(agent, scene); + TestClient client = new TestClient(agentData, scene); scene.AddNewClient(client); // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, // inventory, etc.) - scene.AgentCrossing(agent.AgentID, new Vector3(90, 90, 90), false); + scene.AgentCrossing(agentData.AgentID, new Vector3(90, 90, 90), false); - return client; + return client; } /// diff --git a/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs index a61b9c2..3bc8467 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs @@ -74,17 +74,34 @@ namespace OpenSim.Region.Environment.Scenes.Tests sceneB.SetModuleInterfaces(); sceneB.RegisterRegionWithGrid(); - UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041"); - + UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041"); TestClient client = SceneTestUtils.AddRootAgent(sceneA, agentId); + + ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface(); + Assert.That( + sceneACapsModule.GetCapsPath(agentId), + Is.EqualTo(client.CapsSeedUrl), + "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. - client.TeleportTargetScene = sceneB; - + client.TeleportTargetScene = sceneB; 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"); Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA"); + ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface(); + + // Temporary assertion - caps url construction should at least be doable through a method. + Assert.That( + "http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/", + Is.EqualTo(client.CapsSeedUrl), + "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 + //Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path"); + // TODO: Check that more of everything is as it should be // TODO: test what happens if we try to teleport to a region that doesn't exist diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index 62350b9..f899375 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -270,6 +270,11 @@ namespace OpenSim.Tests.Common.Mock /// This agent's UUID /// private UUID m_agentId; + + /// + /// The last caps seed url that this client was given. + /// + public string CapsSeedUrl; private Vector3 startPos = new Vector3(128, 128, 2); @@ -377,6 +382,7 @@ namespace OpenSim.Tests.Common.Mock m_lastName = agentData.lastname; m_circuitCode = agentData.circuitcode; m_scene = scene; + CapsSeedUrl = agentData.CapsPath; } /// @@ -496,7 +502,7 @@ namespace OpenSim.Tests.Common.Mock ICapabilitiesModule capsModule = m_scene.RequestModuleInterface(); agentData.CapsPath = capsModule.GetCapsPath(m_agentId); - agentData.ChildrenCapSeeds = new Dictionary(capsModule.GetChildrenSeeds(m_agentId)); + agentData.ChildrenCapSeeds = new Dictionary(capsModule.GetChildrenSeeds(m_agentId)); return agentData; } @@ -519,6 +525,8 @@ namespace OpenSim.Tests.Common.Mock { m_log.DebugFormat("[TEST CLIENT]: Received SendRegionTeleport"); + CapsSeedUrl = capsURL; + TeleportSceneClient.CompleteMovement(); //TeleportTargetScene.AgentCrossing(newAgent.AgentID, new Vector3(90, 90, 90), false); } -- cgit v1.1