From 81dcf223bf2c564423d2c5c101ea95b6d79c6eab Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Thu, 20 Nov 2008 16:58:40 +0000
Subject: * Add enough infrastructure code to run an extremely basic and flaky
add root agent scene test
---
OpenSim/Region/Environment/Scenes/Scene.cs | 2 +-
OpenSim/Region/Environment/Scenes/ScenePresence.cs | 2 +
.../Environment/Scenes/Tests/ScenePresenceTests.cs | 15 +-
.../Environment/Scenes/Tests/SceneTestUtils.cs | 7 +-
.../Region/Environment/Scenes/Tests/TestClient.cs | 938 +++++++++++++++++++++
.../Scenes/Tests/TestCommunicationsManager.cs | 44 +
6 files changed, 1002 insertions(+), 6 deletions(-)
create mode 100644 OpenSim/Region/Environment/Scenes/Tests/TestClient.cs
create mode 100644 OpenSim/Region/Environment/Scenes/Tests/TestCommunicationsManager.cs
(limited to 'OpenSim/Region/Environment/Scenes')
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index a9014e1..f37ba25 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -193,7 +193,7 @@ namespace OpenSim.Region.Environment.Scenes
public PhysicsScene PhysicsScene
{
set { m_sceneGraph.PhysicsScene = value; }
- get { return (m_sceneGraph.PhysicsScene); }
+ get { return m_sceneGraph.PhysicsScene; }
}
// This gets locked so things stay thread safe.
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 19f0f9c..61fa83d 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -2424,6 +2424,7 @@ namespace OpenSim.Region.Environment.Scenes
PhysicsVector pVec =
new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y,
AbsolutePosition.Z);
+
if (m_avHeight == 127.0f)
{
m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, new PhysicsVector(0, 0, 1.56f));
@@ -2432,6 +2433,7 @@ namespace OpenSim.Region.Environment.Scenes
{
m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, new PhysicsVector(0, 0, m_avHeight));
}
+
//m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
m_physicsActor.SubscribeEvents(1000);
diff --git a/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs
index 4cab32a..a82f9b1 100644
--- a/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs
+++ b/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs
@@ -26,6 +26,7 @@
*/
using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Environment.Scenes;
@@ -52,16 +53,18 @@ namespace OpenSim.Region.Environment.Scenes.Tests
}
///
- /// Test adding a root agent to a scene. Doesn't yet do what it says on the tin.
+ /// Test adding a root agent to a scene. Doesn't yet actually complete crossing the agent into the scene.
///
[Test]
public void TestAddRootAgent()
{
Scene scene = SceneTestUtils.SetupScene();
+ UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001");
+ string firstName = "testfirstname";
AgentCircuitData agent = new AgentCircuitData();
- agent.AgentID = UUID.Zero;
- agent.firstname = "testfirstname";
+ agent.AgentID = agentId;
+ agent.firstname = firstName;
agent.lastname = "testlastname";
agent.SessionID = UUID.Zero;
agent.SecureSessionID = UUID.Zero;
@@ -72,8 +75,12 @@ namespace OpenSim.Region.Environment.Scenes.Tests
agent.CapsPath = "http://wibble.com";
scene.NewUserConnection(agent);
+ scene.AddNewClient(new TestClient(agent), false);
- // There are going to be more parts to this.
+ ScenePresence presence = scene.GetScenePresence(agentId);
+
+ Assert.That(presence, Is.Not.Null, "presence is null");
+ Assert.That(presence.Firstname, Is.EqualTo(firstName), "First name not same");
}
}
}
diff --git a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs
index 26c148f..15053f1 100644
--- a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs
+++ b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs
@@ -30,6 +30,7 @@ using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Servers;
+using OpenSim.Region.Physics.Manager;
using OpenSim.Region.Environment.Scenes;
namespace OpenSim.Region.Environment.Scenes.Tests
@@ -50,7 +51,7 @@ namespace OpenSim.Region.Environment.Scenes.Tests
regInfo.ExternalHostName = "1.2.3.4";
AgentCircuitManager acm = new AgentCircuitManager();
- CommunicationsManager cm = new CommunicationsManager(null, null, null, false, null);
+ CommunicationsManager cm = new TestCommunicationsManager();
//SceneCommunicationService scs = new SceneCommunicationService(cm);
SceneCommunicationService scs = null;
StorageManager sm = new OpenSim.Region.Environment.StorageManager("OpenSim.Data.Null.dll", "", "");
@@ -62,6 +63,10 @@ namespace OpenSim.Region.Environment.Scenes.Tests
testScene.LandChannel = new TestLandChannel();
+ PhysicsPluginManager physicsPluginManager = new PhysicsPluginManager();
+ physicsPluginManager.LoadPlugins();
+ testScene.PhysicsScene = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", configSource);
+
return testScene;
}
diff --git a/OpenSim/Region/Environment/Scenes/Tests/TestClient.cs b/OpenSim/Region/Environment/Scenes/Tests/TestClient.cs
new file mode 100644
index 0000000..15c6ad1
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/Tests/TestClient.cs
@@ -0,0 +1,938 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSim Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Net;
+using OpenMetaverse;
+using OpenMetaverse.Packets;
+using OpenSim.Framework;
+using OpenSim.Region.Environment.Scenes;
+
+namespace OpenSim.Region.Environment.Scenes.Tests
+{
+ public class TestClient : IClientAPI
+ {
+ private Scene m_scene;
+
+// disable warning: public events, part of the public API
+#pragma warning disable 67
+
+ public event Action OnLogout;
+ public event ObjectPermissions OnObjectPermissions;
+
+ public event MoneyTransferRequest OnMoneyTransferRequest;
+ public event ParcelBuy OnParcelBuy;
+ public event Action OnConnectionClosed;
+
+ public event ImprovedInstantMessage OnInstantMessage;
+ public event ChatMessage OnChatFromClient;
+ public event TextureRequest OnRequestTexture;
+ public event RezObject OnRezObject;
+ public event ModifyTerrain OnModifyTerrain;
+ public event BakeTerrain OnBakeTerrain;
+ public event SetAppearance OnSetAppearance;
+ public event AvatarNowWearing OnAvatarNowWearing;
+ public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv;
+ public event UUIDNameRequest OnDetachAttachmentIntoInv;
+ public event ObjectAttach OnObjectAttach;
+ public event ObjectDeselect OnObjectDetach;
+ public event ObjectDrop OnObjectDrop;
+ public event StartAnim OnStartAnim;
+ public event StopAnim OnStopAnim;
+ public event LinkObjects OnLinkObjects;
+ public event DelinkObjects OnDelinkObjects;
+ public event RequestMapBlocks OnRequestMapBlocks;
+ public event RequestMapName OnMapNameRequest;
+ public event TeleportLocationRequest OnTeleportLocationRequest;
+ public event TeleportLandmarkRequest OnTeleportLandmarkRequest;
+ public event DisconnectUser OnDisconnectUser;
+ public event RequestAvatarProperties OnRequestAvatarProperties;
+ public event SetAlwaysRun OnSetAlwaysRun;
+
+ public event DeRezObject OnDeRezObject;
+ public event Action OnRegionHandShakeReply;
+ public event GenericCall2 OnRequestWearables;
+ public event GenericCall2 OnCompleteMovementToRegion;
+ public event UpdateAgent OnAgentUpdate;
+ public event AgentRequestSit OnAgentRequestSit;
+ public event AgentSit OnAgentSit;
+ public event AvatarPickerRequest OnAvatarPickerRequest;
+ public event Action OnRequestAvatarsData;
+ public event AddNewPrim OnAddPrim;
+ public event RequestGodlikePowers OnRequestGodlikePowers;
+ public event GodKickUser OnGodKickUser;
+ public event ObjectDuplicate OnObjectDuplicate;
+ public event GrabObject OnGrabObject;
+ public event ObjectSelect OnDeGrabObject;
+ public event MoveObject OnGrabUpdate;
+ public event ViewerEffectEventHandler OnViewerEffect;
+
+ public event FetchInventory OnAgentDataUpdateRequest;
+ public event FetchInventory OnUserInfoRequest;
+ public event TeleportLocationRequest OnSetStartLocationRequest;
+
+ public event UpdateShape OnUpdatePrimShape;
+ public event ObjectExtraParams OnUpdateExtraParams;
+ public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
+ public event ObjectSelect OnObjectSelect;
+ public event GenericCall7 OnObjectDescription;
+ public event GenericCall7 OnObjectName;
+ public event GenericCall7 OnObjectClickAction;
+ public event GenericCall7 OnObjectMaterial;
+ public event UpdatePrimFlags OnUpdatePrimFlags;
+ public event UpdatePrimTexture OnUpdatePrimTexture;
+ public event UpdateVector OnUpdatePrimGroupPosition;
+ public event UpdateVector OnUpdatePrimSinglePosition;
+ public event UpdatePrimRotation OnUpdatePrimGroupRotation;
+ public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
+ public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
+ public event UpdateVector OnUpdatePrimScale;
+ public event UpdateVector OnUpdatePrimGroupScale;
+ public event StatusChange OnChildAgentStatus;
+ public event GenericCall2 OnStopMovement;
+ public event Action OnRemoveAvatar;
+
+ public event CreateNewInventoryItem OnCreateNewInventoryItem;
+ public event CreateInventoryFolder OnCreateNewInventoryFolder;
+ public event UpdateInventoryFolder OnUpdateInventoryFolder;
+ public event MoveInventoryFolder OnMoveInventoryFolder;
+ public event RemoveInventoryFolder OnRemoveInventoryFolder;
+ public event RemoveInventoryItem OnRemoveInventoryItem;
+ public event FetchInventoryDescendents OnFetchInventoryDescendents;
+ public event PurgeInventoryDescendents OnPurgeInventoryDescendents;
+ public event FetchInventory OnFetchInventory;
+ public event RequestTaskInventory OnRequestTaskInventory;
+ public event UpdateInventoryItem OnUpdateInventoryItem;
+ public event CopyInventoryItem OnCopyInventoryItem;
+ public event MoveInventoryItem OnMoveInventoryItem;
+ public event UDPAssetUploadRequest OnAssetUploadRequest;
+ public event RequestTerrain OnRequestTerrain;
+ public event RequestTerrain OnUploadTerrain;
+ public event XferReceive OnXferReceive;
+ public event RequestXfer OnRequestXfer;
+ public event ConfirmXfer OnConfirmXfer;
+ public event AbortXfer OnAbortXfer;
+ public event RezScript OnRezScript;
+ public event UpdateTaskInventory OnUpdateTaskInventory;
+ public event MoveTaskInventory OnMoveTaskItem;
+ public event RemoveTaskInventory OnRemoveTaskItem;
+ public event RequestAsset OnRequestAsset;
+ public event GenericMessage OnGenericMessage;
+ public event UUIDNameRequest OnNameFromUUIDRequest;
+ public event UUIDNameRequest OnUUIDGroupNameRequest;
+
+ public event ParcelPropertiesRequest OnParcelPropertiesRequest;
+ public event ParcelDivideRequest OnParcelDivideRequest;
+ public event ParcelJoinRequest OnParcelJoinRequest;
+ public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
+ public event ParcelAbandonRequest OnParcelAbandonRequest;
+ public event ParcelGodForceOwner OnParcelGodForceOwner;
+ public event ParcelReclaim OnParcelReclaim;
+ public event ParcelReturnObjectsRequest OnParcelReturnObjectsRequest;
+ public event ParcelAccessListRequest OnParcelAccessListRequest;
+ public event ParcelAccessListUpdateRequest OnParcelAccessListUpdateRequest;
+ public event ParcelSelectObjects OnParcelSelectObjects;
+ public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
+ public event ObjectDeselect OnObjectDeselect;
+ public event RegionInfoRequest OnRegionInfoRequest;
+ public event EstateCovenantRequest OnEstateCovenantRequest;
+ public event EstateChangeInfo OnEstateChangeInfo;
+
+ public event ObjectDuplicateOnRay OnObjectDuplicateOnRay;
+
+ public event FriendActionDelegate OnApproveFriendRequest;
+ public event FriendActionDelegate OnDenyFriendRequest;
+ public event FriendshipTermination OnTerminateFriendship;
+
+ public event EconomyDataRequest OnEconomyDataRequest;
+ public event MoneyBalanceRequest OnMoneyBalanceRequest;
+ public event UpdateAvatarProperties OnUpdateAvatarProperties;
+
+ public event ObjectIncludeInSearch OnObjectIncludeInSearch;
+ public event UUIDNameRequest OnTeleportHomeRequest;
+
+ public event ScriptAnswer OnScriptAnswer;
+ public event RequestPayPrice OnRequestPayPrice;
+ public event ObjectSaleInfo OnObjectSaleInfo;
+ public event ObjectBuy OnObjectBuy;
+ public event BuyObjectInventory OnBuyObjectInventory;
+ public event AgentSit OnUndo;
+
+ public event ForceReleaseControls OnForceReleaseControls;
+
+ public event GodLandStatRequest OnLandStatRequest;
+ public event RequestObjectPropertiesFamily OnObjectGroupRequest;
+
+ public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
+ public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
+ public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
+ public event SetEstateTerrainDetailTexture OnSetEstateTerrainDetailTexture;
+ public event SetEstateTerrainTextureHeights OnSetEstateTerrainTextureHeights;
+ public event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest;
+ public event SetRegionTerrainSettings OnSetRegionTerrainSettings;
+ public event EstateRestartSimRequest OnEstateRestartSimRequest;
+ public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest;
+ public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest;
+ public event SimulatorBlueBoxMessageRequest OnSimulatorBlueBoxMessageRequest;
+ public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest;
+ public event EstateDebugRegionRequest OnEstateDebugRegionRequest;
+ public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest;
+ public event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest;
+ public event ScriptReset OnScriptReset;
+ public event GetScriptRunning OnGetScriptRunning;
+ public event SetScriptRunning OnSetScriptRunning;
+ public event UpdateVector OnAutoPilotGo;
+
+ public event TerrainUnacked OnUnackedTerrain;
+
+ public event RegionHandleRequest OnRegionHandleRequest;
+ public event ParcelInfoRequest OnParcelInfoRequest;
+
+ public event ActivateGesture OnActivateGesture;
+ public event DeactivateGesture OnDeactivateGesture;
+ public event ObjectOwner OnObjectOwner;
+
+ public event DirPlacesQuery OnDirPlacesQuery;
+ public event DirFindQuery OnDirFindQuery;
+ public event DirLandQuery OnDirLandQuery;
+ public event DirPopularQuery OnDirPopularQuery;
+ public event DirClassifiedQuery OnDirClassifiedQuery;
+ public event EventInfoRequest OnEventInfoRequest;
+ public event ParcelSetOtherCleanTime OnParcelSetOtherCleanTime;
+
+ public event MapItemRequest OnMapItemRequest;
+
+ public event OfferCallingCard OnOfferCallingCard;
+ public event AcceptCallingCard OnAcceptCallingCard;
+ public event DeclineCallingCard OnDeclineCallingCard;
+
+ public event SoundTrigger OnSoundTrigger;
+
+#pragma warning restore 67
+
+ ///
+ /// This agent's UUID
+ ///
+ private UUID myID;
+
+ private Vector3 startPos = new Vector3(128, 128, 2);
+
+ public virtual Vector3 StartPos
+ {
+ get { return startPos; }
+ set { }
+ }
+
+ public virtual UUID AgentId
+ {
+ get { return myID; }
+ }
+
+ public UUID SessionId
+ {
+ get { return UUID.Zero; }
+ }
+
+ public UUID SecureSessionId
+ {
+ get { return UUID.Zero; }
+ }
+
+ public virtual string FirstName
+ {
+ get { return m_firstName; }
+ }
+ private string m_firstName;
+
+ public virtual string LastName
+ {
+ get { return m_lastName; }
+ }
+ private string m_lastName;
+
+ public virtual String Name
+ {
+ get { return FirstName + " " + LastName; }
+ }
+
+ public bool IsActive
+ {
+ get { return true; }
+ set { }
+ }
+
+ public UUID ActiveGroupId
+ {
+ get { return UUID.Zero; }
+ }
+
+ public string ActiveGroupName
+ {
+ get { return String.Empty; }
+ }
+
+ public ulong ActiveGroupPowers
+ {
+ get { return 0; }
+ }
+
+ public ulong GetGroupPowers(UUID groupID)
+ {
+ return 0;
+ }
+
+ public virtual int NextAnimationSequenceNumber
+ {
+ get { return 1; }
+ }
+
+ public IScene Scene
+ {
+ get { return m_scene; }
+ }
+
+ public bool SendLogoutPacketWhenClosing
+ {
+ set { }
+ }
+
+ ///
+ /// Constructor
+ ///
+ ///
+ public TestClient(AgentCircuitData agentData)
+ {
+ myID = agentData.AgentID;
+ m_firstName = agentData.firstname;
+ m_lastName = agentData.lastname;
+ }
+
+ public virtual void ActivateGesture(UUID assetId, UUID gestureId)
+ {
+ }
+
+ public virtual void SendWearables(AvatarWearable[] wearables, int serial)
+ {
+ }
+
+ public virtual void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry)
+ {
+ }
+
+ public virtual void Kick(string message)
+ {
+ }
+
+ public virtual void SendStartPingCheck(byte seq)
+ {
+ }
+
+ public virtual void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List Data)
+ {
+ }
+
+ public virtual void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
+ {
+
+ }
+
+ public virtual void SendKillObject(ulong regionHandle, uint localID)
+ {
+ }
+
+ public virtual void SetChildAgentThrottle(byte[] throttle)
+ {
+ }
+ public byte[] GetThrottlesPacked(float multiplier)
+ {
+ return new byte[0];
+ }
+
+
+ public virtual void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId)
+ {
+ }
+
+ public virtual void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName,
+ UUID fromAgentID, byte source, byte audible)
+ {
+ }
+
+ public virtual void SendChatMessage(byte[] message, byte type, Vector3 fromPos, string fromName,
+ UUID fromAgentID, byte source, byte audible)
+ {
+ }
+
+ public void SendInstantMessage(UUID fromAgent, string message, UUID toAgent, string fromName, byte dialog, uint timeStamp)
+ {
+
+ }
+
+ public void SendInstantMessage(UUID fromAgent, string message, UUID toAgent, string fromName, byte dialog, uint timeStamp, UUID transactionID, bool fromGroup, byte[] binaryBucket)
+ {
+
+ }
+
+ public void SendGenericMessage(string method, List message)
+ {
+
+ }
+
+ public virtual void SendLayerData(float[] map)
+ {
+ }
+
+ public virtual void SendLayerData(int px, int py, float[] map)
+ {
+ }
+ public virtual void SendLayerData(int px, int py, float[] map, bool track)
+ {
+ }
+
+ public virtual void SendWindData(Vector2[] windSpeeds) { }
+
+ public virtual void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look)
+ {
+ }
+
+ public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint)
+ {
+ }
+
+ public virtual AgentCircuitData RequestClientInfo()
+ {
+ return new AgentCircuitData();
+ }
+
+ public virtual void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt,
+ IPEndPoint newRegionExternalEndPoint, string capsURL)
+ {
+ }
+
+ public virtual void SendMapBlock(List mapBlocks, uint flag)
+ {
+ }
+
+ public virtual void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags)
+ {
+ }
+
+ public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint,
+ uint locationID, uint flags, string capsURL)
+ {
+ }
+
+ public virtual void SendTeleportFailed(string reason)
+ {
+ }
+
+ public virtual void SendTeleportLocationStart()
+ {
+ }
+
+ public virtual void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance)
+ {
+ }
+
+ public virtual void SendPayPrice(UUID objectID, int[] payPrice)
+ {
+ }
+
+ public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, string grouptitle, UUID avatarID,
+ uint avatarLocalID, Vector3 Pos, byte[] textureEntry, uint parentID, Quaternion rotation)
+ {
+ }
+
+ public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID,
+ Vector3 position, Vector3 velocity, Quaternion rotation)
+ {
+ }
+
+ public virtual void SendCoarseLocationUpdate(List CoarseLocations)
+ {
+ }
+
+ public virtual void AttachObject(uint localID, Quaternion rotation, byte attachPoint, UUID ownerID)
+ {
+ }
+
+ public virtual void SendDialog(string objectname, UUID objectID, UUID ownerID, string msg, UUID textureID, int ch, string[] buttonlabels)
+ {
+ }
+
+ public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID,
+ PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel,
+ Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags,
+ UUID objectID, UUID ownerID, string text, byte[] color,
+ uint parentID,
+ byte[] particleSystem, byte clickAction, byte material)
+ {
+ }
+ public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID,
+ PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel,
+ Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags,
+ UUID objectID, UUID ownerID, string text, byte[] color,
+ uint parentID,
+ byte[] particleSystem, byte clickAction, byte material, byte[] textureanimation,
+ bool attachment, uint AttachmentPoint, UUID AssetId, UUID SoundId, double SoundVolume, byte SoundFlags, double SoundRadius)
+ {
+ }
+ public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID,
+ Vector3 position, Quaternion rotation, Vector3 velocity,
+ Vector3 rotationalvelocity, byte state, UUID AssetId,
+ UUID ownerID, int attachPoint)
+ {
+ }
+
+ public virtual void SendInventoryFolderDetails(UUID ownerID, UUID folderID,
+ List items,
+ List folders,
+ bool fetchFolders,
+ bool fetchItems)
+ {
+ }
+
+ public virtual void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item)
+ {
+ }
+
+ public virtual void SendInventoryItemCreateUpdate(InventoryItemBase Item)
+ {
+ }
+
+ public virtual void SendRemoveInventoryItem(UUID itemID)
+ {
+ }
+
+ /// IClientAPI.SendBulkUpdateInventory(InventoryItemBase)
+ public virtual void SendBulkUpdateInventory(InventoryItemBase item)
+ {
+ }
+
+ public UUID GetDefaultAnimation(string name)
+ {
+ return UUID.Zero;
+ }
+
+ public void SendTakeControls(int controls, bool passToAgent, bool TakeControls)
+ {
+ }
+
+ public virtual void SendTaskInventory(UUID taskID, short serial, byte[] fileName)
+ {
+ }
+
+ public virtual void SendXferPacket(ulong xferID, uint packet, byte[] data)
+ {
+ }
+
+ public virtual void SendEconomyData(float EnergyEfficiency, int ObjectCapacity, int ObjectCount, int PriceEnergyUnit,
+ int PriceGroupCreate, int PriceObjectClaim, float PriceObjectRent, float PriceObjectScaleFactor,
+ int PriceParcelClaim, float PriceParcelClaimFactor, int PriceParcelRent, int PricePublicObjectDecay,
+ int PricePublicObjectDelete, int PriceRentLight, int PriceUpload, int TeleportMinPrice, float TeleportPriceExponent)
+ {
+
+ }
+ public virtual void SendNameReply(UUID profileId, string firstname, string lastname)
+ {
+ }
+
+ public virtual void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID)
+ {
+ }
+
+ public virtual void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain,
+ byte flags)
+ {
+ }
+
+ public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain)
+ {
+ }
+
+ public void SendAttachedSoundGainChange(UUID objectID, float gain)
+ {
+
+ }
+
+ public void SendAlertMessage(string message)
+ {
+ }
+
+ public void SendAgentAlertMessage(string message, bool modal)
+ {
+ }
+
+ public void SendSystemAlertMessage(string message)
+ {
+ }
+
+ public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message,
+ string url)
+ {
+ }
+
+ public virtual void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args)
+ {
+ if (OnRegionHandShakeReply != null)
+ {
+ OnRegionHandShakeReply(this);
+ }
+
+ if (OnCompleteMovementToRegion != null)
+ {
+ OnCompleteMovementToRegion();
+ }
+ }
+ public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID)
+ {
+ }
+
+ public void SendConfirmXfer(ulong xferID, uint PacketID)
+ {
+ }
+
+ public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName)
+ {
+ }
+
+ public void SendInitiateDownload(string simFileName, string clientFileName)
+ {
+ }
+
+ public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec)
+ {
+ }
+
+ public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData)
+ {
+ }
+
+ public void SendImageNotFound(UUID imageid)
+ {
+ }
+
+ public void SendShutdownConnectionNotice()
+ {
+ }
+
+ public void SendSimStats(SimStats stats)
+ {
+ }
+
+ public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID,
+ uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask,
+ uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category,
+ UUID LastOwnerID, string ObjectName, string Description)
+ {
+ }
+
+ public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID,
+ UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID,
+ UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName,
+ string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask,
+ uint BaseMask, byte saleType, int salePrice)
+ {
+ }
+
+ public void SendAgentOffline(UUID[] agentIDs)
+ {
+
+ }
+
+ public void SendAgentOnline(UUID[] agentIDs)
+ {
+
+ }
+
+ public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot,
+ Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook)
+ {
+ }
+
+ public void SendAdminResponse(UUID Token, uint AdminLevel)
+ {
+
+ }
+
+ public void SendGroupMembership(GroupMembershipData[] GroupMembership)
+ {
+
+ }
+
+ public bool AddMoney(int debit)
+ {
+ return false;
+ }
+
+ public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong time, uint dlen, uint ylen, float phase)
+ {
+ }
+
+ public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks)
+ {
+ }
+
+ public void SendViewerTime(int phase)
+ {
+ }
+
+ public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember,
+ string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL,
+ UUID partnerID)
+ {
+ }
+
+ public void SetDebugPacketLevel(int newDebug)
+ {
+ }
+
+ public void InPacket(object NewPack)
+ {
+ }
+
+ public void ProcessInPacket(Packet NewPack)
+ {
+ }
+
+ public void Close(bool ShutdownCircuit)
+ {
+ }
+
+ public void Stop()
+ {
+ }
+
+ private uint m_circuitCode;
+
+ public uint CircuitCode
+ {
+ get { return m_circuitCode; }
+ set { m_circuitCode = value; }
+ }
+
+ public void SendBlueBoxMessage(UUID FromAvatarID, String FromAvatarName, String Message)
+ {
+
+ }
+ public void SendLogoutPacket()
+ {
+ }
+
+ public void Terminate()
+ {
+ }
+
+ public ClientInfo GetClientInfo()
+ {
+ return null;
+ }
+
+ public void SetClientInfo(ClientInfo info)
+ {
+ }
+
+ public void SendScriptQuestion(UUID objectID, string taskName, string ownerName, UUID itemID, int question)
+ {
+ }
+ public void SendHealth(float health)
+ {
+ }
+
+ public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
+ {
+ }
+
+ public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID)
+ {
+ }
+
+ public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args)
+ {
+ }
+
+ public void SendEstateCovenantInformation(UUID covenant)
+ {
+ }
+
+ public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner)
+ {
+ }
+
+ public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
+ {
+ }
+
+ public void SendLandAccessListData(List avatars, uint accessFlag, int localLandID)
+ {
+ }
+
+ public void SendForceClientSelectObjects(List objectIDs)
+ {
+ }
+
+ public void SendLandObjectOwners(Dictionary ownersAndCount)
+ {
+ }
+
+ public void SendLandParcelOverlay(byte[] data, int sequence_id)
+ {
+ }
+
+ public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time)
+ {
+ }
+
+ public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType,
+ string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop)
+ {
+ }
+
+ public void SendGroupNameReply(UUID groupLLUID, string GroupName)
+ {
+ }
+
+ public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia)
+ {
+ }
+
+ public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running)
+ {
+ }
+
+ public void SendAsset(AssetRequestToClient req)
+ {
+ }
+
+ public void SendTexture(AssetBase TextureAsset)
+ {
+
+ }
+
+ public void SendSetFollowCamProperties (UUID objectID, SortedDictionary parameters)
+ {
+ }
+
+ public void SendClearFollowCamProperties (UUID objectID)
+ {
+ }
+
+ public void SendRegionHandle (UUID regoinID, ulong handle)
+ {
+ }
+
+ public void SendParcelInfo (RegionInfo info, LandData land, UUID parcelID, uint x, uint y)
+ {
+ }
+
+ public void SetClientOption(string option, string value)
+ {
+ }
+
+ public string GetClientOption(string option)
+ {
+ return string.Empty;
+ }
+
+ public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt)
+ {
+ }
+
+ public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data)
+ {
+ }
+
+ public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data)
+ {
+ }
+
+ public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data)
+ {
+ }
+
+ public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data)
+ {
+ }
+
+ public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data)
+ {
+ }
+
+ public void SendDirLandReply(UUID queryID, DirLandReplyData[] data)
+ {
+ }
+
+ public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data)
+ {
+ }
+
+ public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
+ {
+ }
+
+ public void KillEndDone()
+ {
+ }
+
+ public void SendEventInfoReply (EventData info)
+ {
+ }
+
+ public void SendOfferCallingCard (UUID destID, UUID transactionID)
+ {
+ }
+
+ public void SendAcceptCallingCard (UUID transactionID)
+ {
+ }
+
+ public void SendDeclineCallingCard (UUID transactionID)
+ {
+ }
+
+ public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data)
+ {
+ }
+
+ public void SendJoinGroupReply(UUID groupID, bool success)
+ {
+ }
+
+ public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool succss)
+ {
+ }
+
+ public void SendLeaveGroupReply(UUID groupID, bool success)
+ {
+ }
+
+ public void SendTerminateFriend(UUID exFriendID)
+ {
+ }
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/Tests/TestCommunicationsManager.cs b/OpenSim/Region/Environment/Scenes/Tests/TestCommunicationsManager.cs
new file mode 100644
index 0000000..2225edd
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/Tests/TestCommunicationsManager.cs
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSim Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using OpenSim.Framework;
+using OpenSim.Framework.Communications;
+using OpenSim.Framework.Communications.Cache;
+using OpenSim.Framework.Servers;
+using OpenSim.Region.Communications.Local;
+
+namespace OpenSim.Region.Environment.Scenes.Tests
+{
+ public class TestCommunicationsManager : CommunicationsManager
+ {
+ public TestCommunicationsManager()
+ : base(null, null, null, false, null)
+ {
+ m_userService = new LocalUserServices(null, 991, 992, null);
+ }
+ }
+}
--
cgit v1.1