diff --git a/OpenSim/Framework/AssetBase.cs b/OpenSim/Framework/AssetBase.cs
index 5f68cdaabf..e8c85c9f0c 100644
--- a/OpenSim/Framework/AssetBase.cs
+++ b/OpenSim/Framework/AssetBase.cs
@@ -273,6 +273,7 @@ namespace OpenSim.Framework
return m_id;
}
+
set
{
UUID uuid = UUID.Zero;
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index 48ee277ae9..a8f5c99ae7 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -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);
diff --git a/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs b/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs
new file mode 100644
index 0000000000..3498969828
--- /dev/null
+++ b/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs
@@ -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));
+ }
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Tests/Common/Helpers/AssetHelpers.cs b/OpenSim/Tests/Common/Helpers/AssetHelpers.cs
index aa55bcdc69..9b68331038 100644
--- a/OpenSim/Tests/Common/Helpers/AssetHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/AssetHelpers.cs
@@ -36,6 +36,15 @@ namespace OpenSim.Tests.Common
{
public class AssetHelpers
{
+ ///
+ /// Create a notecard asset with a random uuids and dummy text.
+ ///
+ ///
+ public static AssetBase CreateAsset()
+ {
+ return CreateAsset(UUID.Random(), AssetType.Notecard, "hello", UUID.Random());
+ }
+
///
/// Create a notecard asset with a random uuid and dummy text.
///
diff --git a/OpenSim/Tests/Common/TestHelper.cs b/OpenSim/Tests/Common/TestHelper.cs
index 1722e59864..86bd10766b 100644
--- a/OpenSim/Tests/Common/TestHelper.cs
+++ b/OpenSim/Tests/Common/TestHelper.cs
@@ -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);
}
+
+ ///
+ /// Parse tail section into full UUID.
+ ///
+ ///
+ ///
+ public static UUID ParseTail(int tail)
+ {
+ return new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", tail));
+ }
}
}
diff --git a/prebuild.xml b/prebuild.xml
index aebd1d66f8..8536a4898a 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -2953,6 +2953,7 @@
+