diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
6 files changed, 271 insertions, 283 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 30eb9b8..b255415 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 | |||
111 | 111 | ||
112 | protected IGridService GridService | 112 | protected IGridService GridService |
113 | { | 113 | { |
114 | get | 114 | get { return m_Scenes[0].GridService; } |
115 | { | 115 | } |
116 | return m_Scenes[0].GridService; | 116 | |
117 | } | 117 | public IUserAccountService UserAccountService |
118 | { | ||
119 | get { return m_Scenes[0].UserAccountService; } | ||
118 | } | 120 | } |
119 | 121 | ||
120 | public IScene Scene | 122 | public IScene Scene |
@@ -221,33 +223,37 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
221 | 223 | ||
222 | client.OnLogout += OnLogout; | 224 | client.OnLogout += OnLogout; |
223 | 225 | ||
224 | if (m_Friends.ContainsKey(client.AgentId)) | 226 | lock (m_Friends) |
225 | { | 227 | { |
226 | m_Friends[client.AgentId].Refcount++; | 228 | if (m_Friends.ContainsKey(client.AgentId)) |
227 | return; | 229 | { |
228 | } | 230 | m_Friends[client.AgentId].Refcount++; |
229 | 231 | return; | |
230 | UserFriendData newFriends = new UserFriendData(); | 232 | } |
231 | 233 | ||
232 | newFriends.PrincipalID = client.AgentId; | 234 | UserFriendData newFriends = new UserFriendData(); |
233 | newFriends.Friends = m_FriendsService.GetFriends(client.AgentId); | ||
234 | newFriends.Refcount = 1; | ||
235 | newFriends.RegionID = UUID.Zero; | ||
236 | 235 | ||
237 | m_Friends.Add(client.AgentId, newFriends); | 236 | newFriends.PrincipalID = client.AgentId; |
237 | newFriends.Friends = m_FriendsService.GetFriends(client.AgentId); | ||
238 | newFriends.Refcount = 1; | ||
239 | newFriends.RegionID = UUID.Zero; | ||
238 | 240 | ||
241 | m_Friends.Add(client.AgentId, newFriends); | ||
242 | } | ||
243 | |||
239 | //StatusChange(client.AgentId, true); | 244 | //StatusChange(client.AgentId, true); |
240 | } | 245 | } |
241 | 246 | ||
242 | private void OnClientClosed(UUID agentID, Scene scene) | 247 | private void OnClientClosed(UUID agentID, Scene scene) |
243 | { | 248 | { |
244 | if (m_Friends.ContainsKey(agentID)) | 249 | lock (m_Friends) |
245 | { | 250 | if (m_Friends.ContainsKey(agentID)) |
246 | if (m_Friends[agentID].Refcount == 1) | 251 | { |
247 | m_Friends.Remove(agentID); | 252 | if (m_Friends[agentID].Refcount == 1) |
248 | else | 253 | m_Friends.Remove(agentID); |
249 | m_Friends[agentID].Refcount--; | 254 | else |
250 | } | 255 | m_Friends[agentID].Refcount--; |
256 | } | ||
251 | } | 257 | } |
252 | 258 | ||
253 | private void OnLogout(IClientAPI client) | 259 | private void OnLogout(IClientAPI client) |
@@ -555,12 +561,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
555 | 561 | ||
556 | private void OnApproveFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List<UUID> callingCardFolders) | 562 | private void OnApproveFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List<UUID> callingCardFolders) |
557 | { | 563 | { |
564 | m_log.DebugFormat("[FRIENDS]: {0} accepted friendship from {1}", agentID, friendID); | ||
565 | |||
558 | FriendsService.StoreFriend(agentID, friendID.ToString(), 1); | 566 | FriendsService.StoreFriend(agentID, friendID.ToString(), 1); |
559 | FriendsService.StoreFriend(friendID, agentID.ToString(), 1); | 567 | FriendsService.StoreFriend(friendID, agentID.ToString(), 1); |
560 | // update the local cache | 568 | // update the local cache |
561 | m_Friends[agentID].Friends = FriendsService.GetFriends(agentID); | 569 | m_Friends[agentID].Friends = FriendsService.GetFriends(agentID); |
562 | 570 | ||
563 | m_log.DebugFormat("[FRIENDS]: {0} accepted friendship from {1}", agentID, friendID); | ||
564 | 571 | ||
565 | // | 572 | // |
566 | // Notify the friend | 573 | // Notify the friend |
@@ -609,7 +616,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
609 | if (friendSession != null) | 616 | if (friendSession != null) |
610 | { | 617 | { |
611 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 618 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); |
612 | m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID); | 619 | if (region != null) |
620 | m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID); | ||
621 | else | ||
622 | m_log.WarnFormat("[FRIENDS]: Could not find region {0} in locating {1}", friendSession.RegionID, friendID); | ||
613 | } | 623 | } |
614 | } | 624 | } |
615 | } | 625 | } |
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; | |||
35 | using OpenSim.Server.Base; | 35 | using OpenSim.Server.Base; |
36 | using OpenSim.Framework.Servers.HttpServer; | 36 | using OpenSim.Framework.Servers.HttpServer; |
37 | using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; | 37 | using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; |
38 | using OpenSim.Services.Interfaces; | ||
38 | 39 | ||
39 | using OpenMetaverse; | 40 | using OpenMetaverse; |
40 | using log4net; | 41 | using log4net; |
@@ -61,7 +62,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
61 | sr.Close(); | 62 | sr.Close(); |
62 | body = body.Trim(); | 63 | body = body.Trim(); |
63 | 64 | ||
64 | m_log.DebugFormat("[XXX]: query String: {0}", body); | 65 | //m_log.DebugFormat("[XXX]: query String: {0}", body); |
65 | 66 | ||
66 | try | 67 | try |
67 | { | 68 | { |
@@ -115,9 +116,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
115 | if (!UUID.TryParse(request["ToID"].ToString(), out toID)) | 116 | if (!UUID.TryParse(request["ToID"].ToString(), out toID)) |
116 | return FailureResult(); | 117 | return FailureResult(); |
117 | 118 | ||
118 | GridInstantMessage im = new GridInstantMessage(m_FriendsModule.Scene, fromID, "", toID, | 119 | UserAccount account = m_FriendsModule.UserAccountService.GetUserAccount(m_FriendsModule.Scene.RegionInfo.ScopeID, fromID); |
120 | string name = (account == null) ? "Unknown" : account.FirstName + " " + account.LastName; | ||
121 | |||
122 | GridInstantMessage im = new GridInstantMessage(m_FriendsModule.Scene, fromID, name, toID, | ||
119 | (byte)InstantMessageDialog.FriendshipOffered, message, false, Vector3.Zero); | 123 | (byte)InstantMessageDialog.FriendshipOffered, message, false, Vector3.Zero); |
120 | 124 | ||
125 | // !! HACK | ||
126 | im.imSessionID = im.fromAgentID; | ||
127 | |||
121 | if (m_FriendsModule.LocalFriendshipOffered(toID, im)) | 128 | if (m_FriendsModule.LocalFriendshipOffered(toID, im)) |
122 | return SuccessResult(); | 129 | return SuccessResult(); |
123 | 130 | ||
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 | |||
390 | /// <returns></returns> | 390 | /// <returns></returns> |
391 | protected UserAccount GetUserInfo(string firstName, string lastName, string pass) | 391 | protected UserAccount GetUserInfo(string firstName, string lastName, string pass) |
392 | { | 392 | { |
393 | UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, firstName, lastName); | 393 | UserAccount account |
394 | = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, firstName, lastName); | ||
395 | |||
394 | if (null == account) | 396 | if (null == account) |
395 | { | 397 | { |
396 | m_log.ErrorFormat( | 398 | 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..507662f 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 | |||
55 | { | 55 | { |
56 | protected ManualResetEvent mre = new ManualResetEvent(false); | 56 | protected ManualResetEvent mre = new ManualResetEvent(false); |
57 | 57 | ||
58 | private void InventoryReceived(UUID userId) | ||
59 | { | ||
60 | lock (this) | ||
61 | { | ||
62 | Monitor.PulseAll(this); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | private void SaveCompleted( | 58 | private void SaveCompleted( |
67 | Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, | 59 | Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, |
68 | Exception reportedException) | 60 | Exception reportedException) |
@@ -76,11 +68,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
76 | // Commenting for now! The mock inventory service needs more beef, at least for | 68 | // Commenting for now! The mock inventory service needs more beef, at least for |
77 | // GetFolderForType | 69 | // GetFolderForType |
78 | // REFACTORING PROBLEM. This needs to be rewritten. | 70 | // REFACTORING PROBLEM. This needs to be rewritten. |
79 | //[Test] | 71 | [Test] |
80 | public void TestSaveIarV0_1() | 72 | public void TestSaveIarV0_1() |
81 | { | 73 | { |
82 | TestHelper.InMethod(); | 74 | TestHelper.InMethod(); |
83 | log4net.Config.XmlConfigurator.Configure(); | 75 | // log4net.Config.XmlConfigurator.Configure(); |
84 | 76 | ||
85 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 77 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); |
86 | 78 | ||
@@ -195,189 +187,175 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
195 | /// </summary> | 187 | /// </summary> |
196 | /// | 188 | /// |
197 | /// This test also does some deeper probing of loading into nested inventory structures | 189 | /// This test also does some deeper probing of loading into nested inventory structures |
198 | /// REFACTORING PROBLEM. This needs to be rewritten. | 190 | [Test] |
199 | // [Test] | 191 | public void TestLoadIarV0_1ExistingUsers() |
200 | // public void TestLoadIarV0_1ExistingUsers() | 192 | { |
201 | // { | 193 | TestHelper.InMethod(); |
202 | // TestHelper.InMethod(); | 194 | //log4net.Config.XmlConfigurator.Configure(); |
203 | 195 | ||
204 | // //log4net.Config.XmlConfigurator.Configure(); | 196 | string userFirstName = "Mr"; |
205 | 197 | string userLastName = "Tiddles"; | |
206 | // string userFirstName = "Mr"; | 198 | UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); |
207 | // string userLastName = "Tiddles"; | 199 | string userItemCreatorFirstName = "Lord"; |
208 | // UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); | 200 | string userItemCreatorLastName = "Lucan"; |
209 | // string userItemCreatorFirstName = "Lord"; | 201 | UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); |
210 | // string userItemCreatorLastName = "Lucan"; | 202 | |
211 | // UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); | 203 | string item1Name = "b.lsl"; |
212 | 204 | string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1Name, UUID.Random()); | |
213 | // string item1Name = "b.lsl"; | 205 | |
214 | // string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1Name, UUID.Random()); | 206 | MemoryStream archiveWriteStream = new MemoryStream(); |
215 | 207 | TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | |
216 | // MemoryStream archiveWriteStream = new MemoryStream(); | 208 | |
217 | // TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | 209 | InventoryItemBase item1 = new InventoryItemBase(); |
218 | 210 | item1.Name = item1Name; | |
219 | // InventoryItemBase item1 = new InventoryItemBase(); | 211 | item1.AssetID = UUID.Random(); |
220 | // item1.Name = item1Name; | 212 | item1.GroupID = UUID.Random(); |
221 | // item1.AssetID = UUID.Random(); | 213 | item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); |
222 | // item1.GroupID = UUID.Random(); | 214 | //item1.CreatorId = userUuid.ToString(); |
223 | // item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); | 215 | //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; |
224 | // //item1.CreatorId = userUuid.ToString(); | 216 | item1.Owner = UUID.Zero; |
225 | // //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; | 217 | |
226 | // item1.Owner = UUID.Zero; | 218 | string item1FileName |
227 | 219 | = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | |
228 | // string item1FileName | 220 | tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); |
229 | // = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | 221 | tar.Close(); |
230 | // tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); | 222 | |
231 | // tar.Close(); | 223 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); |
232 | 224 | SerialiserModule serialiserModule = new SerialiserModule(); | |
233 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | 225 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); |
234 | // SerialiserModule serialiserModule = new SerialiserModule(); | 226 | |
235 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 227 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene |
236 | 228 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | |
237 | // // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | 229 | |
238 | // Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 230 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
239 | // IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | 231 | |
240 | 232 | UserProfileTestUtils.CreateUserWithInventory( | |
241 | // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 233 | scene, userFirstName, userLastName, userUuid, "meowfood"); |
242 | // userAdminService.AddUser( | 234 | UserProfileTestUtils.CreateUserWithInventory( |
243 | // userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | 235 | scene, userItemCreatorFirstName, userItemCreatorLastName, userItemCreatorUuid, "hampshire"); |
244 | // userAdminService.AddUser( | 236 | |
245 | // userItemCreatorFirstName, userItemCreatorLastName, "hampshire", | 237 | archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); |
246 | // String.Empty, 1000, 1000, userItemCreatorUuid); | 238 | |
247 | 239 | InventoryItemBase foundItem1 | |
248 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); | 240 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, item1Name); |
249 | 241 | ||
250 | // CachedUserInfo userInfo | 242 | Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); |
251 | // = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | 243 | |
252 | 244 | // We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the | |
253 | // InventoryItemBase foundItem1 | 245 | // UUID, not the OSPA itself. |
254 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, item1Name); | ||
255 | |||
256 | // Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | ||
257 | |||
258 | //// We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the | ||
259 | //// UUID, not the OSPA itself. | ||
260 | //// Assert.That( | ||
261 | //// foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), | ||
262 | //// "Loaded item non-uuid creator doesn't match original"); | ||
263 | // Assert.That( | 246 | // Assert.That( |
264 | // foundItem1.CreatorId, Is.EqualTo(userItemCreatorUuid.ToString()), | 247 | // foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), |
265 | // "Loaded item non-uuid creator doesn't match original"); | 248 | // "Loaded item non-uuid creator doesn't match original"); |
249 | Assert.That( | ||
250 | foundItem1.CreatorId, Is.EqualTo(userItemCreatorUuid.ToString()), | ||
251 | "Loaded item non-uuid creator doesn't match original"); | ||
252 | |||
253 | Assert.That( | ||
254 | foundItem1.CreatorIdAsUuid, Is.EqualTo(userItemCreatorUuid), | ||
255 | "Loaded item uuid creator doesn't match original"); | ||
256 | Assert.That(foundItem1.Owner, Is.EqualTo(userUuid), | ||
257 | "Loaded item owner doesn't match inventory reciever"); | ||
258 | |||
259 | // Now try loading to a root child folder | ||
260 | UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userUuid, "xA"); | ||
261 | archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
262 | archiverModule.DearchiveInventory(userFirstName, userLastName, "xA", "meowfood", archiveReadStream); | ||
263 | |||
264 | InventoryItemBase foundItem2 | ||
265 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, "xA/" + item1Name); | ||
266 | Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); | ||
267 | |||
268 | // Now try loading to a more deeply nested folder | ||
269 | UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userUuid, "xB/xC"); | ||
270 | archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
271 | archiverModule.DearchiveInventory(userFirstName, userLastName, "xB/xC", "meowfood", archiveReadStream); | ||
272 | |||
273 | InventoryItemBase foundItem3 | ||
274 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, "xB/xC/" + item1Name); | ||
275 | Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); | ||
276 | } | ||
277 | |||
278 | [Test] | ||
279 | public void TestIarV0_1WithEscapedChars() | ||
280 | { | ||
281 | TestHelper.InMethod(); | ||
282 | // log4net.Config.XmlConfigurator.Configure(); | ||
283 | |||
284 | string itemName = "You & you are a mean/man/"; | ||
285 | string humanEscapedItemName = @"You & you are a mean\/man\/"; | ||
286 | string userPassword = "meowfood"; | ||
287 | |||
288 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | ||
289 | |||
290 | Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | ||
291 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | ||
292 | |||
293 | // Create user | ||
294 | string userFirstName = "Jock"; | ||
295 | string userLastName = "Stirrup"; | ||
296 | UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); | ||
297 | UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, "meowfood"); | ||
266 | 298 | ||
267 | // Assert.That( | 299 | // Create asset |
268 | // foundItem1.CreatorIdAsUuid, Is.EqualTo(userItemCreatorUuid), | 300 | SceneObjectGroup object1; |
269 | // "Loaded item uuid creator doesn't match original"); | 301 | SceneObjectPart part1; |
270 | // Assert.That(foundItem1.Owner, Is.EqualTo(userUuid), | 302 | { |
271 | // "Loaded item owner doesn't match inventory reciever"); | 303 | string partName = "part name"; |
272 | 304 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | |
273 | // // Now try loading to a root child folder | 305 | PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); |
274 | // UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xA"); | 306 | Vector3 groupPosition = new Vector3(10, 20, 30); |
275 | // archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | 307 | Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); |
276 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "xA", "meowfood", archiveReadStream); | 308 | Vector3 offsetPosition = new Vector3(5, 10, 15); |
277 | |||
278 | // InventoryItemBase foundItem2 | ||
279 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xA/" + item1Name); | ||
280 | // Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); | ||
281 | |||
282 | // // Now try loading to a more deeply nested folder | ||
283 | // UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC"); | ||
284 | // archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
285 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "xB/xC", "meowfood", archiveReadStream); | ||
286 | |||
287 | // InventoryItemBase foundItem3 | ||
288 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC/" + item1Name); | ||
289 | // Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); | ||
290 | //} | ||
291 | 309 | ||
292 | // REFACTORING PROBLEM. Needs rewrite. | 310 | part1 |
293 | // [Test] | 311 | = new SceneObjectPart( |
294 | // public void TestIarV0_1WithEscapedChars() | 312 | ownerId, shape, groupPosition, rotationOffset, offsetPosition); |
295 | // { | 313 | part1.Name = partName; |
296 | // TestHelper.InMethod(); | 314 | |
297 | //// log4net.Config.XmlConfigurator.Configure(); | 315 | object1 = new SceneObjectGroup(part1); |
298 | 316 | scene.AddNewSceneObject(object1, false); | |
299 | // string itemName = "You & you are a mean/man/"; | 317 | } |
300 | // string humanEscapedItemName = @"You & you are a mean\/man\/"; | 318 | |
301 | // string userPassword = "meowfood"; | 319 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); |
302 | 320 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | |
303 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 321 | scene.AssetService.Store(asset1); |
304 | 322 | ||
305 | // Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | 323 | // Create item |
306 | // SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | 324 | UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); |
307 | // CommunicationsManager cm = scene.CommsManager; | 325 | InventoryItemBase item1 = new InventoryItemBase(); |
308 | 326 | item1.Name = itemName; | |
309 | // // Create user | 327 | item1.AssetID = asset1.FullID; |
310 | // string userFirstName = "Jock"; | 328 | item1.ID = item1Id; |
311 | // string userLastName = "Stirrup"; | 329 | InventoryFolderBase objsFolder |
312 | // UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); | 330 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); |
313 | 331 | item1.Folder = objsFolder.ID; | |
314 | // lock (this) | 332 | scene.AddInventoryItem(userId, item1); |
315 | // { | 333 | |
316 | // UserProfileTestUtils.CreateUserWithInventory( | 334 | MemoryStream archiveWriteStream = new MemoryStream(); |
317 | // cm, userFirstName, userLastName, userPassword, userId, InventoryReceived); | 335 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; |
318 | // Monitor.Wait(this, 60000); | 336 | |
319 | // } | 337 | mre.Reset(); |
320 | 338 | archiverModule.ArchiveInventory( | |
321 | // // Create asset | 339 | Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); |
322 | // SceneObjectGroup object1; | 340 | mre.WaitOne(60000, false); |
323 | // SceneObjectPart part1; | 341 | |
324 | // { | 342 | // LOAD ITEM |
325 | // string partName = "part name"; | 343 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); |
326 | // UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | 344 | |
327 | // PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); | 345 | archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); |
328 | // Vector3 groupPosition = new Vector3(10, 20, 30); | 346 | |
329 | // Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | 347 | InventoryItemBase foundItem1 |
330 | // Vector3 offsetPosition = new Vector3(5, 10, 15); | 348 | = InventoryArchiveUtils.FindItemByPath( |
331 | 349 | scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); | |
332 | // part1 | 350 | |
333 | // = new SceneObjectPart( | 351 | Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); |
334 | // ownerId, shape, groupPosition, rotationOffset, offsetPosition); | ||
335 | // part1.Name = partName; | ||
336 | |||
337 | // object1 = new SceneObjectGroup(part1); | ||
338 | // scene.AddNewSceneObject(object1, false); | ||
339 | // } | ||
340 | |||
341 | // UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | ||
342 | // AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | ||
343 | // scene.AssetService.Store(asset1); | ||
344 | |||
345 | // // Create item | ||
346 | // UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); | ||
347 | // InventoryItemBase item1 = new InventoryItemBase(); | ||
348 | // item1.Name = itemName; | ||
349 | // item1.AssetID = asset1.FullID; | ||
350 | // item1.ID = item1Id; | ||
351 | // InventoryFolderBase objsFolder | ||
352 | // = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); | ||
353 | // item1.Folder = objsFolder.ID; | ||
354 | // scene.AddInventoryItem(userId, item1); | ||
355 | |||
356 | // MemoryStream archiveWriteStream = new MemoryStream(); | ||
357 | // archiverModule.OnInventoryArchiveSaved += SaveCompleted; | ||
358 | |||
359 | // mre.Reset(); | ||
360 | // archiverModule.ArchiveInventory( | ||
361 | // Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); | ||
362 | // mre.WaitOne(60000, false); | ||
363 | |||
364 | // // LOAD ITEM | ||
365 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | ||
366 | |||
367 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); | ||
368 | |||
369 | // InventoryItemBase foundItem1 | ||
370 | // = InventoryArchiveUtils.FindItemByPath( | ||
371 | // scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); | ||
372 | |||
373 | // Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | ||
374 | //// Assert.That( | ||
375 | //// foundItem1.CreatorId, Is.EqualTo(userUuid), | ||
376 | //// "Loaded item non-uuid creator doesn't match that of the loading user"); | ||
377 | // Assert.That( | 352 | // Assert.That( |
378 | // foundItem1.Name, Is.EqualTo(itemName), | 353 | // foundItem1.CreatorId, Is.EqualTo(userUuid), |
379 | // "Loaded item name doesn't match saved name"); | 354 | // "Loaded item non-uuid creator doesn't match that of the loading user"); |
380 | // } | 355 | Assert.That( |
356 | foundItem1.Name, Is.EqualTo(itemName), | ||
357 | "Loaded item name doesn't match saved name"); | ||
358 | } | ||
381 | 359 | ||
382 | /// <summary> | 360 | /// <summary> |
383 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where | 361 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where |
@@ -386,76 +364,69 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
386 | /// | 364 | /// |
387 | /// This may possibly one day get overtaken by the as yet incomplete temporary profiles feature | 365 | /// This may possibly one day get overtaken by the as yet incomplete temporary profiles feature |
388 | /// (as tested in the a later commented out test) | 366 | /// (as tested in the a later commented out test) |
389 | /// REFACTORING PROBLEM. Needs rewrite. | 367 | /// This test is currently disabled |
390 | // [Test] | 368 | [Test] |
391 | // public void TestLoadIarV0_1AbsentUsers() | 369 | public void TestLoadIarV0_1AbsentUsers() |
392 | // { | 370 | { |
393 | // TestHelper.InMethod(); | 371 | TestHelper.InMethod(); |
394 | 372 | //log4net.Config.XmlConfigurator.Configure(); | |
395 | // //log4net.Config.XmlConfigurator.Configure(); | 373 | |
396 | 374 | string userFirstName = "Charlie"; | |
397 | // string userFirstName = "Charlie"; | 375 | string userLastName = "Chan"; |
398 | // string userLastName = "Chan"; | 376 | UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); |
399 | // UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); | 377 | string userItemCreatorFirstName = "Bat"; |
400 | // string userItemCreatorFirstName = "Bat"; | 378 | string userItemCreatorLastName = "Man"; |
401 | // string userItemCreatorLastName = "Man"; | 379 | //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); |
402 | // //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); | 380 | |
403 | 381 | string itemName = "b.lsl"; | |
404 | // string itemName = "b.lsl"; | 382 | string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); |
405 | // string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); | 383 | |
406 | 384 | MemoryStream archiveWriteStream = new MemoryStream(); | |
407 | // MemoryStream archiveWriteStream = new MemoryStream(); | 385 | TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); |
408 | // TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | 386 | |
409 | 387 | InventoryItemBase item1 = new InventoryItemBase(); | |
410 | // InventoryItemBase item1 = new InventoryItemBase(); | 388 | item1.Name = itemName; |
411 | // item1.Name = itemName; | 389 | item1.AssetID = UUID.Random(); |
412 | // item1.AssetID = UUID.Random(); | 390 | item1.GroupID = UUID.Random(); |
413 | // item1.GroupID = UUID.Random(); | 391 | item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); |
414 | // item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); | 392 | //item1.CreatorId = userUuid.ToString(); |
415 | // //item1.CreatorId = userUuid.ToString(); | 393 | //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; |
416 | // //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; | 394 | item1.Owner = UUID.Zero; |
417 | // item1.Owner = UUID.Zero; | 395 | |
418 | 396 | string item1FileName | |
419 | // string item1FileName | 397 | = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); |
420 | // = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | 398 | tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); |
421 | // tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); | 399 | tar.Close(); |
422 | // tar.Close(); | 400 | |
423 | 401 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | |
424 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | 402 | SerialiserModule serialiserModule = new SerialiserModule(); |
425 | // SerialiserModule serialiserModule = new SerialiserModule(); | 403 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); |
426 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 404 | |
427 | 405 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | |
428 | // // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | 406 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); |
429 | // Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 407 | |
430 | // IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | 408 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
431 | 409 | UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userUuid, "meowfood"); | |
432 | // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 410 | |
433 | // userAdminService.AddUser( | 411 | archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); |
434 | // userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | 412 | |
435 | 413 | InventoryItemBase foundItem1 | |
436 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); | 414 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, itemName); |
437 | 415 | ||
438 | // CachedUserInfo userInfo | 416 | Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); |
439 | // = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | ||
440 | |||
441 | // InventoryItemBase foundItem1 | ||
442 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, itemName); | ||
443 | |||
444 | // Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | ||
445 | //// Assert.That( | ||
446 | //// foundItem1.CreatorId, Is.EqualTo(userUuid), | ||
447 | //// "Loaded item non-uuid creator doesn't match that of the loading user"); | ||
448 | // Assert.That( | 417 | // Assert.That( |
449 | // foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), | 418 | // foundItem1.CreatorId, Is.EqualTo(userUuid), |
450 | // "Loaded item uuid creator doesn't match that of the loading user"); | 419 | // "Loaded item non-uuid creator doesn't match that of the loading user"); |
451 | // } | 420 | Assert.That( |
421 | foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), | ||
422 | "Loaded item uuid creator doesn't match that of the loading user"); | ||
423 | } | ||
452 | 424 | ||
453 | /// <summary> | 425 | /// <summary> |
454 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where | 426 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where |
455 | /// no account exists with the creator name | 427 | /// no account exists with the creator name |
456 | /// </summary> | 428 | /// </summary> |
457 | /// Disabled since temporary profiles have not yet been implemented. | 429 | /// Disabled since temporary profiles have not yet been implemented. |
458 | /// REFACTORING PROBLEM. Needs rewrite. | ||
459 | /// | 430 | /// |
460 | //[Test] | 431 | //[Test] |
461 | //public void TestLoadIarV0_1TempProfiles() | 432 | //public void TestLoadIarV0_1TempProfiles() |
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 | |||
44 | 44 | ||
45 | public UserAccountCache() | 45 | public UserAccountCache() |
46 | { | 46 | { |
47 | // Warning: the size values are a bit fuzzy. What matters | ||
48 | // most for this cache is the count value (128 entries). | ||
49 | m_UUIDCache = new ExpiringCache<UUID, UserAccount>(); | 47 | m_UUIDCache = new ExpiringCache<UUID, UserAccount>(); |
50 | m_NameCache = new ExpiringCache<string, UUID>(); // this one is unbound | 48 | m_NameCache = new ExpiringCache<string, UUID>(); |
51 | } | 49 | } |
52 | 50 | ||
53 | public void Cache(UUID userID, UserAccount account) | 51 | public void Cache(UUID userID, UserAccount account) |
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 | |||
69 | SerialiserModule serialiserModule = new SerialiserModule(); | 69 | SerialiserModule serialiserModule = new SerialiserModule(); |
70 | TerrainModule terrainModule = new TerrainModule(); | 70 | TerrainModule terrainModule = new TerrainModule(); |
71 | 71 | ||
72 | m_scene = SceneSetupHelpers.SetupScene("useraccounts"); | 72 | m_scene = SceneSetupHelpers.SetupScene(); |
73 | SceneSetupHelpers.SetupSceneModules(m_scene, m_archiverModule, serialiserModule, terrainModule); | 73 | SceneSetupHelpers.SetupSceneModules(m_scene, m_archiverModule, serialiserModule, terrainModule); |
74 | } | 74 | } |
75 | 75 | ||