Bring LindenUDP.Tests back from the dead. No tests are running.

Code drift means that most of this stuff doesn't compile but the structure is still useful.

Conflicts:

	OpenSim/Region/ClientStack/Linden/UDP/Tests/TestLLPacketServer.cs
0.7.2-post-fixes
Justin Clark-Casey (justincc) 2011-10-28 21:40:53 +01:00
parent 753f11273f
commit 9edbb4f77a
6 changed files with 291 additions and 369 deletions

View File

@ -29,7 +29,6 @@ using System.Net;
using log4net.Config; using log4net.Config;
using Nini.Config; using Nini.Config;
using NUnit.Framework; using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Packets; using OpenMetaverse.Packets;
using OpenSim.Framework; using OpenSim.Framework;
@ -57,27 +56,27 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
} }
} }
/// <summary> // /// <summary>
/// Add a client for testing // /// Add a client for testing
/// </summary> // /// </summary>
/// <param name="scene"></param> // /// <param name="scene"></param>
/// <param name="testLLUDPServer"></param> // /// <param name="testLLUDPServer"></param>
/// <param name="testPacketServer"></param> // /// <param name="testPacketServer"></param>
/// <param name="acm">Agent circuit manager used in setting up the stack</param> // /// <param name="acm">Agent circuit manager used in setting up the stack</param>
protected void SetupStack( // protected void SetupStack(
IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer, // IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer,
out AgentCircuitManager acm) // out AgentCircuitManager acm)
{ // {
IConfigSource configSource = new IniConfigSource(); // IConfigSource configSource = new IniConfigSource();
ClientStackUserSettings userSettings = new ClientStackUserSettings(); // ClientStackUserSettings userSettings = new ClientStackUserSettings();
testLLUDPServer = new TestLLUDPServer(); // testLLUDPServer = new TestLLUDPServer();
acm = new AgentCircuitManager(); // acm = new AgentCircuitManager();
//
uint port = 666; // uint port = 666;
testLLUDPServer.Initialise(null, ref port, 0, false, configSource, acm); // testLLUDPServer.Initialise(null, ref port, 0, false, configSource, acm);
testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings); // testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings);
testLLUDPServer.LocalScene = scene; // testLLUDPServer.LocalScene = scene;
} // }
/// <summary> /// <summary>
/// Set up a client for tests which aren't concerned with this process itself and where only one client is being /// Set up a client for tests which aren't concerned with this process itself and where only one client is being
@ -145,155 +144,155 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
return onp; return onp;
} }
/// <summary> // /// <summary>
/// Test adding a client to the stack // /// Test adding a client to the stack
/// </summary> // /// </summary>
[Test, LongRunning] // [Test, LongRunning]
public void TestAddClient() // public void TestAddClient()
{ // {
TestHelper.InMethod(); // TestHelper.InMethod();
//
uint myCircuitCode = 123456; // uint myCircuitCode = 123456;
UUID myAgentUuid = UUID.Parse("00000000-0000-0000-0000-000000000001"); // UUID myAgentUuid = UUID.Parse("00000000-0000-0000-0000-000000000001");
UUID mySessionUuid = UUID.Parse("00000000-0000-0000-0000-000000000002"); // UUID mySessionUuid = UUID.Parse("00000000-0000-0000-0000-000000000002");
//
TestLLUDPServer testLLUDPServer; // TestLLUDPServer testLLUDPServer;
TestLLPacketServer testLLPacketServer; // TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm; // AgentCircuitManager acm;
SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm); // SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm);
//
AgentCircuitData acd = new AgentCircuitData(); // AgentCircuitData acd = new AgentCircuitData();
acd.AgentID = myAgentUuid; // acd.AgentID = myAgentUuid;
acd.SessionID = mySessionUuid; // acd.SessionID = mySessionUuid;
//
UseCircuitCodePacket uccp = new UseCircuitCodePacket(); // UseCircuitCodePacket uccp = new UseCircuitCodePacket();
//
UseCircuitCodePacket.CircuitCodeBlock uccpCcBlock // UseCircuitCodePacket.CircuitCodeBlock uccpCcBlock
= new UseCircuitCodePacket.CircuitCodeBlock(); // = new UseCircuitCodePacket.CircuitCodeBlock();
uccpCcBlock.Code = myCircuitCode; // uccpCcBlock.Code = myCircuitCode;
uccpCcBlock.ID = myAgentUuid; // uccpCcBlock.ID = myAgentUuid;
uccpCcBlock.SessionID = mySessionUuid; // uccpCcBlock.SessionID = mySessionUuid;
uccp.CircuitCode = uccpCcBlock; // uccp.CircuitCode = uccpCcBlock;
//
EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 999); // EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 999);
//
testLLUDPServer.LoadReceive(uccp, testEp); // testLLUDPServer.LoadReceive(uccp, testEp);
testLLUDPServer.ReceiveData(null); // testLLUDPServer.ReceiveData(null);
//
// Circuit shouildn't exist since the circuit manager doesn't know about this circuit for authentication yet // // Circuit shouildn't exist since the circuit manager doesn't know about this circuit for authentication yet
Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode)); // Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode));
//
acm.AddNewCircuit(myCircuitCode, acd); // acm.AddNewCircuit(myCircuitCode, acd);
//
testLLUDPServer.LoadReceive(uccp, testEp); // testLLUDPServer.LoadReceive(uccp, testEp);
testLLUDPServer.ReceiveData(null); // testLLUDPServer.ReceiveData(null);
//
// Should succeed now // // Should succeed now
Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode)); // Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode));
Assert.IsFalse(testLLUDPServer.HasCircuit(101)); // Assert.IsFalse(testLLUDPServer.HasCircuit(101));
} // }
//
/// <summary> // /// <summary>
/// Test removing a client from the stack // /// Test removing a client from the stack
/// </summary> // /// </summary>
[Test] // [Test]
public void TestRemoveClient() // public void TestRemoveClient()
{ // {
TestHelper.InMethod(); // TestHelper.InMethod();
//
uint myCircuitCode = 123457; // uint myCircuitCode = 123457;
//
TestLLUDPServer testLLUDPServer; // TestLLUDPServer testLLUDPServer;
TestLLPacketServer testLLPacketServer; // TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm; // AgentCircuitManager acm;
SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm); // SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm);
AddClient(myCircuitCode, new IPEndPoint(IPAddress.Loopback, 1000), testLLUDPServer, acm); // AddClient(myCircuitCode, new IPEndPoint(IPAddress.Loopback, 1000), testLLUDPServer, acm);
//
testLLUDPServer.RemoveClientCircuit(myCircuitCode); // testLLUDPServer.RemoveClientCircuit(myCircuitCode);
Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode)); // Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode));
//
// Check that removing a non-existant circuit doesn't have any bad effects // // Check that removing a non-existant circuit doesn't have any bad effects
testLLUDPServer.RemoveClientCircuit(101); // testLLUDPServer.RemoveClientCircuit(101);
Assert.IsFalse(testLLUDPServer.HasCircuit(101)); // Assert.IsFalse(testLLUDPServer.HasCircuit(101));
} // }
//
/// <summary> // /// <summary>
/// Make sure that the client stack reacts okay to malformed packets // /// Make sure that the client stack reacts okay to malformed packets
/// </summary> // /// </summary>
[Test] // [Test]
public void TestMalformedPacketSend() // public void TestMalformedPacketSend()
{ // {
TestHelper.InMethod(); // TestHelper.InMethod();
//
uint myCircuitCode = 123458; // uint myCircuitCode = 123458;
EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001); // EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001);
MockScene scene = new MockScene(); // MockScene scene = new MockScene();
//
TestLLUDPServer testLLUDPServer; // TestLLUDPServer testLLUDPServer;
TestLLPacketServer testLLPacketServer; // TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm; // AgentCircuitManager acm;
SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm);
AddClient(myCircuitCode, testEp, testLLUDPServer, acm); // AddClient(myCircuitCode, testEp, testLLUDPServer, acm);
//
byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 }; // byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 };
//
// Send two garbled 'packets' in succession // // Send two garbled 'packets' in succession
testLLUDPServer.LoadReceive(data, testEp); // testLLUDPServer.LoadReceive(data, testEp);
testLLUDPServer.LoadReceive(data, testEp); // testLLUDPServer.LoadReceive(data, testEp);
testLLUDPServer.ReceiveData(null); // testLLUDPServer.ReceiveData(null);
//
// Check that we are still here // // Check that we are still here
Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode)); // Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode));
Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(0)); // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(0));
//
// Check that sending a valid packet to same circuit still succeeds // // Check that sending a valid packet to same circuit still succeeds
Assert.That(scene.ObjectNameCallsReceived, Is.EqualTo(0)); // Assert.That(scene.ObjectNameCallsReceived, Is.EqualTo(0));
//
testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "helloooo"), testEp); // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "helloooo"), testEp);
testLLUDPServer.ReceiveData(null); // testLLUDPServer.ReceiveData(null);
//
Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(1)); // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(1));
Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(1)); // Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(1));
} // }
//
/// <summary> // /// <summary>
/// Test that the stack continues to work even if some client has caused a // /// Test that the stack continues to work even if some client has caused a
/// SocketException on Socket.BeginReceive() // /// SocketException on Socket.BeginReceive()
/// </summary> // /// </summary>
[Test] // [Test]
public void TestExceptionOnBeginReceive() // public void TestExceptionOnBeginReceive()
{ // {
TestHelper.InMethod(); // TestHelper.InMethod();
//
MockScene scene = new MockScene(); // MockScene scene = new MockScene();
//
uint circuitCodeA = 130000; // uint circuitCodeA = 130000;
EndPoint epA = new IPEndPoint(IPAddress.Loopback, 1300); // EndPoint epA = new IPEndPoint(IPAddress.Loopback, 1300);
UUID agentIdA = UUID.Parse("00000000-0000-0000-0000-000000001300"); // UUID agentIdA = UUID.Parse("00000000-0000-0000-0000-000000001300");
UUID sessionIdA = UUID.Parse("00000000-0000-0000-0000-000000002300"); // UUID sessionIdA = UUID.Parse("00000000-0000-0000-0000-000000002300");
//
uint circuitCodeB = 130001; // uint circuitCodeB = 130001;
EndPoint epB = new IPEndPoint(IPAddress.Loopback, 1301); // EndPoint epB = new IPEndPoint(IPAddress.Loopback, 1301);
UUID agentIdB = UUID.Parse("00000000-0000-0000-0000-000000001301"); // UUID agentIdB = UUID.Parse("00000000-0000-0000-0000-000000001301");
UUID sessionIdB = UUID.Parse("00000000-0000-0000-0000-000000002301"); // UUID sessionIdB = UUID.Parse("00000000-0000-0000-0000-000000002301");
//
TestLLUDPServer testLLUDPServer; // TestLLUDPServer testLLUDPServer;
TestLLPacketServer testLLPacketServer; // TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm; // AgentCircuitManager acm;
SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm);
AddClient(circuitCodeA, epA, agentIdA, sessionIdA, testLLUDPServer, acm); // AddClient(circuitCodeA, epA, agentIdA, sessionIdA, testLLUDPServer, acm);
AddClient(circuitCodeB, epB, agentIdB, sessionIdB, testLLUDPServer, acm); // AddClient(circuitCodeB, epB, agentIdB, sessionIdB, testLLUDPServer, acm);
//
testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet1"), epA); // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet1"), epA);
testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet2"), epB); // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet2"), epB);
testLLUDPServer.LoadReceiveWithBeginException(epA); // testLLUDPServer.LoadReceiveWithBeginException(epA);
testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(2, "packet3"), epB); // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(2, "packet3"), epB);
testLLUDPServer.ReceiveData(null); // testLLUDPServer.ReceiveData(null);
//
Assert.IsFalse(testLLUDPServer.HasCircuit(circuitCodeA)); // Assert.IsFalse(testLLUDPServer.HasCircuit(circuitCodeA));
//
Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(3)); // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(3));
Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(3)); // Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(3));
} // }
} }
} }

