diff options
3 files changed, 83 insertions, 106 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs index 373094b..a07d64c 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs | |||
@@ -34,7 +34,6 @@ using NUnit.Framework; | |||
34 | using OpenMetaverse; | 34 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Communications; | 36 | using OpenSim.Framework.Communications; |
37 | using OpenSim.Region.CoreModules.Framework.InventoryAccess; | ||
38 | using OpenSim.Region.Framework.Scenes; | 37 | using OpenSim.Region.Framework.Scenes; |
39 | using OpenSim.Services.Interfaces; | 38 | using OpenSim.Services.Interfaces; |
40 | using OpenSim.Tests.Common; | 39 | using OpenSim.Tests.Common; |
@@ -184,6 +183,10 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
184 | /// <summary> | 183 | /// <summary> |
185 | /// Test deleting an object from a scene. | 184 | /// Test deleting an object from a scene. |
186 | /// </summary> | 185 | /// </summary> |
186 | /// <remarks> | ||
187 | /// This is the most basic form of delete. For all more sophisticated forms of derez (done asynchrnously | ||
188 | /// and where object can be taken to user inventory, etc.), see SceneObjectDeRezTests. | ||
189 | /// </remarks> | ||
187 | [Test] | 190 | [Test] |
188 | public void TestDeleteSceneObject() | 191 | public void TestDeleteSceneObject() |
189 | { | 192 | { |
@@ -203,103 +206,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
203 | } | 206 | } |
204 | 207 | ||
205 | /// <summary> | 208 | /// <summary> |
206 | /// Test deleting an object asynchronously | ||
207 | /// </summary> | ||
208 | [Test] | ||
209 | public void TestDeleteSceneObjectAsync() | ||
210 | { | ||
211 | TestHelpers.InMethod(); | ||
212 | //log4net.Config.XmlConfigurator.Configure(); | ||
213 | |||
214 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001"); | ||
215 | |||
216 | TestScene scene = new SceneHelpers().SetupScene(); | ||
217 | |||
218 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | ||
219 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; | ||
220 | sogd.Enabled = false; | ||
221 | |||
222 | SceneObjectGroup so = SceneHelpers.AddSceneObject(scene); | ||
223 | |||
224 | IClientAPI client = SceneHelpers.AddScenePresence(scene, agentId).ControllingClient; | ||
225 | scene.DeRezObjects(client, new System.Collections.Generic.List<uint>() { so.LocalId }, UUID.Zero, DeRezAction.Delete, UUID.Zero); | ||
226 | |||
227 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId); | ||
228 | |||
229 | Assert.That(retrievedPart, Is.Not.Null); | ||
230 | |||
231 | Assert.That(so.IsDeleted, Is.False); | ||
232 | |||
233 | sogd.InventoryDeQueueAndDelete(); | ||
234 | |||
235 | Assert.That(so.IsDeleted, Is.True); | ||
236 | |||
237 | SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(so.LocalId); | ||
238 | Assert.That(retrievedPart2, Is.Null); | ||
239 | } | ||
240 | |||
241 | /// <summary> | ||
242 | /// Test deleting an object asynchronously to user inventory. | ||
243 | /// </summary> | ||
244 | [Test] | ||
245 | public void TestDeleteSceneObjectAsyncToUserInventory() | ||
246 | { | ||
247 | TestHelpers.InMethod(); | ||
248 | // TestHelpers.EnableLogging(); | ||
249 | |||
250 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001"); | ||
251 | string myObjectName = "Fred"; | ||
252 | |||
253 | TestScene scene = new SceneHelpers().SetupScene(); | ||
254 | |||
255 | IConfigSource configSource = new IniConfigSource(); | ||
256 | IConfig config = configSource.AddConfig("Modules"); | ||
257 | config.Set("InventoryAccessModule", "BasicInventoryAccessModule"); | ||
258 | SceneHelpers.SetupSceneModules( | ||
259 | scene, configSource, new object[] { new BasicInventoryAccessModule() }); | ||
260 | |||
261 | SceneHelpers.SetupSceneModules(scene, new object[] { }); | ||
262 | |||
263 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | ||
264 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; | ||
265 | sogd.Enabled = false; | ||
266 | |||
267 | SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, myObjectName, agentId); | ||
268 | |||
269 | UserAccount ua = UserAccountHelpers.CreateUserWithInventory(scene, agentId); | ||
270 | InventoryFolderBase folder1 | ||
271 | = UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, ua.PrincipalID, "folder1"); | ||
272 | |||
273 | IClientAPI client = SceneHelpers.AddScenePresence(scene, agentId).ControllingClient; | ||
274 | scene.DeRezObjects(client, new List<uint>() { so.LocalId }, UUID.Zero, DeRezAction.Take, folder1.ID); | ||
275 | |||
276 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId); | ||
277 | |||
278 | Assert.That(retrievedPart, Is.Not.Null); | ||
279 | Assert.That(so.IsDeleted, Is.False); | ||
280 | |||
281 | sogd.InventoryDeQueueAndDelete(); | ||
282 | |||
283 | Assert.That(so.IsDeleted, Is.True); | ||
284 | |||
285 | SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(so.LocalId); | ||
286 | Assert.That(retrievedPart2, Is.Null); | ||
287 | |||
288 | // SceneSetupHelpers.DeleteSceneObjectAsync(scene, part, DeRezAction.Take, userInfo.RootFolder.ID, client); | ||
289 | |||
290 | InventoryItemBase retrievedItem | ||
291 | = UserInventoryHelpers.GetInventoryItem( | ||
292 | scene.InventoryService, ua.PrincipalID, "folder1/" + myObjectName); | ||
293 | |||
294 | // Check that we now have the taken part in our inventory | ||
295 | Assert.That(retrievedItem, Is.Not.Null); | ||
296 | |||
297 | // Check that the taken part has actually disappeared | ||
298 | // SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); | ||
299 | // Assert.That(retrievedPart, Is.Null); | ||
300 | } | ||
301 | |||
302 | /// <summary> | ||
303 | /// Changing a scene object uuid changes the root part uuid. This is a valid operation if the object is not | 209 | /// Changing a scene object uuid changes the root part uuid. This is a valid operation if the object is not |
304 | /// in a scene and is useful if one wants to supply a UUID directly rather than use the one generated by | 210 | /// in a scene and is useful if one wants to supply a UUID directly rather than use the one generated by |
305 | /// OpenSim. | 211 | /// OpenSim. |
@@ -334,4 +240,4 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
334 | Assert.That(sog.Parts.Length, Is.EqualTo(2)); | 240 | Assert.That(sog.Parts.Length, Is.EqualTo(2)); |
335 | } | 241 | } |
336 | } | 242 | } |
337 | } | 243 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs index 4f15791..c1522e7 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs | |||
@@ -33,19 +33,21 @@ using NUnit.Framework; | |||
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Region.CoreModules.Framework.InventoryAccess; | ||
36 | using OpenSim.Region.CoreModules.World.Permissions; | 37 | using OpenSim.Region.CoreModules.World.Permissions; |
37 | using OpenSim.Region.Framework.Scenes; | 38 | using OpenSim.Region.Framework.Scenes; |
39 | using OpenSim.Services.Interfaces; | ||
38 | using OpenSim.Tests.Common; | 40 | using OpenSim.Tests.Common; |
39 | using OpenSim.Tests.Common.Mock; | 41 | using OpenSim.Tests.Common.Mock; |
40 | 42 | ||
41 | namespace OpenSim.Region.Framework.Scenes.Tests | 43 | namespace OpenSim.Region.Framework.Scenes.Tests |
42 | { | 44 | { |
43 | /// <summary> | 45 | /// <summary> |
44 | /// Tests derez of scene objects by users. | 46 | /// Tests derez of scene objects. |
45 | /// </summary> | 47 | /// </summary> |
46 | /// <remarks> | 48 | /// <remarks> |
47 | /// This is at a level above the SceneObjectBasicTests, which act on the scene directly. | 49 | /// This is at a level above the SceneObjectBasicTests, which act on the scene directly. |
48 | /// TODO: These tests are very incomplete - they only test for a few conditions. | 50 | /// TODO: These tests are incomplete - need to test more kinds of derez (e.g. return object). |
49 | /// </remarks> | 51 | /// </remarks> |
50 | [TestFixture] | 52 | [TestFixture] |
51 | public class SceneObjectDeRezTests : OpenSimTestCase | 53 | public class SceneObjectDeRezTests : OpenSimTestCase |
@@ -76,14 +78,20 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
76 | = new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero); | 78 | = new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero); |
77 | part.Name = "obj1"; | 79 | part.Name = "obj1"; |
78 | scene.AddNewSceneObject(new SceneObjectGroup(part), false); | 80 | scene.AddNewSceneObject(new SceneObjectGroup(part), false); |
81 | |||
79 | List<uint> localIds = new List<uint>(); | 82 | List<uint> localIds = new List<uint>(); |
80 | localIds.Add(part.LocalId); | 83 | localIds.Add(part.LocalId); |
81 | |||
82 | scene.DeRezObjects(client, localIds, UUID.Zero, DeRezAction.Delete, UUID.Zero); | 84 | scene.DeRezObjects(client, localIds, UUID.Zero, DeRezAction.Delete, UUID.Zero); |
85 | |||
86 | // Check that object isn't deleted until we crank the sogd handle. | ||
87 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); | ||
88 | Assert.That(retrievedPart, Is.Not.Null); | ||
89 | Assert.That(retrievedPart.ParentGroup.IsDeleted, Is.False); | ||
90 | |||
83 | sogd.InventoryDeQueueAndDelete(); | 91 | sogd.InventoryDeQueueAndDelete(); |
84 | 92 | ||
85 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); | 93 | SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(part.LocalId); |
86 | Assert.That(retrievedPart, Is.Null); | 94 | Assert.That(retrievedPart2, Is.Null); |
87 | } | 95 | } |
88 | 96 | ||
89 | /// <summary> | 97 | /// <summary> |
@@ -124,6 +132,67 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
124 | // Object should still be in the scene. | 132 | // Object should still be in the scene. |
125 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); | 133 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); |
126 | Assert.That(retrievedPart.UUID, Is.EqualTo(part.UUID)); | 134 | Assert.That(retrievedPart.UUID, Is.EqualTo(part.UUID)); |
127 | } | 135 | } |
136 | |||
137 | /// <summary> | ||
138 | /// Test deleting an object asynchronously to user inventory. | ||
139 | /// </summary> | ||
140 | [Test] | ||
141 | public void TestDeleteSceneObjectAsyncToUserInventory() | ||
142 | { | ||
143 | TestHelpers.InMethod(); | ||
144 | // TestHelpers.EnableLogging(); | ||
145 | |||
146 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001"); | ||
147 | string myObjectName = "Fred"; | ||
148 | |||
149 | TestScene scene = new SceneHelpers().SetupScene(); | ||
150 | |||
151 | IConfigSource configSource = new IniConfigSource(); | ||
152 | IConfig config = configSource.AddConfig("Modules"); | ||
153 | config.Set("InventoryAccessModule", "BasicInventoryAccessModule"); | ||
154 | SceneHelpers.SetupSceneModules( | ||
155 | scene, configSource, new object[] { new BasicInventoryAccessModule() }); | ||
156 | |||
157 | SceneHelpers.SetupSceneModules(scene, new object[] { }); | ||
158 | |||
159 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | ||
160 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; | ||
161 | sogd.Enabled = false; | ||
162 | |||
163 | SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, myObjectName, agentId); | ||
164 | |||
165 | UserAccount ua = UserAccountHelpers.CreateUserWithInventory(scene, agentId); | ||
166 | InventoryFolderBase folder1 | ||
167 | = UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, ua.PrincipalID, "folder1"); | ||
168 | |||
169 | IClientAPI client = SceneHelpers.AddScenePresence(scene, agentId).ControllingClient; | ||
170 | scene.DeRezObjects(client, new List<uint>() { so.LocalId }, UUID.Zero, DeRezAction.Take, folder1.ID); | ||
171 | |||
172 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId); | ||
173 | |||
174 | Assert.That(retrievedPart, Is.Not.Null); | ||
175 | Assert.That(so.IsDeleted, Is.False); | ||
176 | |||
177 | sogd.InventoryDeQueueAndDelete(); | ||
178 | |||
179 | Assert.That(so.IsDeleted, Is.True); | ||
180 | |||
181 | SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(so.LocalId); | ||
182 | Assert.That(retrievedPart2, Is.Null); | ||
183 | |||
184 | // SceneSetupHelpers.DeleteSceneObjectAsync(scene, part, DeRezAction.Take, userInfo.RootFolder.ID, client); | ||
185 | |||
186 | InventoryItemBase retrievedItem | ||
187 | = UserInventoryHelpers.GetInventoryItem( | ||
188 | scene.InventoryService, ua.PrincipalID, "folder1/" + myObjectName); | ||
189 | |||
190 | // Check that we now have the taken part in our inventory | ||
191 | Assert.That(retrievedItem, Is.Not.Null); | ||
192 | |||
193 | // Check that the taken part has actually disappeared | ||
194 | // SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); | ||
195 | // Assert.That(retrievedPart, Is.Null); | ||
196 | } | ||
128 | } | 197 | } |
129 | } \ No newline at end of file | 198 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs index 5cf62c2..abaa1d1 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs | |||
@@ -48,8 +48,10 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
48 | UUID m_ownerId = TestHelpers.ParseTail(0x1); | 48 | UUID m_ownerId = TestHelpers.ParseTail(0x1); |
49 | 49 | ||
50 | [SetUp] | 50 | [SetUp] |
51 | public void SetUp() | 51 | public override void SetUp() |
52 | { | 52 | { |
53 | base.SetUp(); | ||
54 | |||
53 | m_scene = new SceneHelpers().SetupScene(); | 55 | m_scene = new SceneHelpers().SetupScene(); |
54 | } | 56 | } |
55 | 57 | ||