Merge branch 'master' into careminster

Conflicts:
	OpenSim/Region/Framework/Scenes/Scene.cs
avinationmerge
Melanie 2012-03-07 00:51:59 +00:00
commit caa19862fa
24 changed files with 452 additions and 106 deletions

View File

@ -151,6 +151,14 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
#region IWorldComm Members
public int ListenerCount
{
get
{
return m_listenerManager.ListenerCount;
}
}
/// <summary>
/// Create a listen event callback with the specified filters.
/// The parameters localID,itemID are needed to uniquely identify
@ -438,6 +446,18 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
private int m_maxhandles;
private int m_curlisteners;
/// <summary>
/// Total number of listeners
/// </summary>
public int ListenerCount
{
get
{
lock (m_listeners)
return m_listeners.Count;
}
}
public ListenerManager(int maxlisteners, int maxhandles)
{
m_maxlisteners = maxlisteners;

View File

@ -48,8 +48,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
private static LocalGridServicesConnector m_MainInstance;
private IGridService m_GridService;
private Dictionary<UUID, RegionCache> m_LocalCache = new Dictionary<UUID, RegionCache>();
@ -62,7 +60,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
public LocalGridServicesConnector(IConfigSource source)
{
m_log.Debug("[LOCAL GRID CONNECTOR]: LocalGridServicesConnector instantiated");
m_MainInstance = this;
InitialiseService(source);
}
@ -87,7 +84,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
if (name == Name)
{
InitialiseService(source);
m_MainInstance = this;
m_Enabled = true;
m_log.Info("[LOCAL GRID CONNECTOR]: Local grid connector enabled");
}
@ -126,12 +122,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
public void PostInitialise()
{
if (m_MainInstance == this)
{
MainConsole.Instance.Commands.AddCommand("LocalGridConnector", false, "show neighbours",
"show neighbours",
"Shows the local regions' neighbours", NeighboursCommand);
}
MainConsole.Instance.Commands.AddCommand("LocalGridConnector", false, "show neighbours",
"show neighbours",
"Shows the local regions' neighbours", NeighboursCommand);
}
public void Close()
@ -143,22 +136,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
if (m_Enabled)
scene.RegisterModuleInterface<IGridService>(this);
if (m_MainInstance == this)
{
if (m_LocalCache.ContainsKey(scene.RegionInfo.RegionID))
m_log.ErrorFormat("[LOCAL GRID CONNECTOR]: simulator seems to have more than one region with the same UUID. Please correct this!");
else
m_LocalCache.Add(scene.RegionInfo.RegionID, new RegionCache(scene));
}
if (m_LocalCache.ContainsKey(scene.RegionInfo.RegionID))
m_log.ErrorFormat("[LOCAL GRID CONNECTOR]: simulator seems to have more than one region with the same UUID. Please correct this!");
else
m_LocalCache.Add(scene.RegionInfo.RegionID, new RegionCache(scene));
}
public void RemoveRegion(Scene scene)
{
if (m_MainInstance == this)
{
m_LocalCache[scene.RegionInfo.RegionID].Clear();
m_LocalCache.Remove(scene.RegionInfo.RegionID);
}
m_LocalCache[scene.RegionInfo.RegionID].Clear();
m_LocalCache.Remove(scene.RegionInfo.RegionID);
}
public void RegionLoaded(Scene scene)
@ -259,6 +246,5 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
MainConsole.Instance.Output(caps.ToString());
}
}
}

View File

