diff --git a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs index fdc20dd698..0402883794 100644 --- a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs +++ b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs @@ -54,6 +54,7 @@ namespace OpenSim.Framework.Communications.Tests CachedUserInfo nonExistingUserInfo; TestCommunicationsManager commsManager = new TestCommunicationsManager(); + Scene myScene = SceneSetupHelpers.SetupScene(commsManager, ""); // Check we can't retrieve info before it exists by uuid nonExistingUserInfo = commsManager.UserProfileCacheService.GetUserDetails(userId); @@ -116,7 +117,7 @@ namespace OpenSim.Framework.Communications.Tests { TestHelper.InMethod(); - Scene myScene = SceneSetupHelpers.SetupScene(); + Scene myScene = SceneSetupHelpers.SetupScene("inventory"); CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager); for (int i = 0 ; i < 50 ; i++) { @@ -132,7 +133,7 @@ namespace OpenSim.Framework.Communications.Tests { TestHelper.InMethod(); - Scene myScene = SceneSetupHelpers.SetupScene(); + Scene myScene = SceneSetupHelpers.SetupScene("inventory"); CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager); for (int i = 0 ; i < 50 ; i++) { @@ -154,7 +155,7 @@ namespace OpenSim.Framework.Communications.Tests { TestHelper.InMethod(); - Scene myScene = SceneSetupHelpers.SetupScene(); + Scene myScene = SceneSetupHelpers.SetupScene("inventory"); CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager); for (int i = 0 ; i < 50 ; i++) { @@ -190,7 +191,7 @@ namespace OpenSim.Framework.Communications.Tests { TestHelper.InMethod(); - Scene myScene = SceneSetupHelpers.SetupScene(); + Scene myScene = SceneSetupHelpers.SetupScene("inventory"); CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager); for (int i = 0 ; i < 50 ; i++) { @@ -256,7 +257,7 @@ namespace OpenSim.Framework.Communications.Tests { TestHelper.InMethod(); - Scene myScene = SceneSetupHelpers.SetupScene(); + Scene myScene = SceneSetupHelpers.SetupScene("inventory"); CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager); for (int i = 0 ; i < 50 ; i++) { @@ -297,7 +298,7 @@ namespace OpenSim.Framework.Communications.Tests TestHelper.InMethod(); //log4net.Config.XmlConfigurator.Configure(); - Scene myScene = SceneSetupHelpers.SetupScene(); + Scene myScene = SceneSetupHelpers.SetupScene("inventory"); CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager); for (int i = 0 ; i < 50 ; i++) { diff --git a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs index 47e029364e..9e181f34c5 100644 --- a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs +++ b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs @@ -36,6 +36,7 @@ using Nwc.XmlRpc; using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Services; using OpenSim.Region.Communications.Local; +using OpenSim.Tests.Common.Setup; using OpenSim.Tests.Common.Mock; using OpenSim.Client.Linden; using OpenSim.Tests.Common; @@ -57,11 +58,12 @@ namespace OpenSim.Framework.Communications.Tests private string m_regionExternalName = "localhost"; private IPEndPoint m_capsEndPoint; - private CommunicationsManager m_commsManager; + private TestCommunicationsManager m_commsManager; private TestLoginToRegionConnector m_regionConnector; private LocalUserServices m_localUserServices; private LoginService m_loginService; private UserProfileData m_userProfileData; + private TestScene m_testScene; [SetUp] public void SetUpLoginEnviroment() @@ -69,13 +71,16 @@ namespace OpenSim.Framework.Communications.Tests m_capsEndPoint = new IPEndPoint(IPAddress.Loopback, 9123); m_commsManager = new TestCommunicationsManager(new NetworkServersInfo(42, 43)); m_regionConnector = new TestLoginToRegionConnector(); + m_testScene = SceneSetupHelpers.SetupScene(m_commsManager, ""); m_regionConnector.AddRegion(new RegionInfo(42, 43, m_capsEndPoint, m_regionExternalName)); + //IInventoryService m_inventoryService = new TestInventoryService(); + m_localUserServices = (LocalUserServices) m_commsManager.UserService; m_localUserServices.AddUser(m_firstName,m_lastName,"boingboing","abc@ftw.com",42,43); - m_loginService = new LLStandaloneLoginService((UserManagerBase) m_localUserServices, "Hello folks", new TestInventoryService(), + m_loginService = new LLStandaloneLoginService((UserManagerBase) m_localUserServices, "Hello folks", m_testScene.InventoryService, m_commsManager.NetworkServersInfo, true, new LibraryRootFolder(String.Empty), m_regionConnector); m_userProfileData = m_localUserServices.GetUserProfile(m_firstName, m_lastName); @@ -442,123 +447,4 @@ namespace OpenSim.Framework.Communications.Tests #endregion } } - - class TestInventoryService : IInventoryService - { - public TestInventoryService() - { - } - - /// - /// - /// - /// - /// - public bool CreateUserInventory(UUID userId) - { - return false; - } - - /// - /// - /// - /// - /// - public List GetInventorySkeleton(UUID userId) - { - List folders = new List(); - InventoryFolderBase folder = new InventoryFolderBase(); - folder.ID = UUID.Random(); - folder.Owner = userId; - folders.Add(folder); - return folders; - } - - /// - /// Returns a list of all the active gestures in a user's inventory. - /// - /// - /// The of the user - /// - /// - /// A flat list of the gesture items. - /// - public List GetActiveGestures(UUID userId) - { - return null; - } - - public InventoryCollection GetUserInventory(UUID userID) - { - return null; - } - - public void GetUserInventory(UUID userID, OpenSim.Services.Interfaces.InventoryReceiptCallback callback) - { - } - - public List GetFolderItems(UUID userID, UUID folderID) - { - return null; - } - - public bool AddFolder(InventoryFolderBase folder) - { - return false; - } - - public bool UpdateFolder(InventoryFolderBase folder) - { - return false; - } - - public bool MoveFolder(InventoryFolderBase folder) - { - return false; - } - - public bool PurgeFolder(InventoryFolderBase folder) - { - return false; - } - - public bool AddItem(InventoryItemBase item) - { - return false; - } - - public bool UpdateItem(InventoryItemBase item) - { - return false; - } - - public bool DeleteItem(InventoryItemBase item) - { - return false; - } - - public InventoryItemBase QueryItem(InventoryItemBase item) - { - return null; - } - - public InventoryFolderBase QueryFolder(InventoryFolderBase folder) - { - return null; - } - - public bool HasInventoryForUser(UUID userID) - { - return false; - } - - public InventoryFolderBase RequestRootFolder(UUID userID) - { - InventoryFolderBase root = new InventoryFolderBase(); - root.ID = UUID.Random(); - root.Owner = userID; - root.ParentID = UUID.Zero; - return root; - } - } } diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs index bd5d0e37e3..b9044ebe55 100644 --- a/OpenSim/Framework/Communications/UserManagerBase.cs +++ b/OpenSim/Framework/Communications/UserManagerBase.cs @@ -698,7 +698,7 @@ namespace OpenSim.Framework.Communications if (rootfolder != null) userProf.RootInventoryFolderID = rootfolder.ID; } - else if (m_commsManager.InterServiceInventoryService != null) + else { // used by the user server m_log.Debug("[USERSTORAGE]: using m_commsManager.InterServiceInventoryService to create user's inventory"); diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 12d3e9507f..148051210e 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -74,7 +74,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene(false); + Scene scene = SceneSetupHelpers.SetupScene(""); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); CommunicationsManager cm = scene.CommsManager; @@ -363,7 +363,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests public void TestReplicateArchivePathToUserInventory() { TestHelper.InMethod(); - Scene scene = SceneSetupHelpers.SetupScene(false); + Scene scene = SceneSetupHelpers.SetupScene(""); CommunicationsManager commsManager = scene.CommsManager; CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(commsManager); diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index ed280c8dc7..5c42e946a1 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -87,7 +87,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests SerialiserModule serialiserModule = new SerialiserModule(); TerrainModule terrainModule = new TerrainModule(); - Scene scene = SceneSetupHelpers.SetupScene(false); + Scene scene = SceneSetupHelpers.SetupScene("asset"); SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); SceneObjectPart part1; diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs index c894d8e2be..373b6ab3f3 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs @@ -237,7 +237,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests public void Init() { m_serialiserModule = new SerialiserModule(); - m_scene = SceneSetupHelpers.SetupScene(false); + m_scene = SceneSetupHelpers.SetupScene(""); SceneSetupHelpers.SetupSceneModules(m_scene, m_serialiserModule); } diff --git a/OpenSim/Tests/Common/Mock/TestAssetService.cs b/OpenSim/Tests/Common/Mock/TestAssetService.cs index d35e3ed127..5f1184bd96 100644 --- a/OpenSim/Tests/Common/Mock/TestAssetService.cs +++ b/OpenSim/Tests/Common/Mock/TestAssetService.cs @@ -31,13 +31,18 @@ using OpenMetaverse; using OpenSim.Framework; using OpenSim.Data; using OpenSim.Services.Interfaces; +using Nini.Config; namespace OpenSim.Tests.Common.Mock { public class TestAssetService : IAssetService { - private readonly Dictionary Assets = new Dictionary(); - + private readonly Dictionary Assets = new Dictionary(); + + public TestAssetService(IConfigSource config) + { + } + public AssetBase Get(string id) { return Assets[ id ]; diff --git a/OpenSim/Tests/Common/Mock/TestInventoryService.cs b/OpenSim/Tests/Common/Mock/TestInventoryService.cs new file mode 100644 index 0000000000..cf1a3a965d --- /dev/null +++ b/OpenSim/Tests/Common/Mock/TestInventoryService.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Framework; +using OpenMetaverse; +using OpenSim.Services.Interfaces; +using Nini.Config; + +namespace OpenSim.Tests.Common.Mock +{ + public class TestInventoryService : IInventoryService + { + public TestInventoryService() + { + } + + public TestInventoryService(IConfigSource config) + { + } + + /// + /// + /// + /// + /// + public bool CreateUserInventory(UUID userId) + { + return false; + } + + /// + /// + /// + /// + /// + public List GetInventorySkeleton(UUID userId) + { + List folders = new List(); + InventoryFolderBase folder = new InventoryFolderBase(); + folder.ID = UUID.Random(); + folder.Owner = userId; + folders.Add(folder); + return folders; + } + + /// + /// Returns a list of all the active gestures in a user's inventory. + /// + /// + /// The of the user + /// + /// + /// A flat list of the gesture items. + /// + public List GetActiveGestures(UUID userId) + { + return null; + } + + public InventoryCollection GetUserInventory(UUID userID) + { + return null; + } + + public void GetUserInventory(UUID userID, OpenSim.Services.Interfaces.InventoryReceiptCallback callback) + { + } + + public List GetFolderItems(UUID userID, UUID folderID) + { + return null; + } + + public bool AddFolder(InventoryFolderBase folder) + { + return false; + } + + public bool UpdateFolder(InventoryFolderBase folder) + { + return false; + } + + public bool MoveFolder(InventoryFolderBase folder) + { + return false; + } + + public bool PurgeFolder(InventoryFolderBase folder) + { + return false; + } + + public bool AddItem(InventoryItemBase item) + { + return false; + } + + public bool UpdateItem(InventoryItemBase item) + { + return false; + } + + public bool DeleteItem(InventoryItemBase item) + { + return false; + } + + public InventoryItemBase QueryItem(InventoryItemBase item) + { + return null; + } + + public InventoryFolderBase QueryFolder(InventoryFolderBase folder) + { + return null; + } + + public bool HasInventoryForUser(UUID userID) + { + return false; + } + + public InventoryFolderBase RequestRootFolder(UUID userID) + { + InventoryFolderBase root = new InventoryFolderBase(); + root.ID = UUID.Random(); + root.Owner = userID; + root.ParentID = UUID.Zero; + return root; + } + } +} diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index c11691fa32..fbe0e4656a 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -54,6 +54,10 @@ namespace OpenSim.Tests.Common.Setup /// public class SceneSetupHelpers { + private static ISharedRegionModule m_assetService = null; + private static ISharedRegionModule m_inventoryService = null; + private static TestCommunicationsManager commsManager = null; + /// /// Set up a test scene /// @@ -63,7 +67,7 @@ namespace OpenSim.Tests.Common.Setup /// public static TestScene SetupScene() { - return SetupScene(true); + return SetupScene(""); } /// @@ -72,12 +76,17 @@ namespace OpenSim.Tests.Common.Setup /// /// Start associated service threads for the scene /// - public static TestScene SetupScene(bool startServices) + public static TestScene SetupScene(String realServices) { return SetupScene( - "Unit test region", UUID.Random(), 1000, 1000, new TestCommunicationsManager(), startServices); + "Unit test region", UUID.Random(), 1000, 1000, new TestCommunicationsManager(), realServices); + } + + public static TestScene SetupScene(TestCommunicationsManager cm, String realServices) + { + return SetupScene( + "Unit test region", UUID.Random(), 1000, 1000, cm, ""); } - /// /// Set up a test scene /// @@ -89,28 +98,35 @@ namespace OpenSim.Tests.Common.Setup /// public static TestScene SetupScene(string name, UUID id, uint x, uint y, TestCommunicationsManager cm) { - return SetupScene(name, id, x, y, cm, true); + return SetupScene(name, id, x, y, cm, ""); } /// - /// Set up a test scene + /// Set up a scene. /// /// Name of the region /// ID of the region /// X co-ordinate of the region /// Y co-ordinate of the region /// This should be the same if simulating two scenes within a standalone - /// Start associated threads for the services used by the scene + /// Starts real inventory and asset services, as opposed to mock ones, if true /// public static TestScene SetupScene( - string name, UUID id, uint x, uint y, TestCommunicationsManager cm, bool startServices) + string name, UUID id, uint x, uint y, TestCommunicationsManager cm, String realServices) { + bool newScene= false; + Console.WriteLine("Setting up test scene {0}", name); + if (cm == null || cm != commsManager) + { + System.Console.WriteLine("Starting a brand new scene"); + newScene = true; + MainConsole.Instance = new LocalConsole("TEST PROMPT"); + MainServer.Instance = new BaseHttpServer(980); + commsManager = cm; + } // We must set up a console otherwise setup of some modules may fail - MainConsole.Instance = new LocalConsole("TEST PROMPT"); - - MainServer.Instance = new BaseHttpServer(980); RegionInfo regInfo = new RegionInfo(x, y, new IPEndPoint(IPAddress.Loopback, 9000), "127.0.0.1"); regInfo.RegionName = name; regInfo.RegionID = id; @@ -132,33 +148,31 @@ namespace OpenSim.Tests.Common.Setup IRegionModule godsModule = new GodsModule(); godsModule.Initialise(testScene, new IniConfigSource()); testScene.AddModule(godsModule.Name, godsModule); - - ISharedRegionModule assetService = new LocalAssetServicesConnector(); + realServices = realServices.ToLower(); IniConfigSource config = new IniConfigSource(); - config.AddConfig("Modules"); - 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.Tests.Common.dll"); - assetService.Initialise(config); - assetService.AddRegion(testScene); - assetService.RegionLoaded(testScene); - testScene.AddRegionModule(assetService.Name, assetService); - assetService.PostInitialise(); + if ((m_assetService == null && m_inventoryService == null) || newScene) + { + if (realServices.Contains("asset")) + StartAssetService(testScene, true); + else + StartAssetService(testScene, false); + if (realServices.Contains("inventory")) + StartInventoryService(testScene, true); + else + StartInventoryService(testScene, false); + } + else + { + m_assetService.AddRegion(testScene); + m_assetService.RegionLoaded(testScene); + m_inventoryService.AddRegion(testScene); + m_inventoryService.RegionLoaded(testScene); + } + m_inventoryService.PostInitialise(); + m_assetService.PostInitialise(); + + testScene.CommsManager.UserService.SetInventoryService(testScene.InventoryService); - ISharedRegionModule inventoryService = new LocalInventoryServicesConnector(); - config = new IniConfigSource(); - config.AddConfig("Modules"); - config.AddConfig("InventoryService"); - config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); - config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); - config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); - inventoryService.Initialise(config); - inventoryService.AddRegion(testScene); - inventoryService.RegionLoaded(testScene); - testScene.AddRegionModule(inventoryService.Name, inventoryService); - inventoryService.PostInitialise(); - testScene.SetModuleInterfaces(); testScene.LandChannel = new TestLandChannel(); @@ -168,10 +182,48 @@ namespace OpenSim.Tests.Common.Setup physicsPluginManager.LoadPluginsFromAssembly("Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll"); testScene.PhysicsScene = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", configSource, "test"); - + return testScene; } + private static void StartAssetService(Scene testScene, bool real) + { + ISharedRegionModule assetService = new LocalAssetServicesConnector(); + IniConfigSource config = new IniConfigSource(); + config.AddConfig("Modules"); + config.AddConfig("AssetService"); + config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); + if (real) + config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); + else + config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:TestAssetService"); + config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); + assetService.Initialise(config); + assetService.AddRegion(testScene); + assetService.RegionLoaded(testScene); + testScene.AddRegionModule(assetService.Name, assetService); + m_assetService = assetService; + } + + private static void StartInventoryService(Scene testScene, bool real) + { + ISharedRegionModule inventoryService = new LocalInventoryServicesConnector(); + IniConfigSource config = new IniConfigSource(); + config.AddConfig("Modules"); + config.AddConfig("InventoryService"); + config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); + if (real) + config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); + else + config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:TestInventoryService"); + config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); + inventoryService.Initialise(config); + inventoryService.AddRegion(testScene); + inventoryService.RegionLoaded(testScene); + testScene.AddRegionModule(inventoryService.Name, inventoryService); + m_inventoryService = inventoryService; + } + /// /// Setup modules for a scene using their default settings. ///