From e9153e1d1aae50024d8cd05fe14a9bce34343a0e Mon Sep 17 00:00:00 2001
From: teravus
Date: Thu, 15 Nov 2012 10:05:16 -0500
Subject: Revert "Merge master into teravuswork", it should have been
avination, not master.
This reverts commit dfac269032300872c4d0dc507f4f9062d102b0f4, reversing
changes made to 619c39e5144f15aca129d6d999bcc5c34133ee64.
---
OpenSim/Tests/Performance/NPCPerformanceTests.cs | 190 ---------------------
.../Tests/Performance/ObjectPerformanceTests.cs | 175 -------------------
.../Tests/Performance/ScriptPerformanceTests.cs | 168 ------------------
3 files changed, 533 deletions(-)
delete mode 100644 OpenSim/Tests/Performance/NPCPerformanceTests.cs
delete mode 100644 OpenSim/Tests/Performance/ObjectPerformanceTests.cs
delete mode 100644 OpenSim/Tests/Performance/ScriptPerformanceTests.cs
(limited to 'OpenSim/Tests/Performance')
diff --git a/OpenSim/Tests/Performance/NPCPerformanceTests.cs b/OpenSim/Tests/Performance/NPCPerformanceTests.cs
deleted file mode 100644
index 627765b..0000000
--- a/OpenSim/Tests/Performance/NPCPerformanceTests.cs
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * 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.Diagnostics;
-using System.Reflection;
-using log4net;
-using Nini.Config;
-using NUnit.Framework;
-using OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Framework.Communications;
-using OpenSim.Region.CoreModules.Avatar.Attachments;
-using OpenSim.Region.CoreModules.Avatar.AvatarFactory;
-using OpenSim.Region.CoreModules.Framework.InventoryAccess;
-using OpenSim.Region.CoreModules.Framework.UserManagement;
-using OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Region.OptionalModules.World.NPC;
-using OpenSim.Services.AvatarService;
-using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Mock;
-
-namespace OpenSim.Tests.Performance
-{
- ///
- /// NPC performance tests
- ///
- ///
- /// Don't rely on the numbers given by these tests - they will vary a lot depending on what is already cached,
- /// how much memory is free, etc. In some cases, later larger tests will apparently take less time than smaller
- /// earlier tests.
- ///
- [TestFixture]
- public class NPCPerformanceTests
- {
- private TestScene scene;
- private AvatarFactoryModule afm;
- private UserManagementModule umm;
- private AttachmentsModule am;
-
- [TestFixtureSetUp]
- public void FixtureInit()
- {
- // Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread.
- Util.FireAndForgetMethod = FireAndForgetMethod.None;
- }
-
- [TestFixtureTearDown]
- public void TearDown()
- {
- scene.Close();
- scene = null;
- GC.Collect();
- GC.WaitForPendingFinalizers();
-
- // We must set this back afterwards, otherwise later tests will fail since they're expecting multiple
- // threads. Possibly, later tests should be rewritten not to worry about such things.
- Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod;
- }
-
- [SetUp]
- public void Init()
- {
- IConfigSource config = new IniConfigSource();
- config.AddConfig("NPC");
- config.Configs["NPC"].Set("Enabled", "true");
- config.AddConfig("Modules");
- config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
-
- afm = new AvatarFactoryModule();
- umm = new UserManagementModule();
- am = new AttachmentsModule();
-
- scene = new SceneHelpers().SetupScene();
- SceneHelpers.SetupSceneModules(scene, config, afm, umm, am, new BasicInventoryAccessModule(), new NPCModule());
- }
-
- [Test]
- public void Test_0001_AddRemove100NPCs()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddRemoveNPCs(100);
- }
-
- [Test]
- public void Test_0002_AddRemove1000NPCs()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddRemoveNPCs(1000);
- }
-
- [Test]
- public void Test_0003_AddRemove2000NPCs()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddRemoveNPCs(2000);
- }
-
- private void TestAddRemoveNPCs(int numberOfNpcs)
- {
- ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
-// ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId);
-
- // 8 is the index of the first baked texture in AvatarAppearance
- UUID originalFace8TextureId = TestHelpers.ParseTail(0x10);
- Primitive.TextureEntry originalTe = new Primitive.TextureEntry(UUID.Zero);
- Primitive.TextureEntryFace originalTef = originalTe.CreateFace(8);
- originalTef.TextureID = originalFace8TextureId;
-
- // We also need to add the texture to the asset service, otherwise the AvatarFactoryModule will tell
- // ScenePresence.SendInitialData() to reset our entire appearance.
- scene.AssetService.Store(AssetHelpers.CreateNotecardAsset(originalFace8TextureId));
-
- afm.SetAppearance(sp, originalTe, null);
-
- INPCModule npcModule = scene.RequestModuleInterface();
-
- List npcs = new List();
-
- long startGcMemory = GC.GetTotalMemory(true);
- Stopwatch sw = new Stopwatch();
- sw.Start();
-
- for (int i = 0; i < numberOfNpcs; i++)
- {
- npcs.Add(
- npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, scene, sp.Appearance));
- }
-
- for (int i = 0; i < numberOfNpcs; i++)
- {
- Assert.That(npcs[i], Is.Not.Null);
-
- ScenePresence npc = scene.GetScenePresence(npcs[i]);
- Assert.That(npc, Is.Not.Null);
- }
-
- for (int i = 0; i < numberOfNpcs; i++)
- {
- Assert.That(npcModule.DeleteNPC(npcs[i], scene), Is.True);
- ScenePresence npc = scene.GetScenePresence(npcs[i]);
- Assert.That(npc, Is.Null);
- }
-
- sw.Stop();
-
- long endGcMemory = GC.GetTotalMemory(true);
-
- Console.WriteLine("Took {0} ms", sw.ElapsedMilliseconds);
- Console.WriteLine(
- "End {0} MB, Start {1} MB, Diff {2} MB",
- endGcMemory / 1024 / 1024,
- startGcMemory / 1024 / 1024,
- (endGcMemory - startGcMemory) / 1024 / 1024);
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Tests/Performance/ObjectPerformanceTests.cs b/OpenSim/Tests/Performance/ObjectPerformanceTests.cs
deleted file mode 100644
index 2264d86..0000000
--- a/OpenSim/Tests/Performance/ObjectPerformanceTests.cs
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * 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.Diagnostics;
-using System.Reflection;
-using log4net;
-using NUnit.Framework;
-using OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Mock;
-
-namespace OpenSim.Tests.Performance
-{
- ///
- /// Object performance tests
- ///
- ///
- /// Don't rely on the numbers given by these tests - they will vary a lot depending on what is already cached,
- /// how much memory is free, etc. In some cases, later larger tests will apparently take less time than smaller
- /// earlier tests.
- ///
- [TestFixture]
- public class ObjectPerformanceTests
- {
- [TearDown]
- public void TearDown()
- {
- GC.Collect();
- GC.WaitForPendingFinalizers();
- }
-
-// [Test]
-// public void Test0000Clean()
-// {
-// TestHelpers.InMethod();
-//// log4net.Config.XmlConfigurator.Configure();
-//
-// TestAddObjects(200000);
-// }
-
- [Test]
- public void Test_0001_10K_1PrimObjects()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddObjects(1, 10000);
- }
-
- [Test]
- public void Test_0002_100K_1PrimObjects()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddObjects(1, 100000);
- }
-
- [Test]
- public void Test_0003_200K_1PrimObjects()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddObjects(1, 200000);
- }
-
- [Test]
- public void Test_0011_100_100PrimObjects()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddObjects(100, 100);
- }
-
- [Test]
- public void Test_0012_1K_100PrimObjects()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddObjects(100, 1000);
- }
-
- [Test]
- public void Test_0013_2K_100PrimObjects()
- {
- TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
-
- TestAddObjects(100, 2000);
- }
-
- private void TestAddObjects(int primsInEachObject, int objectsToAdd)
- {
- UUID ownerId = new UUID("F0000000-0000-0000-0000-000000000000");
-
- // Using a local variable for scene, at least on mono 2.6.7, means that it's much more likely to be garbage
- // collected when we teardown this test. If it's done in a member variable, even if that is subsequently
- // nulled out, the garbage collect can be delayed.
- TestScene scene = new SceneHelpers().SetupScene();
-
-// Process process = Process.GetCurrentProcess();
-// long startProcessMemory = process.PrivateMemorySize64;
- long startGcMemory = GC.GetTotalMemory(true);
- DateTime start = DateTime.Now;
-
- for (int i = 1; i <= objectsToAdd; i++)
- {
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(primsInEachObject, ownerId, "part_", i);
- Assert.That(scene.AddNewSceneObject(so, false), Is.True, string.Format("Object {0} was not created", i));
- }
-
- TimeSpan elapsed = DateTime.Now - start;
-// long processMemoryAlloc = process.PrivateMemorySize64 - startProcessMemory;
- long endGcMemory = GC.GetTotalMemory(false);
-
- for (int i = 1; i <= objectsToAdd; i++)
- {
- Assert.That(
- scene.GetSceneObjectGroup(TestHelpers.ParseTail(i)),
- Is.Not.Null,
- string.Format("Object {0} could not be retrieved", i));
- }
-
- // When a scene object is added to a scene, it is placed in the update list for sending to viewers
- // (though in this case we have none). When it is deleted, it is not removed from the update which is
- // fine since it will later be ignored.
- //
- // However, that means that we need to manually run an update here to clear out that list so that deleted
- // objects will be clean up by the garbage collector before the next stress test is run.
- scene.Update(1);
-
- Console.WriteLine(
- "Took {0}ms, {1}MB ({2} - {3}) to create {4} objects each containing {5} prim(s)",
- Math.Round(elapsed.TotalMilliseconds),
- (endGcMemory - startGcMemory) / 1024 / 1024,
- endGcMemory / 1024 / 1024,
- startGcMemory / 1024 / 1024,
- objectsToAdd,
- primsInEachObject);
-
- scene.Close();
-// scene = null;
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Tests/Performance/ScriptPerformanceTests.cs b/OpenSim/Tests/Performance/ScriptPerformanceTests.cs
deleted file mode 100644
index d708abd..0000000
--- a/OpenSim/Tests/Performance/ScriptPerformanceTests.cs
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * 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.Diagnostics;
-using System.Reflection;
-using System.Threading;
-using log4net;
-using Nini.Config;
-using NUnit.Framework;
-using OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.CoreModules.Scripting.WorldComm;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Region.ScriptEngine.XEngine;
-using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Mock;
-
-namespace OpenSim.Tests.Performance
-{
- ///
- /// Script performance tests
- ///
- ///
- /// Don't rely on the numbers given by these tests - they will vary a lot depending on what is already cached,
- /// how much memory is free, etc. In some cases, later larger tests will apparently take less time than smaller
- /// earlier tests.
- ///
- [TestFixture]
- public class ScriptPerformanceTests
- {
- private TestScene m_scene;
- private XEngine m_xEngine;
- private AutoResetEvent m_chatEvent = new AutoResetEvent(false);
-
- private int m_expectedChatMessages;
- private List m_osChatMessagesReceived = new List();
-
- [SetUp]
- public void Init()
- {
- //AppDomain.CurrentDomain.SetData("APPBASE", Environment.CurrentDirectory + "/bin");
-// Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory);
- m_xEngine = new XEngine();
-
- // Necessary to stop serialization complaining
- WorldCommModule wcModule = new WorldCommModule();
-
- IniConfigSource configSource = new IniConfigSource();
-
- IConfig startupConfig = configSource.AddConfig("Startup");
- startupConfig.Set("DefaultScriptEngine", "XEngine");
-
- IConfig xEngineConfig = configSource.AddConfig("XEngine");
- xEngineConfig.Set("Enabled", "true");
-
- // These tests will not run with AppDomainLoading = true, at least on mono. For unknown reasons, the call
- // to AssemblyResolver.OnAssemblyResolve fails.
- xEngineConfig.Set("AppDomainLoading", "false");
-
- m_scene = new SceneHelpers().SetupScene("My Test", UUID.Random(), 1000, 1000, configSource);
- SceneHelpers.SetupSceneModules(m_scene, configSource, m_xEngine, wcModule);
-
- m_scene.EventManager.OnChatFromWorld += OnChatFromWorld;
- m_scene.StartScripts();
- }
-
- [TearDown]
- public void TearDown()
- {
- m_scene.Close();
- m_scene = null;
- GC.Collect();
- GC.WaitForPendingFinalizers();
- }
-
- [Test]
- public void TestCompileAndStart100Scripts()
- {
- TestHelpers.InMethod();
- log4net.Config.XmlConfigurator.Configure();
-
- TestCompileAndStartScripts(100);
- }
-
- private void TestCompileAndStartScripts(int scriptsToCreate)
- {
- UUID userId = TestHelpers.ParseTail(0x1);
-
- m_expectedChatMessages = scriptsToCreate;
- int startingObjectIdTail = 0x100;
-
- GC.Collect();
-
- for (int idTail = startingObjectIdTail;idTail < startingObjectIdTail + scriptsToCreate; idTail++)
- {
- AddObjectAndScript(idTail, userId);
- }
-
- m_chatEvent.WaitOne(40000 + scriptsToCreate * 1000);
-
- Assert.That(m_osChatMessagesReceived.Count, Is.EqualTo(m_expectedChatMessages));
-
- foreach (OSChatMessage msg in m_osChatMessagesReceived)
- Assert.That(
- msg.Message,
- Is.EqualTo("Script running"),
- string.Format(
- "Message from {0} was {1} rather than {2}", msg.SenderUUID, msg.Message, "Script running"));
- }
-
- private void AddObjectAndScript(int objectIdTail, UUID userId)
- {
-// UUID itemId = TestHelpers.ParseTail(0x3);
- string itemName = string.Format("AddObjectAndScript() Item for object {0}", objectIdTail);
-
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, "AddObjectAndScriptPart_", objectIdTail);
- m_scene.AddNewSceneObject(so, true);
-
- InventoryItemBase itemTemplate = new InventoryItemBase();
-// itemTemplate.ID = itemId;
- itemTemplate.Name = itemName;
- itemTemplate.Folder = so.UUID;
- itemTemplate.InvType = (int)InventoryType.LSL;
-
- m_scene.RezNewScript(userId, itemTemplate);
- }
-
- private void OnChatFromWorld(object sender, OSChatMessage oscm)
- {
-// Console.WriteLine("Got chat [{0}]", oscm.Message);
-
- lock (m_osChatMessagesReceived)
- {
- m_osChatMessagesReceived.Add(oscm);
-
- if (m_osChatMessagesReceived.Count == m_expectedChatMessages)
- m_chatEvent.Set();
- }
- }
- }
-}
\ No newline at end of file
--
cgit v1.1