@ -49,6 +49,11 @@ namespace OpenSim.Region.Framework.Interfaces
public interface IWorldComm
{
/// <summary>
/// Total number of listeners
/// </summary>
int ListenerCount { get; }
/// <summary>
/// Create a listen event callback with the specified filters.
/// The parameters localID,itemID are needed to uniquely identify

View File

@ -142,8 +142,11 @@ namespace OpenSim.Region.Framework.Scenes
public event OnPermissionErrorDelegate OnPermissionError;
/// <summary>
/// Fired when a new script is created.
/// Fired when a script is run.
/// </summary>
/// <remarks>
/// Occurs after OnNewScript.
/// </remarks>
public event NewRezScript OnRezScript;
public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource);
@ -191,10 +194,16 @@ namespace OpenSim.Region.Framework.Scenes
public event ClientClosed OnClientClosed;
// Fired when a script is created
// The indication that a new script exists in this region.
public delegate void NewScript(UUID clientID, SceneObjectPart part, UUID itemID);
/// <summary>
/// Fired when a script is created.
/// </summary>
/// <remarks>
/// Occurs before OnRezScript
/// </remarks>
public event NewScript OnNewScript;
public virtual void TriggerNewScript(UUID clientID, SceneObjectPart part, UUID itemID)
{
NewScript handlerNewScript = OnNewScript;
@ -216,10 +225,16 @@ namespace OpenSim.Region.Framework.Scenes
}
}
//TriggerUpdateScript: triggered after Scene receives client's upload of updated script and stores it as asset
// An indication that the script has changed.
public delegate void UpdateScript(UUID clientID, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID);
/// <summary>
/// An indication that the script has changed.
/// </summary>
/// <remarks>
/// Triggered after the scene receives a client's upload of an updated script and has stored it in an asset.
/// </remarks>
public event UpdateScript OnUpdateScript;
public virtual void TriggerUpdateScript(UUID clientId, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID)
{
UpdateScript handlerUpdateScript = OnUpdateScript;

View File

@ -651,10 +651,10 @@ namespace OpenSim.Region.Framework.Scenes
#region Region Config
try
// Region config overrides global config
//
if (m_config.Configs["Startup"] != null)
{
// Region config overrides global config
//
IConfig startupConfig = m_config.Configs["Startup"];
m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance",m_defaultDrawDistance);
@ -756,31 +756,28 @@ namespace OpenSim.Region.Framework.Scenes
#region Interest Management
if (m_config != null)
IConfig interestConfig = m_config.Configs["InterestManagement"];
if (interestConfig != null)
{
IConfig interestConfig = m_config.Configs["InterestManagement"];
if (interestConfig != null)
string update_prioritization_scheme = interestConfig.GetString("UpdatePrioritizationScheme", "Time").Trim().ToLower();
try
{
string update_prioritization_scheme = interestConfig.GetString("UpdatePrioritizationScheme", "Time").Trim().ToLower();
try
{
m_priorityScheme = (UpdatePrioritizationSchemes)Enum.Parse(typeof(UpdatePrioritizationSchemes), update_prioritization_scheme, true);
}
catch (Exception)
{
m_log.Warn("[PRIORITIZER]: UpdatePrioritizationScheme was not recognized, setting to default prioritizer Time");
m_priorityScheme = UpdatePrioritizationSchemes.Time;
}
m_reprioritizationEnabled = interestConfig.GetBoolean("ReprioritizationEnabled", true);
m_reprioritizationInterval = interestConfig.GetDouble("ReprioritizationInterval", 5000.0);
m_rootReprioritizationDistance = interestConfig.GetDouble("RootReprioritizationDistance", 10.0);
m_childReprioritizationDistance = interestConfig.GetDouble("ChildReprioritizationDistance", 20.0);
m_priorityScheme = (UpdatePrioritizationSchemes)Enum.Parse(typeof(UpdatePrioritizationSchemes), update_prioritization_scheme, true);
}
catch (Exception)
{
m_log.Warn("[PRIORITIZER]: UpdatePrioritizationScheme was not recognized, setting to default prioritizer Time");
m_priorityScheme = UpdatePrioritizationSchemes.Time;
}
m_reprioritizationEnabled = interestConfig.GetBoolean("ReprioritizationEnabled", true);
m_reprioritizationInterval = interestConfig.GetDouble("ReprioritizationInterval", 5000.0);
m_rootReprioritizationDistance = interestConfig.GetDouble("RootReprioritizationDistance", 10.0);
m_childReprioritizationDistance = interestConfig.GetDouble("ChildReprioritizationDistance", 20.0);
}
m_log.InfoFormat("[SCENE]: Using the {0} prioritization scheme", m_priorityScheme);
m_log.DebugFormat("[SCENE]: Using the {0} prioritization scheme", m_priorityScheme);
#endregion Interest Management
@ -1102,6 +1099,8 @@ namespace OpenSim.Region.Framework.Scenes
{
m_log.InfoFormat("[SCENE]: Closing down the single simulator: {0}", RegionInfo.RegionName);
StatsReporter.Close();
m_restartTimer.Stop();
m_restartTimer.Close();

View File

@ -178,13 +178,19 @@ namespace OpenSim.Region.Framework.Scenes
m_objectCapacity = scene.RegionInfo.ObjectCapacity;
m_report.AutoReset = true;
m_report.Interval = statsUpdatesEveryMS;
m_report.Elapsed += new ElapsedEventHandler(statsHeartBeat);
m_report.Elapsed += statsHeartBeat;
m_report.Enabled = true;
if (StatsManager.SimExtraStats != null)
OnSendStatsResult += StatsManager.SimExtraStats.ReceiveClassicSimStatsPacket;
}
public void Close()
{
m_report.Elapsed -= statsHeartBeat;
m_report.Close();
}
public void SetUpdateMS(int ms)
{
statsUpdatesEveryMS = ms;

View File

@ -247,7 +247,58 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// Remove Sensors
m_SensorRepeat[engine].UnSetSenseRepeaterEvents(localID, itemID);
}
/// <summary>
/// Get the sensor repeat plugin for this script engine.
/// </summary>
/// <param name="engine"></param>
/// <returns></returns>
public static SensorRepeat GetSensorRepeatPlugin(IScriptEngine engine)
{
if (m_SensorRepeat.ContainsKey(engine))
return m_SensorRepeat[engine];
else
return null;
}
/// <summary>
/// Get the dataserver plugin for this script engine.
/// </summary>
/// <param name="engine"></param>
/// <returns></returns>
public static Dataserver GetDataserverPlugin(IScriptEngine engine)
{
if (m_Dataserver.ContainsKey(engine))
return m_Dataserver[engine];
else
return null;
}
/// <summary>
/// Get the timer plugin for this script engine.
/// </summary>
/// <param name="engine"></param>
/// <returns></returns>
public static Timer GetTimerPlugin(IScriptEngine engine)
{
if (m_Timer.ContainsKey(engine))
return m_Timer[engine];
else
return null;
}
/// <summary>
/// Get the listener plugin for this script engine.
/// </summary>
/// <param name="engine"></param>
/// <returns></returns>
public static Listener GetListenerPlugin(IScriptEngine engine)
{
if (m_Listener.ContainsKey(engine))
return m_Listener[engine];
else
return null;
}
public static void StateChange(IScriptEngine engine, uint localID, UUID itemID)
@ -290,7 +341,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
data.AddRange(timers);
}
Object[] sensors=m_SensorRepeat[engine].GetSerializationData(itemID);
Object[] sensors = m_SensorRepeat[engine].GetSerializationData(itemID);
if (sensors.Length > 0)
{
data.Add("sensor");

View File

@ -38,6 +38,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
{
public AsyncCommandManager m_CmdManager;
public int DataserverRequestsCount
{
get
{
lock (DataserverRequests)
return DataserverRequests.Count;
}
}
private Dictionary<string, DataserverRequest> DataserverRequests =
new Dictionary<string, DataserverRequest>();

View File

@ -42,22 +42,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
public AsyncCommandManager m_CmdManager;
private IWorldComm m_commsPlugin;
public int ListenerCount
{
get { return m_commsPlugin.ListenerCount; }
}
public Listener(AsyncCommandManager CmdManager)
{
m_CmdManager = CmdManager;
m_commsPlugin = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
}
public void CheckListeners()
{
if (m_CmdManager.m_ScriptEngine.World == null)
return;
IWorldComm comms = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
if (comms != null)
if (m_commsPlugin != null)
{
while (comms.HasMessages())
while (m_commsPlugin.HasMessages())
{
ListenerInfo lInfo = (ListenerInfo)comms.GetNextMessage();
ListenerInfo lInfo = (ListenerInfo)m_commsPlugin.GetNextMessage();
//Deliver data to prim's listen handler
object[] resobj = new object[]
@ -81,17 +88,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
public Object[] GetSerializationData(UUID itemID)
{
IWorldComm comms = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
return comms.GetSerializationData(itemID);
return m_commsPlugin.GetSerializationData(itemID);
}
public void CreateFromData(uint localID, UUID itemID, UUID hostID,
Object[] data)
{
IWorldComm comms = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
comms.CreateFromData(localID, itemID, hostID, data);
m_commsPlugin.CreateFromData(localID, itemID, hostID, data);
}
}
}

View File

@ -44,6 +44,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
public AsyncCommandManager m_CmdManager;
/// <summary>
/// Number of sensors active.
/// </summary>
public int SensorsCount
{
get
{
lock (SenseRepeatListLock)
return SenseRepeaters.Count;
}
}
public SensorRepeat(AsyncCommandManager CmdManager)
{
m_CmdManager = CmdManager;

View File

@ -37,6 +37,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
{
public AsyncCommandManager m_CmdManager;
public int TimersCount
{
get
{
lock (TimerListLock)
return Timers.Count;
}
}
public Timer(AsyncCommandManager CmdManager)
{
m_CmdManager = CmdManager;

View File

@ -29,6 +29,7 @@ using System.Collections.Generic;
using System.Text.RegularExpressions;
using NUnit.Framework;
using OpenSim.Region.ScriptEngine.Shared.CodeTools;
using OpenSim.Tests.Common;
namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests
{
@ -43,6 +44,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests
[Test]
public void TestDefaultState()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -63,6 +66,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests
[Test]
public void TestCustomState()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -93,6 +98,8 @@ state another_state
[Test]
public void TestEventWithArguments()
{
TestHelpers.InMethod();
string input = @"default
{
at_rot_target(integer tnum, rotation targetrot, rotation ourrot)
@ -113,6 +120,8 @@ state another_state
[Test]
public void TestIntegerDeclaration()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -135,6 +144,8 @@ state another_state
[Test]
public void TestLoneIdent()
{
TestHelpers.InMethod();
// A lone ident should be removed completely as it's an error in C#
// (MONO at least).
string input = @"default
@ -161,6 +172,8 @@ state another_state
[Test]
public void TestAssignments()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -187,6 +200,8 @@ state another_state
[Test]
public void TestAdditionSubtractionOperator()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -215,6 +230,8 @@ state another_state
[Test]
public void TestStrings()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -242,6 +259,8 @@ state another_state
[Test]
public void TestBinaryExpression()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -284,6 +303,8 @@ state another_state
[Test]
public void TestFloatConstants()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -336,6 +357,8 @@ state another_state
[Test]
public void TestComments()
{
TestHelpers.InMethod();
string input = @"// this test tests comments
default
{
@ -358,6 +381,8 @@ default
[Test]
public void TestStringsWithEscapedQuotesAndComments()
{
TestHelpers.InMethod();
string input = @"// this test tests strings, with escaped quotes and comments in strings
default
{
@ -397,6 +422,8 @@ default
[Test]
public void TestCStyleComments()
{
TestHelpers.InMethod();
string input = @"/* this test tests comments
of the C variety
*/
@ -426,6 +453,8 @@ default
[Test]
public void TestGlobalDefinedFunctions()
{
TestHelpers.InMethod();
string input = @"// this test tests custom defined functions
string onefunc()
@ -470,6 +499,8 @@ default
[Test]
public void TestGlobalDeclaredVariables()
{
TestHelpers.InMethod();
string input = @"// this test tests custom defined functions and global variables
string globalString;
@ -525,6 +556,8 @@ default
[Test]
public void TestMoreAssignments()
{
TestHelpers.InMethod();
string input = @"// this test tests +=, -=, *=, /=, %=
string globalString;
@ -579,6 +612,8 @@ default
[Test]
public void TestVectorConstantNotation()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -606,6 +641,8 @@ default
[Test]
public void TestVectorMemberAccess()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -632,6 +669,8 @@ default
[Test]
public void TestExpressionInParentheses()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
@ -660,6 +699,8 @@ default
[Test]
public void TestIncrementDecrementOperator()
{
TestHelpers.InMethod();
string input = @"// here we'll test the ++ and -- operators
default
@ -690,6 +731,8 @@ default
[Test]
public void TestLists()
{
TestHelpers.InMethod();
string input = @"// testing lists
default
@ -718,6 +761,8 @@ default
[Test]
public void TestIfStatement()
{
TestHelpers.InMethod();
string input = @"// let's test if statements
default
@ -822,6 +867,8 @@ default
[Test]
public void TestIfElseStatement()
{
TestHelpers.InMethod();
string input = @"// let's test complex logical expressions
default
@ -928,6 +975,8 @@ default
[Test]
public void TestWhileLoop()
{
TestHelpers.InMethod();
string input = @"// let's test while loops
default
@ -968,6 +1017,8 @@ default
[Test]
public void TestDoWhileLoop()
{
TestHelpers.InMethod();
string input = @"// let's test do-while loops
default
@ -1012,6 +1063,8 @@ default
[Test]
public void TestForLoop()
{
TestHelpers.InMethod();
string input = @"// let's test for loops
default
@ -1056,6 +1109,8 @@ default
[Test]
public void TestFloatsWithTrailingDecimal()
{
TestHelpers.InMethod();
string input = @"// a curious feature of LSL that allows floats to be defined with a trailing dot
default
@ -1108,6 +1163,8 @@ default
[Test]
public void TestUnaryAndBinaryOperators()
{
TestHelpers.InMethod();
string input = @"// let's test a few more operators
default
@ -1144,6 +1201,8 @@ default
[Test]
public void TestTypecasts()
{
TestHelpers.InMethod();
string input = @"// let's test typecasts
default
@ -1189,6 +1248,8 @@ default
[Test]
public void TestStates()
{
TestHelpers.InMethod();
string input = @"// let's test states
default
@ -1229,6 +1290,8 @@ state statetwo
[Test]
public void TestHexIntegerConstants()
{
TestHelpers.InMethod();
string input = @"// let's test hex integers
default
@ -1261,6 +1324,8 @@ default
[Test]
public void TestJumps()
{
TestHelpers.InMethod();
string input = @"// let's test jumps
default
@ -1291,6 +1356,8 @@ default
[Test]
public void TestImplicitVariableInitialization()
{
TestHelpers.InMethod();
string input = @"// let's test implicitly initializing variables
default
@ -1334,6 +1401,8 @@ default
[Test]
public void TestMultipleEqualsExpression()
{
TestHelpers.InMethod();
string input = @"// let's test x = y = 5 type expressions
default
@ -1366,6 +1435,8 @@ default
[Test]
public void TestUnaryExpressionLastInVectorConstant()
{
TestHelpers.InMethod();
string input = @"// let's test unary expressions some more
default
@ -1390,6 +1461,8 @@ default
[Test]
public void TestVectorMemberPlusEquals()
{
TestHelpers.InMethod();
string input = @"// let's test unary expressions some more
default
@ -1424,6 +1497,8 @@ default
[Test]
public void TestWhileLoopWithNoBody()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1447,6 +1522,8 @@ default
[Test]
public void TestDoWhileLoopWithNoBody()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1472,6 +1549,8 @@ default
[Test]
public void TestIfWithNoBody()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1495,6 +1574,8 @@ default
[Test]
public void TestIfElseWithNoBody()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1521,6 +1602,8 @@ default
[Test]
public void TestForLoopWithNoBody()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1544,6 +1627,8 @@ default
[Test]
public void TestForLoopWithNoAssignment()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1569,6 +1654,8 @@ default
[Test]
public void TestForLoopWithOnlyIdentInAssignment()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1594,6 +1681,8 @@ default
[Test]
public void TestAssignmentInIfWhileDoWhile()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1631,6 +1720,8 @@ default
[Test]
public void TestLSLListHack()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
@ -1653,9 +1744,12 @@ default
}
[Test]
[ExpectedException(typeof(System.Exception))]
public void TestSyntaxError()
{
TestHelpers.InMethod();
bool gotException = false;
string input = @"default
{
state_entry()
@ -1671,17 +1765,22 @@ default
}
catch (System.Exception e)
{
// The syntax error is on line 6, char 5 (expected ';', found
// The syntax error is on line 5, char 4 (expected ';', found
// '}').
Assert.AreEqual("(4,4) syntax error", e.Message);
throw;
Assert.AreEqual("(5,4) syntax error", e.Message);
gotException = true;
}
Assert.That(gotException, Is.True);
}
[Test]
[ExpectedException(typeof(System.Exception))]
public void TestSyntaxErrorDeclaringVariableInForLoop()
{
TestHelpers.InMethod();
bool gotException = false;
string input = @"default
{
state_entry()
@ -1697,11 +1796,13 @@ default
}
catch (System.Exception e)
{
// The syntax error is on line 5, char 14 (Syntax error)
Assert.AreEqual("(3,13) syntax error", e.Message);
// The syntax error is on line 4, char 13 (Syntax error)
Assert.AreEqual("(4,13) syntax error", e.Message);
throw;
gotException = true;
}
Assert.That(gotException, Is.True);
}
}
}

View File

@ -31,6 +31,7 @@ using System.Collections.Generic;
using Microsoft.CSharp;
using NUnit.Framework;
using OpenSim.Region.ScriptEngine.Shared.CodeTools;
using OpenSim.Tests.Common;
namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests
{
@ -92,6 +93,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests
//[Test]
public void TestUseUndeclaredVariable()
{
TestHelpers.InMethod();
m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll");
string input = @"default
@ -124,6 +127,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests
//[Test]
public void TestCastAndConcatString()
{
TestHelpers.InMethod();
m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll");
string input = @"string s = "" a string"";

View File

@ -46,7 +46,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[TestFixture, LongRunning]
public class LSL_ApiTest
{
private const double ANGLE_ACCURACY_IN_RADIANS = 1E-6;
private const double VECTOR_COMPONENT_ACCURACY = 0.0000005d;
private const float FLOAT_ACCURACY = 0.00005f;
@ -55,7 +54,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[SetUp]
public void SetUp()
{
IConfigSource initConfigSource = new IniConfigSource();
IConfig config = initConfigSource.AddConfig("XEngine");
config.Set("Enabled", "true");
@ -75,6 +73,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestllAngleBetween()
{
TestHelpers.InMethod();
CheckllAngleBetween(new Vector3(1, 0, 0), 0, 1, 1);
CheckllAngleBetween(new Vector3(1, 0, 0), 90, 1, 1);
CheckllAngleBetween(new Vector3(1, 0, 0), 180, 1, 1);
@ -158,6 +158,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
// llRot2Euler test.
public void TestllRot2Euler()
{
TestHelpers.InMethod();
// 180, 90 and zero degree rotations.
CheckllRot2Euler(new LSL_Types.Quaternion(0.0f, 0.0f, 0.0f, 1.0f));
CheckllRot2Euler(new LSL_Types.Quaternion(0.0f, 0.0f, 0.707107f, 0.707107f));
@ -256,6 +258,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
// llSetPrimitiveParams and llGetPrimitiveParams test.
public void TestllSetPrimitiveParams()
{
TestHelpers.InMethod();
// Create Prim1.
Scene scene = SceneHelpers.SetupScene();
string obj1Name = "Prim1";
@ -486,9 +490,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
}
[Test]
// llVecNorm test.
public void TestllVecNorm()
{
TestHelpers.InMethod();
// Check special case for normalizing zero vector.
CheckllVecNorm(new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), new LSL_Types.Vector3(0.0d, 0.0d, 0.0d));
// Check various vectors.

View File

@ -213,6 +213,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestConstructFromInt()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (KeyValuePair<int, double> number in m_intDoubleSet)
@ -228,6 +230,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestConstructFromDouble()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (KeyValuePair<double, double> number in m_doubleDoubleSet)
@ -243,6 +247,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLFloatToInt()
{
TestHelpers.InMethod();
int testNumber;
foreach (KeyValuePair<double, int> number in m_doubleIntSet)
@ -258,6 +264,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLFloatToUint()
{
TestHelpers.InMethod();
uint testNumber;
foreach (KeyValuePair<double, int> number in m_doubleUintSet)
@ -273,6 +281,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastLSLFloatToBooleanTrue()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
bool testBool;
@ -291,6 +301,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastLSLFloatToBooleanFalse()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat = new LSL_Types.LSLFloat(0.0);
bool testBool = testFloat;
@ -303,6 +315,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastIntToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (int number in m_intList)
@ -318,6 +332,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastLSLIntegerToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (int number in m_intList)
@ -333,6 +349,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLIntegerToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (int number in m_intList)
@ -348,6 +366,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastStringToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (KeyValuePair<string, double> number in m_stringDoubleSet)
@ -363,6 +383,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLStringToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (KeyValuePair<string, double> number in m_stringDoubleSet)
@ -378,6 +400,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastDoubleToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (double number in m_doubleList)
@ -393,6 +417,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastLSLFloatToDouble()
{
TestHelpers.InMethod();
double testNumber;
LSL_Types.LSLFloat testFloat;
@ -411,26 +437,30 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLFloatToFloat()
{
float testFloat;
float numberAsFloat;
LSL_Types.LSLFloat testLSLFloat;
foreach (double number in m_doubleList)
{
testLSLFloat = new LSL_Types.LSLFloat(number);
numberAsFloat = (float)number;
testFloat = (float)testLSLFloat;
TestHelpers.InMethod();
Assert.That((double)testFloat, new DoubleToleranceConstraint((double)numberAsFloat, _lowPrecisionTolerance));
}
float testFloat;
float numberAsFloat;
LSL_Types.LSLFloat testLSLFloat;
foreach (double number in m_doubleList)
{
testLSLFloat = new LSL_Types.LSLFloat(number);
numberAsFloat = (float)number;
testFloat = (float)testLSLFloat;
Assert.That((double)testFloat, new DoubleToleranceConstraint((double)numberAsFloat, _lowPrecisionTolerance));
}
}
/// <summary>
/// Tests the equality (==) operator.
/// </summary>
[Test]
public void TestEqualsOperator()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloatA, testFloatB;
foreach (double number in m_doubleList)
@ -450,6 +480,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestNotEqualOperator()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloatA, testFloatB;
foreach (double number in m_doubleList)
@ -469,6 +501,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestIncrementOperator()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
double testNumber;
@ -493,6 +527,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestDecrementOperator()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
double testNumber;
@ -517,6 +553,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestToString()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
foreach (KeyValuePair<double, string> number in m_doubleStringSet)
@ -532,6 +570,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestAddTwoLSLFloats()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testResult;
foreach (KeyValuePair<double, double> number in m_doubleDoubleSet)
@ -547,6 +587,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestSubtractTwoLSLFloats()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testResult;
foreach (KeyValuePair<double, double> number in m_doubleDoubleSet)
@ -562,6 +604,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestMultiplyTwoLSLFloats()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testResult;
foreach (KeyValuePair<double, double> number in m_doubleDoubleSet)
@ -577,6 +621,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestDivideTwoLSLFloats()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testResult;
foreach (KeyValuePair<double, double> number in m_doubleDoubleSet)
@ -595,6 +641,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastBooleanToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testFloat;
testFloat = (1 == 0);

View File

@ -79,6 +79,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLFloatToLSLInteger()
{
TestHelpers.InMethod();
LSL_Types.LSLInteger testInteger;
foreach (KeyValuePair<double, int> number in m_doubleIntSet)
@ -94,6 +96,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastStringToLSLInteger()
{
TestHelpers.InMethod();
LSL_Types.LSLInteger testInteger;
foreach (KeyValuePair<string, int> number in m_stringIntSet)
@ -109,6 +113,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLStringToLSLInteger()
{
TestHelpers.InMethod();
LSL_Types.LSLInteger testInteger;
foreach (KeyValuePair<string, int> number in m_stringIntSet)
@ -124,6 +130,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastBooleanToLSLInteger()
{
TestHelpers.InMethod();
LSL_Types.LSLInteger testInteger;
testInteger = (1 == 0);

View File

@ -71,6 +71,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestConstructFromLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLString testString;
foreach (KeyValuePair<double, string> number in m_doubleStringSet)
@ -86,6 +88,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLFloatToLSLString()
{
TestHelpers.InMethod();
LSL_Types.LSLString testString;
foreach (KeyValuePair<double, string> number in m_doubleStringSet)
@ -101,6 +105,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestExplicitCastLSLStringToQuaternion()
{
TestHelpers.InMethod();
string quaternionString = "<0.00000, 0.70711, 0.00000, 0.70711>";
LSL_Types.LSLString quaternionLSLString = new LSL_Types.LSLString(quaternionString);
@ -118,6 +124,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestImplicitCastBooleanToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLString testString;
testString = (LSL_Types.LSLString) (1 == 0);

View File

@ -44,6 +44,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestConcatenateString()
{
TestHelpers.InMethod();
LSL_Types.list testList = new LSL_Types.list(new LSL_Types.LSLInteger(1), new LSL_Types.LSLInteger('a'), new LSL_Types.LSLString("test"));
testList += new LSL_Types.LSLString("addition");
@ -64,6 +66,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestConcatenateInteger()
{
TestHelpers.InMethod();
LSL_Types.list testList = new LSL_Types.list(new LSL_Types.LSLInteger(1), new LSL_Types.LSLInteger('a'), new LSL_Types.LSLString("test"));
testList += new LSL_Types.LSLInteger(20);
@ -84,6 +88,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestConcatenateDouble()
{
TestHelpers.InMethod();
LSL_Types.list testList = new LSL_Types.list(new LSL_Types.LSLInteger(1), new LSL_Types.LSLInteger('a'), new LSL_Types.LSLString("test"));
testList += new LSL_Types.LSLFloat(2.0f);
@ -104,6 +110,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestCastLSLIntegerItemToLSLInteger()
{
TestHelpers.InMethod();
LSL_Types.LSLInteger testValue = new LSL_Types.LSLInteger(123);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -116,6 +124,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestCastLSLFloatItemToLSLFloat()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testValue = new LSL_Types.LSLFloat(123.45678987);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -128,6 +138,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestCastLSLStringItemToLSLString()
{
TestHelpers.InMethod();
LSL_Types.LSLString testValue = new LSL_Types.LSLString("hello there");
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -140,6 +152,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestCastVector3ItemToVector3()
{
TestHelpers.InMethod();
LSL_Types.Vector3 testValue = new LSL_Types.Vector3(12.34, 56.987654, 0.00987);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -151,6 +165,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestCastQuaternionItemToQuaternion()
{
TestHelpers.InMethod();
LSL_Types.Quaternion testValue = new LSL_Types.Quaternion(12.34, 56.44323, 765.983421, 0.00987);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -165,6 +181,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetLSLIntegerItemForLSLIntegerItem()
{
TestHelpers.InMethod();
LSL_Types.LSLInteger testValue = new LSL_Types.LSLInteger(999911);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -177,6 +195,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetLSLFloatItemForLSLFloatItem()
{
TestHelpers.InMethod();
LSL_Types.LSLFloat testValue = new LSL_Types.LSLFloat(321.45687876);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -189,11 +209,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetLSLFloatItemForLSLIntegerItem()
{
LSL_Types.LSLInteger testValue = new LSL_Types.LSLInteger(3060987);
LSL_Types.LSLFloat testFloatValue = new LSL_Types.LSLFloat(testValue);
LSL_Types.list testList = new LSL_Types.list(testValue);
TestHelpers.InMethod();
Assert.AreEqual(testFloatValue, testList.GetLSLFloatItem(0));
LSL_Types.LSLInteger testValue = new LSL_Types.LSLInteger(3060987);
LSL_Types.LSLFloat testFloatValue = new LSL_Types.LSLFloat(testValue);
LSL_Types.list testList = new LSL_Types.list(testValue);
Assert.AreEqual(testFloatValue, testList.GetLSLFloatItem(0));
}
/// <summary>
@ -202,6 +224,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetLSLStringItemForLSLStringItem()
{
TestHelpers.InMethod();
LSL_Types.LSLString testValue = new LSL_Types.LSLString("hello all");
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -214,6 +238,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetLSLStringItemForKeyItem()
{
TestHelpers.InMethod();
LSL_Types.key testValue
= new LSL_Types.key("98000000-0000-2222-3333-100000001000");
LSL_Types.LSLString testStringValue = new LSL_Types.LSLString(testValue);
@ -228,6 +254,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetVector3ItemForVector3Item()
{
TestHelpers.InMethod();
LSL_Types.Vector3 testValue = new LSL_Types.Vector3(92.34, 58.98754, -0.10987);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -239,6 +267,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetQuaternionItemForQuaternionItem()
{
TestHelpers.InMethod();
LSL_Types.Quaternion testValue = new LSL_Types.Quaternion(12.64, 59.43723, 765.3421, 4.00987);
LSL_Types.list testList = new LSL_Types.list(testValue);
@ -251,6 +281,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
[Test]
public void TestGetKeyItemForKeyItem()
{
TestHelpers.InMethod();
LSL_Types.key testValue
= new LSL_Types.key("00000000-0000-2222-3333-100000001012");
LSL_Types.list testList = new LSL_Types.list(testValue);

View File

@ -32,16 +32,17 @@ using OpenSim.Region.ScriptEngine.Shared;
namespace OpenSim.Region.ScriptEngine.Shared.Tests
{
/// <summary>
/// Tests for Vector3
/// </summary>
[TestFixture]
public class LSL_TypesTestVector3
{
/// <summary>
/// Tests for Vector3
/// </summary>
[Test]
public void TestDotProduct()
{
TestHelpers.InMethod();
// The numbers we test for.
Dictionary<string, double> expectsSet = new Dictionary<string, double>();
expectsSet.Add("<1, 2, 3> * <2, 3, 4>", 20.0);

View File

@ -50,7 +50,10 @@ using OpenSim.Region.ScriptEngine.Shared;
using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
using OpenSim.Region.ScriptEngine.Shared.CodeTools;
using OpenSim.Region.ScriptEngine.Shared.Instance;
using OpenSim.Region.ScriptEngine.Shared.Api;
using OpenSim.Region.ScriptEngine.Shared.Api.Plugins;
using OpenSim.Region.ScriptEngine.Interfaces;
using Timer = OpenSim.Region.ScriptEngine.Shared.Api.Plugins.Timer;
using ScriptCompileQueue = OpenSim.Framework.LocklessQueue<object[]>;
@ -454,6 +457,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
sb.AppendFormat("Work items waiting : {0}\n", m_ThreadPool.WaitingCallbacks);
// sb.AppendFormat("Assemblies loaded : {0}\n", m_Assemblies.Count);
SensorRepeat sr = AsyncCommandManager.GetSensorRepeatPlugin(this);
sb.AppendFormat("Sensors : {0}\n", sr.SensorsCount);
Dataserver ds = AsyncCommandManager.GetDataserverPlugin(this);
sb.AppendFormat("Dataserver requests : {0}\n", ds.DataserverRequestsCount);
Timer t = AsyncCommandManager.GetTimerPlugin(this);
sb.AppendFormat("Timers : {0}\n", t.TimersCount);
Listener l = AsyncCommandManager.GetListenerPlugin(this);
sb.AppendFormat("Listeners : {0}\n", l.ListenerCount);
MainConsole.Instance.OutputFormat(sb.ToString());
}

View File

@ -75,6 +75,10 @@ namespace OpenSim.Tests.Torture
[TestFixtureTearDown]
public void TearDown()
{
scene.Close();
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;

View File

@ -156,11 +156,6 @@ namespace OpenSim.Tests.Torture
// objects will be clean up by the garbage collector before the next stress test is run.
scene.Update();
// Currently, we need to do this in order to garbage collect the scene objects ready for the next test run.
// However, what we really need to do is find out why the entire scene is not garbage collected in
// teardown.
scene.DeleteAllSceneObjects();
Console.WriteLine(
"Took {0}ms, {1}MB ({2} - {3}) to create {4} objects each containing {5} prim(s)",
Math.Round(elapsed.TotalMilliseconds),
@ -170,7 +165,8 @@ namespace OpenSim.Tests.Torture
objectsToAdd,
primsInEachObject);
scene = null;
scene.Close();
// scene = null;
}
}
}

View File

@ -91,6 +91,14 @@ namespace OpenSim.Tests.Torture
m_scene.StartScripts();
}
[TearDown]
public void TearDown()
{
m_scene.Close();
GC.Collect();
GC.WaitForPendingFinalizers();
}
[Test]
public void TestCompileAndStart100Scripts()
{