aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDiva Canto2013-02-28 14:20:31 -0800
committerDiva Canto2013-02-28 14:20:31 -0800
commit433102108b903669cef632feff871fe9bc37021c (patch)
treed530ec4b8164d569a8064b0beaef37cde2f279ae
parentBug fix in DataSnapshot, where a var was being used before being initialized. (diff)
parentFix potential concurrency issue since the LSL notecard cache was not being ch... (diff)
downloadopensim-SC-433102108b903669cef632feff871fe9bc37021c.zip
opensim-SC-433102108b903669cef632feff871fe9bc37021c.tar.gz
opensim-SC-433102108b903669cef632feff871fe9bc37021c.tar.bz2
opensim-SC-433102108b903669cef632feff871fe9bc37021c.tar.xz
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs43
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiNotecardTests.cs270
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs2
-rw-r--r--OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs32
-rw-r--r--OpenSim/Tests/Common/Mock/MockScriptEngine.cs31
-rw-r--r--OpenSim/Tests/Common/TestHelpers.cs21
-rw-r--r--OpenSim/Tests/ConfigurationLoaderTest.cs2
9 files changed, 366 insertions, 43 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
index df819ec..6e0ea7d 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
@@ -130,7 +130,7 @@ namespace OpenSim.Region.Framework.Tests
130 SceneObjectPart sop1 = sog1.RootPart; 130 SceneObjectPart sop1 = sog1.RootPart;
131 TaskInventoryItem sopItem1 131 TaskInventoryItem sopItem1
132 = TaskInventoryHelpers.AddNotecard( 132 = TaskInventoryHelpers.AddNotecard(
133 scene, sop1, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900)); 133 scene, sop1, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900), "Hello World!");
134 134
135 InventoryFolderBase folder 135 InventoryFolderBase folder
136 = InventoryArchiveUtils.FindFoldersByPath(scene.InventoryService, user1.PrincipalID, "Objects")[0]; 136 = InventoryArchiveUtils.FindFoldersByPath(scene.InventoryService, user1.PrincipalID, "Objects")[0];
@@ -162,7 +162,7 @@ namespace OpenSim.Region.Framework.Tests
162 SceneObjectPart sop1 = sog1.RootPart; 162 SceneObjectPart sop1 = sog1.RootPart;
163 TaskInventoryItem sopItem1 163 TaskInventoryItem sopItem1
164 = TaskInventoryHelpers.AddNotecard( 164 = TaskInventoryHelpers.AddNotecard(
165 scene, sop1, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900)); 165 scene, sop1, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900), "Hello World!");
166 166
167 // Perform test 167 // Perform test
168 scene.MoveTaskInventoryItem(user1.PrincipalID, UUID.Zero, sop1, sopItem1.ItemID); 168 scene.MoveTaskInventoryItem(user1.PrincipalID, UUID.Zero, sop1, sopItem1.ItemID);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 6a31568..ab087af 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -10806,14 +10806,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10806 return UUID.Zero.ToString(); 10806 return UUID.Zero.ToString();
10807 } 10807 }
10808 10808
10809 string reqIdentifier = UUID.Random().ToString();
10810
10809 // was: UUID tid = tid = AsyncCommands. 10811 // was: UUID tid = tid = AsyncCommands.
10810 UUID tid = AsyncCommands.DataserverPlugin.RegisterRequest(m_host.LocalId, m_item.ItemID, assetID.ToString()); 10812 UUID tid = AsyncCommands.DataserverPlugin.RegisterRequest(m_host.LocalId, m_item.ItemID, reqIdentifier);
10811 10813
10812 if (NotecardCache.IsCached(assetID)) 10814 if (NotecardCache.IsCached(assetID))
10813 { 10815 {
10814 AsyncCommands. 10816 AsyncCommands.DataserverPlugin.DataserverReply(reqIdentifier, NotecardCache.GetLines(assetID).ToString());
10815 DataserverPlugin.DataserverReply(assetID.ToString(), 10817
10816 NotecardCache.GetLines(assetID).ToString());
10817 ScriptSleep(100); 10818 ScriptSleep(100);
10818 return tid.ToString(); 10819 return tid.ToString();
10819 } 10820 }
@@ -10829,9 +10830,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10829 string data = Encoding.UTF8.GetString(a.Data); 10830 string data = Encoding.UTF8.GetString(a.Data);
10830 //m_log.Debug(data); 10831 //m_log.Debug(data);
10831 NotecardCache.Cache(id, data); 10832 NotecardCache.Cache(id, data);
10832 AsyncCommands. 10833 AsyncCommands.DataserverPlugin.DataserverReply(reqIdentifier, NotecardCache.GetLines(id).ToString());
10833 DataserverPlugin.DataserverReply(id.ToString(),
10834 NotecardCache.GetLines(id).ToString());
10835 }); 10834 });
10836 10835
10837 ScriptSleep(100); 10836 ScriptSleep(100);
@@ -10860,13 +10859,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10860 return UUID.Zero.ToString(); 10859 return UUID.Zero.ToString();
10861 } 10860 }
10862 10861
10862 string reqIdentifier = UUID.Random().ToString();
10863
10863 // was: UUID tid = tid = AsyncCommands. 10864 // was: UUID tid = tid = AsyncCommands.
10864 UUID tid = AsyncCommands.DataserverPlugin.RegisterRequest(m_host.LocalId, m_item.ItemID, assetID.ToString()); 10865 UUID tid = AsyncCommands.DataserverPlugin.RegisterRequest(m_host.LocalId, m_item.ItemID, reqIdentifier);
10865 10866
10866 if (NotecardCache.IsCached(assetID)) 10867 if (NotecardCache.IsCached(assetID))
10867 { 10868 {
10868 AsyncCommands.DataserverPlugin.DataserverReply(assetID.ToString(), 10869 AsyncCommands.DataserverPlugin.DataserverReply(
10869 NotecardCache.GetLine(assetID, line, m_notecardLineReadCharsMax)); 10870 reqIdentifier, NotecardCache.GetLine(assetID, line, m_notecardLineReadCharsMax));
10871
10870 ScriptSleep(100); 10872 ScriptSleep(100);
10871 return tid.ToString(); 10873 return tid.ToString();
10872 } 10874 }
@@ -10882,8 +10884,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10882 string data = Encoding.UTF8.GetString(a.Data); 10884 string data = Encoding.UTF8.GetString(a.Data);
10883 //m_log.Debug(data); 10885 //m_log.Debug(data);
10884 NotecardCache.Cache(id, data); 10886 NotecardCache.Cache(id, data);
10885 AsyncCommands.DataserverPlugin.DataserverReply(id.ToString(), 10887 AsyncCommands.DataserverPlugin.DataserverReply(
10886 NotecardCache.GetLine(id, line, m_notecardLineReadCharsMax)); 10888 reqIdentifier, NotecardCache.GetLine(assetID, line, m_notecardLineReadCharsMax));
10887 }); 10889 });
10888 10890
10889 ScriptSleep(100); 10891 ScriptSleep(100);
@@ -11687,7 +11689,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
11687 11689
11688 public static void Cache(UUID assetID, string text) 11690 public static void Cache(UUID assetID, string text)
11689 { 11691 {
11690 CacheCheck(); 11692 CheckCache();
11691 11693
11692 lock (m_Notecards) 11694 lock (m_Notecards)
11693 { 11695 {
@@ -11772,14 +11774,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
11772 return line; 11774 return line;
11773 } 11775 }
11774 11776
11775 public static void CacheCheck() 11777 public static void CheckCache()
11776 { 11778 {
11777 foreach (UUID key in new List<UUID>(m_Notecards.Keys)) 11779 lock (m_Notecards)
11778 { 11780 {
11779 Notecard nc = m_Notecards[key]; 11781 foreach (UUID key in new List<UUID>(m_Notecards.Keys))
11780 if (nc.lastRef.AddSeconds(30) < DateTime.Now) 11782 {
11781 m_Notecards.Remove(key); 11783 Notecard nc = m_Notecards[key];
11784 if (nc.lastRef.AddSeconds(30) < DateTime.Now)
11785 m_Notecards.Remove(key);
11786 }
11782 } 11787 }
11783 } 11788 }
11784 } 11789 }
11785} 11790} \ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs
index 5b57bbe..ac9f93b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs
@@ -93,7 +93,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
93 // FIXME: This should really be a script item (with accompanying script) 93 // FIXME: This should really be a script item (with accompanying script)
94 TaskInventoryItem grp1Item 94 TaskInventoryItem grp1Item
95 = TaskInventoryHelpers.AddNotecard( 95 = TaskInventoryHelpers.AddNotecard(
96 m_scene, grp1.RootPart, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900)); 96 m_scene, grp1.RootPart, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900), "Hello World!");
97 grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS; 97 grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS;
98 98
99 SceneObjectGroup grp2 = SceneHelpers.CreateSceneObject(2, ownerId, "grp2-", 0x20); 99 SceneObjectGroup grp2 = SceneHelpers.CreateSceneObject(2, ownerId, "grp2-", 0x20);
@@ -127,7 +127,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
127 // FIXME: This should really be a script item (with accompanying script) 127 // FIXME: This should really be a script item (with accompanying script)
128 TaskInventoryItem grp1Item 128 TaskInventoryItem grp1Item
129 = TaskInventoryHelpers.AddNotecard( 129 = TaskInventoryHelpers.AddNotecard(
130 m_scene, grp1.RootPart, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900)); 130 m_scene, grp1.RootPart, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900), "Hello World!");
131 131
132 grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS; 132 grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS;
133 133
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiNotecardTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiNotecardTests.cs
new file mode 100644
index 0000000..c92bcdb
--- /dev/null
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiNotecardTests.cs
@@ -0,0 +1,270 @@
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Net;
5using System.Reflection;
6using System.Text;
7using log4net;
8using Nini.Config;
9using NUnit.Framework;
10using OpenMetaverse;
11using OpenSim.Framework;
12using OpenSim.Framework.Servers;
13using OpenSim.Framework.Servers.HttpServer;
14using OpenSim.Region.CoreModules.Scripting.LSLHttp;
15using OpenSim.Region.Framework.Scenes;
16using OpenSim.Region.ScriptEngine.Shared;
17using OpenSim.Region.ScriptEngine.Shared.Api;
18using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
19using OpenSim.Services.Interfaces;
20using OpenSim.Tests.Common;
21using OpenSim.Tests.Common.Mock;
22
23namespace OpenSim.Region.ScriptEngine.Shared.Tests
24{
25 /// <summary>
26 /// Tests for notecard related functions in LSL
27 /// </summary>
28 [TestFixture]
29 public class LSL_ApiNotecardTests : OpenSimTestCase
30 {
31 private Scene m_scene;
32 private MockScriptEngine m_engine;
33
34 private SceneObjectGroup m_so;
35 private TaskInventoryItem m_scriptItem;
36 private LSL_Api m_lslApi;
37
38 [TestFixtureSetUp]
39 public void TestFixtureSetUp()
40 {
41 // Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread.
42 Util.FireAndForgetMethod = FireAndForgetMethod.RegressionTest;
43 }
44
45 [TestFixtureTearDown]
46 public void TestFixureTearDown()
47 {
48 // We must set this back afterwards, otherwise later tests will fail since they're expecting multiple
49 // threads. Possibly, later tests should be rewritten so none of them require async stuff (which regression
50 // tests really shouldn't).
51 Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod;
52 }
53
54 [SetUp]
55 public override void SetUp()
56 {
57 base.SetUp();
58
59 m_engine = new MockScriptEngine();
60
61 m_scene = new SceneHelpers().SetupScene();
62 SceneHelpers.SetupSceneModules(m_scene, new IniConfigSource(), m_engine);
63
64 m_so = SceneHelpers.AddSceneObject(m_scene);
65 m_scriptItem = TaskInventoryHelpers.AddScript(m_scene, m_so.RootPart);
66
67 // This is disconnected from the actual script - the mock engine does not set up any LSL_Api atm.
68 // Possibly this could be done and we could obtain it directly from the MockScriptEngine.
69 m_lslApi = new LSL_Api();
70 m_lslApi.Initialize(m_engine, m_so.RootPart, m_scriptItem, null);
71 }
72
73 [Test]
74 public void TestLlGetNotecardLine()
75 {
76 TestHelpers.InMethod();
77
78 string[] ncLines = { "One", "Two", "Three" };
79
80 TaskInventoryItem ncItem
81 = TaskInventoryHelpers.AddNotecard(m_scene, m_so.RootPart, "nc", "1", "10", string.Join("\n", ncLines));
82
83 AssertValidNotecardLine(ncItem.Name, 0, ncLines[0]);
84 AssertValidNotecardLine(ncItem.Name, 2, ncLines[2]);
85 AssertValidNotecardLine(ncItem.Name, 3, ScriptBaseClass.EOF);
86 AssertValidNotecardLine(ncItem.Name, 4, ScriptBaseClass.EOF);
87
88 // XXX: Is this correct or do we really expect no dataserver event to fire at all?
89 AssertValidNotecardLine(ncItem.Name, -1, "");
90 AssertValidNotecardLine(ncItem.Name, -2, "");
91 }
92
93 [Test]
94 public void TestLlGetNotecardLine_NoNotecard()
95 {
96 TestHelpers.InMethod();
97
98 AssertInValidNotecardLine("nc", 0);
99 }
100
101 [Test]
102 public void TestLlGetNotecardLine_NotANotecard()
103 {
104 TestHelpers.InMethod();
105
106 TaskInventoryItem ncItem = TaskInventoryHelpers.AddScript(m_scene, m_so.RootPart, "nc1", "Not important");
107
108 AssertInValidNotecardLine(ncItem.Name, 0);
109 }
110
111 private void AssertValidNotecardLine(string ncName, int lineNumber, string assertLine)
112 {
113 string key = m_lslApi.llGetNotecardLine(ncName, lineNumber);
114 Assert.That(key, Is.Not.EqualTo(UUID.Zero.ToString()));
115
116 Assert.That(m_engine.PostedEvents.Count, Is.EqualTo(1));
117 Assert.That(m_engine.PostedEvents.ContainsKey(m_scriptItem.ItemID));
118
119 List<EventParams> events = m_engine.PostedEvents[m_scriptItem.ItemID];
120 Assert.That(events.Count, Is.EqualTo(1));
121 EventParams eventParams = events[0];
122
123 Assert.That(eventParams.EventName, Is.EqualTo("dataserver"));
124 Assert.That(eventParams.Params[0].ToString(), Is.EqualTo(key));
125 Assert.That(eventParams.Params[1].ToString(), Is.EqualTo(assertLine));
126
127 m_engine.ClearPostedEvents();
128 }
129
130 private void AssertInValidNotecardLine(string ncName, int lineNumber)
131 {
132 string key = m_lslApi.llGetNotecardLine(ncName, lineNumber);
133 Assert.That(key, Is.EqualTo(UUID.Zero.ToString()));
134
135 Assert.That(m_engine.PostedEvents.Count, Is.EqualTo(0));
136 }
137
138// [Test]
139// public void TestLlReleaseUrl()
140// {
141// TestHelpers.InMethod();
142//
143// m_lslApi.llRequestURL();
144// string returnedUri = m_engine.PostedEvents[m_scriptItem.ItemID][0].Params[2].ToString();
145//
146// {
147// // Check that the initial number of URLs is correct
148// Assert.That(m_lslApi.llGetFreeURLs().value, Is.EqualTo(m_urlModule.TotalUrls - 1));
149// }
150//
151// {
152// // Check releasing a non-url
153// m_lslApi.llReleaseURL("GARBAGE");
154// Assert.That(m_lslApi.llGetFreeURLs().value, Is.EqualTo(m_urlModule.TotalUrls - 1));
155// }
156//
157// {
158// // Check releasing a non-existing url
159// m_lslApi.llReleaseURL("http://example.com");
160// Assert.That(m_lslApi.llGetFreeURLs().value, Is.EqualTo(m_urlModule.TotalUrls - 1));
161// }
162//
163// {
164// // Check URL release
165// m_lslApi.llReleaseURL(returnedUri);
166// Assert.That(m_lslApi.llGetFreeURLs().value, Is.EqualTo(m_urlModule.TotalUrls));
167//
168// HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(returnedUri);
169//
170// bool gotExpectedException = false;
171//
172// try
173// {
174// using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
175// {}
176// }
177// catch (WebException e)
178// {
179// using (HttpWebResponse response = (HttpWebResponse)e.Response)
180// gotExpectedException = response.StatusCode == HttpStatusCode.NotFound;
181// }
182//
183// Assert.That(gotExpectedException, Is.True);
184// }
185//
186// {
187// // Check releasing the same URL again
188// m_lslApi.llReleaseURL(returnedUri);
189// Assert.That(m_lslApi.llGetFreeURLs().value, Is.EqualTo(m_urlModule.TotalUrls));
190// }
191// }
192//
193// [Test]
194// public void TestLlRequestUrl()
195// {
196// TestHelpers.InMethod();
197//
198// string requestId = m_lslApi.llRequestURL();
199// Assert.That(requestId, Is.Not.EqualTo(UUID.Zero.ToString()));
200// string returnedUri;
201//
202// {
203// // Check that URL is correctly set up
204// Assert.That(m_lslApi.llGetFreeURLs().value, Is.EqualTo(m_urlModule.TotalUrls - 1));
205//
206// Assert.That(m_engine.PostedEvents.ContainsKey(m_scriptItem.ItemID));
207//
208// List<EventParams> events = m_engine.PostedEvents[m_scriptItem.ItemID];
209// Assert.That(events.Count, Is.EqualTo(1));
210// EventParams eventParams = events[0];
211// Assert.That(eventParams.EventName, Is.EqualTo("http_request"));
212//
213// UUID returnKey;
214// string rawReturnKey = eventParams.Params[0].ToString();
215// string method = eventParams.Params[1].ToString();
216// returnedUri = eventParams.Params[2].ToString();
217//
218// Assert.That(UUID.TryParse(rawReturnKey, out returnKey), Is.True);
219// Assert.That(method, Is.EqualTo(ScriptBaseClass.URL_REQUEST_GRANTED));
220// Assert.That(Uri.IsWellFormedUriString(returnedUri, UriKind.Absolute), Is.True);
221// }
222//
223// {
224// // Check that request to URL works.
225// string testResponse = "Hello World";
226//
227// m_engine.ClearPostedEvents();
228// m_engine.PostEventHook
229// += (itemId, evp) => m_lslApi.llHTTPResponse(evp.Params[0].ToString(), 200, testResponse);
230//
231//// Console.WriteLine("Trying {0}", returnedUri);
232// HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(returnedUri);
233//
234// AssertHttpResponse(returnedUri, testResponse);
235//
236// Assert.That(m_engine.PostedEvents.ContainsKey(m_scriptItem.ItemID));
237//
238// List<EventParams> events = m_engine.PostedEvents[m_scriptItem.ItemID];
239// Assert.That(events.Count, Is.EqualTo(1));
240// EventParams eventParams = events[0];
241// Assert.That(eventParams.EventName, Is.EqualTo("http_request"));
242//
243// UUID returnKey;
244// string rawReturnKey = eventParams.Params[0].ToString();
245// string method = eventParams.Params[1].ToString();
246// string body = eventParams.Params[2].ToString();
247//
248// Assert.That(UUID.TryParse(rawReturnKey, out returnKey), Is.True);
249// Assert.That(method, Is.EqualTo("GET"));
250// Assert.That(body, Is.EqualTo(""));
251// }
252// }
253//
254// private void AssertHttpResponse(string uri, string expectedResponse)
255// {
256// HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
257//
258// using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
259// {
260// using (Stream stream = webResponse.GetResponseStream())
261// {
262// using (StreamReader reader = new StreamReader(stream))
263// {
264// Assert.That(reader.ReadToEnd(), Is.EqualTo(expectedResponse));
265// }
266// }
267// }
268// }
269 }
270} \ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs
index b2803a1..e422f5b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs
@@ -151,7 +151,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
151 151
152 // Create an object embedded inside the first 152 // Create an object embedded inside the first
153 TaskInventoryHelpers.AddNotecard( 153 TaskInventoryHelpers.AddNotecard(
154 m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, TestHelpers.ParseTail(0x900)); 154 m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, TestHelpers.ParseTail(0x900), "Hello World!");
155 155
156 bool exceptionCaught = false; 156 bool exceptionCaught = false;
157 157
diff --git a/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs b/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs
index 0a2b30a..bb4b55f 100644
--- a/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs
@@ -46,13 +46,32 @@ namespace OpenSim.Tests.Common
46 /// <param name="scene"></param> 46 /// <param name="scene"></param>
47 /// <param name="part"></param> 47 /// <param name="part"></param>
48 /// <param name="itemName"></param> 48 /// <param name="itemName"></param>
49 /// <param name="itemIDFrag">UUID or UUID stem</param>
50 /// <param name="assetIDFrag">UUID or UUID stem</param>
51 /// <param name="text">The tex to put in the notecard.</param>
52 /// <returns>The item that was added</returns>
53 public static TaskInventoryItem AddNotecard(
54 Scene scene, SceneObjectPart part, string itemName, string itemIDStem, string assetIDStem, string text)
55 {
56 return AddNotecard(
57 scene, part, itemName, TestHelpers.ParseStem(itemIDStem), TestHelpers.ParseStem(assetIDStem), text);
58 }
59
60 /// <summary>
61 /// Add a notecard item to the given part.
62 /// </summary>
63 /// <param name="scene"></param>
64 /// <param name="part"></param>
65 /// <param name="itemName"></param>
49 /// <param name="itemID"></param> 66 /// <param name="itemID"></param>
50 /// <param name="assetID"></param> 67 /// <param name="assetID"></param>
68 /// <param name="text">The tex to put in the notecard.</param>
51 /// <returns>The item that was added</returns> 69 /// <returns>The item that was added</returns>
52 public static TaskInventoryItem AddNotecard(Scene scene, SceneObjectPart part, string itemName, UUID itemID, UUID assetID) 70 public static TaskInventoryItem AddNotecard(
71 Scene scene, SceneObjectPart part, string itemName, UUID itemID, UUID assetID, string text)
53 { 72 {
54 AssetNotecard nc = new AssetNotecard(); 73 AssetNotecard nc = new AssetNotecard();
55 nc.BodyText = "Hello World!"; 74 nc.BodyText = text;
56 nc.Encode(); 75 nc.Encode();
57 76
58 AssetBase ncAsset 77 AssetBase ncAsset
@@ -87,8 +106,8 @@ namespace OpenSim.Tests.Common
87 /// Add a simple script to the given part. 106 /// Add a simple script to the given part.
88 /// </summary> 107 /// </summary>
89 /// <remarks> 108 /// <remarks>
90 /// TODO: Accept input for item and asset IDs to avoid mysterious script failures that try to use any of these 109 /// TODO: Accept input for item and asset IDs so that we have completely replicatable regression tests rather
91 /// functions more than once in a test. 110 /// than a random component.
92 /// </remarks> 111 /// </remarks>
93 /// <param name="scene"></param> 112 /// <param name="scene"></param>
94 /// <param name="part"></param> 113 /// <param name="part"></param>
@@ -102,8 +121,9 @@ namespace OpenSim.Tests.Common
102 ast.Source = scriptSource; 121 ast.Source = scriptSource;
103 ast.Encode(); 122 ast.Encode();
104 123
105 UUID assetUuid = new UUID("00000000-0000-0000-1000-000000000000"); 124 UUID assetUuid = UUID.Random();
106 UUID itemUuid = new UUID("00000000-0000-0000-1100-000000000000"); 125 UUID itemUuid = UUID.Random();
126
107 AssetBase asset 127 AssetBase asset
108 = AssetHelpers.CreateAsset(assetUuid, AssetType.LSLText, ast.AssetData, UUID.Zero); 128 = AssetHelpers.CreateAsset(assetUuid, AssetType.LSLText, ast.AssetData, UUID.Zero);
109 scene.AssetService.Store(asset); 129 scene.AssetService.Store(asset);
diff --git a/OpenSim/Tests/Common/Mock/MockScriptEngine.cs b/OpenSim/Tests/Common/Mock/MockScriptEngine.cs
index 6a53fe7..b444241 100644
--- a/OpenSim/Tests/Common/Mock/MockScriptEngine.cs
+++ b/OpenSim/Tests/Common/Mock/MockScriptEngine.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using System.Reflection; 31using System.Reflection;
32using Nini.Config; 32using Nini.Config;
33using OpenMetaverse; 33using OpenMetaverse;
34using OpenSim.Framework;
34using OpenSim.Region.Framework.Interfaces; 35using OpenSim.Region.Framework.Interfaces;
35using OpenSim.Region.Framework.Scenes; 36using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.ScriptEngine.Interfaces; 37using OpenSim.Region.ScriptEngine.Interfaces;
@@ -110,8 +111,11 @@ namespace OpenSim.Tests.Common
110 { 111 {
111// Console.WriteLine("Posting event {0} for {1}", name, itemID); 112// Console.WriteLine("Posting event {0} for {1}", name, itemID);
112 113
113 EventParams evParams = new EventParams(name, args, null); 114 return PostScriptEvent(itemID, new EventParams(name, args, null));
115 }
114 116
117 public bool PostScriptEvent(UUID itemID, EventParams evParams)
118 {
115 List<EventParams> eventsForItem; 119 List<EventParams> eventsForItem;
116 120
117 if (!PostedEvents.ContainsKey(itemID)) 121 if (!PostedEvents.ContainsKey(itemID))
@@ -132,9 +136,22 @@ namespace OpenSim.Tests.Common
132 return true; 136 return true;
133 } 137 }
134 138
139 public bool PostObjectEvent(uint localID, EventParams evParams)
140 {
141 return PostObjectEvent(m_scene.GetSceneObjectPart(localID), evParams);
142 }
143
135 public bool PostObjectEvent(UUID itemID, string name, object[] args) 144 public bool PostObjectEvent(UUID itemID, string name, object[] args)
136 { 145 {
137 throw new System.NotImplementedException (); 146 return PostObjectEvent(m_scene.GetSceneObjectPart(itemID), new EventParams(name, args, null));
147 }
148
149 private bool PostObjectEvent(SceneObjectPart part, EventParams evParams)
150 {
151 foreach (TaskInventoryItem item in part.Inventory.GetInventoryItems(InventoryType.LSL))
152 PostScriptEvent(item.ItemID, evParams);
153
154 return true;
138 } 155 }
139 156
140 public void SuspendScript(UUID itemID) 157 public void SuspendScript(UUID itemID)
@@ -187,16 +204,6 @@ namespace OpenSim.Tests.Common
187 throw new System.NotImplementedException (); 204 throw new System.NotImplementedException ();
188 } 205 }
189 206
190 public bool PostScriptEvent(UUID itemID,EventParams parms)
191 {
192 throw new System.NotImplementedException ();
193 }
194
195 public bool PostObjectEvent (uint localID, EventParams parms)
196 {
197 throw new System.NotImplementedException ();
198 }
199
200 public DetectParams GetDetectParams(UUID item, int number) 207 public DetectParams GetDetectParams(UUID item, int number)
201 { 208 {
202 throw new System.NotImplementedException (); 209 throw new System.NotImplementedException ();
diff --git a/OpenSim/Tests/Common/TestHelpers.cs b/OpenSim/Tests/Common/TestHelpers.cs
index 57da802..a684d72 100644
--- a/OpenSim/Tests/Common/TestHelpers.cs
+++ b/OpenSim/Tests/Common/TestHelpers.cs
@@ -114,6 +114,27 @@ namespace OpenSim.Tests.Common
114 } 114 }
115 115
116 /// <summary> 116 /// <summary>
117 /// Parse a UUID stem into a full UUID.
118 /// </summary>
119 /// <remarks>
120 /// Yes, this is completely inconsistent with ParseTail but this is probably a better way to do it,
121 /// UUIDs are conceptually not hexadecmial numbers.
122 /// The fragment will come at the start of the UUID. The rest will be 0s
123 /// </remarks>
124 /// <returns></returns>
125 /// <param name='frag'>
126 /// A UUID fragment that will be parsed into a full UUID. Therefore, it can only contain
127 /// cahracters which are valid in a UUID, except for "-" which is currently only allowed if a full UUID is
128 /// given as the 'fragment'.
129 /// </param>
130 public static UUID ParseStem(string stem)
131 {
132 string rawUuid = stem.PadRight(32, '0');
133
134 return UUID.Parse(rawUuid);
135 }
136
137 /// <summary>
117 /// Parse tail section into full UUID. 138 /// Parse tail section into full UUID.
118 /// </summary> 139 /// </summary>
119 /// <param name="tail"></param> 140 /// <param name="tail"></param>
diff --git a/OpenSim/Tests/ConfigurationLoaderTest.cs b/OpenSim/Tests/ConfigurationLoaderTest.cs
index 9d63324..a409a13 100644
--- a/OpenSim/Tests/ConfigurationLoaderTest.cs
+++ b/OpenSim/Tests/ConfigurationLoaderTest.cs
@@ -45,7 +45,7 @@ namespace OpenSim.Tests
45 /// Set up a test directory. 45 /// Set up a test directory.
46 /// </summary> 46 /// </summary>
47 [SetUp] 47 [SetUp]
48 public void SetUp() 48 public override void SetUp()
49 { 49 {
50 base.SetUp(); 50 base.SetUp();
51 51