diff --git a/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs b/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs
index fd152c35d2..85e5cc65f1 100644
--- a/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs
+++ b/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Capabilities.Handlers.GetTexture.Tests
TestHelpers.InMethod();
// Overkill - we only really need the asset service, not a whole scene.
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
GetTextureHandler handler = new GetTextureHandler(null, scene.AssetService);
TestOSHttpRequest req = new TestOSHttpRequest();
diff --git a/OpenSim/Framework/SLUtil.cs b/OpenSim/Framework/SLUtil.cs
index db4541ef1a..537de7ab15 100644
--- a/OpenSim/Framework/SLUtil.cs
+++ b/OpenSim/Framework/SLUtil.cs
@@ -38,239 +38,189 @@ namespace OpenSim.Framework
public static class SLUtil
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
+
#region SL / file extension / content-type conversions
+ private class TypeMapping
+ {
+ private sbyte assetType;
+ private InventoryType inventoryType;
+ private string contentType;
+ private string contentType2;
+ private string extension;
+
+ public sbyte AssetTypeCode
+ {
+ get { return assetType; }
+ }
+
+ public object AssetType
+ {
+ get {
+ if (Enum.IsDefined(typeof(OpenMetaverse.AssetType), assetType))
+ return (OpenMetaverse.AssetType)assetType;
+ else
+ return OpenMetaverse.AssetType.Unknown;
+ }
+ }
+
+ public InventoryType InventoryType
+ {
+ get { return inventoryType; }
+ }
+
+ public string ContentType
+ {
+ get { return contentType; }
+ }
+
+ public string ContentType2
+ {
+ get { return contentType2; }
+ }
+
+ public string Extension
+ {
+ get { return extension; }
+ }
+
+ private TypeMapping(sbyte assetType, InventoryType inventoryType, string contentType, string contentType2, string extension)
+ {
+ this.assetType = assetType;
+ this.inventoryType = inventoryType;
+ this.contentType = contentType;
+ this.contentType2 = contentType2;
+ this.extension = extension;
+ }
+
+ public TypeMapping(AssetType assetType, InventoryType inventoryType, string contentType, string contentType2, string extension)
+ : this((sbyte)assetType, inventoryType, contentType, contentType2, extension)
+ {
+ }
+
+ public TypeMapping(AssetType assetType, InventoryType inventoryType, string contentType, string extension)
+ : this((sbyte)assetType, inventoryType, contentType, null, extension)
+ {
+ }
+ }
+
+ ///
+ /// Maps between AssetType, InventoryType and Content-Type.
+ /// Where more than one possibility exists, the first one takes precedence. E.g.:
+ /// AssetType "AssetType.Texture" -> Content-Type "image-xj2c"
+ /// Content-Type "image/x-j2c" -> InventoryType "InventoryType.Texture"
+ ///
+ private static TypeMapping[] MAPPINGS = new TypeMapping[] {
+ new TypeMapping(AssetType.Unknown, InventoryType.Unknown, "application/octet-stream", "bin"),
+ new TypeMapping(AssetType.Texture, InventoryType.Texture, "image/x-j2c", "image/jp2", "j2c"),
+ new TypeMapping(AssetType.Texture, InventoryType.Snapshot, "image/x-j2c", "image/jp2", "j2c"),
+ new TypeMapping(AssetType.TextureTGA, InventoryType.Texture, "image/tga", "tga"),
+ new TypeMapping(AssetType.ImageTGA, InventoryType.Texture, "image/tga", "tga"),
+ new TypeMapping(AssetType.ImageJPEG, InventoryType.Texture, "image/jpeg", "jpg"),
+ new TypeMapping(AssetType.Sound, InventoryType.Sound, "audio/ogg", "application/ogg", "ogg"),
+ new TypeMapping(AssetType.SoundWAV, InventoryType.Sound, "audio/x-wav", "wav"),
+ new TypeMapping(AssetType.CallingCard, InventoryType.CallingCard, "application/vnd.ll.callingcard", "application/x-metaverse-callingcard", "callingcard"),
+ new TypeMapping(AssetType.Landmark, InventoryType.Landmark, "application/vnd.ll.landmark", "application/x-metaverse-landmark", "landmark"),
+ new TypeMapping(AssetType.Clothing, InventoryType.Wearable, "application/vnd.ll.clothing", "application/x-metaverse-clothing", "clothing"),
+ new TypeMapping(AssetType.Object, InventoryType.Object, "application/vnd.ll.primitive", "application/x-metaverse-primitive", "primitive"),
+ new TypeMapping(AssetType.Object, InventoryType.Attachment, "application/vnd.ll.primitive", "application/x-metaverse-primitive", "primitive"),
+ new TypeMapping(AssetType.Notecard, InventoryType.Notecard, "application/vnd.ll.notecard", "application/x-metaverse-notecard", "notecard"),
+ new TypeMapping(AssetType.Folder, InventoryType.Folder, "application/vnd.ll.folder", "folder"),
+ new TypeMapping(AssetType.RootFolder, InventoryType.RootCategory, "application/vnd.ll.rootfolder", "rootfolder"),
+ new TypeMapping(AssetType.LSLText, InventoryType.LSL, "application/vnd.ll.lsltext", "application/x-metaverse-lsl", "lsl"),
+ new TypeMapping(AssetType.LSLBytecode, InventoryType.LSL, "application/vnd.ll.lslbyte", "application/x-metaverse-lso", "lso"),
+ new TypeMapping(AssetType.Bodypart, InventoryType.Wearable, "application/vnd.ll.bodypart", "application/x-metaverse-bodypart", "bodypart"),
+ new TypeMapping(AssetType.TrashFolder, InventoryType.Folder, "application/vnd.ll.trashfolder", "trashfolder"),
+ new TypeMapping(AssetType.SnapshotFolder, InventoryType.Folder, "application/vnd.ll.snapshotfolder", "snapshotfolder"),
+ new TypeMapping(AssetType.LostAndFoundFolder, InventoryType.Folder, "application/vnd.ll.lostandfoundfolder", "lostandfoundfolder"),
+ new TypeMapping(AssetType.Animation, InventoryType.Animation, "application/vnd.ll.animation", "application/x-metaverse-animation", "animation"),
+ new TypeMapping(AssetType.Gesture, InventoryType.Gesture, "application/vnd.ll.gesture", "application/x-metaverse-gesture", "gesture"),
+ new TypeMapping(AssetType.Simstate, InventoryType.Snapshot, "application/x-metaverse-simstate", "simstate"),
+ new TypeMapping(AssetType.FavoriteFolder, InventoryType.Unknown, "application/vnd.ll.favoritefolder", "favoritefolder"),
+ new TypeMapping(AssetType.Link, InventoryType.Unknown, "application/vnd.ll.link", "link"),
+ new TypeMapping(AssetType.LinkFolder, InventoryType.Unknown, "application/vnd.ll.linkfolder", "linkfolder"),
+ new TypeMapping(AssetType.CurrentOutfitFolder, InventoryType.Unknown, "application/vnd.ll.currentoutfitfolder", "currentoutfitfolder"),
+ new TypeMapping(AssetType.OutfitFolder, InventoryType.Unknown, "application/vnd.ll.outfitfolder", "outfitfolder"),
+ new TypeMapping(AssetType.MyOutfitsFolder, InventoryType.Unknown, "application/vnd.ll.myoutfitsfolder", "myoutfitsfolder"),
+ new TypeMapping(AssetType.Mesh, InventoryType.Mesh, "application/vnd.ll.mesh", "llm")
+ };
+
+ private static Dictionary asset2Content;
+ private static Dictionary asset2Extension;
+ private static Dictionary inventory2Content;
+ private static Dictionary content2Asset;
+ private static Dictionary content2Inventory;
+
+ static SLUtil()
+ {
+ asset2Content = new Dictionary();
+ asset2Extension = new Dictionary();
+ inventory2Content = new Dictionary();
+ content2Asset = new Dictionary();
+ content2Inventory = new Dictionary();
+
+ foreach (TypeMapping mapping in MAPPINGS)
+ {
+ sbyte assetType = mapping.AssetTypeCode;
+ if (!asset2Content.ContainsKey(assetType))
+ asset2Content.Add(assetType, mapping.ContentType);
+ if (!asset2Extension.ContainsKey(assetType))
+ asset2Extension.Add(assetType, mapping.Extension);
+ if (!inventory2Content.ContainsKey(mapping.InventoryType))
+ inventory2Content.Add(mapping.InventoryType, mapping.ContentType);
+ if (!content2Asset.ContainsKey(mapping.ContentType))
+ content2Asset.Add(mapping.ContentType, assetType);
+ if (!content2Inventory.ContainsKey(mapping.ContentType))
+ content2Inventory.Add(mapping.ContentType, mapping.InventoryType);
+
+ if (mapping.ContentType2 != null)
+ {
+ if (!content2Asset.ContainsKey(mapping.ContentType2))
+ content2Asset.Add(mapping.ContentType2, assetType);
+ if (!content2Inventory.ContainsKey(mapping.ContentType2))
+ content2Inventory.Add(mapping.ContentType2, mapping.InventoryType);
+ }
+ }
+ }
+
public static string SLAssetTypeToContentType(int assetType)
{
- switch ((AssetType)assetType)
- {
- case AssetType.Texture:
- return "image/x-j2c";
- case AssetType.Sound:
- return "audio/ogg";
- case AssetType.CallingCard:
- return "application/vnd.ll.callingcard";
- case AssetType.Landmark:
- return "application/vnd.ll.landmark";
- case AssetType.Clothing:
- return "application/vnd.ll.clothing";
- case AssetType.Object:
- return "application/vnd.ll.primitive";
- case AssetType.Notecard:
- return "application/vnd.ll.notecard";
- case AssetType.Folder:
- return "application/vnd.ll.folder";
- case AssetType.RootFolder:
- return "application/vnd.ll.rootfolder";
- case AssetType.LSLText:
- return "application/vnd.ll.lsltext";
- case AssetType.LSLBytecode:
- return "application/vnd.ll.lslbyte";
- case AssetType.TextureTGA:
- case AssetType.ImageTGA:
- return "image/tga";
- case AssetType.Bodypart:
- return "application/vnd.ll.bodypart";
- case AssetType.TrashFolder:
- return "application/vnd.ll.trashfolder";
- case AssetType.SnapshotFolder:
- return "application/vnd.ll.snapshotfolder";
- case AssetType.LostAndFoundFolder:
- return "application/vnd.ll.lostandfoundfolder";
- case AssetType.SoundWAV:
- return "audio/x-wav";
- case AssetType.ImageJPEG:
- return "image/jpeg";
- case AssetType.Animation:
- return "application/vnd.ll.animation";
- case AssetType.Gesture:
- return "application/vnd.ll.gesture";
- case AssetType.Simstate:
- return "application/x-metaverse-simstate";
- case AssetType.FavoriteFolder:
- return "application/vnd.ll.favoritefolder";
- case AssetType.Link:
- return "application/vnd.ll.link";
- case AssetType.LinkFolder:
- return "application/vnd.ll.linkfolder";
- case AssetType.CurrentOutfitFolder:
- return "application/vnd.ll.currentoutfitfolder";
- case AssetType.OutfitFolder:
- return "application/vnd.ll.outfitfolder";
- case AssetType.MyOutfitsFolder:
- return "application/vnd.ll.myoutfitsfolder";
- case AssetType.Unknown:
- default:
- return "application/octet-stream";
- }
+ string contentType;
+ if (!asset2Content.TryGetValue((sbyte)assetType, out contentType))
+ contentType = asset2Content[(sbyte)AssetType.Unknown];
+ return contentType;
}
public static string SLInvTypeToContentType(int invType)
{
- switch ((InventoryType)invType)
- {
- case InventoryType.Animation:
- return "application/vnd.ll.animation";
- case InventoryType.CallingCard:
- return "application/vnd.ll.callingcard";
- case InventoryType.Folder:
- return "application/vnd.ll.folder";
- case InventoryType.Gesture:
- return "application/vnd.ll.gesture";
- case InventoryType.Landmark:
- return "application/vnd.ll.landmark";
- case InventoryType.LSL:
- return "application/vnd.ll.lsltext";
- case InventoryType.Notecard:
- return "application/vnd.ll.notecard";
- case InventoryType.Attachment:
- case InventoryType.Object:
- return "application/vnd.ll.primitive";
- case InventoryType.Sound:
- return "audio/ogg";
- case InventoryType.Snapshot:
- case InventoryType.Texture:
- return "image/x-j2c";
- case InventoryType.Wearable:
- return "application/vnd.ll.clothing";
- default:
- return "application/octet-stream";
- }
+ string contentType;
+ if (!inventory2Content.TryGetValue((InventoryType)invType, out contentType))
+ contentType = inventory2Content[InventoryType.Unknown];
+ return contentType;
}
public static sbyte ContentTypeToSLAssetType(string contentType)
{
- switch (contentType)
- {
- case "image/x-j2c":
- case "image/jp2":
- return (sbyte)AssetType.Texture;
- case "application/ogg":
- case "audio/ogg":
- return (sbyte)AssetType.Sound;
- case "application/vnd.ll.callingcard":
- case "application/x-metaverse-callingcard":
- return (sbyte)AssetType.CallingCard;
- case "application/vnd.ll.landmark":
- case "application/x-metaverse-landmark":
- return (sbyte)AssetType.Landmark;
- case "application/vnd.ll.clothing":
- case "application/x-metaverse-clothing":
- return (sbyte)AssetType.Clothing;
- case "application/vnd.ll.primitive":
- case "application/x-metaverse-primitive":
- return (sbyte)AssetType.Object;
- case "application/vnd.ll.notecard":
- case "application/x-metaverse-notecard":
- return (sbyte)AssetType.Notecard;
- case "application/vnd.ll.folder":
- return (sbyte)AssetType.Folder;
- case "application/vnd.ll.rootfolder":
- return (sbyte)AssetType.RootFolder;
- case "application/vnd.ll.lsltext":
- case "application/x-metaverse-lsl":
- return (sbyte)AssetType.LSLText;
- case "application/vnd.ll.lslbyte":
- case "application/x-metaverse-lso":
- return (sbyte)AssetType.LSLBytecode;
- case "image/tga":
- // Note that AssetType.TextureTGA will be converted to AssetType.ImageTGA
- return (sbyte)AssetType.ImageTGA;
- case "application/vnd.ll.bodypart":
- case "application/x-metaverse-bodypart":
- return (sbyte)AssetType.Bodypart;
- case "application/vnd.ll.trashfolder":
- return (sbyte)AssetType.TrashFolder;
- case "application/vnd.ll.snapshotfolder":
- return (sbyte)AssetType.SnapshotFolder;
- case "application/vnd.ll.lostandfoundfolder":
- return (sbyte)AssetType.LostAndFoundFolder;
- case "audio/x-wav":
- return (sbyte)AssetType.SoundWAV;
- case "image/jpeg":
- return (sbyte)AssetType.ImageJPEG;
- case "application/vnd.ll.animation":
- case "application/x-metaverse-animation":
- return (sbyte)AssetType.Animation;
- case "application/vnd.ll.gesture":
- case "application/x-metaverse-gesture":
- return (sbyte)AssetType.Gesture;
- case "application/x-metaverse-simstate":
- return (sbyte)AssetType.Simstate;
- case "application/vnd.ll.favoritefolder":
- return (sbyte)AssetType.FavoriteFolder;
- case "application/vnd.ll.link":
- return (sbyte)AssetType.Link;
- case "application/vnd.ll.linkfolder":
- return (sbyte)AssetType.LinkFolder;
- case "application/vnd.ll.currentoutfitfolder":
- return (sbyte)AssetType.CurrentOutfitFolder;
- case "application/vnd.ll.outfitfolder":
- return (sbyte)AssetType.OutfitFolder;
- case "application/vnd.ll.myoutfitsfolder":
- return (sbyte)AssetType.MyOutfitsFolder;
- case "application/octet-stream":
- default:
- return (sbyte)AssetType.Unknown;
- }
+ sbyte assetType;
+ if (!content2Asset.TryGetValue(contentType, out assetType))
+ assetType = (sbyte)AssetType.Unknown;
+ return (sbyte)assetType;
}
public static sbyte ContentTypeToSLInvType(string contentType)
{
- switch (contentType)
- {
- case "image/x-j2c":
- case "image/jp2":
- case "image/tga":
- case "image/jpeg":
- return (sbyte)InventoryType.Texture;
- case "application/ogg":
- case "audio/ogg":
- case "audio/x-wav":
- return (sbyte)InventoryType.Sound;
- case "application/vnd.ll.callingcard":
- case "application/x-metaverse-callingcard":
- return (sbyte)InventoryType.CallingCard;
- case "application/vnd.ll.landmark":
- case "application/x-metaverse-landmark":
- return (sbyte)InventoryType.Landmark;
- case "application/vnd.ll.clothing":
- case "application/x-metaverse-clothing":
- case "application/vnd.ll.bodypart":
- case "application/x-metaverse-bodypart":
- return (sbyte)InventoryType.Wearable;
- case "application/vnd.ll.primitive":
- case "application/x-metaverse-primitive":
- return (sbyte)InventoryType.Object;
- case "application/vnd.ll.notecard":
- case "application/x-metaverse-notecard":
- return (sbyte)InventoryType.Notecard;
- case "application/vnd.ll.folder":
- return (sbyte)InventoryType.Folder;
- case "application/vnd.ll.rootfolder":
- return (sbyte)InventoryType.RootCategory;
- case "application/vnd.ll.lsltext":
- case "application/x-metaverse-lsl":
- case "application/vnd.ll.lslbyte":
- case "application/x-metaverse-lso":
- return (sbyte)InventoryType.LSL;
- case "application/vnd.ll.trashfolder":
- case "application/vnd.ll.snapshotfolder":
- case "application/vnd.ll.lostandfoundfolder":
- return (sbyte)InventoryType.Folder;
- case "application/vnd.ll.animation":
- case "application/x-metaverse-animation":
- return (sbyte)InventoryType.Animation;
- case "application/vnd.ll.gesture":
- case "application/x-metaverse-gesture":
- return (sbyte)InventoryType.Gesture;
- case "application/x-metaverse-simstate":
- return (sbyte)InventoryType.Snapshot;
- case "application/octet-stream":
- default:
- return (sbyte)InventoryType.Unknown;
- }
+ InventoryType invType;
+ if (!content2Inventory.TryGetValue(contentType, out invType))
+ invType = InventoryType.Unknown;
+ return (sbyte)invType;
+ }
+
+ public static string SLAssetTypeToExtension(int assetType)
+ {
+ string extension;
+ if (!asset2Extension.TryGetValue((sbyte)assetType, out extension))
+ extension = asset2Extension[(sbyte)AssetType.Unknown];
+ return extension;
}
#endregion SL / file extension / content-type conversions
@@ -377,4 +327,4 @@ namespace OpenSim.Framework
return output;
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Framework/Tests/UtilTest.cs b/OpenSim/Framework/Tests/UtilTest.cs
index 1ca35dfcb5..f0d2a3f7a7 100644
--- a/OpenSim/Framework/Tests/UtilTest.cs
+++ b/OpenSim/Framework/Tests/UtilTest.cs
@@ -214,16 +214,13 @@ namespace OpenSim.Framework.Tests
for (int i = 0; i < contenttypes.Length; i++)
{
- if (SLUtil.ContentTypeToSLAssetType(contenttypes[i]) == 18)
- {
- Assert.That(contenttypes[i] == "image/tga");
- }
+ int expected;
+ if (contenttypes[i] == "image/tga")
+ expected = 12; // if we know only the content-type "image/tga", then we assume the asset type is TextureTGA; not ImageTGA
else
- {
- Assert.That(SLUtil.ContentTypeToSLAssetType(contenttypes[i]) == assettypes[i],
- "Expecting {0} but got {1}", assettypes[i],
- SLUtil.ContentTypeToSLAssetType(contenttypes[i]));
- }
+ expected = assettypes[i];
+ Assert.AreEqual(expected, SLUtil.ContentTypeToSLAssetType(contenttypes[i]),
+ String.Format("Incorrect AssetType mapped from Content-Type {0}", contenttypes[i]));
}
int[] inventorytypes = new int[] {-1,0,1,2,3,6,7,8,9,10,15,17,18,20};
@@ -237,7 +234,7 @@ namespace OpenSim.Framework.Tests
"application/vnd.ll.primitive",
"application/vnd.ll.notecard",
"application/vnd.ll.folder",
- "application/octet-stream",
+ "application/vnd.ll.rootfolder",
"application/vnd.ll.lsltext",
"image/x-j2c",
"application/vnd.ll.primitive",
@@ -247,7 +244,8 @@ namespace OpenSim.Framework.Tests
for (int i=0;i
@@ -217,7 +216,9 @@ namespace OpenSim.Framework
reqnum,url,method,tickdiff,tickdata);
}
- m_log.DebugFormat("[WEB UTIL]: <{0}> osd request for {1}, method {2} FAILED: {3}", reqnum, url, method, errorMessage);
+ m_log.DebugFormat(
+ "[WEB UTIL]: <{0}> osd request for {1}, method {2} FAILED: {3}", reqnum, url, method, errorMessage);
+
return ErrorResponseMap(errorMessage);
}
@@ -358,7 +359,8 @@ namespace OpenSim.Framework
reqnum,url,method,tickdiff,tickdata);
}
- m_log.WarnFormat("[WEB UTIL]: <{0}> form request failed: {1}",reqnum,errorMessage);
+ m_log.WarnFormat("[WEB UTIL]: <{0}> form request to {1} failed: {2}", reqnum, url, errorMessage);
+
return ErrorResponseMap(errorMessage);
}
@@ -772,12 +774,16 @@ namespace OpenSim.Framework
}
else
{
- m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with status {2} and message {3}", verb, requestUrl, e.Status, e.Message);
+ m_log.ErrorFormat(
+ "[ASYNC REQUEST]: Request {0} {1} failed with status {2} and message {3}",
+ verb, requestUrl, e.Status, e.Message);
}
}
catch (Exception e)
{
- m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with exception {2}", verb, requestUrl, e);
+ m_log.ErrorFormat(
+ "[ASYNC REQUEST]: Request {0} {1} failed with exception {2}{3}",
+ verb, requestUrl, e.Message, e.StackTrace);
}
// m_log.DebugFormat("[ASYNC REQUEST]: Received {0}", deserial.ToString());
@@ -789,7 +795,8 @@ namespace OpenSim.Framework
catch (Exception e)
{
m_log.ErrorFormat(
- "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e);
+ "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}{3}",
+ verb, requestUrl, e.Message, e.StackTrace);
}
}, null);
@@ -842,7 +849,8 @@ namespace OpenSim.Framework
}
catch (Exception e)
{
- m_log.DebugFormat("[FORMS]: exception occured on sending request to {0}: " + e.ToString(), requestUrl);
+ m_log.DebugFormat(
+ "[FORMS]: exception occured {0} {1}: {2}{3}", verb, requestUrl, e.Message, e.StackTrace);
}
finally
{
@@ -868,7 +876,9 @@ namespace OpenSim.Framework
}
catch (Exception e)
{
- m_log.DebugFormat("[FORMS]: exception occured on receiving reply " + e.ToString());
+ m_log.DebugFormat(
+ "[FORMS]: Exception occured on receiving {0} {1}: {2}{3}",
+ verb, requestUrl, e.Message, e.StackTrace);
}
finally
{
@@ -881,7 +891,7 @@ namespace OpenSim.Framework
catch (System.InvalidOperationException)
{
// This is what happens when there is invalid XML
- m_log.DebugFormat("[FORMS]: InvalidOperationException on receiving request");
+ m_log.DebugFormat("[FORMS]: InvalidOperationException on receiving {0} {1}", verb, requestUrl);
}
}
return respstring;
@@ -946,7 +956,10 @@ namespace OpenSim.Framework
}
catch (Exception e)
{
- m_log.DebugFormat("[SynchronousRestObjectRequester]: exception in sending data to {0}: {1}", requestUrl, e);
+ m_log.DebugFormat(
+ "[SynchronousRestObjectRequester]: Exception in making request {0} {1}: {2}{3}",
+ verb, requestUrl, e.Message, e.StackTrace);
+
return deserial;
}
finally
@@ -968,7 +981,11 @@ namespace OpenSim.Framework
respStream.Close();
}
else
- m_log.DebugFormat("[SynchronousRestObjectRequester]: Oops! no content found in response stream from {0} {1}", requestUrl, verb);
+ {
+ m_log.DebugFormat(
+ "[SynchronousRestObjectRequester]: Oops! no content found in response stream from {0} {1}",
+ verb, requestUrl);
+ }
}
}
catch (WebException e)
@@ -979,20 +996,24 @@ namespace OpenSim.Framework
return deserial;
else
m_log.ErrorFormat(
- "[SynchronousRestObjectRequester]: WebException {0} {1} {2} {3}",
- requestUrl, typeof(TResponse).ToString(), e.Message, e.StackTrace);
+ "[SynchronousRestObjectRequester]: WebException for {0} {1} {2}: {3} {4}",
+ verb, requestUrl, typeof(TResponse).ToString(), e.Message, e.StackTrace);
}
catch (System.InvalidOperationException)
{
// This is what happens when there is invalid XML
- m_log.DebugFormat("[SynchronousRestObjectRequester]: Invalid XML {0} {1}", requestUrl, typeof(TResponse).ToString());
+ m_log.DebugFormat(
+ "[SynchronousRestObjectRequester]: Invalid XML from {0} {1} {2}",
+ verb, requestUrl, typeof(TResponse).ToString());
}
catch (Exception e)
{
- m_log.DebugFormat("[SynchronousRestObjectRequester]: Exception on response from {0} {1}", requestUrl, e);
+ m_log.DebugFormat(
+ "[SynchronousRestObjectRequester]: Exception on response from {0} {1}: {2}{3}",
+ verb, requestUrl, e.Message, e.StackTrace);
}
return deserial;
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index ef6dedb261..2c2d80a33a 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -245,7 +245,10 @@ namespace OpenSim.Region.ClientStack.Linden
if (!m_Scene.CheckClient(m_HostCapsObj.AgentID, httpRequest.RemoteIPEndPoint))
{
- m_log.DebugFormat("[CAPS]: Unauthorized CAPS client");
+ m_log.DebugFormat(
+ "[CAPS]: Unauthorized CAPS client {0} from {1}",
+ m_HostCapsObj.AgentID, httpRequest.RemoteIPEndPoint);
+
return string.Empty;
}
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
index a5209b7aec..c25b58cf8f 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
@@ -60,7 +60,7 @@ namespace OpenSim.Region.ClientStack.Linden.Tests
CapabilitiesModule capsModule = new CapabilitiesModule();
EventQueueGetModule eqgModule = new EventQueueGetModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, config, capsModule, eqgModule);
}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 75f783b016..dda444446a 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -916,7 +916,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
UDPPacketBuffer buffer = (UDPPacketBuffer)array[0];
UseCircuitCodePacket uccp = (UseCircuitCodePacket)array[1];
- m_log.DebugFormat("[LLUDPSERVER]: Handling UseCircuitCode request from {0}", buffer.RemoteEndPoint);
+ m_log.DebugFormat(
+ "[LLUDPSERVER]: Handling UseCircuitCode request for circuit {0} from {1}",
+ uccp.CircuitCode.Code, buffer.RemoteEndPoint);
remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint;
@@ -1352,7 +1354,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
else
{
- m_log.DebugFormat("[LLUDPSERVER]: Dropping incoming {0} packet for dead client {1}", packet.Type, udpClient.AgentID);
+ m_log.DebugFormat(
+ "[LLUDPSERVER]: Dropped incoming {0} for dead client {1} in {2}",
+ packet.Type, udpClient.AgentID, m_scene.RegionInfo.RegionName);
}
}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs
index a575e3616d..1321470c28 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs
@@ -158,7 +158,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
TestHelpers.InMethod();
// XmlConfigurator.Configure();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
uint myCircuitCode = 123456;
UUID myAgentUuid = TestHelpers.ParseTail(0x1);
UUID mySessionUuid = TestHelpers.ParseTail(0x2);
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/LLImageManagerTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/LLImageManagerTests.cs
index 1b68d68765..221f02bda9 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/LLImageManagerTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/LLImageManagerTests.cs
@@ -79,7 +79,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
J2KDecoderModule j2kdm = new J2KDecoderModule();
- scene = SceneHelpers.SetupScene();
+ scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, j2kdm);
tc = new TestClient(SceneHelpers.GenerateAgentData(userId), scene);
diff --git a/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs b/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs
index 5adb84596c..c91b25fac2 100644
--- a/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs
+++ b/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs
@@ -65,7 +65,7 @@ namespace OpenSim.Region.CoreModules.Asset.Tests
config.Configs["AssetCache"].Set("MemoryCacheEnabled", "true");
m_cache = new FlotsamAssetCache();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, config, m_cache);
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
index bfe5e4a37f..42d07fd2d6 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
@@ -72,7 +72,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
config.AddConfig("Modules");
config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
- scene = SceneHelpers.SetupScene();
+ scene = new SceneHelpers().SetupScene();
m_attMod = new AttachmentsModule();
SceneHelpers.SetupSceneModules(scene, config, m_attMod, new BasicInventoryAccessModule());
}
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs
index 11a0a86bde..848b3bfc08 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs
@@ -53,7 +53,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
UUID userId = TestHelpers.ParseTail(0x1);
AvatarFactoryModule afm = new AvatarFactoryModule();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, afm);
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
@@ -81,7 +81,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
CoreAssetCache assetCache = new CoreAssetCache();
AvatarFactoryModule afm = new AvatarFactoryModule();
- TestScene scene = SceneHelpers.SetupScene(assetCache);
+ TestScene scene = new SceneHelpers(assetCache).SetupScene();
SceneHelpers.SetupSceneModules(scene, afm);
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs
index 45b4264c91..7a197f7cd5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs
@@ -78,7 +78,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends.Tests
config.AddConfig("FriendsService");
config.Configs["FriendsService"].Set("StorageProvider", "OpenSim.Data.Null.dll");
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
m_fm = new FriendsModule();
SceneHelpers.SetupSceneModules(m_scene, config, m_fm);
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs
index 19ef571e7e..90ae69d6ff 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs
@@ -100,7 +100,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
// log4net.Config.XmlConfigurator.Configure();
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, archiverModule);
UserAccountHelpers.CreateUserWithInventory(scene, m_uaLL1, "hampshire");
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index e409c8e051..b112b6db52 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -61,7 +61,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
SerialiserModule serialiserModule = new SerialiserModule();
m_archiverModule = new InventoryArchiverModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, serialiserModule, m_archiverModule);
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs
index 417c20c097..6eb3605235 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, archiverModule);
// Create user
@@ -179,7 +179,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
// Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
@@ -222,7 +222,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
SerialiserModule serialiserModule = new SerialiserModule();
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
UserAccountHelpers.CreateUserWithInventory(scene, m_uaMT, "password");
@@ -247,7 +247,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, archiverModule);
// Create user
@@ -326,7 +326,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene);
Dictionary foldersCreated = new Dictionary();
@@ -393,7 +393,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelpers.InMethod();
//log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene);
string folder1ExistingName = "a";
@@ -444,7 +444,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene);
string folder1ExistingName = "a";
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 903009e8b9..eb581b41f4 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -178,7 +178,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
destinationRegionName = sp.Scene.RegionInfo.RegionName;
m_log.DebugFormat(
- "[ENTITY TRANSFER MODULE]: RequestTeleportToLocation for {0} to {1} within existing region {2}",
+ "[ENTITY TRANSFER MODULE]: Teleport for {0} to {1} within {2}",
sp.Name, position, destinationRegionName);
// Teleport within the same region
@@ -232,7 +232,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
GridRegion finalDestination = GetFinalDestination(reg);
if (finalDestination == null)
{
- m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Final destination is having problems. Unable to teleport agent.");
+ m_log.WarnFormat(
+ "[ENTITY TRANSFER MODULE]: Final destination is having problems. Unable to teleport {0} {1}",
+ sp.Name, sp.UUID);
+
sp.ControllingClient.SendTeleportFailed("Problem at destination");
return;
}
@@ -321,10 +324,17 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
}
if (IsInTransit(sp.UUID)) // Avie is already on the way. Caller shouldn't do this.
+ {
+ m_log.DebugFormat(
+ "[ENTITY TRANSFER MODULE]: Ignoring teleport request of {0} {1} to {2} ({3}) {4}/{5} - agent is already in transit.",
+ sp.Name, sp.UUID, reg.ServerURI, finalDestination.ServerURI, finalDestination.RegionName, position);
+
return;
+ }
m_log.DebugFormat(
- "[ENTITY TRANSFER MODULE]: Request Teleport to {0} ({1}) {2}/{3}",
+ "[ENTITY TRANSFER MODULE]: Teleporting {0} {1} from {2} to {3} ({4}) {5}/{6}",
+ sp.Name, sp.UUID, sp.Scene.RegionInfo.RegionName,
reg.ServerURI, finalDestination.ServerURI, finalDestination.RegionName, position);
uint newRegionX = (uint)(reg.RegionHandle >> 40);
@@ -445,7 +455,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
}
-
SetInTransit(sp.UUID);
// Let's send a full update of the agent. This is a synchronous call.
@@ -589,7 +598,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
protected virtual void AgentHasMovedAway(ScenePresence sp, bool logout)
{
- sp.Scene.AttachmentsModule.DeleteAttachmentsFromScene(sp, true);
+ if (sp.Scene.AttachmentsModule != null)
+ sp.Scene.AttachmentsModule.DeleteAttachmentsFromScene(sp, true);
}
protected void KillEntity(Scene scene, uint localID)
@@ -662,7 +672,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
public virtual bool TeleportHome(UUID id, IClientAPI client)
{
- m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.FirstName, client.LastName);
+ m_log.DebugFormat(
+ "[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.Name, client.AgentId);
//OpenSim.Services.Interfaces.PresenceInfo pinfo = m_aScene.PresenceService.GetAgent(client.SessionId);
GridUserInfo uinfo = m_aScene.GridUserService.GetGridUserInfo(client.AgentId.ToString());
@@ -683,8 +694,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
return false;
}
- m_log.DebugFormat("[ENTITY TRANSFER MODULE]: User's home region is {0} {1} ({2}-{3})",
- regionInfo.RegionName, regionInfo.RegionID, regionInfo.RegionLocX / Constants.RegionSize, regionInfo.RegionLocY / Constants.RegionSize);
+ m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Home region of {0} is {1} ({2}-{3})",
+ client.Name, regionInfo.RegionName, regionInfo.RegionCoordX, regionInfo.RegionCoordY);
// a little eekie that this goes back to Scene and with a forced cast, will fix that at some point...
((Scene)(client.Scene)).RequestTeleportLocation(
@@ -1321,19 +1332,17 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// after a cross here
Thread.Sleep(500);
- Scene m_scene = sp.Scene;
+ Scene scene = sp.Scene;
- uint x, y;
- Utils.LongToUInts(reg.RegionHandle, out x, out y);
- x = x / Constants.RegionSize;
- y = y / Constants.RegionSize;
- m_log.Debug("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint + ")");
+ m_log.DebugFormat(
+ "[ENTITY TRANSFER MODULE]: Informing {0} {1} about neighbour {2} {3} at ({4},{5})",
+ sp.Name, sp.UUID, reg.RegionName, endPoint, reg.RegionCoordX, reg.RegionCoordY);
string capsPath = reg.ServerURI + CapsUtil.GetCapsSeedPath(a.CapsPath);
string reason = String.Empty;
- bool regionAccepted = m_scene.SimulationService.CreateAgent(reg, a, (uint)TeleportFlags.Default, out reason);
+ bool regionAccepted = scene.SimulationService.CreateAgent(reg, a, (uint)TeleportFlags.Default, out reason);
if (regionAccepted && newAgent)
{
@@ -1350,7 +1359,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
m_log.DebugFormat("[ENTITY TRANSFER MODULE]: {0} is sending {1} EnableSimulator for neighbour region {2} @ {3} " +
"and EstablishAgentCommunication with seed cap {4}",
- m_scene.RegionInfo.RegionName, sp.Name, reg.RegionName, reg.RegionHandle, capsPath);
+ scene.RegionInfo.RegionName, sp.Name, reg.RegionName, reg.RegionHandle, capsPath);
eq.EnableSimulator(reg.RegionHandle, endPoint, sp.UUID);
eq.EstablishAgentCommunication(sp.UUID, endPoint, capsPath);
@@ -1361,8 +1370,13 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// TODO: make Event Queue disablable!
}
- m_log.Debug("[ENTITY TRANSFER MODULE]: Completed inform client about neighbour " + endPoint.ToString());
+ m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Completed inform {0} {1} about neighbour {2}", sp.Name, sp.UUID, endPoint);
}
+
+ if (!regionAccepted)
+ m_log.WarnFormat(
+ "[ENTITY TRANSFER MODULE]: Region {0} did not accept {1} {2}: {3}",
+ reg.RegionName, sp.Name, sp.UUID, reason);
}
///
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
index 93c5773565..12bd6bceda 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
@@ -206,7 +206,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
public override bool TeleportHome(UUID id, IClientAPI client)
{
- m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.FirstName, client.LastName);
+ m_log.DebugFormat(
+ "[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.Name, client.AgentId);
// Let's find out if this is a foreign user or a local user
IUserManagement uMan = m_aScene.RequestModuleInterface();
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs
index e74310c849..d6afaa9e75 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs
@@ -65,7 +65,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests
config.AddConfig("Modules");
config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, config, m_iam);
// Create user
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
index 6e75692942..de089f3ab5 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
@@ -191,7 +191,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
{
if (s.RegionInfo.RegionHandle == destination.RegionHandle)
{
- m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Found region {0} to send SendCreateChildAgent", destination.RegionName);
+// m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Found region {0} to send SendCreateChildAgent", destination.RegionName);
return s.NewUserConnection(aCircuit, teleportFlags, out reason);
}
}
@@ -209,9 +209,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
{
if (s.RegionInfo.RegionHandle == destination.RegionHandle)
{
- m_log.DebugFormat(
- "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate",
- s.RegionInfo.RegionName, destination.RegionHandle);
+// m_log.DebugFormat(
+// "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate",
+// s.RegionInfo.RegionName, destination.RegionHandle);
s.IncomingChildAgentDataUpdate(cAgentData);
return true;
@@ -280,7 +280,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
{
if (s.RegionInfo.RegionID == origin)
{
- m_log.Debug("[LOCAL COMMS]: Found region to SendReleaseAgent");
+// m_log.Debug("[LOCAL COMMS]: Found region to SendReleaseAgent");
AgentTransferModule.AgentArrivedAtDestination(id);
return true;
// return s.IncomingReleaseAgent(id);
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
index 4d459bf2d6..ab3cc412ab 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
@@ -297,10 +297,15 @@ namespace OpenSim.Region.CoreModules.World.Archiver
if (checkPermissions.Contains("T") && !canTransfer)
partPermitted = false;
+ // If the user is the Creator of the object then it can always be included in the OAR
+ bool creator = (obj.CreatorID.Guid == user.Guid);
+ if (creator)
+ partPermitted = true;
+
//string name = (objGroup.PrimCount == 1) ? objGroup.Name : string.Format("{0} ({1}/{2})", obj.Name, primNumber, objGroup.PrimCount);
- //m_log.DebugFormat("[ARCHIVER]: Object permissions: {0}: Base={1:X4}, Owner={2:X4}, Everyone={3:X4}, permissionClass={4}, checkPermissions={5}, canCopy={6}, canTransfer={7}, permitted={8}",
+ //m_log.DebugFormat("[ARCHIVER]: Object permissions: {0}: Base={1:X4}, Owner={2:X4}, Everyone={3:X4}, permissionClass={4}, checkPermissions={5}, canCopy={6}, canTransfer={7}, creator={8}, permitted={9}",
// name, obj.BaseMask, obj.OwnerMask, obj.EveryoneMask,
- // permissionClass, checkPermissions, canCopy, canTransfer, permitted);
+ // permissionClass, checkPermissions, canCopy, canTransfer, creator, partPermitted);
if (!partPermitted)
{
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index e05e8f677a..053c6f59d4 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -68,7 +68,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
SerialiserModule serialiserModule = new SerialiserModule();
TerrainModule terrainModule = new TerrainModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, m_archiverModule, serialiserModule, terrainModule);
}
@@ -463,7 +463,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
SerialiserModule serialiserModule = new SerialiserModule();
TerrainModule terrainModule = new TerrainModule();
- TestScene scene2 = SceneHelpers.SetupScene();
+ TestScene scene2 = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene2, archiverModule, serialiserModule, terrainModule);
// Make sure there's a valid owner for the owner we saved (this should have been wiped if the code is
@@ -607,7 +607,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
SerialiserModule serialiserModule = new SerialiserModule();
TerrainModule terrainModule = new TerrainModule();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
m_scene.AddNewSceneObject(new SceneObjectGroup(part2), false);
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
index e553ffa571..b5ee4d2cae 100644
--- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
+++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
@@ -64,7 +64,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
{
m_pcm = new PrimCountModule();
LandManagementModule lmm = new LandManagementModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, lmm, m_pcm);
int xParcelDivider = (int)Constants.RegionSize - 1;
diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs
index 4326606d5a..0545250db7 100644
--- a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs
+++ b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs
@@ -53,7 +53,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap.Tests
public void SetUp()
{
m_module = new MoapModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, m_module);
}
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
index d1d2020587..7825e3e7c7 100644
--- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
+++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
@@ -343,7 +343,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
public void Init()
{
m_serialiserModule = new SerialiserModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, m_serialiserModule);
}
diff --git a/OpenSim/Region/Framework/Interfaces/INPCModule.cs b/OpenSim/Region/Framework/Interfaces/INPCModule.cs
index dc3ff89303..b4dc3c3c11 100644
--- a/OpenSim/Region/Framework/Interfaces/INPCModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/INPCModule.cs
@@ -134,6 +134,36 @@ namespace OpenSim.Region.Framework.Interfaces
/// True if the operation succeeded, false if there was no such agent or the agent was not an NPC
bool Say(UUID agentID, Scene scene, string text);
+ ///
+ /// Get the NPC to say something.
+ ///
+ /// The UUID of the NPC
+ ///
+ ///
+ ///
+ /// True if the operation succeeded, false if there was no such agent or the agent was not an NPC
+ bool Say(UUID agentID, Scene scene, string text, int channel);
+
+ ///
+ /// Get the NPC to shout something.
+ ///
+ /// The UUID of the NPC
+ ///
+ ///
+ ///
+ /// True if the operation succeeded, false if there was no such agent or the agent was not an NPC
+ bool Shout(UUID agentID, Scene scene, string text, int channel);
+
+ ///
+ /// Get the NPC to whisper something.
+ ///
+ /// The UUID of the NPC
+ ///
+ ///
+ ///
+ /// True if the operation succeeded, false if there was no such agent or the agent was not an NPC
+ bool Whisper(UUID agentID, Scene scene, string text, int channel);
+
///
/// Sit the NPC.
///
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 515332f5c3..ff2c46f17c 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -103,6 +103,7 @@ namespace OpenSim.Region.Framework.Scenes
public bool m_trustBinaries;
public bool m_allowScriptCrossings;
public bool m_useFlySlow;
+ public bool m_useTrashOnDelete = true;
///
/// Temporarily setting to trigger appearance resends at 60 second intervals.
@@ -458,6 +459,7 @@ namespace OpenSim.Region.Framework.Scenes
{
if (m_simulationService == null)
m_simulationService = RequestModuleInterface();
+
return m_simulationService;
}
}
@@ -735,6 +737,7 @@ namespace OpenSim.Region.Framework.Scenes
m_clampPrimSize = true;
}
+ m_useTrashOnDelete = startupConfig.GetBoolean("UseTrashOnDelete",m_useTrashOnDelete);
m_trustBinaries = startupConfig.GetBoolean("TrustBinaries", m_trustBinaries);
m_allowScriptCrossings = startupConfig.GetBoolean("AllowScriptCrossing", m_allowScriptCrossings);
m_dontPersistBefore =
@@ -3378,8 +3381,8 @@ namespace OpenSim.Region.Framework.Scenes
try
{
m_log.DebugFormat(
- "[SCENE]: Removing {0} agent {1} from region {2}",
- (isChildAgent ? "child" : "root"), agentID, RegionInfo.RegionName);
+ "[SCENE]: Removing {0} agent {1} {2} from region {3}",
+ (isChildAgent ? "child" : "root"), avatar.Name, agentID, RegionInfo.RegionName);
m_sceneGraph.removeUserCount(!isChildAgent);
@@ -3977,41 +3980,41 @@ namespace OpenSim.Region.Framework.Scenes
return m_authenticateHandler.TryChangeCiruitCode(oldcc, newcc);
}
- ///
- /// The Grid has requested that we log-off a user. Log them off.
- ///
- /// Unique ID of the avatar to log-off
- /// SecureSessionID of the user, or the RegionSecret text when logging on to the grid
- /// message to display to the user. Reason for being logged off
- public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message)
- {
- ScenePresence loggingOffUser = GetScenePresence(AvatarID);
- if (loggingOffUser != null)
- {
- UUID localRegionSecret = UUID.Zero;
- bool parsedsecret = UUID.TryParse(m_regInfo.regionSecret, out localRegionSecret);
-
- // Region Secret is used here in case a new sessionid overwrites an old one on the user server.
- // Will update the user server in a few revisions to use it.
-
- if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId || (parsedsecret && RegionSecret == localRegionSecret))
- {
- m_sceneGridService.SendCloseChildAgentConnections(loggingOffUser.UUID, loggingOffUser.KnownRegionHandles);
- loggingOffUser.ControllingClient.Kick(message);
- // Give them a second to receive the message!
- Thread.Sleep(1000);
- loggingOffUser.ControllingClient.Close();
- }
- else
- {
- m_log.Info("[USERLOGOFF]: System sending the LogOff user message failed to sucessfully authenticate");
- }
- }
- else
- {
- m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString());
- }
- }
+// ///
+// /// The Grid has requested that we log-off a user. Log them off.
+// ///
+// /// Unique ID of the avatar to log-off
+// /// SecureSessionID of the user, or the RegionSecret text when logging on to the grid
+// /// message to display to the user. Reason for being logged off
+// public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message)
+// {
+// ScenePresence loggingOffUser = GetScenePresence(AvatarID);
+// if (loggingOffUser != null)
+// {
+// UUID localRegionSecret = UUID.Zero;
+// bool parsedsecret = UUID.TryParse(m_regInfo.regionSecret, out localRegionSecret);
+//
+// // Region Secret is used here in case a new sessionid overwrites an old one on the user server.
+// // Will update the user server in a few revisions to use it.
+//
+// if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId || (parsedsecret && RegionSecret == localRegionSecret))
+// {
+// m_sceneGridService.SendCloseChildAgentConnections(loggingOffUser.UUID, loggingOffUser.KnownRegionHandles);
+// loggingOffUser.ControllingClient.Kick(message);
+// // Give them a second to receive the message!
+// Thread.Sleep(1000);
+// loggingOffUser.ControllingClient.Close();
+// }
+// else
+// {
+// m_log.Info("[USERLOGOFF]: System sending the LogOff user message failed to sucessfully authenticate");
+// }
+// }
+// else
+// {
+// m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString());
+// }
+// }
///
/// Triggered when an agent crosses into this sim. Also happens on initial login.
@@ -4067,7 +4070,10 @@ namespace OpenSim.Region.Framework.Scenes
ILandObject nearestParcel = GetNearestAllowedParcel(cAgentData.AgentID, Constants.RegionSize / 2, Constants.RegionSize / 2);
if (nearestParcel == null)
{
- m_log.DebugFormat("[SCENE]: Denying root agent entry to {0}: no allowed parcel", cAgentData.AgentID);
+ m_log.DebugFormat(
+ "[SCENE]: Denying root agent entry to {0} in {1}: no allowed parcel",
+ cAgentData.AgentID, RegionInfo.RegionName);
+
return false;
}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 18a396f1ef..e0d5055f37 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1217,7 +1217,10 @@ namespace OpenSim.Region.Framework.Scenes
if ((m_callbackURI != null) && !m_callbackURI.Equals(""))
{
- m_log.DebugFormat("[SCENE PRESENCE]: Releasing agent in URI {0}", m_callbackURI);
+ m_log.DebugFormat(
+ "[SCENE PRESENCE]: Releasing {0} {1} with callback to {2}",
+ client.Name, client.AgentId, m_callbackURI);
+
Scene.SimulationService.ReleaseAgent(m_originRegionID, UUID, m_callbackURI);
m_callbackURI = null;
}
diff --git a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs
index a5d2b2304a..ea9fc9386e 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs
@@ -45,7 +45,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
{
static public Random random;
SceneObjectGroup found;
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
[Test]
public void T010_AddObjects()
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
index 9a60e50eb9..1c33a5f27a 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
@@ -44,7 +44,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
public void TestDuplicateObject()
{
TestHelpers.InMethod();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UUID ownerId = new UUID("00000000-0000-0000-0000-000000000010");
string part1Name = "part1";
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
index 7737d8ea83..453e077c8a 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
@@ -88,7 +88,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
{
TestHelpers.InMethod();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
int partsToTestCount = 3;
SceneObjectGroup so
@@ -118,7 +118,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
{
TestHelpers.InMethod();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
string obj1Name = "Alfred";
string obj2Name = "Betty";
@@ -152,7 +152,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
{
TestHelpers.InMethod();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
int partsToTestCount = 3;
SceneObjectGroup so
@@ -185,7 +185,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
{
TestHelpers.InMethod();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
SceneObjectPart part = SceneHelpers.AddSceneObject(scene);
scene.DeleteSceneObject(part.ParentGroup, false);
@@ -204,7 +204,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001");
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
// Turn off the timer on the async sog deleter - we'll crank it by hand for this test.
AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter;
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
index 654b1a2cc6..0076f41225 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
@@ -61,7 +61,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001");
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
IConfigSource configSource = new IniConfigSource();
IConfig config = configSource.AddConfig("Startup");
config.Set("serverside_object_permissions", true);
@@ -100,7 +100,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001");
UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001");
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
IConfigSource configSource = new IniConfigSource();
IConfig config = configSource.AddConfig("Startup");
config.Set("serverside_object_permissions", true);
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
index be5b4a8986..1add3ddb8c 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
@@ -55,7 +55,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
UUID ownerId = TestHelpers.ParseTail(0x1);
int nParts = 3;
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(nParts, ownerId, "TestLinkToSelf_", 0x10);
scene.AddSceneObject(sog1);
scene.LinkObjects(ownerId, sog1.LocalId, new List() { sog1.Parts[1].LocalId });
@@ -71,7 +71,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
bool debugtest = false;
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene);
SceneObjectGroup grp1 = part1.ParentGroup;
SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene);
@@ -153,7 +153,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
bool debugtest = false;
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene);
SceneObjectGroup grp1 = part1.ParentGroup;
SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene);
@@ -286,7 +286,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelpers.InMethod();
//log4net.Config.XmlConfigurator.Configure();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
string rootPartName = "rootpart";
UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001");
@@ -325,7 +325,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelpers.InMethod();
//log4net.Config.XmlConfigurator.Configure();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
string rootPartName = "rootpart";
UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001");
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs
index b49c6e7a98..0a94c1900d 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneObjectGroup g1 = SceneHelpers.AddSceneObject(scene).ParentGroup;
g1.GroupResize(new Vector3(2, 3, 4));
@@ -75,7 +75,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelpers.InMethod();
//log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneObjectGroup g1 = SceneHelpers.CreateSceneObject(2, UUID.Zero);
g1.RootPart.Scale = new Vector3(2, 3, 4);
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
index c582cf66fb..d2361f8667 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
// UUID itemId = TestHelpers.ParseTail(0x2);
string itemName = "Test Script Item";
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
scene.AddNewSceneObject(so, true);
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs
index 9fea3c63a7..6d255aa2d9 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
[SetUp]
public void SetUp()
{
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
}
[Test]
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs
index 360566db4b..742c7691e9 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
[SetUp]
public void Init()
{
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
m_so1 = SceneHelpers.CreateSceneObject(1, m_ownerId, "so1", 0x10);
m_so2 = SceneHelpers.CreateSceneObject(1, m_ownerId, "so2", 0x20);
}
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
index c13d82e16d..c7eaff9d00 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001");
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
IConfigSource configSource = new IniConfigSource();
IConfig startupConfig = configSource.AddConfig("Startup");
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
index ed9b179286..2e46377901 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
@@ -67,10 +67,12 @@ namespace OpenSim.Region.Framework.Scenes.Tests
public void Init()
{
TestHelpers.InMethod();
-
- scene = SceneHelpers.SetupScene("Neighbour x", UUID.Random(), 1000, 1000);
- scene2 = SceneHelpers.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000);
- scene3 = SceneHelpers.SetupScene("Neighbour x-1", UUID.Random(), 999, 1000);
+
+ SceneHelpers sh = new SceneHelpers();
+
+ scene = sh.SetupScene("Neighbour x", UUID.Random(), 1000, 1000);
+ scene2 = sh.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000);
+ scene3 = sh.SetupScene("Neighbour x-1", UUID.Random(), 999, 1000);
ISharedRegionModule interregionComms = new LocalSimulationConnectorModule();
interregionComms.Initialise(new IniConfigSource());
@@ -101,7 +103,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null);
@@ -126,7 +128,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
IConfig config = configSource.AddConfig("Modules");
config.Set("SimulationServices", "LocalSimulationConnectorModule");
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, configSource, lsc);
UUID agentId = TestHelpers.ParseTail(0x01);
@@ -176,8 +178,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests
// UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001");
- TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000);
- TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000);
+ TestScene myScene1 = new SceneHelpers().SetupScene("Neighbour y", UUID.Random(), 1000, 1000);
+ TestScene myScene2 = new SceneHelpers().SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000);
IConfigSource configSource = new IniConfigSource();
IConfig config = configSource.AddConfig("Startup");
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs
index 89f8007d0f..646e5fa61a 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs
@@ -59,7 +59,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
sp.Flying = true;
sp.PhysicsCollisionUpdate(new CollisionEventUpdate());
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs
index cfea10d710..1d1ff88420 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs
@@ -64,7 +64,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
[SetUp]
public void Init()
{
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
}
[Test]
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs
index b7b8db445e..313e350cbc 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
[SetUp]
public void Init()
{
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
m_sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1));
}
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs
index eb7bfbd802..19542ffffe 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs
@@ -61,7 +61,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
// Not strictly necessary since FriendsModule assumes it is the default (!)
config.Configs["Modules"].Set("EntityTransferModule", etm.Name);
- TestScene scene = SceneHelpers.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000);
+ TestScene scene = new SceneHelpers().SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000);
SceneHelpers.SetupSceneModules(scene, config, etm);
Vector3 teleportPosition = new Vector3(10, 11, 12);
@@ -83,145 +83,58 @@ namespace OpenSim.Region.Framework.Scenes.Tests
// Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt));
}
- ///
- /// Test a teleport between two regions that are not neighbours and do not share any neighbours in common.
- ///
- /// Does not yet do what is says on the tin.
- /// Commenting for now
- //[Test, LongRunning]
- public void TestSimpleNotNeighboursTeleport()
+ [Test]
+ public void TestSameSimulatorSeparatedRegionsTeleport()
{
TestHelpers.InMethod();
- ThreadRunResults results = new ThreadRunResults();
- results.Result = false;
- results.Message = "Test did not run";
- TestRunning testClass = new TestRunning(results);
+// log4net.Config.XmlConfigurator.Configure();
- Thread testThread = new Thread(testClass.run);
+ UUID userId = TestHelpers.ParseTail(0x1);
- // Seems kind of redundant to start a thread and then join it, however.. We need to protect against
- // A thread abort exception in the simulator code.
- testThread.Start();
- testThread.Join();
+ EntityTransferModule etm = new EntityTransferModule();
+ LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule();
- Assert.That(testClass.results.Result, Is.EqualTo(true), testClass.results.Message);
- // Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod());
- }
+ IConfigSource config = new IniConfigSource();
+ config.AddConfig("Modules");
+ // Not strictly necessary since FriendsModule assumes it is the default (!)
+ config.Configs["Modules"].Set("EntityTransferModule", etm.Name);
+ config.Configs["Modules"].Set("SimulationServices", lscm.Name);
- [TearDown]
- public void TearDown()
- {
- try
- {
- if (MainServer.Instance != null) MainServer.Instance.Stop();
- }
- catch (NullReferenceException)
- { }
- }
+ SceneHelpers sh = new SceneHelpers();
+ TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000);
+ TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1002, 1000);
- }
+ SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, etm, lscm);
- public class ThreadRunResults
- {
- public bool Result = false;
- public string Message = string.Empty;
- }
+ Vector3 teleportPosition = new Vector3(10, 11, 12);
+ Vector3 teleportLookAt = new Vector3(20, 21, 22);
- public class TestRunning
- {
- public ThreadRunResults results;
- public TestRunning(ThreadRunResults t)
- {
- results = t;
- }
- public void run(object o)
- {
-
- //results.Result = true;
- log4net.Config.XmlConfigurator.Configure();
+ ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId);
+ sp.AbsolutePosition = new Vector3(30, 31, 32);
- UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100");
- UUID sceneBId = UUID.Parse("00000000-0000-0000-0000-000000000200");
+ // XXX: A very nasty hack to tell the client about the destination scene without having to crank the whole
+ // UDP stack (?)
+ ((TestClient)sp.ControllingClient).TeleportTargetScene = sceneB;
- // shared module
- ISharedRegionModule interregionComms = new LocalSimulationConnectorModule();
+ sceneA.RequestTeleportLocation(
+ sp.ControllingClient,
+ sceneB.RegionInfo.RegionHandle,
+ teleportPosition,
+ teleportLookAt,
+ (uint)TeleportFlags.ViaLocation);
+ Assert.That(sceneA.GetScenePresence(userId), Is.Null);
- Scene sceneB = SceneHelpers.SetupScene("sceneB", sceneBId, 1010, 1010);
- SceneHelpers.SetupSceneModules(sceneB, new IniConfigSource(), interregionComms);
- sceneB.RegisterRegionWithGrid();
+ ScenePresence sceneBSp = sceneB.GetScenePresence(userId);
+ Assert.That(sceneBSp, Is.Not.Null);
+ Assert.That(sceneBSp.Scene.RegionInfo.RegionName, Is.EqualTo(sceneB.RegionInfo.RegionName));
+ Assert.That(sceneBSp.AbsolutePosition, Is.EqualTo(teleportPosition));
- Scene sceneA = SceneHelpers.SetupScene("sceneA", sceneAId, 1000, 1000);
- SceneHelpers.SetupSceneModules(sceneA, new IniConfigSource(), interregionComms);
- sceneA.RegisterRegionWithGrid();
+ // TODO: Add assertions to check correct circuit details in both scenes.
- UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041");
- TestClient client = (TestClient)SceneHelpers.AddScenePresence(sceneA, agentId).ControllingClient;
-
- ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface();
-
- results.Result = (sceneACapsModule.GetCapsPath(agentId) == client.CapsSeedUrl);
-
- if (!results.Result)
- {
- results.Message = "Incorrect caps object path set up in sceneA";
- return;
- }
-
- /*
- Assert.That(
- sceneACapsModule.GetCapsPath(agentId),
- Is.EqualTo(client.CapsSeedUrl),
- "Incorrect caps object path set up in sceneA");
- */
- // FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used.
-
-
- client.TeleportTargetScene = sceneB;
- client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40));
-
- results.Result = (sceneB.GetScenePresence(agentId) != null);
- if (!results.Result)
- {
- results.Message = "Client does not have an agent in sceneB";
- return;
- }
-
- //Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
-
- //Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
-
- results.Result = (sceneA.GetScenePresence(agentId) == null);
- if (!results.Result)
- {
- results.Message = "Client still had an agent in sceneA";
- return;
- }
-
- ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface();
-
-
- results.Result = ("http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort +
- "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/" == client.CapsSeedUrl);
- if (!results.Result)
- {
- results.Message = "Incorrect caps object path set up in sceneB";
- return;
- }
-
- // Temporary assertion - caps url construction should at least be doable through a method.
- /*
- Assert.That(
- "http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
- Is.EqualTo(client.CapsSeedUrl),
- "Incorrect caps object path set up in sceneB");
- */
- // This assertion will currently fail since we don't remove the caps paths when no longer needed
- //Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path");
-
- // TODO: Check that more of everything is as it should be
-
- // TODO: test what happens if we try to teleport to a region that doesn't exist
+ // Lookat is sent to the client only - sp.Lookat does not yield the same thing (calculation from camera
+ // position instead).
+// Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt));
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
index 5c9a77db67..d722a0990a 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
@@ -60,7 +60,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
{
TestHelpers.InMethod();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
scene.Update(1);
Assert.That(scene.Frame, Is.EqualTo(1));
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
index 55c80f5af1..d15141b3b2 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID);
SceneObjectPart sop1 = sog1.RootPart;
@@ -81,7 +81,7 @@ namespace OpenSim.Region.Framework.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID);
SceneObjectPart sop1 = sog1.RootPart;
@@ -124,7 +124,7 @@ namespace OpenSim.Region.Framework.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID);
SceneObjectPart sop1 = sog1.RootPart;
@@ -153,7 +153,7 @@ namespace OpenSim.Region.Framework.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID);
SceneObjectPart sop1 = sog1.RootPart;
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs
index 55fc1e73f8..44d2d452d5 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs
@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1001));
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1002));
InventoryItemBase item1 = UserInventoryHelpers.CreateInventoryItem(scene, "item1", user1.PrincipalID);
@@ -85,7 +85,7 @@ namespace OpenSim.Region.Framework.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1001));
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1002));
InventoryFolderBase folder1
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
index d9fe87c0bf..198e487d1b 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
@@ -47,7 +47,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
public void Init()
{
// FIXME: We don't need a full scene here - it would be enough to set up the asset service.
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
m_assetService = scene.AssetService;
m_uuidGatherer = new UuidGatherer(m_assetService);
}
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
index d2f63272bd..ac638f1053 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- TestScene scene = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
IConfigSource configSource = new IniConfigSource();
IConfig config = configSource.AddConfig("Groups");
config.Set("Enabled", true);
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index c3335f099e..c9c12c6505 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -76,22 +76,27 @@ namespace OpenSim.Region.OptionalModules.World.NPC
public void Say(string message)
{
- SendOnChatFromClient(message, ChatTypeEnum.Say);
+ SendOnChatFromClient(0, message, ChatTypeEnum.Say);
}
- public void Shout(string message)
+ public void Say(int channel, string message)
{
- SendOnChatFromClient(message, ChatTypeEnum.Shout);
+ SendOnChatFromClient(channel, message, ChatTypeEnum.Say);
}
- public void Whisper(string message)
+ public void Shout(int channel, string message)
{
- SendOnChatFromClient(message, ChatTypeEnum.Whisper);
+ SendOnChatFromClient(channel, message, ChatTypeEnum.Shout);
+ }
+
+ public void Whisper(int channel, string message)
+ {
+ SendOnChatFromClient(channel, message, ChatTypeEnum.Whisper);
}
public void Broadcast(string message)
{
- SendOnChatFromClient(message, ChatTypeEnum.Broadcast);
+ SendOnChatFromClient(0, message, ChatTypeEnum.Broadcast);
}
public void GiveMoney(UUID target, int amount)
@@ -146,10 +151,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC
#region Internal Functions
- private void SendOnChatFromClient(string message, ChatTypeEnum chatType)
+ private void SendOnChatFromClient(int channel, string message, ChatTypeEnum chatType)
{
OSChatMessage chatFromClient = new OSChatMessage();
- chatFromClient.Channel = 0;
+ chatFromClient.Channel = channel;
chatFromClient.From = Name;
chatFromClient.Message = message;
chatFromClient.Position = StartPos;
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index 4f80deada5..9c77b59a54 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -212,6 +212,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC
}
public bool Say(UUID agentID, Scene scene, string text)
+ {
+ return Say(agentID, scene, text, 0);
+ }
+
+ public bool Say(UUID agentID, Scene scene, string text, int channel)
{
lock (m_avatars)
{
@@ -220,7 +225,25 @@ namespace OpenSim.Region.OptionalModules.World.NPC
ScenePresence sp;
scene.TryGetScenePresence(agentID, out sp);
- m_avatars[agentID].Say(text);
+ m_avatars[agentID].Say(channel, text);
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public bool Shout(UUID agentID, Scene scene, string text, int channel)
+ {
+ lock (m_avatars)
+ {
+ if (m_avatars.ContainsKey(agentID))
+ {
+ ScenePresence sp;
+ scene.TryGetScenePresence(agentID, out sp);
+
+ m_avatars[agentID].Shout(channel, text);
return true;
}
@@ -247,6 +270,24 @@ namespace OpenSim.Region.OptionalModules.World.NPC
return false;
}
+ public bool Whisper(UUID agentID, Scene scene, string text, int channel)
+ {
+ lock (m_avatars)
+ {
+ if (m_avatars.ContainsKey(agentID))
+ {
+ ScenePresence sp;
+ scene.TryGetScenePresence(agentID, out sp);
+
+ m_avatars[agentID].Whisper(channel, text);
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public bool Stand(UUID agentID, Scene scene)
{
lock (m_avatars)
diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
index eea0b2e6ad..a39257e1d0 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
@@ -85,7 +85,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
m_attMod = new AttachmentsModule();
m_npcMod = new NPCModule();
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, config, m_afMod, m_umMod, m_attMod, m_npcMod, new BasicInventoryAccessModule());
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 3f77f3830e..60568a8f90 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -360,7 +360,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
UUID ownerID = ti.OwnerID;
- //OSSL only may be used if objet is in the same group as the parcel
+ //OSSL only may be used if object is in the same group as the parcel
if (m_FunctionPerms[function].AllowedOwnerClasses.Contains("PARCEL_GROUP_MEMBER"))
{
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y);
@@ -738,11 +738,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_host.AddScriptLPS(1);
+ // For safety, we add another permission check here, and don't rely only on the standard OSSL permissions
if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))
{
MainConsole.Instance.RunCommand(command);
return true;
}
+
return false;
}
@@ -2568,6 +2570,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
public void osNpcSay(LSL_Key npc, string message)
+ {
+ osNpcSay(npc, 0, message);
+ }
+
+ public void osNpcSay(LSL_Key npc, int channel, string message)
{
CheckThreatLevel(ThreatLevel.High, "osNpcSay");
m_host.AddScriptLPS(1);
@@ -2580,7 +2587,24 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (!module.CheckPermissions(npcId, m_host.OwnerID))
return;
- module.Say(npcId, World, message);
+ module.Say(npcId, World, message, channel);
+ }
+ }
+
+ public void osNpcShout(LSL_Key npc, int channel, string message)
+ {
+ CheckThreatLevel(ThreatLevel.High, "osNpcShout");
+ m_host.AddScriptLPS(1);
+
+ INPCModule module = World.RequestModuleInterface();
+ if (module != null)
+ {
+ UUID npcId = new UUID(npc.m_string);
+
+ if (!module.CheckPermissions(npcId, m_host.OwnerID))
+ return;
+
+ module.Shout(npcId, World, message, channel);
}
}
@@ -2681,6 +2705,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
}
+ public void osNpcWhisper(LSL_Key npc, int channel, string message)
+ {
+ CheckThreatLevel(ThreatLevel.High, "osNpcWhisper");
+ m_host.AddScriptLPS(1);
+
+ INPCModule module = World.RequestModuleInterface();
+ if (module != null)
+ {
+ UUID npcId = new UUID(npc.m_string);
+
+ if (!module.CheckPermissions(npcId, m_host.OwnerID))
+ return;
+
+ module.Whisper(npcId, World, message, channel);
+ }
+ }
+
///
/// Save the current appearance of the script owner permanently to the named notecard.
///
@@ -2832,21 +2873,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar");
m_host.AddScriptLPS(1);
- if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))
+ World.ForEachRootScenePresence(delegate(ScenePresence sp)
{
- World.ForEachRootScenePresence(delegate(ScenePresence sp)
+ if (sp.Firstname == FirstName && sp.Lastname == SurName)
{
- if (sp.Firstname == FirstName && sp.Lastname == SurName)
- {
- // kick client...
- if (alert != null)
- sp.ControllingClient.Kick(alert);
+ // kick client...
+ if (alert != null)
+ sp.ControllingClient.Kick(alert);
- // ...and close on our side
- sp.Scene.IncomingCloseAgent(sp.UUID);
- }
- });
- }
+ // ...and close on our side
+ sp.Scene.IncomingCloseAgent(sp.UUID);
+ }
+ });
}
public void osCauseDamage(string avatar, double damage)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index fc77d05e1a..738249591d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -217,11 +217,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
void osNpcSetRot(LSL_Key npc, rotation rot);
void osNpcStopMoveToTarget(LSL_Key npc);
void osNpcSay(key npc, string message);
+ void osNpcSay(key npc, int channel, string message);
+ void osNpcShout(key npc, int channel, string message);
void osNpcSit(key npc, key target, int options);
void osNpcStand(LSL_Key npc);
void osNpcRemove(key npc);
void osNpcPlayAnimation(LSL_Key npc, string animation);
void osNpcStopAnimation(LSL_Key npc, string animation);
+ void osNpcWhisper(key npc, int channel, string message);
LSL_Key osOwnerSaveAppearance(string notecard);
LSL_Key osAgentSaveAppearance(key agentId, string notecard);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 36ac0e3257..d230662c54 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -580,6 +580,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
m_OSSL_Functions.osNpcSay(npc, message);
}
+ public void osNpcSay(key npc, int channel, string message)
+ {
+ m_OSSL_Functions.osNpcSay(npc, channel, message);
+ }
+
+
+ public void osNpcShout(key npc, int channel, string message)
+ {
+ m_OSSL_Functions.osNpcShout(npc, channel, message);
+ }
+
public void osNpcSit(LSL_Key npc, LSL_Key target, int options)
{
m_OSSL_Functions.osNpcSit(npc, target, options);
@@ -605,6 +616,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
m_OSSL_Functions.osNpcStopAnimation(npc, animation);
}
+ public void osNpcWhisper(key npc, int channel, string message)
+ {
+ m_OSSL_Functions.osNpcWhisper(npc, channel, message);
+ }
+
public LSL_Key osOwnerSaveAppearance(string notecard)
{
return m_OSSL_Functions.osOwnerSaveAppearance(notecard);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs
index e2d0db267f..49266e91ea 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs
@@ -63,7 +63,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
IConfig config = initConfigSource.AddConfig("XEngine");
config.Set("Enabled", "true");
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, initConfigSource);
m_engine = new XEngine.XEngine();
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs
index 9cf9258571..92a63bf497 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs
@@ -58,7 +58,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
IConfig config = initConfigSource.AddConfig("XEngine");
config.Set("Enabled", "true");
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
SceneObjectPart part = SceneHelpers.AddSceneObject(scene);
XEngine.XEngine engine = new XEngine.XEngine();
@@ -261,7 +261,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
TestHelpers.InMethod();
// Create Prim1.
- Scene scene = SceneHelpers.SetupScene();
+ Scene scene = new SceneHelpers().SetupScene();
string obj1Name = "Prim1";
UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001");
SceneObjectPart part1 =
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs
index 7573dfff5f..c51227b77c 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs
@@ -67,7 +67,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
config = initConfigSource.AddConfig("NPC");
config.Set("Enabled", "true");
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new AvatarFactoryModule(), new NPCModule());
m_engine = new XEngine.XEngine();
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs
index 9d9fc514a3..9c36108da3 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs
@@ -68,7 +68,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
config = initConfigSource.AddConfig("NPC");
config.Set("Enabled", "true");
- m_scene = SceneHelpers.SetupScene();
+ m_scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new AvatarFactoryModule(), new NPCModule());
m_engine = new XEngine.XEngine();
diff --git a/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs b/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs
index 7d7bd82778..a3f848cfd4 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs
@@ -73,7 +73,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine.Tests
// to AssemblyResolver.OnAssemblyResolve fails.
xEngineConfig.Set("AppDomainLoading", "false");
- m_scene = SceneHelpers.SetupScene("My Test", UUID.Random(), 1000, 1000, null, configSource);
+ m_scene = new SceneHelpers().SetupScene("My Test", UUID.Random(), 1000, 1000, configSource);
SceneHelpers.SetupSceneModules(m_scene, configSource, m_xEngine, wcModule);
m_scene.StartScripts();
}
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
index 7a6b1cf8d5..8e547077fc 100644
--- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
@@ -58,57 +58,67 @@ namespace OpenSim.Tests.Common
///
public class SceneHelpers
{
- public static TestScene SetupScene()
+ private AgentCircuitManager m_acm = new AgentCircuitManager();
+ private ISimulationDataService m_simDataService
+ = OpenSim.Server.Base.ServerUtils.LoadPlugin("OpenSim.Tests.Common.dll", null);
+ private IEstateDataService m_estateDataService;
+
+ private LocalAssetServicesConnector m_assetService;
+ private LocalAuthenticationServicesConnector m_authenticationService;
+ private LocalInventoryServicesConnector m_inventoryService;
+ private LocalGridServicesConnector m_gridService;
+ private LocalUserAccountServicesConnector m_userAccountService;
+ private LocalPresenceServicesConnector m_presenceService;
+
+ private CoreAssetCache m_cache;
+
+ public SceneHelpers() : this(null) {}
+
+ public SceneHelpers(CoreAssetCache cache)
{
- return SetupScene(null);
+ m_assetService = StartAssetService(cache);
+ m_authenticationService = StartAuthenticationService();
+ m_inventoryService = StartInventoryService();
+ m_gridService = StartGridService();
+ m_userAccountService = StartUserAccountService();
+ m_presenceService = StartPresenceService();
+
+ m_inventoryService.PostInitialise();
+ m_assetService.PostInitialise();
+ m_userAccountService.PostInitialise();
+ m_presenceService.PostInitialise();
+
+ m_cache = cache;
}
///
/// Set up a test scene
///
///
- /// Automatically starts service threads, as would the normal runtime.
+ /// Automatically starts services, as would the normal runtime.
///
///
- public static TestScene SetupScene(CoreAssetCache cache)
+ public TestScene SetupScene()
{
- return SetupScene("Unit test region", UUID.Random(), 1000, 1000, cache);
+ return SetupScene("Unit test region", UUID.Random(), 1000, 1000);
}
- public static TestScene SetupScene(string name, UUID id, uint x, uint y)
+ public TestScene SetupScene(string name, UUID id, uint x, uint y)
{
- return SetupScene(name, id, x, y, null);
+ return SetupScene(name, id, x, y, new IniConfigSource());
}
///
- /// Set up a scene. If it's more then one scene, use the same CommunicationsManager to link regions
- /// or a different, to get a brand new scene with new shared region modules.
+ /// Set up a scene.
///
/// Name of the region
/// ID of the region
/// X co-ordinate of the region
/// Y co-ordinate of the region
- ///
- ///
- public static TestScene SetupScene(
- string name, UUID id, uint x, uint y, CoreAssetCache cache)
- {
- return SetupScene(name, id, x, y, cache, new IniConfigSource());
- }
-
- ///
- /// Set up a scene. If it's more then one scene, use the same CommunicationsManager to link regions
- /// or a different, to get a brand new scene with new shared region modules.
- ///
- /// Name of the region
- /// ID of the region
- /// X co-ordinate of the region
- /// Y co-ordinate of the region
- ///
///
///
- public static TestScene SetupScene(
- string name, UUID id, uint x, uint y, CoreAssetCache cache, IConfigSource configSource)
+ public TestScene SetupScene(
+ string name, UUID id, uint x, uint y, IConfigSource configSource)
{
Console.WriteLine("Setting up test scene {0}", name);
@@ -119,30 +129,47 @@ namespace OpenSim.Tests.Common
regInfo.RegionName = name;
regInfo.RegionID = id;
- AgentCircuitManager acm = new AgentCircuitManager();
SceneCommunicationService scs = new SceneCommunicationService();
- ISimulationDataService simDataService = OpenSim.Server.Base.ServerUtils.LoadPlugin("OpenSim.Tests.Common.dll", null);
- IEstateDataService estateDataService = null;
-
TestScene testScene = new TestScene(
- regInfo, acm, scs, simDataService, estateDataService, null, false, configSource, null);
+ regInfo, m_acm, scs, m_simDataService, m_estateDataService, null, false, configSource, null);
IRegionModule godsModule = new GodsModule();
godsModule.Initialise(testScene, new IniConfigSource());
testScene.AddModule(godsModule.Name, godsModule);
- LocalAssetServicesConnector assetService = StartAssetService(testScene, cache);
- StartAuthenticationService(testScene);
- LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene);
- StartGridService(testScene);
- LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene);
- LocalPresenceServicesConnector presenceService = StartPresenceService(testScene);
+ // Add scene to services
+ m_assetService.AddRegion(testScene);
- inventoryService.PostInitialise();
- assetService.PostInitialise();
- userAccountService.PostInitialise();
- presenceService.PostInitialise();
+ if (m_cache != null)
+ {
+ m_cache.AddRegion(testScene);
+ m_cache.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_cache.Name, m_cache);
+ }
+
+ m_assetService.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_assetService.Name, m_assetService);
+
+ m_authenticationService.AddRegion(testScene);
+ m_authenticationService.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_authenticationService.Name, m_authenticationService);
+
+ m_inventoryService.AddRegion(testScene);
+ m_inventoryService.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_inventoryService.Name, m_inventoryService);
+
+ m_gridService.AddRegion(testScene);
+ m_gridService.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_gridService.Name, m_gridService);
+
+ m_userAccountService.AddRegion(testScene);
+ m_userAccountService.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_userAccountService.Name, m_userAccountService);
+
+ m_presenceService.AddRegion(testScene);
+ m_presenceService.RegionLoaded(testScene);
+ testScene.AddRegionModule(m_presenceService.Name, m_presenceService);
testScene.RegionInfo.EstateSettings.EstateOwner = UUID.Random();
testScene.SetModuleInterfaces();
@@ -162,19 +189,17 @@ namespace OpenSim.Tests.Common
return testScene;
}
- private static LocalAssetServicesConnector StartAssetService(Scene testScene, CoreAssetCache cache)
+ private static LocalAssetServicesConnector StartAssetService(CoreAssetCache cache)
{
- LocalAssetServicesConnector assetService = new LocalAssetServicesConnector();
IConfigSource config = new IniConfigSource();
-
config.AddConfig("Modules");
config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector");
config.AddConfig("AssetService");
config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService");
config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll");
-
+
+ LocalAssetServicesConnector assetService = new LocalAssetServicesConnector();
assetService.Initialise(config);
- assetService.AddRegion(testScene);
if (cache != null)
{
@@ -184,56 +209,43 @@ namespace OpenSim.Tests.Common
cacheConfig.AddConfig("AssetCache");
cache.Initialise(cacheConfig);
- cache.AddRegion(testScene);
- cache.RegionLoaded(testScene);
- testScene.AddRegionModule(cache.Name, cache);
}
-
- assetService.RegionLoaded(testScene);
- testScene.AddRegionModule(assetService.Name, assetService);
return assetService;
}
- private static void StartAuthenticationService(Scene testScene)
+ private static LocalAuthenticationServicesConnector StartAuthenticationService()
{
- ISharedRegionModule service = new LocalAuthenticationServicesConnector();
IConfigSource config = new IniConfigSource();
-
config.AddConfig("Modules");
config.AddConfig("AuthenticationService");
config.Configs["Modules"].Set("AuthenticationServices", "LocalAuthenticationServicesConnector");
config.Configs["AuthenticationService"].Set(
"LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService");
config.Configs["AuthenticationService"].Set("StorageProvider", "OpenSim.Data.Null.dll");
-
+
+ LocalAuthenticationServicesConnector service = new LocalAuthenticationServicesConnector();
service.Initialise(config);
- service.AddRegion(testScene);
- service.RegionLoaded(testScene);
- testScene.AddRegionModule(service.Name, service);
- //m_authenticationService = service;
+
+ return service;
}
- private static LocalInventoryServicesConnector StartInventoryService(Scene testScene)
+ private static LocalInventoryServicesConnector StartInventoryService()
{
- LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector();
-
IConfigSource config = new IniConfigSource();
config.AddConfig("Modules");
config.AddConfig("InventoryService");
config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector");
config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService");
config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll");
-
+
+ LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector();
inventoryService.Initialise(config);
- inventoryService.AddRegion(testScene);
- inventoryService.RegionLoaded(testScene);
- testScene.AddRegionModule(inventoryService.Name, inventoryService);
return inventoryService;
}
- private static LocalGridServicesConnector StartGridService(Scene testScene)
+ private static LocalGridServicesConnector StartGridService()
{
IConfigSource config = new IniConfigSource();
config.AddConfig("Modules");
@@ -245,8 +257,6 @@ namespace OpenSim.Tests.Common
LocalGridServicesConnector gridService = new LocalGridServicesConnector();
gridService.Initialise(config);
- gridService.AddRegion(testScene);
- gridService.RegionLoaded(testScene);
return gridService;
}
@@ -256,7 +266,7 @@ namespace OpenSim.Tests.Common
///
///
///
- private static LocalUserAccountServicesConnector StartUserAccountService(Scene testScene)
+ private static LocalUserAccountServicesConnector StartUserAccountService()
{
IConfigSource config = new IniConfigSource();
config.AddConfig("Modules");
@@ -268,10 +278,6 @@ namespace OpenSim.Tests.Common
LocalUserAccountServicesConnector userAccountService = new LocalUserAccountServicesConnector();
userAccountService.Initialise(config);
-
- userAccountService.AddRegion(testScene);
- userAccountService.RegionLoaded(testScene);
- testScene.AddRegionModule(userAccountService.Name, userAccountService);
return userAccountService;
}
@@ -280,7 +286,7 @@ namespace OpenSim.Tests.Common
/// Start a presence service
///
///
- private static LocalPresenceServicesConnector StartPresenceService(Scene testScene)
+ private static LocalPresenceServicesConnector StartPresenceService()
{
IConfigSource config = new IniConfigSource();
config.AddConfig("Modules");
@@ -292,10 +298,6 @@ namespace OpenSim.Tests.Common
LocalPresenceServicesConnector presenceService = new LocalPresenceServicesConnector();
presenceService.Initialise(config);
-
- presenceService.AddRegion(testScene);
- presenceService.RegionLoaded(testScene);
- testScene.AddRegionModule(presenceService.Name, presenceService);
return presenceService;
}
@@ -313,10 +315,37 @@ namespace OpenSim.Tests.Common
///
/// Setup modules for a scene.
///
- ///
+ ///
+ /// If called directly, then all the modules must be shared modules.
+ ///
+ ///
///
///
public static void SetupSceneModules(Scene scene, IConfigSource config, params object[] modules)
+ {
+ SetupSceneModules(new Scene[] { scene }, config, modules);
+ }
+
+ ///
+ /// Setup modules for a scene using their default settings.
+ ///
+ ///
+ ///
+ public static void SetupSceneModules(Scene[] scenes, params object[] modules)
+ {
+ SetupSceneModules(scenes, new IniConfigSource(), modules);
+ }
+
+ ///
+ /// Setup modules for scenes.
+ ///
+ ///
+ /// If called directly, then all the modules must be shared modules.
+ ///
+ ///
+ ///
+ ///
+ public static void SetupSceneModules(Scene[] scenes, IConfigSource config, params object[] modules)
{
List newModules = new List();
foreach (object module in modules)
@@ -324,8 +353,13 @@ namespace OpenSim.Tests.Common
if (module is IRegionModule)
{
IRegionModule m = (IRegionModule)module;
- m.Initialise(scene, config);
- scene.AddModule(m.Name, m);
+
+ foreach (Scene scene in scenes)
+ {
+ m.Initialise(scene, config);
+ scene.AddModule(m.Name, m);
+ }
+
m.PostInitialise();
}
else if (module is IRegionModuleBase)
@@ -345,15 +379,19 @@ namespace OpenSim.Tests.Common
foreach (IRegionModuleBase module in newModules)
{
- module.AddRegion(scene);
- scene.AddRegionModule(module.Name, module);
+ foreach (Scene scene in scenes)
+ {
+ module.AddRegion(scene);
+ scene.AddRegionModule(module.Name, module);
+ }
}
// RegionLoaded is fired after all modules have been appropriately added to all scenes
foreach (IRegionModuleBase module in newModules)
- module.RegionLoaded(scene);
+ foreach (Scene scene in scenes)
+ module.RegionLoaded(scene);
- scene.SetModuleInterfaces();
+ foreach (Scene scene in scenes) { scene.SetModuleInterfaces(); }
}
///
diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
index 0e4dfb9eee..4b4d52d77e 100644
--- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs
+++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
@@ -46,6 +46,14 @@ namespace OpenSim.Tests.Common.Mock
{
m_scene = scene;
m_parcels = new List();
+ SetupDefaultParcel();
+ }
+
+ private void SetupDefaultParcel()
+ {
+ ILandObject obj = new LandObject(UUID.Zero, false, m_scene);
+ obj.LandData.Name = "Your Parcel";
+ m_parcels.Add(obj);
}
public List ParcelsNearPoint(Vector3 position)
@@ -63,11 +71,7 @@ namespace OpenSim.Tests.Common.Mock
m_parcels.Clear();
if (setupDefaultParcel)
- {
- ILandObject obj = new LandObject(UUID.Zero, false, m_scene);
- obj.LandData.Name = "Your Parcel";
- m_parcels.Add(obj);
- }
+ SetupDefaultParcel();
}
protected ILandObject GetNoLand()
@@ -102,6 +106,5 @@ namespace OpenSim.Tests.Common.Mock
public void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id) {}
public void Subdivide(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id) {}
-
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Tests/Torture/NPCTortureTests.cs b/OpenSim/Tests/Torture/NPCTortureTests.cs
index 02245056c4..731df6808c 100644
--- a/OpenSim/Tests/Torture/NPCTortureTests.cs
+++ b/OpenSim/Tests/Torture/NPCTortureTests.cs
@@ -98,7 +98,7 @@ namespace OpenSim.Tests.Torture
umm = new UserManagementModule();
am = new AttachmentsModule();
- scene = SceneHelpers.SetupScene();
+ scene = new SceneHelpers().SetupScene();
SceneHelpers.SetupSceneModules(scene, config, afm, umm, am, new BasicInventoryAccessModule(), new NPCModule());
}
diff --git a/OpenSim/Tests/Torture/ObjectTortureTests.cs b/OpenSim/Tests/Torture/ObjectTortureTests.cs
index d0d2199b0c..195d47bd52 100644
--- a/OpenSim/Tests/Torture/ObjectTortureTests.cs
+++ b/OpenSim/Tests/Torture/ObjectTortureTests.cs
@@ -126,7 +126,7 @@ namespace OpenSim.Tests.Torture
// 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 = SceneHelpers.SetupScene();
+ TestScene scene = new SceneHelpers().SetupScene();
// Process process = Process.GetCurrentProcess();
// long startProcessMemory = process.PrivateMemorySize64;
diff --git a/OpenSim/Tests/Torture/ScriptTortureTests.cs b/OpenSim/Tests/Torture/ScriptTortureTests.cs
index 2ef55b34b3..24f278f3f8 100644
--- a/OpenSim/Tests/Torture/ScriptTortureTests.cs
+++ b/OpenSim/Tests/Torture/ScriptTortureTests.cs
@@ -84,7 +84,7 @@ namespace OpenSim.Tests.Torture
// to AssemblyResolver.OnAssemblyResolve fails.
xEngineConfig.Set("AppDomainLoading", "false");
- m_scene = SceneHelpers.SetupScene("My Test", UUID.Random(), 1000, 1000, null, configSource);
+ 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;
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 65ec445d16..d159960cf7 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -337,6 +337,13 @@
; OpenJPEG if false
; UseCSJ2K = true
+
+ ; Use "Trash" folder for items deleted from the scene
+ ; When set to True (the default) items deleted from the scene will be
+ ; stored in the user's trash or lost and found folder. When set to
+ ; False items will be removed from the scene permanently
+ UseTrashOnDelete = True
+
; Persist avatar baked textures
; Persisting baked textures can speed up login and region border
; crossings especially with large numbers of users, though it