View File

@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System.Net;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
@ -52,14 +53,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
public override void Update() {} public override void Update() {}
public override void LoadWorldMap() {} public override void LoadWorldMap() {}
public override void AddNewClient(IClientAPI client) public override void AddNewClient(IClientAPI client, PresenceType type)
{ {
client.OnObjectName += RecordObjectNameCall; client.OnObjectName += RecordObjectNameCall;
} }
public override void RemoveClient(UUID agentID) {} public override void RemoveClient(UUID agentID, bool someReason) {}
public override void CloseAllAgents(uint circuitcode) {} // public override void CloseAllAgents(uint circuitcode) {}
public override bool CheckClient(UUID clientId, IPEndPoint endPoint) { return true; }
public override void OtherRegionUp(GridRegion otherRegion) { } public override void OtherRegionUp(GridRegion otherRegion) { }
public override bool TryGetScenePresence(UUID uuid, out ScenePresence sp) { sp = null; return false; }
/// <summary> /// <summary>
/// Doesn't really matter what the call is - we're using this to test that a packet has actually been received /// Doesn't really matter what the call is - we're using this to test that a packet has actually been received

View File

@ -27,7 +27,6 @@
using Nini.Config; using Nini.Config;
using NUnit.Framework; using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Packets; using OpenMetaverse.Packets;
using OpenSim.Framework; using OpenSim.Framework;
@ -42,65 +41,65 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
[TestFixture] [TestFixture]
public class PacketHandlerTests public class PacketHandlerTests
{ {
[Test] // [Test]
/// <summary> // /// <summary>
/// More a placeholder, really // /// More a placeholder, really
/// </summary> // /// </summary>
public void InPacketTest() // public void InPacketTest()
{ // {
TestHelper.InMethod(); // TestHelper.InMethod();
//
AgentCircuitData agent = new AgentCircuitData(); // AgentCircuitData agent = new AgentCircuitData();
agent.AgentID = UUID.Random(); // agent.AgentID = UUID.Random();
agent.firstname = "testfirstname"; // agent.firstname = "testfirstname";
agent.lastname = "testlastname"; // agent.lastname = "testlastname";
agent.SessionID = UUID.Zero; // agent.SessionID = UUID.Zero;
agent.SecureSessionID = UUID.Zero; // agent.SecureSessionID = UUID.Zero;
agent.circuitcode = 123; // agent.circuitcode = 123;
agent.BaseFolder = UUID.Zero; // agent.BaseFolder = UUID.Zero;
agent.InventoryFolder = UUID.Zero; // agent.InventoryFolder = UUID.Zero;
agent.startpos = Vector3.Zero; // agent.startpos = Vector3.Zero;
agent.CapsPath = "http://wibble.com"; // agent.CapsPath = "http://wibble.com";
//
TestLLUDPServer testLLUDPServer; // TestLLUDPServer testLLUDPServer;
TestLLPacketServer testLLPacketServer; // TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm; // AgentCircuitManager acm;
IScene scene = new MockScene(); // IScene scene = new MockScene();
SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm);
//
TestClient testClient = new TestClient(agent, scene); // TestClient testClient = new TestClient(agent, scene);
//
LLPacketHandler packetHandler // LLPacketHandler packetHandler
= new LLPacketHandler(testClient, testLLPacketServer, new ClientStackUserSettings()); // = new LLPacketHandler(testClient, testLLPacketServer, new ClientStackUserSettings());
//
packetHandler.InPacket(new AgentAnimationPacket()); // packetHandler.InPacket(new AgentAnimationPacket());
LLQueItem receivedPacket = packetHandler.PacketQueue.Dequeue(); // LLQueItem receivedPacket = packetHandler.PacketQueue.Dequeue();
//
Assert.That(receivedPacket, Is.Not.Null); // Assert.That(receivedPacket, Is.Not.Null);
Assert.That(receivedPacket.Incoming, Is.True); // Assert.That(receivedPacket.Incoming, Is.True);
Assert.That(receivedPacket.Packet, Is.TypeOf(typeof(AgentAnimationPacket))); // Assert.That(receivedPacket.Packet, Is.TypeOf(typeof(AgentAnimationPacket)));
} // }
//
/// <summary> // /// <summary>
/// Add a client for testing // /// Add a client for testing
/// </summary> // /// </summary>
/// <param name="scene"></param> // /// <param name="scene"></param>
/// <param name="testLLUDPServer"></param> // /// <param name="testLLUDPServer"></param>
/// <param name="testPacketServer"></param> // /// <param name="testPacketServer"></param>
/// <param name="acm">Agent circuit manager used in setting up the stack</param> // /// <param name="acm">Agent circuit manager used in setting up the stack</param>
protected void SetupStack( // protected void SetupStack(
IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer, // IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer,
out AgentCircuitManager acm) // out AgentCircuitManager acm)
{ // {
IConfigSource configSource = new IniConfigSource(); // IConfigSource configSource = new IniConfigSource();
ClientStackUserSettings userSettings = new ClientStackUserSettings(); // ClientStackUserSettings userSettings = new ClientStackUserSettings();
testLLUDPServer = new TestLLUDPServer(); // testLLUDPServer = new TestLLUDPServer();
acm = new AgentCircuitManager(); // acm = new AgentCircuitManager();
//
uint port = 666; // uint port = 666;
testLLUDPServer.Initialise(null, ref port, 0, false, configSource, acm); // testLLUDPServer.Initialise(null, ref port, 0, false, configSource, acm);
testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings); // testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings);
testLLUDPServer.LocalScene = scene; // testLLUDPServer.LocalScene = scene;
} // }
} }
} }

