When inspecting a script or notecard, also try to look up any assets embedded therein.

This is primarily to fix an issue where inventory items for NPC attachments would not be saved in archives as the assets referenced in the appearance notecard were not checked in this manner.
Relates to http://opensimulator.org/mantis/view.php?id=7376
sedebug
Justin Clark-Casey (justincc) 2015-01-08 20:36:03 +00:00
parent 08606ae409
commit 801a86ca03
2 changed files with 11 additions and 5 deletions

View File

@ -88,11 +88,12 @@ namespace OpenSim.Region.Framework.Scenes.Tests
public void TestNotecardAsset() public void TestNotecardAsset()
{ {
TestHelpers.InMethod(); TestHelpers.InMethod();
TestHelpers.EnableLogging(); // TestHelpers.EnableLogging();
UUID ownerId = TestHelpers.ParseTail(0x10); UUID ownerId = TestHelpers.ParseTail(0x10);
UUID embeddedId = TestHelpers.ParseTail(0x20); UUID embeddedId = TestHelpers.ParseTail(0x20);
UUID missingEmbeddedId = TestHelpers.ParseTail(0x21); UUID secondLevelEmbeddedId = TestHelpers.ParseTail(0x21);
UUID missingEmbeddedId = TestHelpers.ParseTail(0x22);
UUID ncAssetId = TestHelpers.ParseTail(0x30); UUID ncAssetId = TestHelpers.ParseTail(0x30);
AssetBase ncAsset AssetBase ncAsset
@ -100,9 +101,14 @@ namespace OpenSim.Region.Framework.Scenes.Tests
ncAssetId, string.Format("Hello{0}World{1}", embeddedId, missingEmbeddedId)); ncAssetId, string.Format("Hello{0}World{1}", embeddedId, missingEmbeddedId));
m_assetService.Store(ncAsset); m_assetService.Store(ncAsset);
AssetBase embeddedAsset = AssetHelpers.CreateNotecardAsset(embeddedId, "We'll meet again."); AssetBase embeddedAsset
= AssetHelpers.CreateNotecardAsset(embeddedId, string.Format("{0} We'll meet again.", secondLevelEmbeddedId));
m_assetService.Store(embeddedAsset); m_assetService.Store(embeddedAsset);
AssetBase secondLevelEmbeddedAsset
= AssetHelpers.CreateNotecardAsset(secondLevelEmbeddedId, "Don't know where, don't know when.");
m_assetService.Store(secondLevelEmbeddedAsset);
m_uuidGatherer.AddForInspection(ncAssetId); m_uuidGatherer.AddForInspection(ncAssetId);
m_uuidGatherer.GatherAll(); m_uuidGatherer.GatherAll();
@ -112,7 +118,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
Assert.That(m_uuidGatherer.GatheredUuids.Count, Is.EqualTo(3)); Assert.That(m_uuidGatherer.GatheredUuids.Count, Is.EqualTo(3));
Assert.That(m_uuidGatherer.GatheredUuids.ContainsKey(ncAssetId)); Assert.That(m_uuidGatherer.GatheredUuids.ContainsKey(ncAssetId));
Assert.That(m_uuidGatherer.GatheredUuids.ContainsKey(embeddedId)); Assert.That(m_uuidGatherer.GatheredUuids.ContainsKey(embeddedId));
Assert.That(m_uuidGatherer.GatheredUuids.ContainsKey(missingEmbeddedId)); Assert.That(m_uuidGatherer.GatheredUuids.ContainsKey(secondLevelEmbeddedId));
} }
} }
} }

View File

@ -451,7 +451,7 @@ namespace OpenSim.Region.Framework.Scenes
UUID uuid = new UUID(uuidMatch.Value); UUID uuid = new UUID(uuidMatch.Value);
// m_log.DebugFormat("[UUID GATHERER]: Recording {0} in text", uuid); // m_log.DebugFormat("[UUID GATHERER]: Recording {0} in text", uuid);
GatheredUuids[uuid] = (sbyte)AssetType.Unknown; AddForInspection(uuid);
} }
} }