From 952029380a6a038e382dd3b2c312b3e16ff08625 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Jun 2010 10:59:59 -0700 Subject: Fixed a couple of buglets in Friendship offers / acceptance / decline when avies are in different sims. --- .../CoreModules/Avatar/Friends/FriendsModule.cs | 56 +++++++++++++--------- .../Avatar/Friends/FriendsRequestHandler.cs | 13 +++-- .../UserAccounts/UserAccountCache.cs | 4 +- 3 files changed, 44 insertions(+), 29 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 0c81f44..0050653 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs @@ -111,10 +111,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends protected IGridService GridService { - get - { - return m_Scenes[0].GridService; - } + get { return m_Scenes[0].GridService; } + } + + public IUserAccountService UserAccountService + { + get { return m_Scenes[0].UserAccountService; } } public IScene Scene @@ -220,33 +222,37 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends client.OnLogout += OnLogout; - if (m_Friends.ContainsKey(client.AgentId)) + lock (m_Friends) { - m_Friends[client.AgentId].Refcount++; - return; - } + if (m_Friends.ContainsKey(client.AgentId)) + { + m_Friends[client.AgentId].Refcount++; + return; + } - UserFriendData newFriends = new UserFriendData(); + UserFriendData newFriends = new UserFriendData(); - newFriends.PrincipalID = client.AgentId; - newFriends.Friends = m_FriendsService.GetFriends(client.AgentId); - newFriends.Refcount = 1; - newFriends.RegionID = UUID.Zero; + newFriends.PrincipalID = client.AgentId; + newFriends.Friends = m_FriendsService.GetFriends(client.AgentId); + newFriends.Refcount = 1; + newFriends.RegionID = UUID.Zero; - m_Friends.Add(client.AgentId, newFriends); + m_Friends.Add(client.AgentId, newFriends); + } //StatusChange(client.AgentId, true); } private void OnClientClosed(UUID agentID, Scene scene) { - if (m_Friends.ContainsKey(agentID)) - { - if (m_Friends[agentID].Refcount == 1) - m_Friends.Remove(agentID); - else - m_Friends[agentID].Refcount--; - } + lock (m_Friends) + if (m_Friends.ContainsKey(agentID)) + { + if (m_Friends[agentID].Refcount == 1) + m_Friends.Remove(agentID); + else + m_Friends[agentID].Refcount--; + } } private void OnLogout(IClientAPI client) @@ -518,12 +524,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends private void OnApproveFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List callingCardFolders) { + m_log.DebugFormat("[FRIENDS]: {0} accepted friendship from {1}", agentID, friendID); + FriendsService.StoreFriend(agentID, friendID.ToString(), 1); FriendsService.StoreFriend(friendID, agentID.ToString(), 1); // update the local cache m_Friends[agentID].Friends = FriendsService.GetFriends(agentID); - m_log.DebugFormat("[FRIENDS]: {0} accepted friendship from {1}", agentID, friendID); // // Notify the friend @@ -572,7 +579,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends if (friendSession != null) { GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); - m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID); + if (region != null) + m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID); + else + m_log.WarnFormat("[FRIENDS]: Could not find region {0} in locating {1}", friendSession.RegionID, friendID); } } } diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs index 0883c5b..496f2ab 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs @@ -35,6 +35,7 @@ using OpenSim.Framework; using OpenSim.Server.Base; using OpenSim.Framework.Servers.HttpServer; using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; +using OpenSim.Services.Interfaces; using OpenMetaverse; using log4net; @@ -61,7 +62,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends sr.Close(); body = body.Trim(); - m_log.DebugFormat("[XXX]: query String: {0}", body); + //m_log.DebugFormat("[XXX]: query String: {0}", body); try { @@ -115,9 +116,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends if (!UUID.TryParse(request["ToID"].ToString(), out toID)) return FailureResult(); - GridInstantMessage im = new GridInstantMessage(m_FriendsModule.Scene, fromID, "", toID, + UserAccount account = m_FriendsModule.UserAccountService.GetUserAccount(m_FriendsModule.Scene.RegionInfo.ScopeID, fromID); + string name = (account == null) ? "Unknown" : account.FirstName + " " + account.LastName; + + GridInstantMessage im = new GridInstantMessage(m_FriendsModule.Scene, fromID, name, toID, (byte)InstantMessageDialog.FriendshipOffered, message, false, Vector3.Zero); - + + // !! HACK + im.imSessionID = im.fromAgentID; + if (m_FriendsModule.LocalFriendshipOffered(toID, im)) return SuccessResult(); diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs index a355661..e1bc243 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs @@ -44,10 +44,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts public UserAccountCache() { - // Warning: the size values are a bit fuzzy. What matters - // most for this cache is the count value (128 entries). m_UUIDCache = new ExpiringCache(); - m_NameCache = new ExpiringCache(); // this one is unbound + m_NameCache = new ExpiringCache(); } public void Cache(UUID userID, UserAccount account) -- cgit v1.1 From 75878c8f43251477b3b10942b689d69c1e803056 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 4 Jun 2010 20:43:05 +0100 Subject: get TestSaveIarV0_1() working again by setting up an OpenSim.Data.Null.UserAuthenticationData plugin additional tweaks to get this working properly --- .../CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs | 4 +++- .../Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index 307db97..ab5f485 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs @@ -390,7 +390,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// protected UserAccount GetUserInfo(string firstName, string lastName, string pass) { - UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, firstName, lastName); + UserAccount account + = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, firstName, lastName); + if (null == account) { m_log.ErrorFormat( diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index c81f295..a3b3e2d 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -76,7 +76,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // Commenting for now! The mock inventory service needs more beef, at least for // GetFolderForType // REFACTORING PROBLEM. This needs to be rewritten. - //[Test] + [Test] public void TestSaveIarV0_1() { TestHelper.InMethod(); @@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + Scene scene = SceneSetupHelpers.SetupScene("Inventory, useraccounts"); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); // Create user -- cgit v1.1 From df2bcf7b6b0f558078cab12e48904b8b61766c58 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 4 Jun 2010 20:56:24 +0100 Subject: remove pointless mock user account service since the real one can now be easily configured for test purposes --- .../Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs | 2 +- OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index a3b3e2d..5b91e0d 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); - Scene scene = SceneSetupHelpers.SetupScene("Inventory, useraccounts"); + Scene scene = SceneSetupHelpers.SetupScene("Inventory"); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); // Create user diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index 4d04af1..58698ee 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -69,7 +69,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests SerialiserModule serialiserModule = new SerialiserModule(); TerrainModule terrainModule = new TerrainModule(); - m_scene = SceneSetupHelpers.SetupScene("useraccounts"); + m_scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(m_scene, m_archiverModule, serialiserModule, terrainModule); } -- cgit v1.1 From f523c2033d9591c1e96ad9ebb463236242d3c067 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 4 Jun 2010 21:11:13 +0100 Subject: bring test TestLoadIarV0_1ExistingUsers() back online --- .../Archiver/Tests/InventoryArchiverTests.cs | 157 ++++++++++----------- 1 file changed, 76 insertions(+), 81 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 5b91e0d..d5fc666 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -80,7 +80,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests public void TestSaveIarV0_1() { TestHelper.InMethod(); - log4net.Config.XmlConfigurator.Configure(); +// log4net.Config.XmlConfigurator.Configure(); InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); @@ -195,99 +195,94 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// /// /// This test also does some deeper probing of loading into nested inventory structures - /// REFACTORING PROBLEM. This needs to be rewritten. -// [Test] -// public void TestLoadIarV0_1ExistingUsers() -// { -// TestHelper.InMethod(); + [Test] + public void TestLoadIarV0_1ExistingUsers() + { + TestHelper.InMethod(); -// //log4net.Config.XmlConfigurator.Configure(); + //log4net.Config.XmlConfigurator.Configure(); -// string userFirstName = "Mr"; -// string userLastName = "Tiddles"; -// UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); -// string userItemCreatorFirstName = "Lord"; -// string userItemCreatorLastName = "Lucan"; -// UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); + string userFirstName = "Mr"; + string userLastName = "Tiddles"; + UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); + string userItemCreatorFirstName = "Lord"; + string userItemCreatorLastName = "Lucan"; + UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); -// string item1Name = "b.lsl"; -// string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1Name, UUID.Random()); - -// MemoryStream archiveWriteStream = new MemoryStream(); -// TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); + string item1Name = "b.lsl"; + string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1Name, UUID.Random()); -// InventoryItemBase item1 = new InventoryItemBase(); -// item1.Name = item1Name; -// item1.AssetID = UUID.Random(); -// item1.GroupID = UUID.Random(); -// item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); -// //item1.CreatorId = userUuid.ToString(); -// //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; -// item1.Owner = UUID.Zero; - -// string item1FileName -// = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); -// tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); -// tar.Close(); + MemoryStream archiveWriteStream = new MemoryStream(); + TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); -// MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); -// SerialiserModule serialiserModule = new SerialiserModule(); -// InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = item1Name; + item1.AssetID = UUID.Random(); + item1.GroupID = UUID.Random(); + item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); + //item1.CreatorId = userUuid.ToString(); + //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; + item1.Owner = UUID.Zero; + + string item1FileName + = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); + tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); + tar.Close(); + + MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); + SerialiserModule serialiserModule = new SerialiserModule(); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); -// // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene -// Scene scene = SceneSetupHelpers.SetupScene("inventory"); -// IUserAdminService userAdminService = scene.CommsManager.UserAdminService; + // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene + Scene scene = SceneSetupHelpers.SetupScene("inventory"); -// SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); -// userAdminService.AddUser( -// userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); -// userAdminService.AddUser( -// userItemCreatorFirstName, userItemCreatorLastName, "hampshire", -// String.Empty, 1000, 1000, userItemCreatorUuid); + SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + + UserProfileTestUtils.CreateUserWithInventory( + scene, userFirstName, userLastName, userUuid, "meowfood"); + UserProfileTestUtils.CreateUserWithInventory( + scene, userItemCreatorFirstName, userItemCreatorLastName, userItemCreatorUuid, "hampshire"); -// archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); - -// CachedUserInfo userInfo -// = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); + archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); -// InventoryItemBase foundItem1 -// = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, item1Name); + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, item1Name); -// Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); + Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); -//// We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the -//// UUID, not the OSPA itself. -//// Assert.That( -//// foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), -//// "Loaded item non-uuid creator doesn't match original"); +// We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the +// UUID, not the OSPA itself. // Assert.That( -// foundItem1.CreatorId, Is.EqualTo(userItemCreatorUuid.ToString()), +// foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), // "Loaded item non-uuid creator doesn't match original"); - -// Assert.That( -// foundItem1.CreatorIdAsUuid, Is.EqualTo(userItemCreatorUuid), -// "Loaded item uuid creator doesn't match original"); -// Assert.That(foundItem1.Owner, Is.EqualTo(userUuid), -// "Loaded item owner doesn't match inventory reciever"); - -// // Now try loading to a root child folder -// UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xA"); -// archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); -// archiverModule.DearchiveInventory(userFirstName, userLastName, "xA", "meowfood", archiveReadStream); - -// InventoryItemBase foundItem2 -// = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xA/" + item1Name); -// Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); - -// // Now try loading to a more deeply nested folder -// UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC"); -// archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); -// archiverModule.DearchiveInventory(userFirstName, userLastName, "xB/xC", "meowfood", archiveReadStream); - -// InventoryItemBase foundItem3 -// = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC/" + item1Name); -// Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); - //} + Assert.That( + foundItem1.CreatorId, Is.EqualTo(userItemCreatorUuid.ToString()), + "Loaded item non-uuid creator doesn't match original"); + + Assert.That( + foundItem1.CreatorIdAsUuid, Is.EqualTo(userItemCreatorUuid), + "Loaded item uuid creator doesn't match original"); + Assert.That(foundItem1.Owner, Is.EqualTo(userUuid), + "Loaded item owner doesn't match inventory reciever"); + + // Now try loading to a root child folder + UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userUuid, "xA"); + archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); + archiverModule.DearchiveInventory(userFirstName, userLastName, "xA", "meowfood", archiveReadStream); + + InventoryItemBase foundItem2 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, "xA/" + item1Name); + Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); + + // Now try loading to a more deeply nested folder + UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userUuid, "xB/xC"); + archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); + archiverModule.DearchiveInventory(userFirstName, userLastName, "xB/xC", "meowfood", archiveReadStream); + + InventoryItemBase foundItem3 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, "xB/xC/" + item1Name); + Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); + } // REFACTORING PROBLEM. Needs rewrite. // [Test] -- cgit v1.1 From a08ace300ba1f81a524b209fe8fc5b3f4acfd28c Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 4 Jun 2010 21:15:25 +0100 Subject: bring TestIarV0_1WithEscapedChars() back online --- .../Archiver/Tests/InventoryArchiverTests.cs | 161 +++++++++------------ 1 file changed, 72 insertions(+), 89 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index d5fc666..3c4bc7b 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -55,14 +55,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests { protected ManualResetEvent mre = new ManualResetEvent(false); - private void InventoryReceived(UUID userId) - { - lock (this) - { - Monitor.PulseAll(this); - } - } - private void SaveCompleted( Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, Exception reportedException) @@ -198,8 +190,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests [Test] public void TestLoadIarV0_1ExistingUsers() { - TestHelper.InMethod(); - + TestHelper.InMethod(); //log4net.Config.XmlConfigurator.Configure(); string userFirstName = "Mr"; @@ -284,95 +275,87 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); } - // REFACTORING PROBLEM. Needs rewrite. -// [Test] -// public void TestIarV0_1WithEscapedChars() -// { -// TestHelper.InMethod(); -//// log4net.Config.XmlConfigurator.Configure(); + [Test] + public void TestIarV0_1WithEscapedChars() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); -// string itemName = "You & you are a mean/man/"; -// string humanEscapedItemName = @"You & you are a mean\/man\/"; -// string userPassword = "meowfood"; + string itemName = "You & you are a mean/man/"; + string humanEscapedItemName = @"You & you are a mean\/man\/"; + string userPassword = "meowfood"; -// InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); -// Scene scene = SceneSetupHelpers.SetupScene("Inventory"); -// 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"); - -// lock (this) -// { -// UserProfileTestUtils.CreateUserWithInventory( -// cm, userFirstName, userLastName, userPassword, userId, InventoryReceived); -// Monitor.Wait(this, 60000); -// } - -// // Create asset -// SceneObjectGroup object1; -// SceneObjectPart part1; -// { -// string partName = "part name"; -// 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; - -// object1 = new SceneObjectGroup(part1); -// scene.AddNewSceneObject(object1, false); -// } - -// UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); -// AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); -// scene.AssetService.Store(asset1); - -// // Create item -// UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); -// InventoryItemBase item1 = new InventoryItemBase(); -// item1.Name = itemName; -// item1.AssetID = asset1.FullID; -// item1.ID = item1Id; -// InventoryFolderBase objsFolder -// = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); -// item1.Folder = objsFolder.ID; -// scene.AddInventoryItem(userId, item1); + Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + SceneSetupHelpers.SetupSceneModules(scene, archiverModule); -// MemoryStream archiveWriteStream = new MemoryStream(); -// archiverModule.OnInventoryArchiveSaved += SaveCompleted; + // Create user + string userFirstName = "Jock"; + string userLastName = "Stirrup"; + UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); + UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, "meowfood"); + + // Create asset + SceneObjectGroup object1; + SceneObjectPart part1; + { + string partName = "part name"; + 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); -// mre.Reset(); -// archiverModule.ArchiveInventory( -// Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); -// mre.WaitOne(60000, false); + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; -// // LOAD ITEM -// MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); + object1 = new SceneObjectGroup(part1); + scene.AddNewSceneObject(object1, false); + } + + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); + scene.AssetService.Store(asset1); + + // Create item + UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = itemName; + item1.AssetID = asset1.FullID; + item1.ID = item1Id; + InventoryFolderBase objsFolder + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); + item1.Folder = objsFolder.ID; + scene.AddInventoryItem(userId, item1); + + MemoryStream archiveWriteStream = new MemoryStream(); + archiverModule.OnInventoryArchiveSaved += SaveCompleted; + + mre.Reset(); + archiverModule.ArchiveInventory( + Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); + mre.WaitOne(60000, false); + + // LOAD ITEM + MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); -// archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); + archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); -// InventoryItemBase foundItem1 -// = InventoryArchiveUtils.FindItemByPath( -// scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath( + scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); -// Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); -//// Assert.That( -//// foundItem1.CreatorId, Is.EqualTo(userUuid), -//// "Loaded item non-uuid creator doesn't match that of the loading user"); + Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); // Assert.That( -// foundItem1.Name, Is.EqualTo(itemName), -// "Loaded item name doesn't match saved name"); -// } +// foundItem1.CreatorId, Is.EqualTo(userUuid), +// "Loaded item non-uuid creator doesn't match that of the loading user"); + Assert.That( + foundItem1.Name, Is.EqualTo(itemName), + "Loaded item name doesn't match saved name"); + } /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where -- cgit v1.1 From 0526d3a535519c244baa865b26f48953552d3e53 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 4 Jun 2010 21:19:37 +0100 Subject: bring TestLoadIarV0_1AbsentUsers() back online --- .../Archiver/Tests/InventoryArchiverTests.cs | 119 ++++++++++----------- 1 file changed, 56 insertions(+), 63 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 3c4bc7b..507662f 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -364,76 +364,69 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// /// This may possibly one day get overtaken by the as yet incomplete temporary profiles feature /// (as tested in the a later commented out test) - /// REFACTORING PROBLEM. Needs rewrite. -// [Test] -// public void TestLoadIarV0_1AbsentUsers() -// { -// TestHelper.InMethod(); - -// //log4net.Config.XmlConfigurator.Configure(); - -// string userFirstName = "Charlie"; -// string userLastName = "Chan"; -// UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); -// string userItemCreatorFirstName = "Bat"; -// string userItemCreatorLastName = "Man"; -// //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); - -// string itemName = "b.lsl"; -// string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); - -// MemoryStream archiveWriteStream = new MemoryStream(); -// TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); - -// InventoryItemBase item1 = new InventoryItemBase(); -// item1.Name = itemName; -// item1.AssetID = UUID.Random(); -// item1.GroupID = UUID.Random(); -// item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); -// //item1.CreatorId = userUuid.ToString(); -// //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; -// item1.Owner = UUID.Zero; - -// string item1FileName -// = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); -// tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); -// tar.Close(); - -// MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); -// SerialiserModule serialiserModule = new SerialiserModule(); -// InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); - -// // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene -// Scene scene = SceneSetupHelpers.SetupScene("inventory"); -// IUserAdminService userAdminService = scene.CommsManager.UserAdminService; - -// SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); -// userAdminService.AddUser( -// userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); - -// archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); - -// CachedUserInfo userInfo -// = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); - -// InventoryItemBase foundItem1 -// = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, itemName); - -// Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); -//// Assert.That( -//// foundItem1.CreatorId, Is.EqualTo(userUuid), -//// "Loaded item non-uuid creator doesn't match that of the loading user"); + /// This test is currently disabled + [Test] + public void TestLoadIarV0_1AbsentUsers() + { + TestHelper.InMethod(); + //log4net.Config.XmlConfigurator.Configure(); + + string userFirstName = "Charlie"; + string userLastName = "Chan"; + UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); + string userItemCreatorFirstName = "Bat"; + string userItemCreatorLastName = "Man"; + //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); + + string itemName = "b.lsl"; + string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); + + MemoryStream archiveWriteStream = new MemoryStream(); + TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); + + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = itemName; + item1.AssetID = UUID.Random(); + item1.GroupID = UUID.Random(); + item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); + //item1.CreatorId = userUuid.ToString(); + //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; + item1.Owner = UUID.Zero; + + string item1FileName + = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); + tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); + tar.Close(); + + MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); + SerialiserModule serialiserModule = new SerialiserModule(); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); + + // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene + Scene scene = SceneSetupHelpers.SetupScene("inventory"); + + SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userUuid, "meowfood"); + + archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); + + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, itemName); + + Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); // Assert.That( -// foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), -// "Loaded item uuid creator doesn't match that of the loading user"); -// } +// foundItem1.CreatorId, Is.EqualTo(userUuid), +// "Loaded item non-uuid creator doesn't match that of the loading user"); + Assert.That( + foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), + "Loaded item uuid creator doesn't match that of the loading user"); + } /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where /// no account exists with the creator name /// /// Disabled since temporary profiles have not yet been implemented. - /// REFACTORING PROBLEM. Needs rewrite. /// //[Test] //public void TestLoadIarV0_1TempProfiles() -- cgit v1.1