View File

@ -1,87 +0,0 @@
/*
* 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.Collections.Generic;
using OpenMetaverse.Packets;
namespace OpenSim.Region.ClientStack.LindenUDP.Tests
{
public class TestLLPacketServer : LLPacketServer
{
/// <summary>
/// Record counts of packets received
/// </summary>
protected Dictionary<PacketType, int> m_packetsReceived = new Dictionary<PacketType, int>();
public TestLLPacketServer(LLUDPServer networkHandler, ClientStackUserSettings userSettings)
: base(networkHandler, userSettings)
{}
public override void InPacket(uint circuitCode, Packet packet)
{
base.InPacket(circuitCode, packet);
if (m_packetsReceived.ContainsKey(packet.Type))
m_packetsReceived[packet.Type]++;
else
m_packetsReceived[packet.Type] = 1;
}
public int GetTotalPacketsReceived()
{
int totalCount = 0;
foreach (int count in m_packetsReceived.Values)
totalCount += count;
return totalCount;
}
public int GetPacketsReceivedFor(PacketType packetType)
{
if (m_packetsReceived.ContainsKey(packetType))
return m_packetsReceived[packetType];
else
return 0;
}
[Test]
public void RemoveForClient()
{
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
UUID spId = TestHelpers.ParseTail(0x1);
SceneHelpers.AddScenePresence(m_scene, spId);
m_scene.IncomingCloseAgent(spId);
// TODO: Add more assertions for the other aspects of event queues
Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(0));
}
}
}

View File

@ -29,7 +29,9 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using Nini.Config;
using OpenMetaverse.Packets; using OpenMetaverse.Packets;
using OpenSim.Framework;
namespace OpenSim.Region.ClientStack.LindenUDP.Tests namespace OpenSim.Region.ClientStack.LindenUDP.Tests
{ {
@ -39,42 +41,46 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
/// </summary> /// </summary>
public class TestLLUDPServer : LLUDPServer public class TestLLUDPServer : LLUDPServer
{ {
public TestLLUDPServer(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager)
: base(listenIP, ref port, proxyPortOffsetParm, allow_alternate_port, configSource, circuitManager)
{}
/// <summary> /// <summary>
/// The chunks of data to pass to the LLUDPServer when it calls EndReceive /// The chunks of data to pass to the LLUDPServer when it calls EndReceive
/// </summary> /// </summary>
protected Queue<ChunkSenderTuple> m_chunksToLoad = new Queue<ChunkSenderTuple>(); protected Queue<ChunkSenderTuple> m_chunksToLoad = new Queue<ChunkSenderTuple>();
protected override void BeginReceive() // protected override void BeginReceive()
{ // {
if (m_chunksToLoad.Count > 0 && m_chunksToLoad.Peek().BeginReceiveException) // if (m_chunksToLoad.Count > 0 && m_chunksToLoad.Peek().BeginReceiveException)
{ // {
ChunkSenderTuple tuple = m_chunksToLoad.Dequeue(); // ChunkSenderTuple tuple = m_chunksToLoad.Dequeue();
reusedEpSender = tuple.Sender; // reusedEpSender = tuple.Sender;
throw new SocketException(); // throw new SocketException();
} // }
} // }
protected override bool EndReceive(out int numBytes, IAsyncResult result, ref EndPoint epSender) // protected override bool EndReceive(out int numBytes, IAsyncResult result, ref EndPoint epSender)
{ // {
numBytes = 0; // numBytes = 0;
//
//m_log.Debug("Queue size " + m_chunksToLoad.Count); // //m_log.Debug("Queue size " + m_chunksToLoad.Count);
//
if (m_chunksToLoad.Count <= 0) // if (m_chunksToLoad.Count <= 0)
return false; // return false;
//
ChunkSenderTuple tuple = m_chunksToLoad.Dequeue(); // ChunkSenderTuple tuple = m_chunksToLoad.Dequeue();
RecvBuffer = tuple.Data; // RecvBuffer = tuple.Data;
numBytes = tuple.Data.Length; // numBytes = tuple.Data.Length;
epSender = tuple.Sender; // epSender = tuple.Sender;
//
return true; // return true;
} // }
public override void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) // public override void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
{ // {
// Don't do anything just yet // // Don't do anything just yet
} // }
/// <summary> /// <summary>
/// Signal that this chunk should throw an exception on Socket.BeginReceive() /// Signal that this chunk should throw an exception on Socket.BeginReceive()
@ -112,8 +118,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
/// <param name="result"></param> /// <param name="result"></param>
public void ReceiveData(IAsyncResult result) public void ReceiveData(IAsyncResult result)
{ {
while (m_chunksToLoad.Count > 0) // Doesn't work the same way anymore
OnReceivedData(result); // while (m_chunksToLoad.Count > 0)
// OnReceivedData(result);
} }
/// <summary> /// <summary>
@ -123,10 +130,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
/// <returns></returns> /// <returns></returns>
public bool HasCircuit(uint circuitCode) public bool HasCircuit(uint circuitCode)
{ {
lock (clientCircuits_reverse) // lock (clientCircuits_reverse)
{ // {
return clientCircuits_reverse.ContainsKey(circuitCode); // return clientCircuits_reverse.ContainsKey(circuitCode);
} // }
return true;
} }
} }

View File

@ -3067,27 +3067,26 @@
</Files> </Files>
</Project> </Project>
<!-- Commented for now until new unit tests are written for the new LLUDP implementation <Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack.LindenUDP.Tests" path="OpenSim/Region/ClientStack/Linden/UDP/Tests" type="Library">
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack.LindenUDP.Tests" path="OpenSim/Region/ClientStack/LindenUDP/Tests" type="Library">
<Configuration name="Debug"> <Configuration name="Debug">
<Options> <Options>
<OutputPath>../../../../../bin/</OutputPath> <OutputPath>../../../../../../bin/</OutputPath>
</Options> </Options>
</Configuration> </Configuration>
<Configuration name="Release"> <Configuration name="Release">
<Options> <Options>
<OutputPath>../../../../../bin/</OutputPath> <OutputPath>../../../../../../bin/</OutputPath>
</Options> </Options>
</Configuration> </Configuration>
<ReferencePath>../../../../../bin/</ReferencePath> <ReferencePath>../../../../../../bin/</ReferencePath>
<Reference name="System"/> <Reference name="System"/>
<Reference name="System.Xml"/> <Reference name="System.Xml"/>
<Reference name="log4net"/> <Reference name="log4net" path="../../../../../../bin/"/>
<Reference name="Nini" /> <Reference name="Nini" path="../../../../../../bin/"/>
<Reference name="nunit.framework" /> <Reference name="nunit.framework" path="../../../../../../bin/"/>
<Reference name="OpenMetaverse"/> <Reference name="OpenMetaverse" path="../../../../../../bin/"/>
<Reference name="OpenMetaverseTypes"/> <Reference name="OpenMetaverseTypes" path="../../../../../../bin/"/>
<Reference name="OpenSim.Framework"/> <Reference name="OpenSim.Framework"/>
<Reference name="OpenSim.Framework.Communications"/> <Reference name="OpenSim.Framework.Communications"/>
<Reference name="OpenSim.Framework.Statistics"/> <Reference name="OpenSim.Framework.Statistics"/>
@ -3101,7 +3100,6 @@
<Match pattern="*.cs" recurse="false"/> <Match pattern="*.cs" recurse="false"/>
</Files> </Files>
</Project> </Project>
-->
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Tests" path="OpenSim/Region/ScriptEngine" type="Library"> <Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Tests" path="OpenSim/Region/ScriptEngine" type="Library">
<Configuration name="Debug"> <Configuration name="Debug">