From e55f6d47e91556b7778744877eb7bbdb949d3dba Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 6 Sep 2010 23:28:52 +0100
Subject: Add test that checks correct persistence when an unlink is quickly
followed by deletion of a linked part
This test is temporarily not running since it currently fails due to a bug in this area
---
.../Scenes/Tests/SceneObjectLinkingTests.cs | 49 ++++++++++++++++++----
1 file changed, 40 insertions(+), 9 deletions(-)
(limited to 'OpenSim')
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
index bddb285..93409fa 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
@@ -268,7 +268,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
public void TestNewSceneObjectLinkPersistence()
{
TestHelper.InMethod();
- log4net.Config.XmlConfigurator.Configure();
+ //log4net.Config.XmlConfigurator.Configure();
TestScene scene = SceneSetupHelpers.SetupScene();
@@ -301,14 +301,45 @@ namespace OpenSim.Region.Framework.Scenes.Tests
}
///
- /// Test that a delink is correctly persisted to the database
+ /// Test that a delink of a previously linked object is correctly persisted to the database
///
-// [Test]
-// public void TestDelinkPersistence()
-// {
-// TestHelper.InMethod();
-//
-// Scene scene = SceneSetupHelpers.SetupScene();
-// }
+ //[Test]
+ public void TestDelinkPersistence()
+ {
+ TestHelper.InMethod();
+ //log4net.Config.XmlConfigurator.Configure();
+
+ TestScene scene = SceneSetupHelpers.SetupScene();
+
+ string rootPartName = "rootpart";
+ UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001");
+ string linkPartName = "linkpart";
+ UUID linkPartUuid = new UUID("00000000-0000-0000-0001-000000000000");
+
+ SceneObjectPart rootPart
+ = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
+ { Name = rootPartName, UUID = rootPartUuid };
+ SceneObjectPart linkPart
+ = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
+ { Name = linkPartName, UUID = linkPartUuid };
+
+ SceneObjectGroup sog = new SceneObjectGroup(rootPart);
+ sog.AddPart(linkPart);
+ scene.AddNewSceneObject(sog, true);
+
+ // In a test, we have to crank the backup handle manually. Normally this would be done by the timer invoked
+ // scene backup thread.
+ scene.Backup(true);
+
+ // These changes should occur immediately without waiting for a backup pass
+ SceneObjectGroup groupToDelete = sog.DelinkFromGroup(linkPart, false);
+ scene.DeleteSceneObject(groupToDelete, false);
+
+ List storedObjects = scene.StorageManager.DataStore.LoadObjects(scene.RegionInfo.RegionID);
+
+ Assert.That(storedObjects.Count, Is.EqualTo(1));
+ Assert.That(storedObjects[0].Children.Count, Is.EqualTo(1));
+ Assert.That(storedObjects[0].Children.ContainsKey(rootPartUuid));
+ }
}
}
\ No newline at end of file
--
cgit v1.1