aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs31
-rw-r--r--OpenSim/Region/Framework/Scenes/UuidGatherer.cs4
-rw-r--r--OpenSim/Tests/Common/Mock/TestAssetService.cs8
3 files changed, 38 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
index cf2b3b3..52891f4 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
@@ -26,10 +26,13 @@
26 */ 26 */
27 27
28using System.Collections.Generic; 28using System.Collections.Generic;
29using System.Text;
29using NUnit.Framework; 30using NUnit.Framework;
30using NUnit.Framework.SyntaxHelpers; 31using NUnit.Framework.SyntaxHelpers;
31using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework;
32using OpenSim.Region.Framework.Scenes; 34using OpenSim.Region.Framework.Scenes;
35using OpenSim.Services.Interfaces;
33using OpenSim.Tests.Common; 36using OpenSim.Tests.Common;
34using OpenSim.Tests.Common.Mock; 37using OpenSim.Tests.Common.Mock;
35 38
@@ -38,16 +41,36 @@ namespace OpenSim.Region.Framework.Scenes.Tests
38 [TestFixture] 41 [TestFixture]
39 public class UuidGathererTests 42 public class UuidGathererTests
40 { 43 {
41 protected UuidGatherer m_ug; 44 protected IAssetService m_assetService;
45 protected UuidGatherer m_uuidGatherer;
42 46
43 [SetUp] 47 [SetUp]
44 public void Init() 48 public void Init()
45 { 49 {
46 m_ug = new UuidGatherer(new TestAssetService()); 50 m_assetService = new TestAssetService();
51 m_uuidGatherer = new UuidGatherer(m_assetService);
52 }
53
54 [Test]
55 public void TestCorruptAsset()
56 {
57 TestHelper.InMethod();
58
59 UUID corruptAssetUuid = UUID.Parse("00000000-0000-0000-0000-000000000666");
60 AssetBase corruptAsset = new AssetBase(corruptAssetUuid, corruptAssetUuid.ToString(), (sbyte)AssetType.Object);
61 corruptAsset.Data = Encoding.ASCII.GetBytes("CORRUPT ASSET");
62
63 m_assetService.Store(corruptAsset);
64
65 IDictionary<UUID, int> foundAssetUuids = new Dictionary<UUID, int>();
66 m_uuidGatherer.GatherAssetUuids(corruptAssetUuid, AssetType.Object, foundAssetUuids);
67
68 // We count the uuid as gathered even if the asset itself is corrupt.
69 Assert.That(foundAssetUuids.Count, Is.EqualTo(1));
47 } 70 }
48 71
49 /// <summary> 72 /// <summary>
50 /// Test requests made for non-existent assets 73 /// Test requests made for non-existent assets while we're gathering
51 /// </summary> 74 /// </summary>
52 [Test] 75 [Test]
53 public void TestMissingAsset() 76 public void TestMissingAsset()
@@ -57,7 +80,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
57 UUID missingAssetUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); 80 UUID missingAssetUuid = UUID.Parse("00000000-0000-0000-0000-000000000666");
58 IDictionary<UUID, int> foundAssetUuids = new Dictionary<UUID, int>(); 81 IDictionary<UUID, int> foundAssetUuids = new Dictionary<UUID, int>();
59 82
60 m_ug.GatherAssetUuids(missingAssetUuid, AssetType.Object, foundAssetUuids); 83 m_uuidGatherer.GatherAssetUuids(missingAssetUuid, AssetType.Object, foundAssetUuids);
61 84
62 // We count the uuid as gathered even if the asset itself is missing. 85 // We count the uuid as gathered even if the asset itself is missing.
63 Assert.That(foundAssetUuids.Count, Is.EqualTo(1)); 86 Assert.That(foundAssetUuids.Count, Is.EqualTo(1));
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
index 525a93a..930af81 100644
--- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
+++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
@@ -273,7 +273,9 @@ namespace OpenSim.Region.Framework.Scenes
273 { 273 {
274 string xml = Utils.BytesToString(objectAsset.Data); 274 string xml = Utils.BytesToString(objectAsset.Data);
275 SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml); 275 SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml);
276 GatherAssetUuids(sog, assetUuids); 276
277 if (null != sog)
278 GatherAssetUuids(sog, assetUuids);
277 } 279 }
278 } 280 }
279 } 281 }
diff --git a/OpenSim/Tests/Common/Mock/TestAssetService.cs b/OpenSim/Tests/Common/Mock/TestAssetService.cs
index ff75d86..a537b97 100644
--- a/OpenSim/Tests/Common/Mock/TestAssetService.cs
+++ b/OpenSim/Tests/Common/Mock/TestAssetService.cs
@@ -27,6 +27,8 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection;
31using log4net;
30using OpenMetaverse; 32using OpenMetaverse;
31using OpenSim.Framework; 33using OpenSim.Framework;
32using OpenSim.Data; 34using OpenSim.Data;
@@ -37,6 +39,8 @@ namespace OpenSim.Tests.Common.Mock
37{ 39{
38 public class TestAssetService : IAssetService 40 public class TestAssetService : IAssetService
39 { 41 {
42 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
43
40 private readonly Dictionary<string, AssetBase> Assets = new Dictionary<string, AssetBase>(); 44 private readonly Dictionary<string, AssetBase> Assets = new Dictionary<string, AssetBase>();
41 45
42 public TestAssetService() {} 46 public TestAssetService() {}
@@ -50,6 +54,8 @@ namespace OpenSim.Tests.Common.Mock
50 54
51 public AssetBase Get(string id) 55 public AssetBase Get(string id)
52 { 56 {
57 m_log.DebugFormat("[MOCK ASSET SERVICE]: Getting asset with id {0}", id);
58
53 AssetBase asset; 59 AssetBase asset;
54 if (Assets.ContainsKey(id)) 60 if (Assets.ContainsKey(id))
55 asset = Assets[id]; 61 asset = Assets[id];
@@ -78,6 +84,8 @@ namespace OpenSim.Tests.Common.Mock
78 84
79 public string Store(AssetBase asset) 85 public string Store(AssetBase asset)
80 { 86 {
87 m_log.DebugFormat("[MOCK ASSET SERVICE]: Storing asset {0}", asset.ID);
88
81 Assets[asset.ID] = asset; 89 Assets[asset.ID] = asset;
82 90
83 return asset.ID; 91 return asset.ID;