From ad7214620f43666aba7a48c4777ee24dbd664b86 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Mon, 18 May 2009 17:46:14 +0000 Subject: * Re-enable save oar test by loading asset data plugins from test mock class * Actually spit out the exception caught by the plugin loader - not much point having plugins throw exceptions if we are just going to ignore them --- .../Archiver/Tests/InventoryArchiverTests.cs | 195 +++++++++-------- .../World/Archiver/Tests/ArchiverTests.cs | 240 ++++++++++----------- OpenSim/Server/Base/ServerUtils.cs | 7 + OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs | 4 +- 4 files changed, 225 insertions(+), 221 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 296d4c1..b979a35 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -66,135 +66,132 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// /// Test saving a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet). /// -// [Test] -// public void TestSaveIarV0p1() -// { -// TestHelper.InMethod(); -// //log4net.Config.XmlConfigurator.Configure(); + //[Test] + public void TestSaveIarV0p1() + { + TestHelper.InMethod(); + //log4net.Config.XmlConfigurator.Configure(); -// InventoryArchiverModule archiverModule = new InventoryArchiverModule(); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(); -// Scene scene = SceneSetupHelpers.SetupScene(false); -// SceneSetupHelpers.SetupSceneModules(scene, archiverModule); -// CommunicationsManager cm = scene.CommsManager; + Scene scene = SceneSetupHelpers.SetupScene(false); + SceneSetupHelpers.SetupSceneModules(scene, archiverModule); + CommunicationsManager cm = scene.CommsManager; -// // Create user -// string userFirstName = "Jock"; -// string userLastName = "Stirrup"; -// UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); -// cm.UserAdminService.AddUser(userFirstName, userLastName, string.Empty, string.Empty, 1000, 1000, userId); -// CachedUserInfo userInfo = cm.UserProfileCacheService.GetUserDetails(userId); -// userInfo.FetchInventory(); + // Create user + string userFirstName = "Jock"; + string userLastName = "Stirrup"; + UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); + cm.UserAdminService.AddUser(userFirstName, userLastName, string.Empty, string.Empty, 1000, 1000, userId); + CachedUserInfo userInfo = cm.UserProfileCacheService.GetUserDetails(userId); + userInfo.FetchInventory(); -// // Create asset -// SceneObjectGroup object1; -// SceneObjectPart part1; -// { -// string partName = "My Little Dog Object"; -// UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); -// PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); -// Vector3 groupPosition = new Vector3(10, 20, 30); -// Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); -// Vector3 offsetPosition = new Vector3(5, 10, 15); + // Create asset + SceneObjectGroup object1; + SceneObjectPart part1; + { + string partName = "My Little Dog Object"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); -// part1 -// = new SceneObjectPart( -// ownerId, shape, groupPosition, rotationOffset, offsetPosition); -// part1.Name = partName; + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; -// object1 = new SceneObjectGroup(part1); -// scene.AddNewSceneObject(object1, false); -// } + object1 = new SceneObjectGroup(part1); + scene.AddNewSceneObject(object1, false); + } -// UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); -// AssetBase asset1 = new AssetBase(); -// asset1.FullID = asset1Id; -// asset1.Data = Encoding.ASCII.GetBytes(SceneObjectSerializer.ToXml2Format(object1)); -// scene.AssetService.Store(asset1); + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = new AssetBase(); + asset1.FullID = asset1Id; + asset1.Data = Encoding.ASCII.GetBytes(SceneObjectSerializer.ToXml2Format(object1)); + scene.AssetService.Store(asset1); -// // Create item -// UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); -// InventoryItemBase item1 = new InventoryItemBase(); -// item1.Name = "My Little Dog"; -// item1.AssetID = asset1.FullID; -// item1.ID = item1Id; -// item1.Folder = userInfo.RootFolder.FindFolderByPath("Objects").ID; -// scene.AddInventoryItem(userId, item1); + // Create item + UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = "My Little Dog"; + item1.AssetID = asset1.FullID; + item1.ID = item1Id; + item1.Folder = userInfo.RootFolder.FindFolderByPath("Objects").ID; + scene.AddInventoryItem(userId, item1); -// MemoryStream archiveWriteStream = new MemoryStream(); -// archiverModule.OnInventoryArchiveSaved += SaveCompleted; + MemoryStream archiveWriteStream = new MemoryStream(); + archiverModule.OnInventoryArchiveSaved += SaveCompleted; -// lock (this) -// { -// archiverModule.ArchiveInventory(userFirstName, userLastName, "Objects", archiveWriteStream); -// //AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; -// //while (assetServer.HasWaitingRequests()) -// // assetServer.ProcessNextRequest(); + lock (this) + { + archiverModule.ArchiveInventory(userFirstName, userLastName, "Objects", archiveWriteStream); + //AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; + //while (assetServer.HasWaitingRequests()) + // assetServer.ProcessNextRequest(); -// Monitor.Wait(this, 60000); -// } + Monitor.Wait(this, 60000); + } -// byte[] archive = archiveWriteStream.ToArray(); -// MemoryStream archiveReadStream = new MemoryStream(archive); -// TarArchiveReader tar = new TarArchiveReader(archiveReadStream); + byte[] archive = archiveWriteStream.ToArray(); + MemoryStream archiveReadStream = new MemoryStream(archive); + TarArchiveReader tar = new TarArchiveReader(archiveReadStream); -// InventoryFolderImpl objectsFolder = userInfo.RootFolder.FindFolderByPath("Objects"); + InventoryFolderImpl objectsFolder = userInfo.RootFolder.FindFolderByPath("Objects"); -// //bool gotControlFile = false; -// bool gotObject1File = false; -// //bool gotObject2File = false; -// string expectedObject1FilePath = string.Format( -// "{0}{1}/{2}_{3}.xml", -// ArchiveConstants.INVENTORY_PATH, -// string.Format( -// "Objects{0}{1}", ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR, objectsFolder.ID), -// item1.Name, -// item1Id); + //bool gotControlFile = false; + bool gotObject1File = false; + //bool gotObject2File = false; + string expectedObject1FilePath = string.Format( + "{0}{1}/{2}_{3}.xml", + ArchiveConstants.INVENTORY_PATH, + string.Format( + "Objects{0}{1}", ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR, objectsFolder.ID), + item1.Name, + item1Id); -///* // string expectedObject2FileName = string.Format( // "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", // part2.Name, // Math.Round(part2.GroupPosition.X), Math.Round(part2.GroupPosition.Y), Math.Round(part2.GroupPosition.Z), // part2.UUID); -// */ -// string filePath; -// TarArchiveReader.TarEntryType tarEntryType; + string filePath; + TarArchiveReader.TarEntryType tarEntryType; -// while (tar.ReadEntry(out filePath, out tarEntryType) != null) -// { -// Console.WriteLine("Got {0}", filePath); + while (tar.ReadEntry(out filePath, out tarEntryType) != null) + { + //Console.WriteLine("Got {0}", filePath); -// /* // if (ArchiveConstants.CONTROL_FILE_PATH == filePath) // { // gotControlFile = true; // } -// */ -// if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml")) -// { -// //string fileName = filePath.Remove(0, "Objects/".Length); + + if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml")) + { + string fileName = filePath.Remove(0, "Objects/".Length); -// //if (fileName.StartsWith(part1.Name)) -// //{ -// Assert.That(filePath, Is.EqualTo(expectedObject1FilePath)); -// gotObject1File = true; -// //} -// //else if (fileName.StartsWith(part2.Name)) -// //{ -// // Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); -// // gotObject2File = true; -// //} -// } -// } + if (fileName.StartsWith(part1.Name)) + { + Assert.That(filePath, Is.EqualTo(expectedObject1FilePath)); + gotObject1File = true; + } +// else if (fileName.StartsWith(part2.Name)) +// { +// Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); +// gotObject2File = true; +// } + } + } -// //Assert.That(gotControlFile, Is.True, "No control file in archive"); -// Assert.That(gotObject1File, Is.True, "No item1 file in archive"); -// //Assert.That(gotObject2File, Is.True, "No object2 file in archive"); +// Assert.That(gotControlFile, Is.True, "No control file in archive"); + Assert.That(gotObject1File, Is.True, "No item1 file in archive"); +// Assert.That(gotObject2File, Is.True, "No object2 file in archive"); -// // TODO: Test presence of more files and contents of files. -// } + // TODO: Test presence of more files and contents of files. + } /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index 2ba94f7..9741399 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -74,129 +74,129 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests } } - ///// - ///// Test saving a V0.2 OpenSim Region Archive. - ///// - //[Test] - //public void TestSaveOarV0p2() - //{ - // TestHelper.InMethod(); - // //log4net.Config.XmlConfigurator.Configure(); - - // ArchiverModule archiverModule = new ArchiverModule(); - // SerialiserModule serialiserModule = new SerialiserModule(); - // TerrainModule terrainModule = new TerrainModule(); - - // Scene scene = SceneSetupHelpers.SetupScene(false); - // SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); - - // SceneObjectPart part1; - - // // Create and add prim 1 - // { - // string partName = "My Little Pony"; - // UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000015"); - // PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - // Vector3 groupPosition = new Vector3(10, 20, 30); - // Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); - // Vector3 offsetPosition = new Vector3(5, 10, 15); - - // part1 - // = new SceneObjectPart( - // ownerId, shape, groupPosition, rotationOffset, offsetPosition); - // part1.Name = partName; - - // scene.AddNewSceneObject(new SceneObjectGroup(part1), false); - // } - - // SceneObjectPart part2; - - // // Create and add prim 2 - // { - // string partName = "Action Man"; - // UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000016"); - // PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder(); - // Vector3 groupPosition = new Vector3(90, 80, 70); - // Quaternion rotationOffset = new Quaternion(60, 70, 80, 90); - // Vector3 offsetPosition = new Vector3(20, 25, 30); - - // part2 - // = new SceneObjectPart( - // ownerId, shape, groupPosition, rotationOffset, offsetPosition); - // part2.Name = partName; - - // scene.AddNewSceneObject(new SceneObjectGroup(part2), false); - // } - - // MemoryStream archiveWriteStream = new MemoryStream(); - // scene.EventManager.OnOarFileSaved += SaveCompleted; - - // Guid requestId = new Guid("00000000-0000-0000-0000-808080808080"); + /// + /// Test saving a V0.2 OpenSim Region Archive. + /// + [Test] + public void TestSaveOarV0p2() + { + TestHelper.InMethod(); + log4net.Config.XmlConfigurator.Configure(); + + ArchiverModule archiverModule = new ArchiverModule(); + SerialiserModule serialiserModule = new SerialiserModule(); + TerrainModule terrainModule = new TerrainModule(); + + Scene scene = SceneSetupHelpers.SetupScene(false); + SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); + + SceneObjectPart part1; + + // Create and add prim 1 + { + string partName = "My Little Pony"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000015"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + scene.AddNewSceneObject(new SceneObjectGroup(part1), false); + } + + SceneObjectPart part2; + + // Create and add prim 2 + { + string partName = "Action Man"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000016"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder(); + Vector3 groupPosition = new Vector3(90, 80, 70); + Quaternion rotationOffset = new Quaternion(60, 70, 80, 90); + Vector3 offsetPosition = new Vector3(20, 25, 30); + + part2 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part2.Name = partName; + + scene.AddNewSceneObject(new SceneObjectGroup(part2), false); + } + + MemoryStream archiveWriteStream = new MemoryStream(); + scene.EventManager.OnOarFileSaved += SaveCompleted; + + Guid requestId = new Guid("00000000-0000-0000-0000-808080808080"); - // lock (this) - // { - // archiverModule.ArchiveRegion(archiveWriteStream, requestId); - // //AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; - // //while (assetServer.HasWaitingRequests()) - // // assetServer.ProcessNextRequest(); + lock (this) + { + archiverModule.ArchiveRegion(archiveWriteStream, requestId); + //AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; + //while (assetServer.HasWaitingRequests()) + // assetServer.ProcessNextRequest(); - // Monitor.Wait(this, 60000); - // } + Monitor.Wait(this, 60000); + } - // Assert.That(m_lastRequestId, Is.EqualTo(requestId)); - - // byte[] archive = archiveWriteStream.ToArray(); - // MemoryStream archiveReadStream = new MemoryStream(archive); - // TarArchiveReader tar = new TarArchiveReader(archiveReadStream); - - // bool gotControlFile = false; - // bool gotObject1File = false; - // bool gotObject2File = false; - // string expectedObject1FileName = string.Format( - // "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", - // part1.Name, - // Math.Round(part1.GroupPosition.X), Math.Round(part1.GroupPosition.Y), Math.Round(part1.GroupPosition.Z), - // part1.UUID); - // string expectedObject2FileName = string.Format( - // "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", - // part2.Name, - // Math.Round(part2.GroupPosition.X), Math.Round(part2.GroupPosition.Y), Math.Round(part2.GroupPosition.Z), - // part2.UUID); - - // string filePath; - // TarArchiveReader.TarEntryType tarEntryType; - - // while (tar.ReadEntry(out filePath, out tarEntryType) != null) - // { - // if (ArchiveConstants.CONTROL_FILE_PATH == filePath) - // { - // gotControlFile = true; - // } - // else if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH)) - // { - // string fileName = filePath.Remove(0, ArchiveConstants.OBJECTS_PATH.Length); - - // if (fileName.StartsWith(part1.Name)) - // { - // Assert.That(fileName, Is.EqualTo(expectedObject1FileName)); - // gotObject1File = true; - // } - // else if (fileName.StartsWith(part2.Name)) - // { - // Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); - // gotObject2File = true; - // } - // } - // } - - // Assert.That(gotControlFile, Is.True, "No control file in archive"); - // Assert.That(gotObject1File, Is.True, "No object1 file in archive"); - // Assert.That(gotObject2File, Is.True, "No object2 file in archive"); - - // // TODO: Test presence of more files and contents of files. - // // Temporary - // Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); - //} + Assert.That(m_lastRequestId, Is.EqualTo(requestId)); + + byte[] archive = archiveWriteStream.ToArray(); + MemoryStream archiveReadStream = new MemoryStream(archive); + TarArchiveReader tar = new TarArchiveReader(archiveReadStream); + + bool gotControlFile = false; + bool gotObject1File = false; + bool gotObject2File = false; + string expectedObject1FileName = string.Format( + "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", + part1.Name, + Math.Round(part1.GroupPosition.X), Math.Round(part1.GroupPosition.Y), Math.Round(part1.GroupPosition.Z), + part1.UUID); + string expectedObject2FileName = string.Format( + "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", + part2.Name, + Math.Round(part2.GroupPosition.X), Math.Round(part2.GroupPosition.Y), Math.Round(part2.GroupPosition.Z), + part2.UUID); + + string filePath; + TarArchiveReader.TarEntryType tarEntryType; + + while (tar.ReadEntry(out filePath, out tarEntryType) != null) + { + if (ArchiveConstants.CONTROL_FILE_PATH == filePath) + { + gotControlFile = true; + } + else if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH)) + { + string fileName = filePath.Remove(0, ArchiveConstants.OBJECTS_PATH.Length); + + if (fileName.StartsWith(part1.Name)) + { + Assert.That(fileName, Is.EqualTo(expectedObject1FileName)); + gotObject1File = true; + } + else if (fileName.StartsWith(part2.Name)) + { + Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); + gotObject2File = true; + } + } + } + + Assert.That(gotControlFile, Is.True, "No control file in archive"); + Assert.That(gotObject1File, Is.True, "No object1 file in archive"); + Assert.That(gotObject2File, Is.True, "No object2 file in archive"); + + // TODO: Test presence of more files and contents of files. + // Temporary + Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); + } /// /// Test loading a V0.2 OpenSim Region Archive. diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs index ae0c3d4..d827b86 100644 --- a/OpenSim/Server/Base/ServerUtils.cs +++ b/OpenSim/Server/Base/ServerUtils.cs @@ -31,11 +31,14 @@ using System.Reflection; using System.Xml; using System.Xml.Serialization; using System.Text; +using log4net; namespace OpenSim.Server.Base { public static class ServerUtils { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public static string SLAssetTypeToContentType(int assetType) { switch (assetType) @@ -114,6 +117,9 @@ namespace OpenSim.Server.Base try { + //m_log.DebugFormat("[PLUGINS]: Loading plugins from {0}", System.IO.Directory.GetCurrentDirectory()); + //m_log.DebugFormat("[PLUGINS]: Trying to load {0}", dllName); + Assembly pluginAssembly = Assembly.LoadFrom(dllName); foreach (Type pluginType in pluginAssembly.GetTypes()) @@ -141,6 +147,7 @@ namespace OpenSim.Server.Base } catch (Exception e) { + m_log.ErrorFormat("Error loading plugin from {0}, exception {1}", dllName, e); return null; } } diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 258c444..b64b840 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -131,11 +131,11 @@ namespace OpenSim.Tests.Common.Setup config.AddConfig("AssetService"); config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); - config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); + config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); assetService.Initialise(config); assetService.AddRegion(testScene); assetService.RegionLoaded(testScene); - //testScene.RegisterModuleInterface((IAssetService)assetService); + testScene.AddRegionModule(assetService.Name, assetService); testScene.SetModuleInterfaces(); -- cgit v1.1