refactor: Move test clientstack setup code out of BasicCircuitTests into OpenSim.Tests.Common.ClientStackHelpers
							parent
							
								
									87d5da86a1
								
							
						
					
					
						commit
						52370ac94d
					
				|  | @ -47,7 +47,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||||
|     public class BasicCircuitTests : OpenSimTestCase |     public class BasicCircuitTests : OpenSimTestCase | ||||||
|     { |     { | ||||||
|         private Scene m_scene; |         private Scene m_scene; | ||||||
|         private TestLLUDPServer m_udpServer; |  | ||||||
| 
 | 
 | ||||||
|         [TestFixtureSetUp] |         [TestFixtureSetUp] | ||||||
|         public void FixtureInit() |         public void FixtureInit() | ||||||
|  | @ -90,55 +89,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||||
|             return onp; |             return onp; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private void AddUdpServer() |  | ||||||
|         { |  | ||||||
|             AddUdpServer(new IniConfigSource()); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         private void AddUdpServer(IniConfigSource configSource) |  | ||||||
|         { |  | ||||||
|             uint port = 0; |  | ||||||
|             AgentCircuitManager acm = m_scene.AuthenticateHandler; |  | ||||||
| 
 |  | ||||||
|             m_udpServer = new TestLLUDPServer(IPAddress.Any, ref port, 0, false, configSource, acm); |  | ||||||
|             m_udpServer.AddScene(m_scene); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Used by tests that aren't testing this stage. |  | ||||||
|         /// </summary> |  | ||||||
|         private ScenePresence AddClient() |  | ||||||
|         { |  | ||||||
|             UUID myAgentUuid   = TestHelpers.ParseTail(0x1); |  | ||||||
|             UUID mySessionUuid = TestHelpers.ParseTail(0x2); |  | ||||||
|             uint myCircuitCode = 123456; |  | ||||||
|             IPEndPoint testEp = new IPEndPoint(IPAddress.Loopback, 999); |  | ||||||
| 
 |  | ||||||
|             UseCircuitCodePacket uccp = new UseCircuitCodePacket(); |  | ||||||
| 
 |  | ||||||
|             UseCircuitCodePacket.CircuitCodeBlock uccpCcBlock |  | ||||||
|                 = new UseCircuitCodePacket.CircuitCodeBlock(); |  | ||||||
|             uccpCcBlock.Code = myCircuitCode; |  | ||||||
|             uccpCcBlock.ID = myAgentUuid; |  | ||||||
|             uccpCcBlock.SessionID = mySessionUuid; |  | ||||||
|             uccp.CircuitCode = uccpCcBlock; |  | ||||||
| 
 |  | ||||||
|             byte[] uccpBytes = uccp.ToBytes(); |  | ||||||
|             UDPPacketBuffer upb = new UDPPacketBuffer(testEp, uccpBytes.Length); |  | ||||||
|             upb.DataLength = uccpBytes.Length;  // God knows why this isn't set by the constructor. |  | ||||||
|             Buffer.BlockCopy(uccpBytes, 0, upb.Data, 0, uccpBytes.Length); |  | ||||||
| 
 |  | ||||||
|             AgentCircuitData acd = new AgentCircuitData(); |  | ||||||
|             acd.AgentID = myAgentUuid; |  | ||||||
|             acd.SessionID = mySessionUuid; |  | ||||||
| 
 |  | ||||||
|             m_scene.AuthenticateHandler.AddNewCircuit(myCircuitCode, acd); |  | ||||||
| 
 |  | ||||||
|             m_udpServer.PacketReceived(upb); |  | ||||||
| 
 |  | ||||||
|             return m_scene.GetScenePresence(myAgentUuid); |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// Test adding a client to the stack |         /// Test adding a client to the stack | ||||||
|         /// </summary> |         /// </summary> | ||||||
|  | @ -148,7 +98,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||||
|             TestHelpers.InMethod(); |             TestHelpers.InMethod(); | ||||||
| //            TestHelpers.EnableLogging(); | //            TestHelpers.EnableLogging(); | ||||||
| 
 | 
 | ||||||
|             AddUdpServer(); |             TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(m_scene); | ||||||
| 
 | 
 | ||||||
|             UUID myAgentUuid   = TestHelpers.ParseTail(0x1); |             UUID myAgentUuid   = TestHelpers.ParseTail(0x1); | ||||||
|             UUID mySessionUuid = TestHelpers.ParseTail(0x2); |             UUID mySessionUuid = TestHelpers.ParseTail(0x2); | ||||||
|  | @ -169,7 +119,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||||
|             upb.DataLength = uccpBytes.Length;  // God knows why this isn't set by the constructor. |             upb.DataLength = uccpBytes.Length;  // God knows why this isn't set by the constructor. | ||||||
|             Buffer.BlockCopy(uccpBytes, 0, upb.Data, 0, uccpBytes.Length); |             Buffer.BlockCopy(uccpBytes, 0, upb.Data, 0, uccpBytes.Length); | ||||||
| 
 | 
 | ||||||
|             m_udpServer.PacketReceived(upb); |             udpServer.PacketReceived(upb); | ||||||
| 
 | 
 | ||||||
|             // Presence shouldn't exist since the circuit manager doesn't know about this circuit for authentication yet |             // Presence shouldn't exist since the circuit manager doesn't know about this circuit for authentication yet | ||||||
|             Assert.That(m_scene.GetScenePresence(myAgentUuid), Is.Null); |             Assert.That(m_scene.GetScenePresence(myAgentUuid), Is.Null); | ||||||
|  | @ -180,15 +130,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||||
| 
 | 
 | ||||||
|             m_scene.AuthenticateHandler.AddNewCircuit(myCircuitCode, acd); |             m_scene.AuthenticateHandler.AddNewCircuit(myCircuitCode, acd); | ||||||
| 
 | 
 | ||||||
|             m_udpServer.PacketReceived(upb); |             udpServer.PacketReceived(upb); | ||||||
| 
 | 
 | ||||||
|             // Should succeed now |             // Should succeed now | ||||||
|             ScenePresence sp = m_scene.GetScenePresence(myAgentUuid); |             ScenePresence sp = m_scene.GetScenePresence(myAgentUuid); | ||||||
|             Assert.That(sp.UUID, Is.EqualTo(myAgentUuid)); |             Assert.That(sp.UUID, Is.EqualTo(myAgentUuid)); | ||||||
| 
 | 
 | ||||||
|             Assert.That(m_udpServer.PacketsSent.Count, Is.EqualTo(1)); |             Assert.That(udpServer.PacketsSent.Count, Is.EqualTo(1)); | ||||||
| 
 | 
 | ||||||
|             Packet packet = m_udpServer.PacketsSent[0]; |             Packet packet = udpServer.PacketsSent[0]; | ||||||
|             Assert.That(packet, Is.InstanceOf(typeof(PacketAckPacket))); |             Assert.That(packet, Is.InstanceOf(typeof(PacketAckPacket))); | ||||||
| 
 | 
 | ||||||
|             PacketAckPacket ackPacket = packet as PacketAckPacket; |             PacketAckPacket ackPacket = packet as PacketAckPacket; | ||||||
|  | @ -200,15 +150,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||||
|         public void TestLogoutClientDueToAck() |         public void TestLogoutClientDueToAck() | ||||||
|         { |         { | ||||||
|             TestHelpers.InMethod(); |             TestHelpers.InMethod(); | ||||||
|             TestHelpers.EnableLogging(); | //            TestHelpers.EnableLogging(); | ||||||
| 
 | 
 | ||||||
|             IniConfigSource ics = new IniConfigSource(); |             IniConfigSource ics = new IniConfigSource(); | ||||||
|             IConfig config = ics.AddConfig("ClientStack.LindenUDP"); |             IConfig config = ics.AddConfig("ClientStack.LindenUDP"); | ||||||
|             config.Set("AckTimeout", -1); |             config.Set("AckTimeout", -1); | ||||||
|             AddUdpServer(ics); |             TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(m_scene, ics); | ||||||
| 
 | 
 | ||||||
|             ScenePresence sp = AddClient(); |             ScenePresence sp  | ||||||
|             m_udpServer.ClientOutgoingPacketHandler(sp.ControllingClient, true, false, false); |                 = ClientStackHelpers.AddChildClient( | ||||||
|  |                     m_scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | ||||||
|  | 
 | ||||||
|  |             udpServer.ClientOutgoingPacketHandler(sp.ControllingClient, true, false, false); | ||||||
| 
 | 
 | ||||||
|             ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID); |             ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID); | ||||||
|             Assert.That(spAfterAckTimeout, Is.Null); |             Assert.That(spAfterAckTimeout, Is.Null); | ||||||
|  |  | ||||||
|  | @ -0,0 +1,95 @@ | ||||||
|  | /* | ||||||
|  |  * 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 OpenSimulator 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.Net; | ||||||
|  | using Nini.Config; | ||||||
|  | using OpenMetaverse; | ||||||
|  | using OpenMetaverse.Packets; | ||||||
|  | using OpenSim.Framework; | ||||||
|  | using OpenSim.Region.ClientStack.LindenUDP; | ||||||
|  | using OpenSim.Region.Framework.Scenes; | ||||||
|  | 
 | ||||||
|  | namespace OpenSim.Tests.Common | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// This class adds full UDP client classes and associated scene presence to scene. | ||||||
|  |     /// </summary> | ||||||
|  |     /// <remarks> | ||||||
|  |     /// This is used for testing client stack code.  For testing other code, use SceneHelper methods instead since | ||||||
|  |     /// they operate without the burden of setting up UDP structures which should be unnecessary for testing scene | ||||||
|  |     /// code. | ||||||
|  |     /// </remarks> | ||||||
|  |     public static class ClientStackHelpers | ||||||
|  |     { | ||||||
|  |         public static ScenePresence AddChildClient( | ||||||
|  |             Scene scene, LLUDPServer udpServer, UUID agentId, UUID sessionId, uint circuitCode) | ||||||
|  |         {            | ||||||
|  |             IPEndPoint testEp = new IPEndPoint(IPAddress.Loopback, 999); | ||||||
|  | 
 | ||||||
|  |             UseCircuitCodePacket uccp = new UseCircuitCodePacket(); | ||||||
|  | 
 | ||||||
|  |             UseCircuitCodePacket.CircuitCodeBlock uccpCcBlock | ||||||
|  |                 = new UseCircuitCodePacket.CircuitCodeBlock(); | ||||||
|  |             uccpCcBlock.Code = circuitCode; | ||||||
|  |             uccpCcBlock.ID = agentId; | ||||||
|  |             uccpCcBlock.SessionID = sessionId; | ||||||
|  |             uccp.CircuitCode = uccpCcBlock; | ||||||
|  | 
 | ||||||
|  |             byte[] uccpBytes = uccp.ToBytes(); | ||||||
|  |             UDPPacketBuffer upb = new UDPPacketBuffer(testEp, uccpBytes.Length); | ||||||
|  |             upb.DataLength = uccpBytes.Length;  // God knows why this isn't set by the constructor. | ||||||
|  |             Buffer.BlockCopy(uccpBytes, 0, upb.Data, 0, uccpBytes.Length); | ||||||
|  | 
 | ||||||
|  |             AgentCircuitData acd = new AgentCircuitData(); | ||||||
|  |             acd.AgentID = agentId; | ||||||
|  |             acd.SessionID = sessionId; | ||||||
|  | 
 | ||||||
|  |             scene.AuthenticateHandler.AddNewCircuit(circuitCode, acd); | ||||||
|  | 
 | ||||||
|  |             udpServer.PacketReceived(upb); | ||||||
|  | 
 | ||||||
|  |             return scene.GetScenePresence(agentId); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static TestLLUDPServer AddUdpServer(Scene scene) | ||||||
|  |         { | ||||||
|  |             return AddUdpServer(scene, new IniConfigSource()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static TestLLUDPServer AddUdpServer(Scene scene, IniConfigSource configSource) | ||||||
|  |         { | ||||||
|  |             uint port = 0; | ||||||
|  |             AgentCircuitManager acm = scene.AuthenticateHandler; | ||||||
|  | 
 | ||||||
|  |             TestLLUDPServer udpServer = new TestLLUDPServer(IPAddress.Any, ref port, 0, false, configSource, acm); | ||||||
|  |             udpServer.AddScene(scene); | ||||||
|  | 
 | ||||||
|  |             return udpServer; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -32,8 +32,9 @@ using System.Net.Sockets; | ||||||
| using Nini.Config; | using Nini.Config; | ||||||
| using OpenMetaverse.Packets; | using OpenMetaverse.Packets; | ||||||
| using OpenSim.Framework; | using OpenSim.Framework; | ||||||
|  | using OpenSim.Region.ClientStack.LindenUDP; | ||||||
| 
 | 
 | ||||||
| namespace OpenSim.Region.ClientStack.LindenUDP.Tests | namespace OpenSim.Tests.Common | ||||||
| { | { | ||||||
|     /// <summary> |     /// <summary> | ||||||
|     /// This class enables regression testing of the LLUDPServer by allowing us to intercept outgoing data. |     /// This class enables regression testing of the LLUDPServer by allowing us to intercept outgoing data. | ||||||
|  | @ -2800,6 +2800,7 @@ | ||||||
|       <Reference name="OpenSim.Framework.Servers.HttpServer"/> |       <Reference name="OpenSim.Framework.Servers.HttpServer"/> | ||||||
|       <Reference name="OpenSim.Region.CoreModules"/> |       <Reference name="OpenSim.Region.CoreModules"/> | ||||||
|       <Reference name="OpenSim.Region.ClientStack.LindenCaps"/> |       <Reference name="OpenSim.Region.ClientStack.LindenCaps"/> | ||||||
|  |       <Reference name="OpenSim.Region.ClientStack.LindenUDP"/> | ||||||
|       <Reference name="OpenSim.Region.Framework"/> |       <Reference name="OpenSim.Region.Framework"/> | ||||||
|       <Reference name="OpenSim.Region.OptionalModules"/> |       <Reference name="OpenSim.Region.OptionalModules"/> | ||||||
|       <Reference name="OpenSim.Region.Physics.Manager"/> |       <Reference name="OpenSim.Region.Physics.Manager"/> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)