aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Archiver/Tests
diff options
context:
space:
mode:
authorMelanie2010-02-08 15:53:20 +0000
committerMelanie2010-02-08 15:53:38 +0000
commitbaaf660511214e52ea4ed20b8e80ec8e1ff06a3a (patch)
tree1e90c7a22ea3354d6bfd5d2b3f8f64f199dbd477 /OpenSim/Region/CoreModules/World/Archiver/Tests
parentAdded missing configs to Standalone.ini (diff)
parentAdding the Careminster "Configger" tool to OpenSim. The tool will, when launched (diff)
downloadopensim-SC_OLD-baaf660511214e52ea4ed20b8e80ec8e1ff06a3a.zip
opensim-SC_OLD-baaf660511214e52ea4ed20b8e80ec8e1ff06a3a.tar.gz
opensim-SC_OLD-baaf660511214e52ea4ed20b8e80ec8e1ff06a3a.tar.bz2
opensim-SC_OLD-baaf660511214e52ea4ed20b8e80ec8e1ff06a3a.tar.xz
Merge branch 'master' into presence-refactor
This was a large, heavily conflicted merge and things MAY have got broken. Please check!
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Archiver/Tests')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs327
-rwxr-xr-xOpenSim/Region/CoreModules/World/Archiver/Tests/Resources/test-sound.wavbin0 -> 211648 bytes
2 files changed, 215 insertions, 112 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index 8c1e1c2..d986274 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -36,11 +36,13 @@ using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37 37
38using OpenSim.Framework.Serialization; 38using OpenSim.Framework.Serialization;
39using OpenSim.Framework.Serialization.External;
39using OpenSim.Region.CoreModules.World.Serialiser; 40using OpenSim.Region.CoreModules.World.Serialiser;
40using OpenSim.Region.CoreModules.World.Terrain; 41using OpenSim.Region.CoreModules.World.Terrain;
41using OpenSim.Region.Framework.Scenes; 42using OpenSim.Region.Framework.Scenes;
42using OpenSim.Region.Framework.Scenes.Serialization; 43using OpenSim.Region.Framework.Scenes.Serialization;
43using OpenSim.Tests.Common; 44using OpenSim.Tests.Common;
45using OpenSim.Tests.Common.Mock;
44using OpenSim.Tests.Common.Setup; 46using OpenSim.Tests.Common.Setup;
45 47
46namespace OpenSim.Region.CoreModules.World.Archiver.Tests 48namespace OpenSim.Region.CoreModules.World.Archiver.Tests
@@ -50,6 +52,20 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
50 { 52 {
51 private Guid m_lastRequestId; 53 private Guid m_lastRequestId;
52 private string m_lastErrorMessage; 54 private string m_lastErrorMessage;
55
56 protected TestScene m_scene;
57 protected ArchiverModule m_archiverModule;
58
59 [SetUp]
60 public void SetUp()
61 {
62 m_archiverModule = new ArchiverModule();
63 SerialiserModule serialiserModule = new SerialiserModule();
64 TerrainModule terrainModule = new TerrainModule();
65
66 m_scene = SceneSetupHelpers.SetupScene("scene1");
67 SceneSetupHelpers.SetupSceneModules(m_scene, m_archiverModule, serialiserModule, terrainModule);
68 }
53 69
54 private void LoadCompleted(Guid requestId, string errorMessage) 70 private void LoadCompleted(Guid requestId, string errorMessage)
55 { 71 {
@@ -74,6 +90,30 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
74 } 90 }
75 } 91 }
76 92
93 protected SceneObjectPart CreateSceneObjectPart1()
94 {
95 string partName = "My Little Pony";
96 UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000015");
97 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere();
98 Vector3 groupPosition = new Vector3(10, 20, 30);
99 Quaternion rotationOffset = new Quaternion(20, 30, 40, 50);
100 Vector3 offsetPosition = new Vector3(5, 10, 15);
101
102 return new SceneObjectPart(ownerId, shape, groupPosition, rotationOffset, offsetPosition) { Name = partName };
103 }
104
105 protected SceneObjectPart CreateSceneObjectPart2()
106 {
107 string partName = "Action Man";
108 UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000016");
109 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder();
110 Vector3 groupPosition = new Vector3(90, 80, 70);
111 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90);
112 Vector3 offsetPosition = new Vector3(20, 25, 30);
113
114 return new SceneObjectPart(ownerId, shape, groupPosition, rotationOffset, offsetPosition) { Name = partName };
115 }
116
77 /// <summary> 117 /// <summary>
78 /// Test saving a V0.2 OpenSim Region Archive. 118 /// Test saving a V0.2 OpenSim Region Archive.
79 /// </summary> 119 /// </summary>
@@ -83,59 +123,20 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
83 TestHelper.InMethod(); 123 TestHelper.InMethod();
84 //log4net.Config.XmlConfigurator.Configure(); 124 //log4net.Config.XmlConfigurator.Configure();
85 125
86 ArchiverModule archiverModule = new ArchiverModule(); 126 SceneObjectPart part1 = CreateSceneObjectPart1();
87 SerialiserModule serialiserModule = new SerialiserModule(); 127 m_scene.AddNewSceneObject(new SceneObjectGroup(part1), false);
88 TerrainModule terrainModule = new TerrainModule();
89
90 Scene scene = SceneSetupHelpers.SetupScene("asset");
91 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
92 128
93 SceneObjectPart part1; 129 SceneObjectPart part2 = CreateSceneObjectPart2();
94 130 m_scene.AddNewSceneObject(new SceneObjectGroup(part2), false);
95 // Create and add prim 1
96 {
97 string partName = "My Little Pony";
98 UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000015");
99 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere();
100 Vector3 groupPosition = new Vector3(10, 20, 30);
101 Quaternion rotationOffset = new Quaternion(20, 30, 40, 50);
102 Vector3 offsetPosition = new Vector3(5, 10, 15);
103
104 part1
105 = new SceneObjectPart(
106 ownerId, shape, groupPosition, rotationOffset, offsetPosition);
107 part1.Name = partName;
108
109 scene.AddNewSceneObject(new SceneObjectGroup(part1), false);
110 }
111
112 SceneObjectPart part2;
113
114 // Create and add prim 2
115 {
116 string partName = "Action Man";
117 UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000016");
118 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder();
119 Vector3 groupPosition = new Vector3(90, 80, 70);
120 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90);
121 Vector3 offsetPosition = new Vector3(20, 25, 30);
122
123 part2
124 = new SceneObjectPart(
125 ownerId, shape, groupPosition, rotationOffset, offsetPosition);
126 part2.Name = partName;
127
128 scene.AddNewSceneObject(new SceneObjectGroup(part2), false);
129 }
130 131
131 MemoryStream archiveWriteStream = new MemoryStream(); 132 MemoryStream archiveWriteStream = new MemoryStream();
132 scene.EventManager.OnOarFileSaved += SaveCompleted; 133 m_scene.EventManager.OnOarFileSaved += SaveCompleted;
133 134
134 Guid requestId = new Guid("00000000-0000-0000-0000-808080808080"); 135 Guid requestId = new Guid("00000000-0000-0000-0000-808080808080");
135 136
136 lock (this) 137 lock (this)
137 { 138 {
138 archiverModule.ArchiveRegion(archiveWriteStream, requestId); 139 m_archiverModule.ArchiveRegion(archiveWriteStream, requestId);
139 //AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; 140 //AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer;
140 //while (assetServer.HasWaitingRequests()) 141 //while (assetServer.HasWaitingRequests())
141 // assetServer.ProcessNextRequest(); 142 // assetServer.ProcessNextRequest();
@@ -214,32 +215,58 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
214 // Also check that direct entries which will also have a file entry containing that directory doesn't 215 // Also check that direct entries which will also have a file entry containing that directory doesn't
215 // upset load 216 // upset load
216 tar.WriteDir(ArchiveConstants.TERRAINS_PATH); 217 tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
217 218
218 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile()); 219 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
219 220
220 string part1Name = "object1"; 221 SceneObjectPart part1 = CreateSceneObjectPart1();
221 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder(); 222 SceneObjectGroup object1 = new SceneObjectGroup(part1);
222 Vector3 groupPosition = new Vector3(90, 80, 70);
223 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90);
224 Vector3 offsetPosition = new Vector3(20, 25, 30);
225
226 SerialiserModule serialiserModule = new SerialiserModule();
227 ArchiverModule archiverModule = new ArchiverModule();
228 223
229 Scene scene = SceneSetupHelpers.SetupScene(); 224 // Let's put some inventory items into our object
230 SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); 225 string soundItemName = "sound-item1";
226 UUID soundItemUuid = UUID.Parse("00000000-0000-0000-0000-000000000002");
227 Type type = GetType();
228 Assembly assembly = type.Assembly;
229 string soundDataResourceName = null;
230 string[] names = assembly.GetManifestResourceNames();
231 foreach (string name in names)
232 {
233 if (name.EndsWith(".Resources.test-sound.wav"))
234 soundDataResourceName = name;
235 }
236 Assert.That(soundDataResourceName, Is.Not.Null);
231 237
232 SceneObjectPart part1 238 byte[] soundData;
233 = new SceneObjectPart( 239 Console.WriteLine("Loading " + soundDataResourceName);
234 UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition); 240 using (Stream resource = assembly.GetManifestResourceStream(soundDataResourceName))
235 part1.Name = part1Name; 241 {
236 SceneObjectGroup object1 = new SceneObjectGroup(part1); 242 using (BinaryReader br = new BinaryReader(resource))
237 scene.AddNewSceneObject(object1, false); 243 {
244 // FIXME: Use the inspector insteadthere are so many forums and lists already, though admittedly none of them are suitable for cross virtual-enivornemnt discussion
245 soundData = br.ReadBytes(99999999);
246 UUID soundUuid = UUID.Parse("00000000-0000-0000-0000-000000000001");
247 string soundAssetFileName
248 = ArchiveConstants.ASSETS_PATH + soundUuid
249 + ArchiveConstants.ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.SoundWAV];
250 tar.WriteFile(soundAssetFileName, soundData);
251
252 /*
253 AssetBase soundAsset = AssetHelpers.CreateAsset(soundUuid, soundData);
254 scene.AssetService.Store(soundAsset);
255 asset1FileName = ArchiveConstants.ASSETS_PATH + soundUuid + ".wav";
256 */
257
258 TaskInventoryItem item1
259 = new TaskInventoryItem { AssetID = soundUuid, ItemID = soundItemUuid, Name = soundItemName };
260 part1.Inventory.AddInventoryItem(item1, true);
261 }
262 }
263
264 m_scene.AddNewSceneObject(object1, false);
238 265
239 string object1FileName = string.Format( 266 string object1FileName = string.Format(
240 "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", 267 "{0}_{1:000}-{2:000}-{3:000}__{4}.xml",
241 part1Name, 268 part1.Name,
242 Math.Round(groupPosition.X), Math.Round(groupPosition.Y), Math.Round(groupPosition.Z), 269 Math.Round(part1.GroupPosition.X), Math.Round(part1.GroupPosition.Y), Math.Round(part1.GroupPosition.Z),
243 part1.UUID); 270 part1.UUID);
244 tar.WriteFile(ArchiveConstants.OBJECTS_PATH + object1FileName, SceneObjectSerializer.ToXml2Format(object1)); 271 tar.WriteFile(ArchiveConstants.OBJECTS_PATH + object1FileName, SceneObjectSerializer.ToXml2Format(object1));
245 272
@@ -249,27 +276,125 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
249 276
250 lock (this) 277 lock (this)
251 { 278 {
252 scene.EventManager.OnOarFileLoaded += LoadCompleted; 279 m_scene.EventManager.OnOarFileLoaded += LoadCompleted;
253 archiverModule.DearchiveRegion(archiveReadStream); 280 m_archiverModule.DearchiveRegion(archiveReadStream);
254 } 281 }
255 282
256 Assert.That(m_lastErrorMessage, Is.Null); 283 Assert.That(m_lastErrorMessage, Is.Null);
257 284
258 SceneObjectPart object1PartLoaded = scene.GetSceneObjectPart(part1Name); 285 SceneObjectPart object1PartLoaded = m_scene.GetSceneObjectPart(part1.Name);
259 286
260 Assert.That(object1PartLoaded, Is.Not.Null, "object1 was not loaded"); 287 Assert.That(object1PartLoaded, Is.Not.Null, "object1 was not loaded");
261 Assert.That(object1PartLoaded.Name, Is.EqualTo(part1Name), "object1 names not identical"); 288 Assert.That(object1PartLoaded.Name, Is.EqualTo(part1.Name), "object1 names not identical");
262 Assert.That(object1PartLoaded.GroupPosition, Is.EqualTo(groupPosition), "object1 group position not equal"); 289 Assert.That(object1PartLoaded.GroupPosition, Is.EqualTo(part1.GroupPosition), "object1 group position not equal");
263 Assert.That( 290 Assert.That(
264 object1PartLoaded.RotationOffset, Is.EqualTo(rotationOffset), "object1 rotation offset not equal"); 291 object1PartLoaded.RotationOffset, Is.EqualTo(part1.RotationOffset), "object1 rotation offset not equal");
265 Assert.That( 292 Assert.That(
266 object1PartLoaded.OffsetPosition, Is.EqualTo(offsetPosition), "object1 offset position not equal"); 293 object1PartLoaded.OffsetPosition, Is.EqualTo(part1.OffsetPosition), "object1 offset position not equal");
294
295 TaskInventoryItem loadedSoundItem = object1PartLoaded.Inventory.GetInventoryItems(soundItemName)[0];
296 Assert.That(loadedSoundItem, Is.Not.Null, "loaded sound item was null");
297 AssetBase loadedSoundAsset = m_scene.AssetService.Get(loadedSoundItem.AssetID.ToString());
298 Assert.That(loadedSoundAsset, Is.Not.Null, "loaded sound asset was null");
299 Assert.That(loadedSoundAsset.Data, Is.EqualTo(soundData), "saved and loaded sound data do not match");
267 300
268 // Temporary 301 // Temporary
269 Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); 302 Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod());
270 } 303 }
271 304
272 /// <summary> 305 /// <summary>
306 /// Test loading the region settings of a V0.2 OpenSim Region Archive.
307 /// </summary>
308 [Test]
309 public void TestLoadOarV0_2RegionSettings()
310 {
311 TestHelper.InMethod();
312 //log4net.Config.XmlConfigurator.Configure();
313
314 MemoryStream archiveWriteStream = new MemoryStream();
315 TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);
316
317 tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
318 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
319
320 RegionSettings rs = new RegionSettings();
321 rs.AgentLimit = 17;
322 rs.AllowDamage = true;
323 rs.AllowLandJoinDivide = true;
324 rs.AllowLandResell = true;
325 rs.BlockFly = true;
326 rs.BlockShowInSearch = true;
327 rs.BlockTerraform = true;
328 rs.DisableCollisions = true;
329 rs.DisablePhysics = true;
330 rs.DisableScripts = true;
331 rs.Elevation1NW = 15.9;
332 rs.Elevation1NE = 45.3;
333 rs.Elevation1SE = 49;
334 rs.Elevation1SW = 1.9;
335 rs.Elevation2NW = 4.5;
336 rs.Elevation2NE = 19.2;
337 rs.Elevation2SE = 9.2;
338 rs.Elevation2SW = 2.1;
339 rs.FixedSun = true;
340 rs.ObjectBonus = 1.4;
341 rs.RestrictPushing = true;
342 rs.TerrainLowerLimit = 0.4;
343 rs.TerrainRaiseLimit = 17.9;
344 rs.TerrainTexture1 = UUID.Parse("00000000-0000-0000-0000-000000000020");
345 rs.TerrainTexture2 = UUID.Parse("00000000-0000-0000-0000-000000000040");
346 rs.TerrainTexture3 = UUID.Parse("00000000-0000-0000-0000-000000000060");
347 rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
348 rs.UseEstateSun = true;
349 rs.WaterHeight = 23;
350
351 tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs));
352
353 tar.Close();
354
355 MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray());
356
357 lock (this)
358 {
359 m_scene.EventManager.OnOarFileLoaded += LoadCompleted;
360 m_archiverModule.DearchiveRegion(archiveReadStream);
361 }
362
363 Assert.That(m_lastErrorMessage, Is.Null);
364 RegionSettings loadedRs = m_scene.RegionInfo.RegionSettings;
365
366 Assert.That(loadedRs.AgentLimit, Is.EqualTo(17));
367 Assert.That(loadedRs.AllowDamage, Is.True);
368 Assert.That(loadedRs.AllowLandJoinDivide, Is.True);
369 Assert.That(loadedRs.AllowLandResell, Is.True);
370 Assert.That(loadedRs.BlockFly, Is.True);
371 Assert.That(loadedRs.BlockShowInSearch, Is.True);
372 Assert.That(loadedRs.BlockTerraform, Is.True);
373 Assert.That(loadedRs.DisableCollisions, Is.True);
374 Assert.That(loadedRs.DisablePhysics, Is.True);
375 Assert.That(loadedRs.DisableScripts, Is.True);
376 Assert.That(loadedRs.Elevation1NW, Is.EqualTo(15.9));
377 Assert.That(loadedRs.Elevation1NE, Is.EqualTo(45.3));
378 Assert.That(loadedRs.Elevation1SE, Is.EqualTo(49));
379 Assert.That(loadedRs.Elevation1SW, Is.EqualTo(1.9));
380 Assert.That(loadedRs.Elevation2NW, Is.EqualTo(4.5));
381 Assert.That(loadedRs.Elevation2NE, Is.EqualTo(19.2));
382 Assert.That(loadedRs.Elevation2SE, Is.EqualTo(9.2));
383 Assert.That(loadedRs.Elevation2SW, Is.EqualTo(2.1));
384 Assert.That(loadedRs.FixedSun, Is.True);
385 Assert.That(loadedRs.ObjectBonus, Is.EqualTo(1.4));
386 Assert.That(loadedRs.RestrictPushing, Is.True);
387 Assert.That(loadedRs.TerrainLowerLimit, Is.EqualTo(0.4));
388 Assert.That(loadedRs.TerrainRaiseLimit, Is.EqualTo(17.9));
389 Assert.That(loadedRs.TerrainTexture1, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000020")));
390 Assert.That(loadedRs.TerrainTexture2, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000040")));
391 Assert.That(loadedRs.TerrainTexture3, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000060")));
392 Assert.That(loadedRs.TerrainTexture4, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000080")));
393 Assert.That(loadedRs.UseEstateSun, Is.True);
394 Assert.That(loadedRs.WaterHeight, Is.EqualTo(23));
395 }
396
397 /// <summary>
273 /// Test merging a V0.2 OpenSim Region Archive into an existing scene 398 /// Test merging a V0.2 OpenSim Region Archive into an existing scene
274 /// </summary> 399 /// </summary>
275 //[Test] 400 //[Test]
@@ -280,11 +405,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
280 405
281 MemoryStream archiveWriteStream = new MemoryStream(); 406 MemoryStream archiveWriteStream = new MemoryStream();
282 407
283 string part2Name = "objectMerge"; 408// string part2Name = "objectMerge";
284 PrimitiveBaseShape part2Shape = PrimitiveBaseShape.CreateCylinder(); 409// PrimitiveBaseShape part2Shape = PrimitiveBaseShape.CreateCylinder();
285 Vector3 part2GroupPosition = new Vector3(90, 80, 70); 410// Vector3 part2GroupPosition = new Vector3(90, 80, 70);
286 Quaternion part2RotationOffset = new Quaternion(60, 70, 80, 90); 411// Quaternion part2RotationOffset = new Quaternion(60, 70, 80, 90);
287 Vector3 part2OffsetPosition = new Vector3(20, 25, 30); 412// Vector3 part2OffsetPosition = new Vector3(20, 25, 30);
413
414 SceneObjectPart part2 = CreateSceneObjectPart2();
288 415
289 // Create an oar file that we can use for the merge 416 // Create an oar file that we can use for the merge
290 { 417 {
@@ -293,63 +420,39 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
293 TerrainModule terrainModule = new TerrainModule(); 420 TerrainModule terrainModule = new TerrainModule();
294 421
295 Scene scene = SceneSetupHelpers.SetupScene(); 422 Scene scene = SceneSetupHelpers.SetupScene();
296 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); 423 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
297 424
298 SceneObjectPart part2 425 m_scene.AddNewSceneObject(new SceneObjectGroup(part2), false);
299 = new SceneObjectPart(
300 UUID.Zero, part2Shape, part2GroupPosition, part2RotationOffset, part2OffsetPosition);
301 part2.Name = part2Name;
302 SceneObjectGroup object2 = new SceneObjectGroup(part2);
303
304 scene.AddNewSceneObject(object2, false);
305 426
306 // Write out this scene 427 // Write out this scene
307 scene.EventManager.OnOarFileSaved += SaveCompleted; 428 scene.EventManager.OnOarFileSaved += SaveCompleted;
308 429
309 lock (this) 430 lock (this)
310 { 431 {
311 archiverModule.ArchiveRegion(archiveWriteStream); 432 m_archiverModule.ArchiveRegion(archiveWriteStream);
312 Monitor.Wait(this, 60000); 433 Monitor.Wait(this, 60000);
313 } 434 }
314 } 435 }
315 436
316 { 437 {
317 ArchiverModule archiverModule = new ArchiverModule(); 438 SceneObjectPart part1 = CreateSceneObjectPart1();
318 SerialiserModule serialiserModule = new SerialiserModule(); 439 m_scene.AddNewSceneObject(new SceneObjectGroup(part1), false);
319 TerrainModule terrainModule = new TerrainModule();
320
321 Scene scene = SceneSetupHelpers.SetupScene();
322 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
323
324 string part1Name = "objectExisting";
325 PrimitiveBaseShape part1Shape = PrimitiveBaseShape.CreateCylinder();
326 Vector3 part1GroupPosition = new Vector3(80, 70, 60);
327 Quaternion part1RotationOffset = new Quaternion(50, 60, 70, 80);
328 Vector3 part1OffsetPosition = new Vector3(15, 20, 25);
329
330 SceneObjectPart part1
331 = new SceneObjectPart(
332 UUID.Zero, part1Shape, part1GroupPosition, part1RotationOffset, part1OffsetPosition);
333 part1.Name = part1Name;
334 SceneObjectGroup object1 = new SceneObjectGroup(part1);
335
336 scene.AddNewSceneObject(object1, false);
337 440
338 // Merge in the archive we created earlier 441 // Merge in the archive we created earlier
339 byte[] archive = archiveWriteStream.ToArray(); 442 byte[] archive = archiveWriteStream.ToArray();
340 MemoryStream archiveReadStream = new MemoryStream(archive); 443 MemoryStream archiveReadStream = new MemoryStream(archive);
341 444
342 archiverModule.DearchiveRegion(archiveReadStream, true, Guid.Empty); 445 m_archiverModule.DearchiveRegion(archiveReadStream, true, Guid.Empty);
343 446
344 SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name); 447 SceneObjectPart object1Existing = m_scene.GetSceneObjectPart(part1.Name);
345 Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge"); 448 Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge");
346 Assert.That(object1Existing.Name, Is.EqualTo(part1Name), "object1 names not identical after merge"); 449 Assert.That(object1Existing.Name, Is.EqualTo(part1.Name), "object1 names not identical after merge");
347 Assert.That(object1Existing.GroupPosition, Is.EqualTo(part1GroupPosition), "object1 group position not equal after merge"); 450 Assert.That(object1Existing.GroupPosition, Is.EqualTo(part1.GroupPosition), "object1 group position not equal after merge");
348 451
349 SceneObjectPart object2PartMerged = scene.GetSceneObjectPart(part2Name); 452 SceneObjectPart object2PartMerged = m_scene.GetSceneObjectPart(part2.Name);
350 Assert.That(object2PartMerged, Is.Not.Null, "object2 was not present after merge"); 453 Assert.That(object2PartMerged, Is.Not.Null, "object2 was not present after merge");
351 Assert.That(object2PartMerged.Name, Is.EqualTo(part2Name), "object2 names not identical after merge"); 454 Assert.That(object2PartMerged.Name, Is.EqualTo(part2.Name), "object2 names not identical after merge");
352 Assert.That(object2PartMerged.GroupPosition, Is.EqualTo(part2GroupPosition), "object2 group position not equal after merge"); 455 Assert.That(object2PartMerged.GroupPosition, Is.EqualTo(part2.GroupPosition), "object2 group position not equal after merge");
353 } 456 }
354 } 457 }
355 } 458 }
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/Resources/test-sound.wav b/OpenSim/Region/CoreModules/World/Archiver/Tests/Resources/test-sound.wav
new file mode 100755
index 0000000..b45ee54
--- /dev/null
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/Resources/test-sound.wav
Binary files differ