refactor: Move test clientstack setup code out of BasicCircuitTests into OpenSim.Tests.Common.ClientStackHelpers
							parent
							
								
									90b31a2f54
								
							
						
					
					
						commit
						e8337d6a51
					
				|  | @ -47,7 +47,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
|     public class BasicCircuitTests : OpenSimTestCase | ||||
|     { | ||||
|         private Scene m_scene; | ||||
|         private TestLLUDPServer m_udpServer; | ||||
| 
 | ||||
|         [TestFixtureSetUp] | ||||
|         public void FixtureInit() | ||||
|  | @ -90,55 +89,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
|             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> | ||||
|         /// Test adding a client to the stack | ||||
|         /// </summary> | ||||
|  | @ -148,7 +98,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
|             TestHelpers.InMethod(); | ||||
| //            TestHelpers.EnableLogging(); | ||||
| 
 | ||||
|             AddUdpServer(); | ||||
|             TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(m_scene); | ||||
| 
 | ||||
|             UUID myAgentUuid   = TestHelpers.ParseTail(0x1); | ||||
|             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. | ||||
|             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 | ||||
|             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_udpServer.PacketReceived(upb); | ||||
|             udpServer.PacketReceived(upb); | ||||
| 
 | ||||
|             // Should succeed now | ||||
|             ScenePresence sp = m_scene.GetScenePresence(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))); | ||||
| 
 | ||||
|             PacketAckPacket ackPacket = packet as PacketAckPacket; | ||||
|  | @ -200,15 +150,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
|         public void TestLogoutClientDueToAck() | ||||
|         { | ||||
|             TestHelpers.InMethod(); | ||||
|             TestHelpers.EnableLogging(); | ||||
| //            TestHelpers.EnableLogging(); | ||||
| 
 | ||||
|             IniConfigSource ics = new IniConfigSource(); | ||||
|             IConfig config = ics.AddConfig("ClientStack.LindenUDP"); | ||||
|             config.Set("AckTimeout", -1); | ||||
|             AddUdpServer(ics); | ||||
|             TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(m_scene, ics); | ||||
| 
 | ||||
|             ScenePresence sp = AddClient(); | ||||
|             m_udpServer.ClientOutgoingPacketHandler(sp.ControllingClient, true, false, false); | ||||
|             ScenePresence sp  | ||||
|                 = 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); | ||||
|             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 OpenMetaverse.Packets; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Region.ClientStack.LindenUDP; | ||||
| 
 | ||||
| namespace OpenSim.Region.ClientStack.LindenUDP.Tests | ||||
| namespace OpenSim.Tests.Common | ||||
| { | ||||
|     /// <summary> | ||||
|     /// This class enables regression testing of the LLUDPServer by allowing us to intercept outgoing data. | ||||
|  | @ -2765,6 +2765,7 @@ | |||
|       <Reference name="OpenSim.Framework.Servers.HttpServer"/> | ||||
|       <Reference name="OpenSim.Region.CoreModules"/> | ||||
|       <Reference name="OpenSim.Region.ClientStack.LindenCaps"/> | ||||
|       <Reference name="OpenSim.Region.ClientStack.LindenUDP"/> | ||||
|       <Reference name="OpenSim.Region.Framework"/> | ||||
|       <Reference name="OpenSim.Region.OptionalModules"/> | ||||
|       <Reference name="OpenSim.Region.Physics.Manager"/> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)