diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs index 3018d94..5457dc3 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs | |||
@@ -41,12 +41,13 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; | |||
41 | using OpenSim.Region.Framework.Scenes; | 41 | using OpenSim.Region.Framework.Scenes; |
42 | using OpenSim.Services.Interfaces; | 42 | using OpenSim.Services.Interfaces; |
43 | using OpenSim.Tests.Common; | 43 | using OpenSim.Tests.Common; |
44 | using System.Threading; | ||
44 | 45 | ||
45 | namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | 46 | namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests |
46 | { | 47 | { |
47 | [TestFixture] | 48 | [TestFixture] |
48 | public class ChatModuleTests : OpenSimTestCase | 49 | public class ChatModuleTests : OpenSimTestCase |
49 | { | 50 | { |
50 | [TestFixtureSetUp] | 51 | [TestFixtureSetUp] |
51 | public void FixtureInit() | 52 | public void FixtureInit() |
52 | { | 53 | { |
@@ -65,14 +66,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
65 | } | 66 | } |
66 | 67 | ||
67 | private void SetupNeighbourRegions(TestScene sceneA, TestScene sceneB) | 68 | private void SetupNeighbourRegions(TestScene sceneA, TestScene sceneB) |
68 | { | 69 | { |
69 | // XXX: HTTP server is not (and should not be) necessary for this test, though it's absence makes the | 70 | // XXX: HTTP server is not (and should not be) necessary for this test, though it's absence makes the |
70 | // CapabilitiesModule complain when it can't set up HTTP endpoints. | 71 | // CapabilitiesModule complain when it can't set up HTTP endpoints. |
71 | // BaseHttpServer httpServer = new BaseHttpServer(99999); | 72 | BaseHttpServer httpServer = new BaseHttpServer(99999); |
72 | // MainServer.AddHttpServer(httpServer); | 73 | MainServer.AddHttpServer(httpServer); |
73 | // MainServer.Instance = httpServer; | 74 | MainServer.Instance = httpServer; |
74 | 75 | ||
75 | // We need entity transfer modules so that when sp2 logs into the east region, the region calls | 76 | // We need entity transfer modules so that when sp2 logs into the east region, the region calls |
76 | // EntityTransferModuleto set up a child agent on the west region. | 77 | // EntityTransferModuleto set up a child agent on the west region. |
77 | // XXX: However, this is not an entity transfer so is misleading. | 78 | // XXX: However, this is not an entity transfer so is misleading. |
78 | EntityTransferModule etmA = new EntityTransferModule(); | 79 | EntityTransferModule etmA = new EntityTransferModule(); |
@@ -86,7 +87,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
86 | modulesConfig.Set("SimulationServices", lscm.Name); | 87 | modulesConfig.Set("SimulationServices", lscm.Name); |
87 | 88 | ||
88 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); | 89 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); |
89 | SceneHelpers.SetupSceneModules(sceneA, config, new CapabilitiesModule(), etmA, new ChatModule()); | 90 | SceneHelpers.SetupSceneModules(sceneA, config, new CapabilitiesModule(), etmA, new ChatModule()); |
90 | SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB, new ChatModule()); | 91 | SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB, new ChatModule()); |
91 | } | 92 | } |
92 | 93 | ||
@@ -110,8 +111,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
110 | Vector3 sp2Position = new Vector3(250, 128, 20); | 111 | Vector3 sp2Position = new Vector3(250, 128, 20); |
111 | 112 | ||
112 | SceneHelpers sh = new SceneHelpers(); | 113 | SceneHelpers sh = new SceneHelpers(); |
113 | TestScene sceneWest = sh.SetupScene("sceneWest", TestHelpers.ParseTail(0x1), 1000, 1000); | 114 | TestScene sceneWest = sh.SetupScene("sceneWest", TestHelpers.ParseTail(0x1), 1000, 1000); |
114 | TestScene sceneEast = sh.SetupScene("sceneEast", TestHelpers.ParseTail(0x2), 1001, 1000); | 115 | TestScene sceneEast = sh.SetupScene("sceneEast", TestHelpers.ParseTail(0x2), 1001, 1000); |
115 | 116 | ||
116 | SetupNeighbourRegions(sceneWest, sceneEast); | 117 | SetupNeighbourRegions(sceneWest, sceneEast); |
117 | 118 | ||
@@ -123,12 +124,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
123 | // physics is irrelevant to this test. | 124 | // physics is irrelevant to this test. |
124 | sp1.Flying = true; | 125 | sp1.Flying = true; |
125 | 126 | ||
126 | // When sp1 logs in to sceneEast, it sets up a child agent in sceneWest and informs the sp2 client to | 127 | // When sp1 logs in to sceneEast, it sets up a child agent in sceneWest and informs the sp2 client to |
127 | // make the connection. For this test, will simplify this chain by making the connection directly. | 128 | // make the connection. For this test, will simplify this chain by making the connection directly. |
128 | ScenePresence sp1Child = SceneHelpers.AddChildScenePresence(sceneWest, sp1Uuid); | 129 | ScenePresence sp1Child = SceneHelpers.AddChildScenePresence(sceneWest, sp1Uuid); |
129 | TestClient sp1ChildClient = (TestClient)sp1Child.ControllingClient; | 130 | TestClient sp1ChildClient = (TestClient)sp1Child.ControllingClient; |
130 | 131 | ||
131 | sp1.AbsolutePosition = sp1Position; | 132 | sp1.AbsolutePosition = sp1Position; |
132 | 133 | ||
133 | ScenePresence sp2 = SceneHelpers.AddScenePresence(sceneWest, sp2Uuid); | 134 | ScenePresence sp2 = SceneHelpers.AddScenePresence(sceneWest, sp2Uuid); |
134 | TestClient sp2Client = (TestClient)sp2.ControllingClient; | 135 | TestClient sp2Client = (TestClient)sp2.ControllingClient; |
@@ -137,7 +138,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
137 | ScenePresence sp2Child = SceneHelpers.AddChildScenePresence(sceneEast, sp2Uuid); | 138 | ScenePresence sp2Child = SceneHelpers.AddChildScenePresence(sceneEast, sp2Uuid); |
138 | TestClient sp2ChildClient = (TestClient)sp2Child.ControllingClient; | 139 | TestClient sp2ChildClient = (TestClient)sp2Child.ControllingClient; |
139 | 140 | ||
140 | sp2.AbsolutePosition = sp2Position; | 141 | sp2.AbsolutePosition = sp2Position; |
141 | 142 | ||
142 | // We must update the scenes in order to make the root new root agents trigger position updates in their | 143 | // We must update the scenes in order to make the root new root agents trigger position updates in their |
143 | // children. | 144 | // children. |
@@ -146,19 +147,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
146 | 147 | ||
147 | // Check child positions are correct. | 148 | // Check child positions are correct. |
148 | Assert.AreEqual( | 149 | Assert.AreEqual( |
149 | new Vector3(sp1Position.X + sceneEast.RegionInfo.RegionSizeX, sp1Position.Y, sp1Position.Z), | 150 | new Vector3(sp1Position.X + sceneEast.RegionInfo.RegionSizeX, sp1Position.Y, sp1Position.Z), |
150 | sp1ChildClient.SceneAgent.AbsolutePosition); | 151 | sp1ChildClient.SceneAgent.AbsolutePosition); |
151 | 152 | ||
152 | Assert.AreEqual( | 153 | Assert.AreEqual( |
153 | new Vector3(sp2Position.X - sceneWest.RegionInfo.RegionSizeX, sp2Position.Y, sp2Position.Z), | 154 | new Vector3(sp2Position.X - sceneWest.RegionInfo.RegionSizeX, sp2Position.Y, sp2Position.Z), |
154 | sp2ChildClient.SceneAgent.AbsolutePosition); | 155 | sp2ChildClient.SceneAgent.AbsolutePosition); |
155 | 156 | ||
156 | string receivedSp1ChatMessage = ""; | 157 | string receivedSp1ChatMessage = ""; |
157 | string receivedSp2ChatMessage = ""; | 158 | string receivedSp2ChatMessage = ""; |
158 | 159 | ||
159 | sp1ChildClient.OnReceivedChatMessage | 160 | sp1ChildClient.OnReceivedChatMessage |
160 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp1ChatMessage = message; | 161 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp1ChatMessage = message; |
161 | sp2ChildClient.OnReceivedChatMessage | 162 | sp2ChildClient.OnReceivedChatMessage |
162 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp2ChatMessage = message; | 163 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp2ChatMessage = message; |
163 | 164 | ||
164 | TestUserInRange(sp1Client, "ello darling", ref receivedSp2ChatMessage); | 165 | TestUserInRange(sp1Client, "ello darling", ref receivedSp2ChatMessage); |
@@ -166,11 +167,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
166 | 167 | ||
167 | sp1Position = new Vector3(30, 128, 20); | 168 | sp1Position = new Vector3(30, 128, 20); |
168 | sp1.AbsolutePosition = sp1Position; | 169 | sp1.AbsolutePosition = sp1Position; |
170 | sceneWest.Update(1); | ||
169 | sceneEast.Update(1); | 171 | sceneEast.Update(1); |
172 | Thread.Sleep(12000); // child updates are now time limited | ||
173 | sceneWest.Update(5); | ||
174 | sceneEast.Update(5); | ||
170 | 175 | ||
171 | // Check child position is correct. | 176 | // Check child position is correct. |
172 | Assert.AreEqual( | 177 | Assert.AreEqual( |
173 | new Vector3(sp1Position.X + sceneEast.RegionInfo.RegionSizeX, sp1Position.Y, sp1Position.Z), | 178 | new Vector3(sp1Position.X + sceneEast.RegionInfo.RegionSizeX, sp1Position.Y, sp1Position.Z), |
174 | sp1ChildClient.SceneAgent.AbsolutePosition); | 179 | sp1ChildClient.SceneAgent.AbsolutePosition); |
175 | 180 | ||
176 | TestUserOutOfRange(sp1Client, "beef", ref receivedSp2ChatMessage); | 181 | TestUserOutOfRange(sp1Client, "beef", ref receivedSp2ChatMessage); |
@@ -197,8 +202,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
197 | Vector3 sp2Position = new Vector3(128, 6, 20); | 202 | Vector3 sp2Position = new Vector3(128, 6, 20); |
198 | 203 | ||
199 | SceneHelpers sh = new SceneHelpers(); | 204 | SceneHelpers sh = new SceneHelpers(); |
200 | TestScene sceneNorth = sh.SetupScene("sceneNorth", TestHelpers.ParseTail(0x1), 1000, 1000); | 205 | TestScene sceneNorth = sh.SetupScene("sceneNorth", TestHelpers.ParseTail(0x1), 1000, 1000); |
201 | TestScene sceneSouth = sh.SetupScene("sceneSouth", TestHelpers.ParseTail(0x2), 1000, 1001); | 206 | TestScene sceneSouth = sh.SetupScene("sceneSouth", TestHelpers.ParseTail(0x2), 1000, 1001); |
202 | 207 | ||
203 | SetupNeighbourRegions(sceneNorth, sceneSouth); | 208 | SetupNeighbourRegions(sceneNorth, sceneSouth); |
204 | 209 | ||
@@ -210,12 +215,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
210 | // physics is irrelevant to this test. | 215 | // physics is irrelevant to this test. |
211 | sp1.Flying = true; | 216 | sp1.Flying = true; |
212 | 217 | ||
213 | // When sp1 logs in to sceneEast, it sets up a child agent in sceneNorth and informs the sp2 client to | 218 | // When sp1 logs in to sceneEast, it sets up a child agent in sceneNorth and informs the sp2 client to |
214 | // make the connection. For this test, will simplify this chain by making the connection directly. | 219 | // make the connection. For this test, will simplify this chain by making the connection directly. |
215 | ScenePresence sp1Child = SceneHelpers.AddChildScenePresence(sceneSouth, sp1Uuid); | 220 | ScenePresence sp1Child = SceneHelpers.AddChildScenePresence(sceneSouth, sp1Uuid); |
216 | TestClient sp1ChildClient = (TestClient)sp1Child.ControllingClient; | 221 | TestClient sp1ChildClient = (TestClient)sp1Child.ControllingClient; |
217 | 222 | ||
218 | sp1.AbsolutePosition = sp1Position; | 223 | sp1.AbsolutePosition = sp1Position; |
219 | 224 | ||
220 | ScenePresence sp2 = SceneHelpers.AddScenePresence(sceneSouth, sp2Uuid); | 225 | ScenePresence sp2 = SceneHelpers.AddScenePresence(sceneSouth, sp2Uuid); |
221 | TestClient sp2Client = (TestClient)sp2.ControllingClient; | 226 | TestClient sp2Client = (TestClient)sp2.ControllingClient; |
@@ -224,7 +229,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
224 | ScenePresence sp2Child = SceneHelpers.AddChildScenePresence(sceneNorth, sp2Uuid); | 229 | ScenePresence sp2Child = SceneHelpers.AddChildScenePresence(sceneNorth, sp2Uuid); |
225 | TestClient sp2ChildClient = (TestClient)sp2Child.ControllingClient; | 230 | TestClient sp2ChildClient = (TestClient)sp2Child.ControllingClient; |
226 | 231 | ||
227 | sp2.AbsolutePosition = sp2Position; | 232 | sp2.AbsolutePosition = sp2Position; |
228 | 233 | ||
229 | // We must update the scenes in order to make the root new root agents trigger position updates in their | 234 | // We must update the scenes in order to make the root new root agents trigger position updates in their |
230 | // children. | 235 | // children. |
@@ -233,19 +238,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
233 | 238 | ||
234 | // Check child positions are correct. | 239 | // Check child positions are correct. |
235 | Assert.AreEqual( | 240 | Assert.AreEqual( |
236 | new Vector3(sp1Position.X, sp1Position.Y - sceneNorth.RegionInfo.RegionSizeY, sp1Position.Z), | 241 | new Vector3(sp1Position.X, sp1Position.Y - sceneNorth.RegionInfo.RegionSizeY, sp1Position.Z), |
237 | sp1ChildClient.SceneAgent.AbsolutePosition); | 242 | sp1ChildClient.SceneAgent.AbsolutePosition); |
238 | 243 | ||
239 | Assert.AreEqual( | 244 | Assert.AreEqual( |
240 | new Vector3(sp2Position.X, sp2Position.Y + sceneSouth.RegionInfo.RegionSizeY, sp2Position.Z), | 245 | new Vector3(sp2Position.X, sp2Position.Y + sceneSouth.RegionInfo.RegionSizeY, sp2Position.Z), |
241 | sp2ChildClient.SceneAgent.AbsolutePosition); | 246 | sp2ChildClient.SceneAgent.AbsolutePosition); |
242 | 247 | ||
243 | string receivedSp1ChatMessage = ""; | 248 | string receivedSp1ChatMessage = ""; |
244 | string receivedSp2ChatMessage = ""; | 249 | string receivedSp2ChatMessage = ""; |
245 | 250 | ||
246 | sp1ChildClient.OnReceivedChatMessage | 251 | sp1ChildClient.OnReceivedChatMessage |
247 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp1ChatMessage = message; | 252 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp1ChatMessage = message; |
248 | sp2ChildClient.OnReceivedChatMessage | 253 | sp2ChildClient.OnReceivedChatMessage |
249 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp2ChatMessage = message; | 254 | += (message, type, fromPos, fromName, fromAgentID, ownerID, source, audible) => receivedSp2ChatMessage = message; |
250 | 255 | ||
251 | TestUserInRange(sp1Client, "ello darling", ref receivedSp2ChatMessage); | 256 | TestUserInRange(sp1Client, "ello darling", ref receivedSp2ChatMessage); |
@@ -254,16 +259,20 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
254 | sp1Position = new Vector3(30, 128, 20); | 259 | sp1Position = new Vector3(30, 128, 20); |
255 | sp1.AbsolutePosition = sp1Position; | 260 | sp1.AbsolutePosition = sp1Position; |
256 | sceneNorth.Update(1); | 261 | sceneNorth.Update(1); |
262 | sceneSouth.Update(1); | ||
263 | Thread.Sleep(12000); // child updates are now time limited | ||
264 | sceneNorth.Update(5); | ||
265 | sceneSouth.Update(5); | ||
257 | 266 | ||
258 | // Check child position is correct. | 267 | // Check child position is correct. |
259 | Assert.AreEqual( | 268 | Assert.AreEqual( |
260 | new Vector3(sp1Position.X, sp1Position.Y - sceneNorth.RegionInfo.RegionSizeY, sp1Position.Z), | 269 | new Vector3(sp1Position.X, sp1Position.Y - sceneNorth.RegionInfo.RegionSizeY, sp1Position.Z), |
261 | sp1ChildClient.SceneAgent.AbsolutePosition); | 270 | sp1ChildClient.SceneAgent.AbsolutePosition); |
262 | 271 | ||
263 | TestUserOutOfRange(sp1Client, "beef", ref receivedSp2ChatMessage); | 272 | TestUserOutOfRange(sp1Client, "beef", ref receivedSp2ChatMessage); |
264 | TestUserOutOfRange(sp2Client, "lentils", ref receivedSp1ChatMessage); | 273 | TestUserOutOfRange(sp2Client, "lentils", ref receivedSp1ChatMessage); |
265 | } | 274 | } |
266 | 275 | ||
267 | private void TestUserInRange(TestClient speakClient, string testMessage, ref string receivedMessage) | 276 | private void TestUserInRange(TestClient speakClient, string testMessage, ref string receivedMessage) |
268 | { | 277 | { |
269 | receivedMessage = ""; | 278 | receivedMessage = ""; |