diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs index 33489d18c3..f55baa83cf 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs @@ -54,7 +54,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly // to the AssetService, which will then store temporary and local assets permanently - CoreAssetCache assetCache = new CoreAssetCache(); + TestsAssetCache assetCache = new TestsAssetCache(); AvatarFactoryModule afm = new AvatarFactoryModule(); TestScene scene = new SceneHelpers(assetCache).SetupScene(); @@ -112,7 +112,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly // to the AssetService, which will then store temporary and local assets permanently - CoreAssetCache assetCache = new CoreAssetCache(); + TestsAssetCache assetCache = new TestsAssetCache(); AvatarFactoryModule afm = new AvatarFactoryModule(); TestScene scene = new SceneHelpers(assetCache).SetupScene(); @@ -157,7 +157,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly // to the AssetService, which will then store temporary and local assets permanently - CoreAssetCache assetCache = new CoreAssetCache(); + TestsAssetCache assetCache = new TestsAssetCache(); AvatarFactoryModule afm = new AvatarFactoryModule(); TestScene scene = new SceneHelpers(assetCache).SetupScene(); diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs index e45c49041d..48a385c9e3 100644 --- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs +++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs @@ -34,14 +34,10 @@ using OpenSim.Data.Null; using OpenSim.Framework; using OpenSim.Framework.Console; -using OpenSim.Framework.Servers; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.PhysicsModules.SharedBase; -using OpenSim.Region.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.CoreModules.Avatar.Gods; -using OpenSim.Region.CoreModules.Asset; using OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset; using OpenSim.Region.CoreModules.ServiceConnectorsOut.Authentication; using OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory; @@ -50,7 +46,6 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts; using OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence; using OpenSim.Region.PhysicsModule.BasicPhysics; using OpenSim.Services.Interfaces; -using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Tests.Common { @@ -76,13 +71,13 @@ namespace OpenSim.Tests.Common private LocalUserAccountServicesConnector m_userAccountService; private LocalPresenceServicesConnector m_presenceService; - private CoreAssetCache m_cache; + private TestsAssetCache m_cache; private PhysicsScene m_physicsScene; public SceneHelpers() : this(null) {} - public SceneHelpers(CoreAssetCache cache) + public SceneHelpers(TestsAssetCache cache) { SceneManager = new SceneManager(); @@ -202,7 +197,6 @@ namespace OpenSim.Tests.Common m_presenceService.RegionLoaded(testScene); testScene.AddRegionModule(m_presenceService.Name, m_presenceService); - testScene.SetModuleInterfaces(); testScene.LandChannel = new TestLandChannel(testScene); @@ -216,7 +210,7 @@ namespace OpenSim.Tests.Common return testScene; } - private static LocalAssetServicesConnector StartAssetService(CoreAssetCache cache) + private static LocalAssetServicesConnector StartAssetService(TestsAssetCache cache) { IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); @@ -232,7 +226,7 @@ namespace OpenSim.Tests.Common { IConfigSource cacheConfig = new IniConfigSource(); cacheConfig.AddConfig("Modules"); - cacheConfig.Configs["Modules"].Set("AssetCaching", "CoreAssetCache"); + cacheConfig.Configs["Modules"].Set("AssetCaching", "TestsAssetCache"); cacheConfig.AddConfig("AssetCache"); cache.Initialise(cacheConfig); diff --git a/OpenSim/Tests/Common/TestsAssetCache.cs b/OpenSim/Tests/Common/TestsAssetCache.cs new file mode 100644 index 0000000000..12f2752930 --- /dev/null +++ b/OpenSim/Tests/Common/TestsAssetCache.cs @@ -0,0 +1,131 @@ +/* + * 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 log4net; +using System; +using System.Reflection; +using System.Runtime.Caching; +using Nini.Config; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Tests.Common +{ + public class TestsAssetCache : ISharedRegionModule, IAssetCache + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private bool m_Enabled; + private MemoryCache m_Cache; + + public string Name + { + get { return "TestsAssetCache"; } + } + + public Type ReplaceableInterface + { + get { return null; } + } + + public void Initialise(IConfigSource source) + { + m_Cache = MemoryCache.Default; + m_Enabled = true; + } + + public void PostInitialise() + { + } + + public void Close() + { + } + + public void AddRegion(Scene scene) + { + if (m_Enabled) + scene.RegisterModuleInterface(this); + } + + public void RemoveRegion(Scene scene) + { + } + + public void RegionLoaded(Scene scene) + { + } + + //////////////////////////////////////////////////////////// + // IAssetCache + // + public bool Check(string id) + { + // XXX This is probably not an efficient implementation. + AssetBase asset; + if (!Get(id, out asset)) + return false; + return asset != null; + } + + public void Cache(AssetBase asset, bool replace = true) + { + if (asset != null) + { + CacheItemPolicy policy = new CacheItemPolicy(); + m_Cache.Set(asset.ID, asset, policy); + } + } + + public void CacheNegative(string id) + { + // We don't do negative caching + } + + public bool Get(string id, out AssetBase asset) + { + asset = (AssetBase)m_Cache.Get(id); + return true; + } + + public void Expire(string id) + { + m_Cache.Remove(id); + } + + public void Clear() + { + } + /* + public bool UpdateContent(string id, byte[] data) + { + return false; + } + */ + } +} diff --git a/prebuild.xml b/prebuild.xml index 62fb4ccd4f..6915422f6a 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2690,6 +2690,7 @@ + diff --git a/prebuild48.xml b/prebuild48.xml index 68d4440f37..e05ed99437 100644 --- a/prebuild48.xml +++ b/prebuild48.xml @@ -2690,6 +2690,7 @@ +