aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-01-22 01:23:10 +0000
committerJustin Clark-Casey (justincc)2013-01-22 01:23:10 +0000
commitc6ba27d096a3008bc0128aebddf4d2e9708d2498 (patch)
treedb37f203009f1d9a017c9d90249782cc53c1a977 /OpenSim/Region/ScriptEngine
parentfactor out common code in existing co-op termination regression tests (diff)
downloadopensim-SC_OLD-c6ba27d096a3008bc0128aebddf4d2e9708d2498.zip
opensim-SC_OLD-c6ba27d096a3008bc0128aebddf4d2e9708d2498.tar.gz
opensim-SC_OLD-c6ba27d096a3008bc0128aebddf4d2e9708d2498.tar.bz2
opensim-SC_OLD-c6ba27d096a3008bc0128aebddf4d2e9708d2498.tar.xz
Fix bug in generating termination checks in compound statement for loop.
Add regression test for this case.
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs28
2 files changed, 27 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs
index 002f9b8..985e598 100644
--- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs
@@ -445,7 +445,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
445 if (previousSymbol is GlobalFunctionDefinition 445 if (previousSymbol is GlobalFunctionDefinition
446 || previousSymbol is WhileStatement 446 || previousSymbol is WhileStatement
447 || previousSymbol is DoWhileStatement 447 || previousSymbol is DoWhileStatement
448 || previousSymbol is ForLoopStatement 448 || previousSymbol is ForLoop
449 || previousSymbol is StateEvent) 449 || previousSymbol is StateEvent)
450 retstr += GenerateIndentedLine(m_coopTerminationCheck); 450 retstr += GenerateIndentedLine(m_coopTerminationCheck);
451 } 451 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs
index 952ae40..c83a6ba 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs
@@ -76,12 +76,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance.Tests
76 xEngineConfig.Set("AppDomainLoading", "false"); 76 xEngineConfig.Set("AppDomainLoading", "false");
77 77
78 xEngineConfig.Set("ScriptStopStrategy", "co-op"); 78 xEngineConfig.Set("ScriptStopStrategy", "co-op");
79 xEngineConfig.Set("WriteScriptSourceToDebugFile", true);
79 80
80 // This is not currently used at all for co-op termination. Bumping up to demonstrate that co-op termination 81 // This is not currently used at all for co-op termination. Bumping up to demonstrate that co-op termination
81 // has an effect - without it tests will fail due to a 120 second wait for the event to finish. 82 // has an effect - without it tests will fail due to a 120 second wait for the event to finish.
82 xEngineConfig.Set("WaitForEventCompletionOnScriptStop", 120000); 83 xEngineConfig.Set("WaitForEventCompletionOnScriptStop", 120000);
83 84
84 m_scene = new SceneHelpers().SetupScene("My Test", UUID.Random(), 1000, 1000, configSource); 85 m_scene = new SceneHelpers().SetupScene("My Test", TestHelpers.ParseTail(0x9999), 1000, 1000, configSource);
85 SceneHelpers.SetupSceneModules(m_scene, configSource, m_xEngine); 86 SceneHelpers.SetupSceneModules(m_scene, configSource, m_xEngine);
86 m_scene.StartScripts(); 87 m_scene.StartScripts();
87 } 88 }
@@ -113,7 +114,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance.Tests
113 } 114 }
114 115
115 [Test] 116 [Test]
116 public void TestStopOnLongForLoop() 117 public void TestStopOnLongSingleStatementForLoop()
117 { 118 {
118 TestHelpers.InMethod(); 119 TestHelpers.InMethod();
119// TestHelpers.EnableLogging(); 120// TestHelpers.EnableLogging();
@@ -133,6 +134,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance.Tests
133 TestStop(script); 134 TestStop(script);
134 } 135 }
135 136
137 [Test]
138 public void TestStopOnLongCompoundStatementForLoop()
139 {
140 TestHelpers.InMethod();
141// TestHelpers.EnableLogging();
142
143 string script =
144@"default
145{
146 state_entry()
147 {
148 llSay(0, ""Thin Lizzy"");
149 integer i = 0;
150 for (i = 0; i < 2147483647; i++)
151 {
152 llSay(0, ""Iter "" + (string)i);
153 }
154 }
155}";
156
157 TestStop(script);
158 }
159
136 private void TestStop(string script) 160 private void TestStop(string script)
137 { 161 {
138 UUID userId = TestHelpers.ParseTail(0x1); 162 UUID userId = TestHelpers.ParseTail(0x1);