Add basic flotsam asset cache test for retrieved cached asset.
Disabled temporarily since file system caching disrupts subsequent test runsbulletsim
							parent
							
								
									b8e7258051
								
							
						
					
					
						commit
						46f5893d55
					
				| 
						 | 
				
			
			@ -273,6 +273,7 @@ namespace OpenSim.Framework
 | 
			
		|||
 | 
			
		||||
                return m_id;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                UUID uuid = UUID.Zero;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -259,6 +259,8 @@ namespace Flotsam.RegionModules.AssetCache
 | 
			
		|||
            // TODO: Spawn this off to some seperate thread to do the actual writing
 | 
			
		||||
            if (asset != null)
 | 
			
		||||
            {
 | 
			
		||||
                m_log.DebugFormat("[FLOTSAM ASSET CACHE]: Caching asset with id {0}", asset.ID);
 | 
			
		||||
 | 
			
		||||
                UpdateMemoryCache(asset.ID, asset);
 | 
			
		||||
 | 
			
		||||
                string filename = GetFileName(asset.ID);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,82 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) Contributors, http://opensimulator.org/
 | 
			
		||||
 * See CONTRIBUTORS.TXT for a full list of copyright holders.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions are met:
 | 
			
		||||
 *     * Redistributions of source code must retain the above copyright
 | 
			
		||||
 *       notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 *     * Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *       notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *       documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *     * Neither the name of the OpenSimulator Project nor the
 | 
			
		||||
 *       names of its contributors may be used to endorse or promote products
 | 
			
		||||
 *       derived from this software without specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
 | 
			
		||||
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | 
			
		||||
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
			
		||||
 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
 | 
			
		||||
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | 
			
		||||
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
			
		||||
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | 
			
		||||
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
			
		||||
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | 
			
		||||
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using log4net.Config;
 | 
			
		||||
using Nini.Config;
 | 
			
		||||
using NUnit.Framework;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenMetaverse.Assets;
 | 
			
		||||
using Flotsam.RegionModules.AssetCache;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Region.Framework.Scenes;
 | 
			
		||||
using OpenSim.Region.Framework.Scenes.Serialization;
 | 
			
		||||
using OpenSim.Tests.Common;
 | 
			
		||||
using OpenSim.Tests.Common.Mock;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Region.CoreModules.Asset.Tests
 | 
			
		||||
{
 | 
			
		||||
    [TestFixture]
 | 
			
		||||
    public class FlotsamAssetCacheTests
 | 
			
		||||
    {
 | 
			
		||||
//        [Test]
 | 
			
		||||
        public void TestCacheAsset()
 | 
			
		||||
        {
 | 
			
		||||
            TestHelper.InMethod();
 | 
			
		||||
            log4net.Config.XmlConfigurator.Configure();
 | 
			
		||||
 | 
			
		||||
            IConfigSource config = new IniConfigSource();
 | 
			
		||||
            
 | 
			
		||||
            config.AddConfig("Modules");            
 | 
			
		||||
            config.Configs["Modules"].Set("AssetCaching", "FlotsamAssetCache");
 | 
			
		||||
            config.AddConfig("AssetCache");
 | 
			
		||||
            config.Configs["AssetCache"].Set("MemoryCacheEnabled", "true");
 | 
			
		||||
 | 
			
		||||
            FlotsamAssetCache cache = new FlotsamAssetCache();
 | 
			
		||||
            TestScene scene = SceneSetupHelpers.SetupScene();
 | 
			
		||||
            SceneSetupHelpers.SetupSceneModules(scene, config, cache);
 | 
			
		||||
 | 
			
		||||
            AssetBase asset = AssetHelpers.CreateAsset();
 | 
			
		||||
            asset.ID = TestHelper.ParseTail(0x1).ToString();
 | 
			
		||||
 | 
			
		||||
            // Check we don't get anything before the asset is put in the cache
 | 
			
		||||
            AssetBase retrievedAsset = cache.Get(asset.ID.ToString());
 | 
			
		||||
            Assert.That(retrievedAsset, Is.Null);
 | 
			
		||||
 | 
			
		||||
            cache.Store(asset);
 | 
			
		||||
 | 
			
		||||
            // Check that asset is now in cache
 | 
			
		||||
            retrievedAsset = cache.Get(asset.ID.ToString());
 | 
			
		||||
            Assert.That(retrievedAsset, Is.Not.Null);
 | 
			
		||||
            Assert.That(retrievedAsset.ID, Is.EqualTo(asset.ID));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +36,15 @@ namespace OpenSim.Tests.Common
 | 
			
		|||
{
 | 
			
		||||
    public class AssetHelpers
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Create a notecard asset with a random uuids and dummy text.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public static AssetBase CreateAsset()
 | 
			
		||||
        {
 | 
			
		||||
            return CreateAsset(UUID.Random(), AssetType.Notecard, "hello", UUID.Random());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Create a notecard asset with a random uuid and dummy text.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using NUnit.Framework;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Tests.Common
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -56,5 +57,15 @@ namespace OpenSim.Tests.Common
 | 
			
		|||
            Console.WriteLine();
 | 
			
		||||
            Console.WriteLine("===> In Test Method : {0} <===", stackTrace.GetFrame(1).GetMethod().Name);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Parse tail section into full UUID.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="tail"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public static UUID ParseTail(int tail)
 | 
			
		||||
        {
 | 
			
		||||
            return new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", tail));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2953,6 +2953,7 @@
 | 
			
		|||
      <Files>
 | 
			
		||||
        <!-- SADLY the way this works means you need to keep adding these paths -->
 | 
			
		||||
        <Match path="Agent/TextureSender/Tests" pattern="*.cs" recurse="true"/>
 | 
			
		||||
        <Match path="Asset/Tests" pattern="*.cs" recurse="true"/>
 | 
			
		||||
        <Match path="Avatar/Inventory/Archiver/Tests" pattern="*.cs" recurse="true"/>
 | 
			
		||||
        <Match path="Framework/InventoryAccess/Tests" pattern="*.cs" recurse="true"/>
 | 
			
		||||
        <Match path="World/Archiver/Tests" pattern="*.cs" recurse="true"/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue