From d0744f8eca6adc2b6ae257f581792bd8eae16ea2 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Tue, 14 Apr 2009 18:49:45 +0000
Subject: * Make archiver tests pump the asset server manually instead of
 starting the normal runtime thread * This may eliminate the occasional
 archive test freezes, since they appeared to occur when somehow the asset
 server didn't pick up on the presence of a request in the asset quque

---
 .../Tests/Common/Mock/TestCommunicationsManager.cs | 11 +++++--
 OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs    | 38 ++++++++++++++++++++--
 2 files changed, 45 insertions(+), 4 deletions(-)

(limited to 'OpenSim/Tests')

diff --git a/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs b/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
index 3b39d36..93891c0 100644
--- a/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
+++ b/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
@@ -60,8 +60,7 @@ namespace OpenSim.Tests.Common.Mock
             m_inventoryDataPlugin = new TestInventoryDataPlugin();
 
             SQLAssetServer assetService = new SQLAssetServer(new TestAssetDataPlugin());  
-            m_assetCache = new AssetCache(assetService);
-            m_assetCache.AssetServer.Start();
+            m_assetCache = new AssetCache(assetService);            
             
             LocalInventoryService lis = new LocalInventoryService();
             lis.AddPlugin(m_inventoryDataPlugin);
@@ -76,5 +75,13 @@ namespace OpenSim.Tests.Common.Mock
             LocalBackEndServices gs = new LocalBackEndServices();
             m_gridService = gs;
         }
+        
+        /// <summary>
+        /// Start services that take care of business using their own threads.
+        /// </summary>
+        public void StartServices()
+        {
+            m_assetCache.AssetServer.Start();            
+        }
     }
 }
diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
index 3bcd949..ea4f0af 100644
--- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
+++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
@@ -52,10 +52,39 @@ namespace OpenSim.Tests.Common.Setup
         /// <summary>
         /// Set up a test scene
         /// </summary>
+        /// 
+        /// Automatically starts service threads, as would the normal runtime.
+        /// 
         /// <returns></returns>
         public static TestScene SetupScene()
         {
-            return SetupScene("Unit test region", UUID.Random(), 1000, 1000, new TestCommunicationsManager());
+            return SetupScene(true);
+        }
+        
+        /// <summary>
+        /// Set up a test scene
+        /// </summary>
+        /// 
+        /// <param name="startServices">Start associated service threads for the scene</param>
+        /// <returns></returns>
+        public static TestScene SetupScene(bool startServices)
+        {
+            return SetupScene(
+                "Unit test region", UUID.Random(), 1000, 1000, new TestCommunicationsManager(), startServices);
+        }
+        
+        /// <summary>
+        /// Set up a test scene
+        /// </summary>
+        /// <param name="name">Name of the region</param>
+        /// <param name="id">ID of the region</param>
+        /// <param name="x">X co-ordinate of the region</param>
+        /// <param name="y">Y co-ordinate of the region</param>
+        /// <param name="cm">This should be the same if simulating two scenes within a standalone</param>
+        /// <returns></returns>
+        public static TestScene SetupScene(string name, UUID id, uint x, uint y, TestCommunicationsManager cm)
+        {
+            return SetupScene(name, id, x, y, cm, true);
         }
 
         /// <summary>
@@ -66,8 +95,10 @@ namespace OpenSim.Tests.Common.Setup
         /// <param name="x">X co-ordinate of the region</param>
         /// <param name="y">Y co-ordinate of the region</param>
         /// <param name="cm">This should be the same if simulating two scenes within a standalone</param>
+        /// <param name="startServices">Start associated threads for the services used by the scene</param>
         /// <returns></returns>
-        public static TestScene SetupScene(string name, UUID id, uint x, uint y, CommunicationsManager cm)
+        public static TestScene SetupScene(
+            string name, UUID id, uint x, uint y, TestCommunicationsManager cm, bool startServices)
         {
             Console.WriteLine("Setting up test scene {0}", name);
             
@@ -102,6 +133,9 @@ namespace OpenSim.Tests.Common.Setup
             testScene.PhysicsScene
                 = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", configSource, "test");
 
+            if (startServices)
+                cm.StartServices();
+            
             return testScene;
         }
 
-- 
cgit v1.1