Example #1
0
        public void TestBandwidthControllerBasic()
        {
            BandwidthControlBuffer controller = ConstructBandwidthController();

            controller.Enqueue(NewPacket(1, 0), 0);
            AssertPacket(controller.Peek(), 1, 0);
            AssertPacket(controller.Dequeue(), 1, 0);
            Assert.AreEqual(controller.Peek(), null);
            Assert.AreEqual(controller.Dequeue(), null);
            Assert.AreEqual(controller.Peek(), null);


            controller.Enqueue(NewPacket(1, 0), 0);
            AssertPacket(controller.Peek(), 1, 0);
            AssertPacket(controller.Dequeue(), 1, 0);
            Assert.AreEqual(controller.Peek(), null);
            Assert.AreEqual(controller.Dequeue(), null);
            Assert.AreEqual(controller.Peek(), null);

            controller.Enqueue(NewPacket(1, 2), 2);
            AssertPacket(controller.Peek(), 1, 2);
            AssertPacket(controller.Dequeue(), 1, 2);
            Assert.AreEqual(controller.Peek(), null);
            Assert.AreEqual(controller.Dequeue(), null);
            Assert.AreEqual(controller.Peek(), null);

            controller.Enqueue(NewPacket(1, 1), 1);
            AssertPacket(controller.Peek(), 1, 1);
            AssertPacket(controller.Dequeue(), 1, 1);
            Assert.AreEqual(controller.Peek(), null);
            Assert.AreEqual(controller.Dequeue(), null);
            Assert.AreEqual(controller.Peek(), null);
        }
Example #2
0
        public void BandwidthControllerPressureTest(Random r, int totalPacket)
        {
            int[] bandwidth      = { 1, 2, 5 };
            int[] bandwidthCount = { 0, 0, 0 };
            int   nPacket        = 0;
            BandwidthControlBuffer controller = ConstructBandwidthController(bandwidth);

            for (int i = 0; i < totalPacket; i++)
            {
                controller.Enqueue(NewPacket(r.Next(1, 64), 0), 0);
                controller.Enqueue(NewPacket(r.Next(1, 64), 1), 1);
                controller.Enqueue(NewPacket(r.Next(1, 64), 2), 2);
            }

            for (int i = 0; i < totalPacket * 3 / 4; i++)
            {
                Packet next = controller.Dequeue();
                bandwidthCount[next.Data.ID] += next.GetLength();
                nPacket++;
            }

            if (totalPacket > 10000)
            {
                Assert.AreEqual((double)bandwidthCount[0] / bandwidthCount[1], (double)bandwidth[0] / bandwidth[1], 0.1);
                Assert.AreEqual((double)bandwidthCount[2] / bandwidthCount[1], (double)bandwidth[2] / bandwidth[1], 0.1);
            }

            testContextInstance.WriteLine("Actural bandwidth: " + string.Join(", ", bandwidthCount));

            while (controller.Peek() != null)
            {
                controller.Dequeue();
                nPacket++;
            }

            Assert.AreEqual(nPacket, totalPacket * 3);
        }
Example #3
0
        public void TestBandwidthControllerTooHighPriority()
        {
            BandwidthControlBuffer controller = ConstructBandwidthController();

            controller.Enqueue(NewPacket(1, 3), 3);
        }