public AgentSinkTests()
 {
     _fixture             = new Fixture().Customize(new AutoNSubstituteCustomization());
     _socketClientFactory = _fixture.Create <ISocketClientFactory>();
     _client = new TestClient();
     _socketClientFactory.GetClient(Endpoint.DEFAULT_TCP_ENDPOINT).Returns(_client);
 }
示例#2
0
        public void Constructor_MonitorNull_CreateObject()
        {
            // arrange
            Mock <ISocketProtocol> protocol       = new();
            ISocketClientFactory   optionsMonitor = null !;

            // act
            Exception?exception = Record.Exception(() =>
                                                   new SessionPool(optionsMonitor));

            // assert
            Assert.IsType <ArgumentNullException>(exception);
        }
示例#3
0
 public AgentSink(
     string logGroupName,
     string logStreamName,
     Endpoint endpoint,
     ISocketClientFactory clientFactory,
     IConfiguration config,
     ILoggerFactory loggerFactory)
 {
     _logGroupName            = logGroupName;
     _logStreamName           = logStreamName;
     _socketClient            = clientFactory.GetClient(endpoint);
     _queue                   = new BlockingCollection <string>(config.AgentBufferSize);
     _logger                  = loggerFactory.CreateLogger <AgentSink>();
     _cancellationTokenSource = new CancellationTokenSource();
     _sender                  = RunSenderThread(loggerFactory);
 }
示例#4
0
        public async Task RentAsync_NoRentals_OpenSocketConnection()
        {
            // arrange
            Mock <ISocketClientFactory> optionsMonitorMock = new(MockBehavior.Strict);
            Mock <ISocketProtocol>      protocol           = new();
            ISocketClientFactory        optionsMonitor     = optionsMonitorMock.Object;
            var socket = new SocketClientStub()
            {
                Protocol = protocol.Object, Name = "Foo"
            };

            optionsMonitorMock
            .Setup(x => x.CreateClient("Foo"))
            .Returns(() => socket);
            var pool = new SessionPool(optionsMonitor);

            // act
            await pool.CreateAsync("Foo");

            // assert
            Assert.Equal(1, socket.GetCallCount(x => x.OpenAsync(default !)));
示例#5
0
        public async Task RentAsync_OneRentals_ReturnSameClient()
        {
            // arrange
            Mock <ISocketClientFactory> optionsMonitorMock = new(MockBehavior.Strict);
            Mock <ISocketProtocol>      protocol           = new();
            ISocketClientFactory        optionsMonitor     = optionsMonitorMock.Object;

            optionsMonitorMock
            .Setup(x => x.CreateClient("Foo"))
            .Returns(() => new SocketClientStub()
            {
                Protocol = protocol.Object, Name = "Foo"
            });
            var      pool  = new SessionPool(optionsMonitor);
            ISession first = await pool.CreateAsync("Foo");

            // act
            ISession second = await pool.CreateAsync("Foo");

            // assert
            Assert.Equal(first, second);
        }
示例#6
0
        public async Task RentAsync_NoRentals_ReturnClient()
        {
            // arrange
            Mock <ISocketClientFactory> optionsMonitorMock = new(MockBehavior.Strict);
            Mock <ISocketProtocol>      protocol           = new();
            ISocketClientFactory        optionsMonitor     = optionsMonitorMock.Object;

            optionsMonitorMock
            .Setup(x => x.CreateClient("Foo"))
            .Returns(() => new SocketClientStub()
            {
                Protocol = protocol.Object, Name = "Foo"
            });
            var pool = new SessionPool(optionsMonitor);

            // act
            ISession rented = await pool.CreateAsync("Foo");

            // assert
            optionsMonitorMock.VerifyAll();
            Assert.NotNull(rented);
        }
示例#7
0
 public AgentSink(string logGroupName, string logStreamName, Endpoint endpoint, ISocketClientFactory clientFactory, IConfiguration config)
     : this(logGroupName, logStreamName, endpoint, clientFactory, config, NullLoggerFactory.Instance)
 {
 }