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(-)

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
         /// <summary>
         /// Test saving a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet).
         /// </summary>
-//        [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.
+        }
         
         /// <summary>
         /// 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
             }
         }
 
-        ///// <summary>
-        ///// Test saving a V0.2 OpenSim Region Archive.
-        ///// </summary>
-        //[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");
+        /// <summary>
+        /// Test saving a V0.2 OpenSim Region Archive.
+        /// </summary>
+        [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());
+        }
 
         /// <summary>
         /// 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>((IAssetService)assetService);
+            testScene.AddRegionModule(assetService.Name, assetService);
             
             testScene.SetModuleInterfaces();
 
-- 
cgit v1.1