From d4ed7b03af5079d1ec9837de1aa8ca7becc300c9 Mon Sep 17 00:00:00 2001
From: Arthur Valadares
Date: Thu, 11 Jun 2009 20:50:23 +0000
Subject: * Fixed a few more async calls. Still not uncommented, some asserts
 still failing

---
 .../Archiver/InventoryArchiveReadRequest.cs        |  7 +++++
 .../Archiver/Tests/InventoryArchiverTests.cs       | 36 ++++++++++++++++++++--
 2 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index 694b887..13b1f5a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -30,6 +30,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.IO.Compression;
 using System.Reflection;
+using System.Threading;
 using System.Text;
 using System.Xml;
 using log4net;
@@ -116,6 +117,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
                 else
                 {
                     m_userInfo.FetchInventory();
+                    for (int i = 0 ; i < 50 ; i++)
+                    {
+                        if (m_userInfo.HasReceivedInventory == true)
+                            break;
+                        Thread.Sleep(200);
+                    }
                 }
             }
 
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index 1e300f5..dd524f5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -85,7 +85,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
             cm.UserAdminService.AddUser(userFirstName, userLastName, string.Empty, string.Empty, 1000, 1000, userId);
             CachedUserInfo userInfo = cm.UserProfileCacheService.GetUserDetails(userId);
             userInfo.FetchInventory();
-            while (!userInfo.HasReceivedInventory){ };
+            for (int i = 0 ; i < 50 ; i++)
+            {
+                if (userInfo.HasReceivedInventory == true)
+                    break;
+                Thread.Sleep(200);
+            }
+            Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
 
             // Create asset
             SceneObjectGroup object1;
@@ -248,9 +254,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
             archiverModule.DearchiveInventory(userFirstName, userLastName, "/", archiveReadStream);
 
             CachedUserInfo userInfo 
-                = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName);            
+                = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName);
+            userInfo.FetchInventory();
+            for (int i = 0 ; i < 50 ; i++)
+            {
+                if (userInfo.HasReceivedInventory == true)
+                    break;
+                Thread.Sleep(200);
+            }
+            Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
             InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName);
-            
+            Assert.That(foundItem, Is.Not.Null);
             Assert.That(foundItem.CreatorId, Is.EqualTo(item1.CreatorId));
             Assert.That(foundItem.CreatorIdAsUuid, Is.EqualTo(user2Uuid));
             Assert.That(foundItem.Owner, Is.EqualTo(userUuid));            
@@ -318,6 +332,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
             
             CachedUserInfo userInfo 
                 = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName);            
+            userInfo.FetchInventory();
+            for (int i = 0 ; i < 50 ; i++)
+            {
+                if (userInfo.HasReceivedInventory == true)
+                    break;
+                Thread.Sleep(200);
+            }
+            Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
             InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName);
             
             Assert.That(foundItem.CreatorId, Is.EqualTo(item1.CreatorId));
@@ -339,6 +361,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
             CommunicationsManager commsManager = scene.CommsManager;
 
             CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(commsManager);
+            userInfo.FetchInventory();
+            for (int i = 0 ; i < 50 ; i++)
+            {
+                if (userInfo.HasReceivedInventory == true)
+                    break;
+                Thread.Sleep(200);
+            }
+            Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
             Dictionary <string, InventoryFolderImpl> foldersCreated = new Dictionary<string, InventoryFolderImpl>();
             List<InventoryNodeBase> nodesLoaded = new List<InventoryNodeBase>();
             
-- 
cgit v1.1