aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Tests')
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs107
1 files changed, 106 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs
index 4d07741..d65b0b6 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectCrossingTests.cs
@@ -26,10 +26,12 @@
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections.Generic;
29using Nini.Config; 30using Nini.Config;
30using NUnit.Framework; 31using NUnit.Framework;
31using OpenMetaverse; 32using OpenMetaverse;
32using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Region.CoreModules.Framework;
33using OpenSim.Region.CoreModules.Framework.EntityTransfer; 35using OpenSim.Region.CoreModules.Framework.EntityTransfer;
34using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; 36using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
35using OpenSim.Region.CoreModules.World.Land; 37using OpenSim.Region.CoreModules.World.Land;
@@ -101,7 +103,110 @@ namespace OpenSim.Region.Framework.Scenes.Tests
101 /// Test cross with no prim limit module. 103 /// Test cross with no prim limit module.
102 /// </summary> 104 /// </summary>
103 /// <remarks> 105 /// <remarks>
104 /// XXX: This test may be better off in a specific PrimLimitsModuleTest class in optional module tests in the 106 /// Possibly this should belong in ScenePresenceCrossingTests, though here it is the object that is being moved
107 /// where the avatar is just a passenger.
108 /// </remarks>
109 [Test]
110 public void TestCrossOnSameSimulatorWithSittingAvatar()
111 {
112 TestHelpers.InMethod();
113// TestHelpers.EnableLogging();
114
115 UUID userId = TestHelpers.ParseTail(0x1);
116 int sceneObjectIdTail = 0x2;
117 Vector3 so1StartPos = new Vector3(128, 10, 20);
118
119 EntityTransferModule etmA = new EntityTransferModule();
120 EntityTransferModule etmB = new EntityTransferModule();
121 LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule();
122
123 IConfigSource config = new IniConfigSource();
124 IConfig modulesConfig = config.AddConfig("Modules");
125 modulesConfig.Set("EntityTransferModule", etmA.Name);
126 modulesConfig.Set("SimulationServices", lscm.Name);
127 IConfig entityTransferConfig = config.AddConfig("EntityTransfer");
128
129 // In order to run a single threaded regression test we do not want the entity transfer module waiting
130 // for a callback from the destination scene before removing its avatar data.
131 entityTransferConfig.Set("wait_for_callback", false);
132
133 SceneHelpers sh = new SceneHelpers();
134 TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000);
135 TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1000, 999);
136
137 SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm);
138 SceneHelpers.SetupSceneModules(sceneA, config, new CapabilitiesModule(), etmA);
139 SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB);
140
141 SceneObjectGroup so1 = SceneHelpers.AddSceneObject(sceneA, 1, userId, "", sceneObjectIdTail);
142 UUID so1Id = so1.UUID;
143 so1.AbsolutePosition = so1StartPos;
144
145 AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
146 TestClient tc = new TestClient(acd, sceneA);
147 List<TestClient> destinationTestClients = new List<TestClient>();
148 EntityTransferHelpers.SetupInformClientOfNeighbourTriggersNeighbourClientCreate(tc, destinationTestClients);
149
150 ScenePresence sp1SceneA = SceneHelpers.AddScenePresence(sceneA, tc, acd);
151 sp1SceneA.AbsolutePosition = so1StartPos;
152 sp1SceneA.HandleAgentRequestSit(sp1SceneA.ControllingClient, sp1SceneA.UUID, so1.UUID, Vector3.Zero);
153
154 // Cross
155 sceneA.SceneGraph.UpdatePrimGroupPosition(
156 so1.LocalId, new Vector3(so1StartPos.X, so1StartPos.Y - 20, so1StartPos.Z), userId);
157
158 SceneObjectGroup so1PostCross;
159
160 {
161 ScenePresence sp1SceneAPostCross = sceneA.GetScenePresence(userId);
162 Assert.IsTrue(sp1SceneAPostCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly false");
163
164 ScenePresence sp1SceneBPostCross = sceneB.GetScenePresence(userId);
165 TestClient sceneBTc = ((TestClient)sp1SceneBPostCross.ControllingClient);
166 sceneBTc.CompleteMovement();
167
168 Assert.IsFalse(sp1SceneBPostCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly true");
169 Assert.IsTrue(sp1SceneBPostCross.IsSatOnObject);
170
171 Assert.IsNull(sceneA.GetSceneObjectGroup(so1Id), "uck");
172 so1PostCross = sceneB.GetSceneObjectGroup(so1Id);
173 Assert.NotNull(so1PostCross);
174 Assert.AreEqual(1, so1PostCross.GetSittingAvatarsCount());
175 Assert.AreEqual(1, so1PostCross.GetLinkedAvatars().Count);
176 }
177
178 Vector3 so1PostCrossPos = so1PostCross.AbsolutePosition;
179
180// Console.WriteLine("CRISSCROSS");
181
182 // Recross
183 sceneB.SceneGraph.UpdatePrimGroupPosition(
184 so1PostCross.LocalId, new Vector3(so1PostCrossPos.X, so1PostCrossPos.Y + 20, so1PostCrossPos.Z), userId);
185
186 {
187 ScenePresence sp1SceneBPostReCross = sceneB.GetScenePresence(userId);
188 Assert.IsTrue(sp1SceneBPostReCross.IsChildAgent, "sp1SceneBPostReCross.IsChildAgent unexpectedly false");
189
190 ScenePresence sp1SceneAPostReCross = sceneA.GetScenePresence(userId);
191 TestClient sceneATc = ((TestClient)sp1SceneAPostReCross.ControllingClient);
192 sceneATc.CompleteMovement();
193
194 Assert.IsFalse(sp1SceneAPostReCross.IsChildAgent, "sp1SceneAPostCross.IsChildAgent unexpectedly true");
195 Assert.IsTrue(sp1SceneAPostReCross.IsSatOnObject);
196
197 Assert.IsNull(sceneB.GetSceneObjectGroup(so1Id), "uck2");
198 SceneObjectGroup so1PostReCross = sceneA.GetSceneObjectGroup(so1Id);
199 Assert.NotNull(so1PostReCross);
200 Assert.AreEqual(1, so1PostReCross.GetSittingAvatarsCount());
201 Assert.AreEqual(1, so1PostReCross.GetLinkedAvatars().Count);
202 }
203 }
204
205 /// <summary>
206 /// Test cross with no prim limit module.
207 /// </summary>
208 /// <remarks>
209 /// XXX: This test may FCbe better off in a specific PrimLimitsModuleTest class in optional module tests in the
105 /// future (though it is configured as active by default, so not really optional). 210 /// future (though it is configured as active by default, so not really optional).
106 /// </remarks> 211 /// </remarks>
107 [Test] 212 [Test]