Пример #1
0
        public async Task UnexpectedMessage_During_StartProcessing_Handled()
        {
            //Arrange
            var uri         = new Uri(@"test://");
            var packetBatch = new PacketBatch(this._loadBalancerSettings.BatchSize);

            packetBatch.Add(new RawPacket());

            this._batchLoaderMock.Setup(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize))
            .Returns(() => Task.Run(() => packetBatch));

            this._offlineLoadBalancerActorRefSUT.Tell(new CaptureProcessingRequest {
                CaptureInfo = new CaptureInfo(uri)
            });
            await Task.Delay(50);

            //Act
            this._offlineLoadBalancerActorRefSUT.Tell(new CaptureProcessingRequest {
                CaptureInfo = new CaptureInfo(uri)
            });

            //Assert
            await Task.Delay(50);

            this._batchLoaderMock.Verify(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize), Times.Once);
            this._batchSenderMock.Verify(sender => sender.SendBatch(packetBatch), Times.Once);
            //TODO test that error message was logged
        }
Пример #2
0
        public async Task UnexpectedMessage_During_Finalizing_Handled()
        {
            //Arrange
            var uri         = new Uri(@"test://");
            var packetBatch = new PacketBatch(this._loadBalancerSettings.BatchSize);

            this._batchLoaderMock.Setup(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize))
            .Returns(() => Task.Run(() => packetBatch));

            //Act
            this._offlineLoadBalancerActorRefSUT.Tell(new CaptureProcessingRequest {
                CaptureInfo = new CaptureInfo(uri)
            });
            await Task.Delay(50);

            this._offlineLoadBalancerActorRefSUT.Tell(new RawPacketBatchAck());

            //Assert
            await Task.Delay(50);

            var processingResult = this.ExpectMsg <ProcessingResult>();

            Assert.True(processingResult.Success);
            Assert.Equal((UInt64)0, processingResult.ProcessedPackets);
        }
Пример #3
0
        public async Task LoadBatch_DataLoadedEmpty_SendFinish()
        {
            //Arrange
            var uri         = new Uri(@"test://");
            var packetBatch = new PacketBatch(this._loadBalancerSettings.BatchSize);

            this._batchLoaderMock.Setup(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize))
            .Returns(() => Task.Run(() => packetBatch));

            //Act
            this._offlineLoadBalancerActorRefSUT.Tell(new CaptureProcessingRequest {
                CaptureInfo = new CaptureInfo(uri)
            });

            //Assert
            await Task.Delay(50);

            this._batchLoaderMock.Verify(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize), Times.Once);
            this._batchSenderMock.Verify(sender => sender.SendBatch(packetBatch), Times.Never);

            var processingResult = this.ExpectMsg <ProcessingResult>();

            Assert.True(processingResult.Success);
            Assert.Equal((UInt64)0, processingResult.ProcessedPackets);
        }
Пример #4
0
        public void SendBatch(PacketBatch packetBatch)
        {
            var batchRequest = new RawPacketBatchRequest(packetBatch.Batch, this._batchSeqNum++)
            {
                MessageId = this._messageCounter++
            };

            this.DistributedPackets += (UInt64)packetBatch.Count;

            this._rawPacketParserActor.Tell(batchRequest, this._loadBalancerActor);
        }
Пример #5
0
        public async Task LoadBatch_DataLoaded_SendPacketBatch()
        {
            //Arrange
            var uri         = new Uri(@"test://");
            var packetBatch = new PacketBatch(this._loadBalancerSettings.BatchSize);

            packetBatch.Add(new RawPacket());

            this._batchLoaderMock.Setup(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize))
            .Returns(() => Task.Run(() => packetBatch));

            //Act
            this._offlineLoadBalancerActorRefSUT.Tell(new CaptureProcessingRequest {
                CaptureInfo = new CaptureInfo(uri)
            });

            //Assert
            await Task.Delay(50);

            this._batchLoaderMock.Verify(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize), Times.Once);
            this._batchSenderMock.Verify(sender => sender.SendBatch(packetBatch), Times.Once);
        }
Пример #6
0
        public async Task LoadBatch_DataLoaded_Send_Acknowledged_SendFinish()
        {
            //Arrange
            var uri = new Uri(@"test://");
            var packetBatchWithOnePacker = new PacketBatch(this._loadBalancerSettings.BatchSize);

            packetBatchWithOnePacker.Add(new RawPacket());

            var packetBatchEmpty = new PacketBatch(this._loadBalancerSettings.BatchSize);


            this._batchLoaderMock.Setup(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize))
            .Returns(() => Task.Run(() => packetBatchWithOnePacker));

            this._batchSenderMock.Setup(sender => sender.DistributedPackets).Returns(1);

            //Act
            this._offlineLoadBalancerActorRefSUT.Tell(new CaptureProcessingRequest {
                CaptureInfo = new CaptureInfo(uri)
            });
            await Task.Delay(50);

            this._batchLoaderMock.Setup(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize))
            .Returns(() => Task.Run(() => packetBatchEmpty));

            this._offlineLoadBalancerActorRefSUT.Tell(new RawPacketBatchAck());

            //Assert
            await Task.Delay(50);

            this._batchLoaderMock.Verify(loader => loader.LoadBatch(this._loadBalancerSettings.BatchSize), Times.Exactly(2));
            this._batchSenderMock.Verify(sender => sender.SendBatch(packetBatchWithOnePacker), Times.Once);

            var processingResult = this.ExpectMsg <ProcessingResult>();

            Assert.True(processingResult.Success);
            Assert.Equal((UInt64)1, processingResult.ProcessedPackets);
        }