From 5feaff8524845d3475c02d1ba96465925e65e34a Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Thu, 30 Oct 2008 22:32:23 +0000
Subject: test: Extend malformed packet test to actually check that a valid
packet can get through after the malformed ones have been sent
---
.../LindenUDP/Tests/BasicCircuitTests.cs | 47 +++++++++++++++++-----
1 file changed, 37 insertions(+), 10 deletions(-)
(limited to 'OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs')
diff --git a/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs
index c75a5b3..352f697 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs
@@ -26,9 +26,9 @@
*/
using System.Net;
-//using System.Threading;
using log4net;
using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
using OpenMetaverse;
using OpenMetaverse.Packets;
using OpenSim.Framework;
@@ -60,9 +60,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
///
/// Add a client for testing
///
+ ///
///
+ ///
/// Agent circuit manager used in setting up the stack
- protected void SetupStack(out TestLLUDPServer testLLUDPServer, out AgentCircuitManager acm)
+ protected void SetupStack(
+ IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer,
+ out AgentCircuitManager acm)
{
ClientStackUserSettings userSettings = new ClientStackUserSettings();
testLLUDPServer = new TestLLUDPServer();
@@ -70,8 +74,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
uint port = 666;
testLLUDPServer.Initialise(null, ref port, 0, false, userSettings, null, acm);
- new LLPacketServer(testLLUDPServer, userSettings);
- testLLUDPServer.LocalScene = new MockScene();
+ testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings);
+ testLLUDPServer.LocalScene = scene;
}
///
@@ -117,8 +121,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
UUID mySessionUuid = UUID.Parse("00000000-0000-0000-0000-000000000002");
TestLLUDPServer testLLUDPServer;
+ TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm;
- SetupStack(out testLLUDPServer, out acm);
+ SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm);
AgentCircuitData acd = new AgentCircuitData();
acd.AgentID = myAgentUuid;
@@ -160,8 +165,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
uint myCircuitCode = 123457;
TestLLUDPServer testLLUDPServer;
+ TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm;
- SetupStack(out testLLUDPServer, out acm);
+ SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm);
AddClient(myCircuitCode, new IPEndPoint(IPAddress.Loopback, 1000), testLLUDPServer, acm);
testLLUDPServer.RemoveClientCircuit(myCircuitCode);
@@ -179,20 +185,41 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
public void TestMalformedPacketSend()
{
uint myCircuitCode = 123458;
- EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001);
+ EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001);
+ MockScene scene = new MockScene();
TestLLUDPServer testLLUDPServer;
+ TestLLPacketServer testLLPacketServer;
AgentCircuitManager acm;
- SetupStack(out testLLUDPServer, out acm);
+ SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm);
AddClient(myCircuitCode, testEp, testLLUDPServer, acm);
-
+
byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 };
-
+
+ // Send two garbled 'packets' in succession
+ testLLUDPServer.LoadReceive(data, testEp);
testLLUDPServer.LoadReceive(data, testEp);
testLLUDPServer.ReceiveData(null);
// Check that we are still here
Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode));
+ Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(0));
+
+ // Check that sending a valid packet to same circuit still succeeds
+ Assert.That(scene.ObjectNameCallsReceived, Is.EqualTo(0));
+
+ ObjectNamePacket onp = new ObjectNamePacket();
+ ObjectNamePacket.ObjectDataBlock odb = new ObjectNamePacket.ObjectDataBlock();
+ odb.LocalID = 1;
+ odb.Name = Utils.StringToBytes("helloooo");
+ onp.ObjectData = new ObjectNamePacket.ObjectDataBlock[] { odb };
+ onp.Header.Zerocoded = false;
+
+ testLLUDPServer.LoadReceive(onp, testEp);
+ testLLUDPServer.ReceiveData(null);
+
+ Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(1));
+ Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(1));
}
}
}
--
cgit v1.1