diff options
3 files changed, 82 insertions, 24 deletions
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 | |||
99 | } | 99 | } |
100 | 100 | ||
101 | /// <summary> | 101 | /// <summary> |
102 | /// Add a root agent | 102 | /// Generate some standard agent connection data. |
103 | /// </summary> | 103 | /// </summary> |
104 | /// <param name="scene"></param> | ||
105 | /// <param name="agentId"></param> | 104 | /// <param name="agentId"></param> |
106 | /// <returns></returns> | 105 | /// <returns></returns> |
107 | public static TestClient AddRootAgent(Scene scene, UUID agentId) | 106 | public static AgentCircuitData GenerateAgentData(UUID agentId) |
108 | { | 107 | { |
109 | string firstName = "testfirstname"; | 108 | string firstName = "testfirstname"; |
110 | 109 | ||
111 | AgentCircuitData agent = new AgentCircuitData(); | 110 | AgentCircuitData agentData = new AgentCircuitData(); |
112 | agent.AgentID = agentId; | 111 | agentData.AgentID = agentId; |
113 | agent.firstname = firstName; | 112 | agentData.firstname = firstName; |
114 | agent.lastname = "testlastname"; | 113 | agentData.lastname = "testlastname"; |
115 | agent.SessionID = UUID.Zero; | 114 | agentData.SessionID = UUID.Zero; |
116 | agent.SecureSessionID = UUID.Zero; | 115 | agentData.SecureSessionID = UUID.Zero; |
117 | agent.circuitcode = 123; | 116 | agentData.circuitcode = 123; |
118 | agent.BaseFolder = UUID.Zero; | 117 | agentData.BaseFolder = UUID.Zero; |
119 | agent.InventoryFolder = UUID.Zero; | 118 | agentData.InventoryFolder = UUID.Zero; |
120 | agent.startpos = Vector3.Zero; | 119 | agentData.startpos = Vector3.Zero; |
121 | agent.CapsPath = "http://wibble.com"; | 120 | agentData.CapsPath = "http://wibble.com"; |
122 | 121 | ||
122 | return agentData; | ||
123 | } | ||
124 | |||
125 | /// <summary> | ||
126 | /// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test | ||
127 | /// </summary> | ||
128 | /// <param name="scene"></param> | ||
129 | /// <param name="agentId"></param> | ||
130 | /// <returns></returns> | ||
131 | public static TestClient AddRootAgent(Scene scene, UUID agentId) | ||
132 | { | ||
133 | return AddRootAgent(scene, GenerateAgentData(agentId)); | ||
134 | } | ||
135 | |||
136 | /// <summary> | ||
137 | /// Add a root agent. | ||
138 | /// </summary> | ||
139 | /// | ||
140 | /// This function | ||
141 | /// | ||
142 | /// 1) Tells the scene that an agent is coming. Normally, the login service (local if standalone, from the | ||
143 | /// userserver if grid) would give initial login data back to the client and separately tell the scene that the | ||
144 | /// agent was coming. | ||
145 | /// | ||
146 | /// 2) Connects the agent with the scene | ||
147 | /// | ||
148 | /// This function performs actions equivalent with notifying the scene that an agent is | ||
149 | /// coming and then actually connecting the agent to the scene. The one step missed out is the very first | ||
150 | /// | ||
151 | /// <param name="scene"></param> | ||
152 | /// <param name="agentData"></param> | ||
153 | /// <returns></returns> | ||
154 | public static TestClient AddRootAgent(Scene scene, AgentCircuitData agentData) | ||
155 | { | ||
123 | // We emulate the proper login sequence here by doing things in three stages | 156 | // We emulate the proper login sequence here by doing things in three stages |
124 | // Stage 1: simulate login by telling the scene to expect a new user connection | 157 | // Stage 1: simulate login by telling the scene to expect a new user connection |
125 | scene.NewUserConnection(agent); | 158 | scene.NewUserConnection(agentData); |
126 | 159 | ||
127 | // Stage 2: add the new client as a child agent to the scene | 160 | // Stage 2: add the new client as a child agent to the scene |
128 | TestClient client = new TestClient(agent, scene); | 161 | TestClient client = new TestClient(agentData, scene); |
129 | scene.AddNewClient(client); | 162 | scene.AddNewClient(client); |
130 | 163 | ||
131 | // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, | 164 | // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, |
132 | // inventory, etc.) | 165 | // inventory, etc.) |
133 | scene.AgentCrossing(agent.AgentID, new Vector3(90, 90, 90), false); | 166 | scene.AgentCrossing(agentData.AgentID, new Vector3(90, 90, 90), false); |
134 | 167 | ||
135 | return client; | 168 | return client; |
136 | } | 169 | } |
137 | 170 | ||
138 | /// <summary> | 171 | /// <summary> |
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 | |||
74 | sceneB.SetModuleInterfaces(); | 74 | sceneB.SetModuleInterfaces(); |
75 | sceneB.RegisterRegionWithGrid(); | 75 | sceneB.RegisterRegionWithGrid(); |
76 | 76 | ||
77 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041"); | 77 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041"); |
78 | |||
79 | TestClient client = SceneTestUtils.AddRootAgent(sceneA, agentId); | 78 | TestClient client = SceneTestUtils.AddRootAgent(sceneA, agentId); |
79 | |||
80 | ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>(); | ||
80 | 81 | ||
82 | Assert.That( | ||
83 | sceneACapsModule.GetCapsPath(agentId), | ||
84 | Is.EqualTo(client.CapsSeedUrl), | ||
85 | "Incorrect caps object path set up in sceneA"); | ||
86 | |||
81 | // FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used. | 87 | // FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used. |
82 | client.TeleportTargetScene = sceneB; | 88 | client.TeleportTargetScene = sceneB; |
83 | |||
84 | client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40)); | 89 | client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40)); |
90 | |||
85 | Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB"); | 91 | Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB"); |
86 | Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA"); | 92 | Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA"); |
87 | 93 | ||
94 | ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>(); | ||
95 | |||
96 | // Temporary assertion - caps url construction should at least be doable through a method. | ||
97 | Assert.That( | ||
98 | "http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/", | ||
99 | Is.EqualTo(client.CapsSeedUrl), | ||
100 | "Incorrect caps object path set up in sceneB"); | ||
101 | |||
102 | // This assertion will currently fail since we don't remove the caps paths when no longer needed | ||
103 | //Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path"); | ||
104 | |||
88 | // TODO: Check that more of everything is as it should be | 105 | // TODO: Check that more of everything is as it should be |
89 | 106 | ||
90 | // TODO: test what happens if we try to teleport to a region that doesn't exist | 107 | // 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 | |||
270 | /// This agent's UUID | 270 | /// This agent's UUID |
271 | /// </value> | 271 | /// </value> |
272 | private UUID m_agentId; | 272 | private UUID m_agentId; |
273 | |||
274 | /// <value> | ||
275 | /// The last caps seed url that this client was given. | ||
276 | /// </value> | ||
277 | public string CapsSeedUrl; | ||
273 | 278 | ||
274 | private Vector3 startPos = new Vector3(128, 128, 2); | 279 | private Vector3 startPos = new Vector3(128, 128, 2); |
275 | 280 | ||
@@ -377,6 +382,7 @@ namespace OpenSim.Tests.Common.Mock | |||
377 | m_lastName = agentData.lastname; | 382 | m_lastName = agentData.lastname; |
378 | m_circuitCode = agentData.circuitcode; | 383 | m_circuitCode = agentData.circuitcode; |
379 | m_scene = scene; | 384 | m_scene = scene; |
385 | CapsSeedUrl = agentData.CapsPath; | ||
380 | } | 386 | } |
381 | 387 | ||
382 | /// <summary> | 388 | /// <summary> |
@@ -496,7 +502,7 @@ namespace OpenSim.Tests.Common.Mock | |||
496 | 502 | ||
497 | ICapabilitiesModule capsModule = m_scene.RequestModuleInterface<ICapabilitiesModule>(); | 503 | ICapabilitiesModule capsModule = m_scene.RequestModuleInterface<ICapabilitiesModule>(); |
498 | agentData.CapsPath = capsModule.GetCapsPath(m_agentId); | 504 | agentData.CapsPath = capsModule.GetCapsPath(m_agentId); |
499 | agentData.ChildrenCapSeeds = new Dictionary<ulong,string>(capsModule.GetChildrenSeeds(m_agentId)); | 505 | agentData.ChildrenCapSeeds = new Dictionary<ulong, string>(capsModule.GetChildrenSeeds(m_agentId)); |
500 | 506 | ||
501 | return agentData; | 507 | return agentData; |
502 | } | 508 | } |
@@ -519,6 +525,8 @@ namespace OpenSim.Tests.Common.Mock | |||
519 | { | 525 | { |
520 | m_log.DebugFormat("[TEST CLIENT]: Received SendRegionTeleport"); | 526 | m_log.DebugFormat("[TEST CLIENT]: Received SendRegionTeleport"); |
521 | 527 | ||
528 | CapsSeedUrl = capsURL; | ||
529 | |||
522 | TeleportSceneClient.CompleteMovement(); | 530 | TeleportSceneClient.CompleteMovement(); |
523 | //TeleportTargetScene.AgentCrossing(newAgent.AgentID, new Vector3(90, 90, 90), false); | 531 | //TeleportTargetScene.AgentCrossing(newAgent.AgentID, new Vector3(90, 90, 90), false); |
524 | } | 532 | } |