diff options
author | Justin Clarke Casey | 2009-01-16 21:56:13 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2009-01-16 21:56:13 +0000 |
commit | eca6442bae4093019bd221e87413c74c77c4ff5d (patch) | |
tree | e62245b1cf2a5f0afdde443fba38c2b62d401100 /OpenSim | |
parent | * minor: Future archiver test stub (diff) | |
download | opensim-SC_OLD-eca6442bae4093019bd221e87413c74c77c4ff5d.zip opensim-SC_OLD-eca6442bae4093019bd221e87413c74c77c4ff5d.tar.gz opensim-SC_OLD-eca6442bae4093019bd221e87413c74c77c4ff5d.tar.bz2 opensim-SC_OLD-eca6442bae4093019bd221e87413c74c77c4ff5d.tar.xz |
* Rig up enough infrastructure to actually perform a successful 'standalone' teleport unit test with checks that the scene presence disappeared from sceneA and appeared in
sceneB
* However, I'm not convinced that the actual process in the test completely reflects reality, and a lot of stuff had to be rigged up (which should get resolved over time)
Diffstat (limited to '')
13 files changed, 103 insertions, 40 deletions
diff --git a/OpenSim/Framework/ConfigurationMember.cs b/OpenSim/Framework/ConfigurationMember.cs index 7a5e6b2..b54aafb 100644 --- a/OpenSim/Framework/ConfigurationMember.cs +++ b/OpenSim/Framework/ConfigurationMember.cs | |||
@@ -179,7 +179,7 @@ namespace OpenSim.Framework | |||
179 | return; | 179 | return; |
180 | } | 180 | } |
181 | 181 | ||
182 | m_log.Info("[CONFIG]: Calling Configuration Load Function..."); | 182 | //m_log.Debug("[CONFIG]: Calling Configuration Load Function..."); |
183 | loadFunction(); | 183 | loadFunction(); |
184 | 184 | ||
185 | if (configurationOptions.Count <= 0) | 185 | if (configurationOptions.Count <= 0) |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 0d44abd..63c09fe 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -814,7 +814,12 @@ namespace OpenSim.Framework | |||
814 | void SendWindData(Vector2[] windSpeeds); | 814 | void SendWindData(Vector2[] windSpeeds); |
815 | 815 | ||
816 | void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look); | 816 | void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look); |
817 | void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint); | 817 | void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint); |
818 | |||
819 | /// <summary> | ||
820 | /// Return circuit information for this client. | ||
821 | /// </summary> | ||
822 | /// <returns></returns> | ||
818 | AgentCircuitData RequestClientInfo(); | 823 | AgentCircuitData RequestClientInfo(); |
819 | 824 | ||
820 | void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, | 825 | void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 30f6f0f..146bc63 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -1366,10 +1366,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1366 | OutPacket(enablesimpacket, ThrottleOutPacketType.Task); | 1366 | OutPacket(enablesimpacket, ThrottleOutPacketType.Task); |
1367 | } | 1367 | } |
1368 | 1368 | ||
1369 | /// <summary> | ||
1370 | /// | ||
1371 | /// </summary> | ||
1372 | /// <returns></returns> | ||
1373 | public AgentCircuitData RequestClientInfo() | 1369 | public AgentCircuitData RequestClientInfo() |
1374 | { | 1370 | { |
1375 | AgentCircuitData agentData = new AgentCircuitData(); | 1371 | AgentCircuitData agentData = new AgentCircuitData(); |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs b/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs index 62e6e96..d421f82 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs | |||
@@ -64,9 +64,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
64 | TestLLUDPServer testLLUDPServer; | 64 | TestLLUDPServer testLLUDPServer; |
65 | TestLLPacketServer testLLPacketServer; | 65 | TestLLPacketServer testLLPacketServer; |
66 | AgentCircuitManager acm; | 66 | AgentCircuitManager acm; |
67 | SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm); | 67 | IScene scene = new MockScene(); |
68 | SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); | ||
68 | 69 | ||
69 | TestClient testClient = new TestClient(agent); | 70 | TestClient testClient = new TestClient(agent, scene); |
70 | 71 | ||
71 | ILLPacketHandler packetHandler | 72 | ILLPacketHandler packetHandler |
72 | = new LLPacketHandler(testClient, testLLPacketServer, new ClientStackUserSettings()); | 73 | = new LLPacketHandler(testClient, testLLPacketServer, new ClientStackUserSettings()); |
diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureSender/Tests/TextureSenderTests.cs b/OpenSim/Region/Environment/Modules/Agent/TextureSender/Tests/TextureSenderTests.cs index 42a4e91..cfac868 100644 --- a/OpenSim/Region/Environment/Modules/Agent/TextureSender/Tests/TextureSenderTests.cs +++ b/OpenSim/Region/Environment/Modules/Agent/TextureSender/Tests/TextureSenderTests.cs | |||
@@ -61,7 +61,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender | |||
61 | agent.InventoryFolder = UUID.Zero; | 61 | agent.InventoryFolder = UUID.Zero; |
62 | agent.startpos = Vector3.Zero; | 62 | agent.startpos = Vector3.Zero; |
63 | agent.CapsPath = "http://wibble.com"; | 63 | agent.CapsPath = "http://wibble.com"; |
64 | client = new TestClient(agent); | 64 | client = new TestClient(agent, null); |
65 | ts = new TextureSender(client, 0, 0); | 65 | ts = new TextureSender(client, 0, 0); |
66 | testsize = random.Next(5000,15000); | 66 | testsize = random.Next(5000,15000); |
67 | npackets = CalculateNumPackets(testsize); | 67 | npackets = CalculateNumPackets(testsize); |
diff --git a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs index 5fcb4bc..62f6df0 100644 --- a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs | |||
@@ -128,6 +128,7 @@ namespace OpenSim.Region.Environment.Modules.Communications.Local | |||
128 | return true; | 128 | return true; |
129 | } | 129 | } |
130 | } | 130 | } |
131 | |||
131 | // m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for SendCreateChildAgent", regionHandle); | 132 | // m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for SendCreateChildAgent", regionHandle); |
132 | return false; | 133 | return false; |
133 | } | 134 | } |
@@ -138,12 +139,16 @@ namespace OpenSim.Region.Environment.Modules.Communications.Local | |||
138 | { | 139 | { |
139 | if (s.RegionInfo.RegionHandle == regionHandle) | 140 | if (s.RegionInfo.RegionHandle == regionHandle) |
140 | { | 141 | { |
141 | //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); | 142 | //m_log.DebugFormat( |
143 | // "[LOCAL COMMS]: Found region {0} {1} to send ChildAgentUpdate", | ||
144 | // s.RegionInfo.RegionName, regionHandle); | ||
145 | |||
142 | s.IncomingChildAgentDataUpdate(cAgentData); | 146 | s.IncomingChildAgentDataUpdate(cAgentData); |
143 | return true; | 147 | return true; |
144 | } | 148 | } |
145 | } | 149 | } |
146 | //m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); | 150 | |
151 | // m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for ChildAgentUpdate", regionHandle); | ||
147 | return false; | 152 | return false; |
148 | } | 153 | } |
149 | 154 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 9c3aa96..8a9d295 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2777,7 +2777,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2777 | 2777 | ||
2778 | // Don't disable this log message - it's too helpful | 2778 | // Don't disable this log message - it's too helpful |
2779 | m_log.DebugFormat( | 2779 | m_log.DebugFormat( |
2780 | "[CONNECTION BEGIN]: Scene {0} told of incoming client {1} {2} {3} (circuit code {4})", | 2780 | "[CONNECTION BEGIN]: Region {0} told of incoming client {1} {2} {3} (circuit code {4})", |
2781 | RegionInfo.RegionName, agent.firstname, agent.lastname, agent.AgentID, agent.circuitcode); | 2781 | RegionInfo.RegionName, agent.firstname, agent.lastname, agent.AgentID, agent.circuitcode); |
2782 | 2782 | ||
2783 | if (m_regInfo.EstateSettings.IsBanned(agent.AgentID)) | 2783 | if (m_regInfo.EstateSettings.IsBanned(agent.AgentID)) |
@@ -2977,13 +2977,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
2977 | 2977 | ||
2978 | public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData) | 2978 | public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData) |
2979 | { | 2979 | { |
2980 | //Console.WriteLine(" XXX Scene IncomingChildAgentDataUpdate FULL in " + RegionInfo.RegionName); | 2980 | // m_log.DebugFormat( |
2981 | // "[SCENE]: Incoming child agent update for {0} in {1}", cAgentData.AgentID, RegionInfo.RegionName); | ||
2982 | |||
2981 | ScenePresence childAgentUpdate = GetScenePresence(cAgentData.AgentID); | 2983 | ScenePresence childAgentUpdate = GetScenePresence(cAgentData.AgentID); |
2982 | if (childAgentUpdate != null) | 2984 | if (childAgentUpdate != null) |
2983 | { | 2985 | { |
2984 | childAgentUpdate.ChildAgentDataUpdate(cAgentData); | 2986 | childAgentUpdate.ChildAgentDataUpdate(cAgentData); |
2985 | return true; | 2987 | return true; |
2986 | } | 2988 | } |
2989 | |||
2987 | return false; | 2990 | return false; |
2988 | } | 2991 | } |
2989 | 2992 | ||
@@ -3030,6 +3033,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
3030 | /// <param name="agentID"></param> | 3033 | /// <param name="agentID"></param> |
3031 | public bool IncomingCloseAgent(UUID agentID) | 3034 | public bool IncomingCloseAgent(UUID agentID) |
3032 | { | 3035 | { |
3036 | //m_log.DebugFormat("[SCENE]: Processing incoming close agent for {0}", agentID); | ||
3037 | |||
3033 | ScenePresence presence = m_sceneGraph.GetScenePresence(agentID); | 3038 | ScenePresence presence = m_sceneGraph.GetScenePresence(agentID); |
3034 | if (presence != null) | 3039 | if (presence != null) |
3035 | { | 3040 | { |
@@ -3056,9 +3061,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
3056 | else | 3061 | else |
3057 | presence.ControllingClient.SendShutdownConnectionNotice(); | 3062 | presence.ControllingClient.SendShutdownConnectionNotice(); |
3058 | } | 3063 | } |
3064 | |||
3059 | presence.ControllingClient.Close(true); | 3065 | presence.ControllingClient.Close(true); |
3060 | return true; | 3066 | return true; |
3061 | } | 3067 | } |
3068 | |||
3062 | // Agent not here | 3069 | // Agent not here |
3063 | return false; | 3070 | return false; |
3064 | } | 3071 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 65e62ef..a46fa0b 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |||
@@ -758,6 +758,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
758 | // both regions | 758 | // both regions |
759 | if (avatar.ParentID != (uint)0) | 759 | if (avatar.ParentID != (uint)0) |
760 | avatar.StandUp(); | 760 | avatar.StandUp(); |
761 | |||
761 | if (!avatar.ValidateAttachments()) | 762 | if (!avatar.ValidateAttachments()) |
762 | { | 763 | { |
763 | avatar.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); | 764 | avatar.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); |
@@ -772,13 +773,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
772 | // once we reach here... | 773 | // once we reach here... |
773 | //avatar.Scene.RemoveCapsHandler(avatar.UUID); | 774 | //avatar.Scene.RemoveCapsHandler(avatar.UUID); |
774 | 775 | ||
775 | |||
776 | string capsPath = String.Empty; | 776 | string capsPath = String.Empty; |
777 | AgentCircuitData agentCircuit = avatar.ControllingClient.RequestClientInfo(); | 777 | AgentCircuitData agentCircuit = avatar.ControllingClient.RequestClientInfo(); |
778 | agentCircuit.BaseFolder = UUID.Zero; | 778 | agentCircuit.BaseFolder = UUID.Zero; |
779 | agentCircuit.InventoryFolder = UUID.Zero; | 779 | agentCircuit.InventoryFolder = UUID.Zero; |
780 | agentCircuit.startpos = position; | 780 | agentCircuit.startpos = position; |
781 | agentCircuit.child = true; | 781 | agentCircuit.child = true; |
782 | |||
782 | if (Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY)) | 783 | if (Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY)) |
783 | { | 784 | { |
784 | // brand new agent, let's create a new caps seed | 785 | // brand new agent, let's create a new caps seed |
@@ -871,7 +872,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
871 | teleportFlags, capsPath); | 872 | teleportFlags, capsPath); |
872 | } | 873 | } |
873 | 874 | ||
874 | |||
875 | // TeleportFinish makes the client send CompleteMovementIntoRegion (at the destination), which | 875 | // TeleportFinish makes the client send CompleteMovementIntoRegion (at the destination), which |
876 | // trigers a whole shebang of things there, including MakeRoot. So let's wait for confirmation | 876 | // trigers a whole shebang of things there, including MakeRoot. So let's wait for confirmation |
877 | // that the client contacted the destination before we send the attachments and close things here. | 877 | // that the client contacted the destination before we send the attachments and close things here. |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index bdb0836..77d5b93 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -1017,9 +1017,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1017 | 1017 | ||
1018 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) | 1018 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) |
1019 | { | 1019 | { |
1020 | //m_log.DebugFormat("Found callback URI {0}", m_callbackURI); | ||
1020 | Scene.SendReleaseAgent(m_rootRegionHandle, UUID, m_callbackURI); | 1021 | Scene.SendReleaseAgent(m_rootRegionHandle, UUID, m_callbackURI); |
1021 | m_callbackURI = null; | 1022 | m_callbackURI = null; |
1022 | } | 1023 | } |
1024 | |||
1025 | //m_log.DebugFormat("Completed movement"); | ||
1023 | } | 1026 | } |
1024 | } | 1027 | } |
1025 | 1028 | ||
@@ -2594,7 +2597,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
2594 | /// </summary> | 2597 | /// </summary> |
2595 | public void ChildAgentDataUpdate(AgentPosition cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) | 2598 | public void ChildAgentDataUpdate(AgentPosition cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) |
2596 | { | 2599 | { |
2597 | // | ||
2598 | if (!IsChildAgent) | 2600 | if (!IsChildAgent) |
2599 | return; | 2601 | return; |
2600 | 2602 | ||
@@ -2615,7 +2617,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
2615 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) | 2617 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) |
2616 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); | 2618 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); |
2617 | 2619 | ||
2618 | |||
2619 | // Sends out the objects in the user's draw distance if m_sendTasksToChild is true. | 2620 | // Sends out the objects in the user's draw distance if m_sendTasksToChild is true. |
2620 | if (m_scene.m_seeIntoRegionFromNeighbor) | 2621 | if (m_scene.m_seeIntoRegionFromNeighbor) |
2621 | m_pendingObjects = null; | 2622 | m_pendingObjects = null; |
@@ -2662,7 +2663,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
2662 | cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 2663 | cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
2663 | } | 2664 | } |
2664 | 2665 | ||
2665 | |||
2666 | cAgent.GodLevel = (byte)m_godlevel; | 2666 | cAgent.GodLevel = (byte)m_godlevel; |
2667 | cAgent.AlwaysRun = m_setAlwaysRun; | 2667 | cAgent.AlwaysRun = m_setAlwaysRun; |
2668 | 2668 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs index 548fea9..5ce78a3 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/ScenePresenceTests.cs | |||
@@ -63,7 +63,7 @@ namespace OpenSim.Region.Environment.Scenes.Tests | |||
63 | agent.CapsPath = "http://wibble.com"; | 63 | agent.CapsPath = "http://wibble.com"; |
64 | 64 | ||
65 | scene.NewUserConnection(agent); | 65 | scene.NewUserConnection(agent); |
66 | scene.AddNewClient(new TestClient(agent)); | 66 | scene.AddNewClient(new TestClient(agent, scene)); |
67 | 67 | ||
68 | ScenePresence presence = scene.GetScenePresence(agentId); | 68 | ScenePresence presence = scene.GetScenePresence(agentId); |
69 | 69 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs index 3c4049d..5fa897c 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs | |||
@@ -118,7 +118,7 @@ namespace OpenSim.Region.Environment.Scenes.Tests | |||
118 | scene.NewUserConnection(agent); | 118 | scene.NewUserConnection(agent); |
119 | 119 | ||
120 | // Stage 2: add the new client as a child agent to the scene | 120 | // Stage 2: add the new client as a child agent to the scene |
121 | TestClient client = new TestClient(agent); | 121 | TestClient client = new TestClient(agent, scene); |
122 | scene.AddNewClient(client); | 122 | scene.AddNewClient(client); |
123 | 123 | ||
124 | // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, | 124 | // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, |
diff --git a/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs index a3d116d..d7342de 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/StandaloneTeleportTests.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using Nini.Config; | 28 | using Nini.Config; |
29 | using NUnit.Framework; | 29 | using NUnit.Framework; |
30 | using NUnit.Framework.SyntaxHelpers; | ||
30 | using OpenMetaverse; | 31 | using OpenMetaverse; |
31 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
32 | using OpenSim.Framework.Communications; | 33 | using OpenSim.Framework.Communications; |
@@ -77,9 +78,14 @@ namespace OpenSim.Region.Environment.Scenes.Tests | |||
77 | 78 | ||
78 | TestClient client = SceneTestUtils.AddRootAgent(sceneA, agentId); | 79 | TestClient client = SceneTestUtils.AddRootAgent(sceneA, agentId); |
79 | 80 | ||
80 | client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40)); | 81 | // FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used. |
82 | client.TeleportTargetScene = sceneB; | ||
81 | 83 | ||
82 | // TODO: Check that everything is as it should be | 84 | client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40)); |
85 | Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB"); | ||
86 | Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA"); | ||
87 | |||
88 | // TODO: Check that more of everything is as it should be | ||
83 | 89 | ||
84 | // TODO: test what happens if we try to teleport to a region that doesn't exist | 90 | // TODO: test what happens if we try to teleport to a region that doesn't exist |
85 | } | 91 | } |
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index 5b3b27b..6254272 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs | |||
@@ -28,6 +28,8 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | 30 | using System.Net; |
31 | using System.Reflection; | ||
32 | using log4net; | ||
31 | using OpenMetaverse; | 33 | using OpenMetaverse; |
32 | using OpenMetaverse.Packets; | 34 | using OpenMetaverse.Packets; |
33 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
@@ -37,11 +39,18 @@ namespace OpenSim.Tests.Common.Mock | |||
37 | { | 39 | { |
38 | public class TestClient : IClientAPI | 40 | public class TestClient : IClientAPI |
39 | { | 41 | { |
40 | private Scene m_scene; | 42 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
41 | 43 | ||
42 | // Mock testing variables | 44 | // Mock testing variables |
43 | public List<ImageDataPacket> sentdatapkt = new List<ImageDataPacket>(); | 45 | public List<ImageDataPacket> sentdatapkt = new List<ImageDataPacket>(); |
44 | public List<ImagePacketPacket> sentpktpkt = new List<ImagePacketPacket>(); | 46 | public List<ImagePacketPacket> sentpktpkt = new List<ImagePacketPacket>(); |
47 | |||
48 | // TODO: This is a really nasty (and temporary) means of telling the test client which scene to invoke setup | ||
49 | // methods on when a teleport is requested | ||
50 | public Scene TeleportTargetScene; | ||
51 | private TestClient TeleportSceneClient; | ||
52 | |||
53 | private IScene m_scene; | ||
45 | 54 | ||
46 | // disable warning: public events, part of the public API | 55 | // disable warning: public events, part of the public API |
47 | #pragma warning disable 67 | 56 | #pragma warning disable 67 |
@@ -259,7 +268,7 @@ namespace OpenSim.Tests.Common.Mock | |||
259 | /// <value> | 268 | /// <value> |
260 | /// This agent's UUID | 269 | /// This agent's UUID |
261 | /// </value> | 270 | /// </value> |
262 | private UUID myID; | 271 | private UUID m_agentId; |
263 | 272 | ||
264 | private Vector3 startPos = new Vector3(128, 128, 2); | 273 | private Vector3 startPos = new Vector3(128, 128, 2); |
265 | 274 | ||
@@ -271,7 +280,7 @@ namespace OpenSim.Tests.Common.Mock | |||
271 | 280 | ||
272 | public virtual UUID AgentId | 281 | public virtual UUID AgentId |
273 | { | 282 | { |
274 | get { return myID; } | 283 | get { return m_agentId; } |
275 | } | 284 | } |
276 | 285 | ||
277 | public UUID SessionId | 286 | public UUID SessionId |
@@ -359,11 +368,14 @@ namespace OpenSim.Tests.Common.Mock | |||
359 | /// Constructor | 368 | /// Constructor |
360 | /// </summary> | 369 | /// </summary> |
361 | /// <param name="agentData"></param> | 370 | /// <param name="agentData"></param> |
362 | public TestClient(AgentCircuitData agentData) | 371 | /// <param name="scene"></param> |
372 | public TestClient(AgentCircuitData agentData, IScene scene) | ||
363 | { | 373 | { |
364 | myID = agentData.AgentID; | 374 | m_agentId = agentData.AgentID; |
365 | m_firstName = agentData.firstname; | 375 | m_firstName = agentData.firstname; |
366 | m_lastName = agentData.lastname; | 376 | m_lastName = agentData.lastname; |
377 | m_circuitCode = agentData.circuitcode; | ||
378 | m_scene = scene; | ||
367 | } | 379 | } |
368 | 380 | ||
369 | /// <summary> | 381 | /// <summary> |
@@ -376,6 +388,11 @@ namespace OpenSim.Tests.Common.Mock | |||
376 | { | 388 | { |
377 | OnTeleportLocationRequest(this, regionHandle, position, lookAt, 16); | 389 | OnTeleportLocationRequest(this, regionHandle, position, lookAt, 16); |
378 | } | 390 | } |
391 | |||
392 | public void CompleteMovement() | ||
393 | { | ||
394 | OnCompleteMovementToRegion(); | ||
395 | } | ||
379 | 396 | ||
380 | public virtual void ActivateGesture(UUID assetId, UUID gestureId) | 397 | public virtual void ActivateGesture(UUID assetId, UUID gestureId) |
381 | { | 398 | { |
@@ -465,14 +482,48 @@ namespace OpenSim.Tests.Common.Mock | |||
465 | { | 482 | { |
466 | } | 483 | } |
467 | 484 | ||
485 | public virtual AgentCircuitData RequestClientInfo() | ||
486 | { | ||
487 | AgentCircuitData agentData = new AgentCircuitData(); | ||
488 | agentData.AgentID = AgentId; | ||
489 | agentData.SessionID = UUID.Zero; | ||
490 | agentData.SecureSessionID = UUID.Zero; | ||
491 | agentData.circuitcode = m_circuitCode; | ||
492 | agentData.child = false; | ||
493 | agentData.firstname = m_firstName; | ||
494 | agentData.lastname = m_lastName; | ||
495 | agentData.CapsPath = m_scene.GetCapsPath(m_agentId); | ||
496 | agentData.ChildrenCapSeeds = new Dictionary<ulong,string>(m_scene.GetChildrenSeeds(m_agentId)); | ||
497 | |||
498 | return agentData; | ||
499 | } | ||
500 | |||
468 | public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) | 501 | public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) |
469 | { | 502 | { |
503 | m_log.DebugFormat("[TEST CLIENT]: Processing inform client of neighbour"); | ||
504 | |||
505 | // In response to this message, we are going to make a teleport to the scene we've previous been told | ||
506 | // about by test code (this needs to be improved). | ||
507 | AgentCircuitData newAgent = RequestClientInfo(); | ||
508 | |||
509 | // Stage 2: add the new client as a child agent to the scene | ||
510 | TeleportSceneClient = new TestClient(newAgent, TeleportTargetScene); | ||
511 | TeleportTargetScene.AddNewClient(TeleportSceneClient); | ||
512 | } | ||
513 | |||
514 | public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, | ||
515 | uint locationID, uint flags, string capsURL) | ||
516 | { | ||
517 | m_log.DebugFormat("[TEST CLIENT]: Received SendRegionTeleport"); | ||
518 | |||
519 | TeleportSceneClient.CompleteMovement(); | ||
520 | //TeleportTargetScene.AgentCrossing(newAgent.AgentID, new Vector3(90, 90, 90), false); | ||
470 | } | 521 | } |
471 | 522 | ||
472 | public virtual AgentCircuitData RequestClientInfo() | 523 | public virtual void SendTeleportFailed(string reason) |
473 | { | 524 | { |
474 | return new AgentCircuitData(); | 525 | m_log.DebugFormat("[TEST CLIENT]: Teleport failed with reason {0}", reason); |
475 | } | 526 | } |
476 | 527 | ||
477 | public virtual void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, | 528 | public virtual void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, |
478 | IPEndPoint newRegionExternalEndPoint, string capsURL) | 529 | IPEndPoint newRegionExternalEndPoint, string capsURL) |
@@ -487,15 +538,6 @@ namespace OpenSim.Tests.Common.Mock | |||
487 | { | 538 | { |
488 | } | 539 | } |
489 | 540 | ||
490 | public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, | ||
491 | uint locationID, uint flags, string capsURL) | ||
492 | { | ||
493 | } | ||
494 | |||
495 | public virtual void SendTeleportFailed(string reason) | ||
496 | { | ||
497 | } | ||
498 | |||
499 | public virtual void SendTeleportLocationStart() | 541 | public virtual void SendTeleportLocationStart() |
500 | { | 542 | { |
501 | } | 543 | } |
@@ -788,6 +830,7 @@ namespace OpenSim.Tests.Common.Mock | |||
788 | 830 | ||
789 | public void Close(bool ShutdownCircuit) | 831 | public void Close(bool ShutdownCircuit) |
790 | { | 832 | { |
833 | m_scene.RemoveClient(AgentId); | ||
791 | } | 834 | } |
792 | 835 | ||
793 | public void Start() | 836 | public void Start() |