예제 #1
0
        public void SendsCorrectData()
        {
            var client = new LogdnaClient(new Config());

            client.Send(new[] { "Test message to be sent" }, 1);

            var message = Encoding.UTF8.GetString(_messageStream.ToArray());

            message.Should().Be("Test message to be sent");
        }
예제 #2
0
        public void SendsOnlyProperPartOfMessageBuffer()
        {
            var client = new LogdnaClient(new Config());

            client.Send(new[] { "message 1", "message 2", "message 3" }, 2);

            var message = Encoding.UTF8.GetString(_messageStream.ToArray());

            message.Should().Be($"message 1{Environment.NewLine}message 2");
        }
예제 #3
0
        public void DoesNotRetrySendWhenTokenIsInvalid()
        {
            var forbiddenResponse = new Mock <HttpWebResponse>();

            forbiddenResponse.SetupGet(x => x.StatusCode).Returns(HttpStatusCode.Forbidden);

            _webRequestMock.Setup(x => x.GetResponse())
            .Throws(new WebException("test-error", null, WebExceptionStatus.ProtocolError,
                                     forbiddenResponse.Object));

            var client = new LogdnaClient(new Config());

            client.Send(new[] { "test message" }, 1);

            _webRequestMock.Verify(x => x.GetResponse(), Times.Once, "Invalid token should not be retried");
        }
예제 #4
0
        public void SendsToProperUrl()
        {
            var config = new Config
            {
                RootUrl       = "https://logs.logdna.com/",
                CustomerToken = "customer-token",
                Tag           = "log4net-test-logdna",
                App           = "Log4net-logdna",
                Env           = "prod",
                UserAgent     = "user-agent"
            };
            var client = new LogdnaClient(config);

            client.Send(new[] { "test message" }, 1);

            _usedUrl.Should().Be($"https://logs01.loggly.test/bulk/customer-token/tag/tag1,tag2,user-agent");
        }
예제 #5
0
        public void RetriesSendWhenErrorOccurs()
        {
            var notFoundResponse = new Mock <HttpWebResponse>();

            notFoundResponse.SetupGet(x => x.StatusCode).Returns(HttpStatusCode.NotFound);

            _webRequestMock.Setup(x => x.GetResponse())
            .Throws(new WebException("test-error", null, WebExceptionStatus.ProtocolError,
                                     notFoundResponse.Object));

            var config = new Config
            {
                MaxSendRetries = 3
            };
            var client = new LogdnaClient(config);

            client.Send(new[] { "test message" }, 1);

            _webRequestMock.Verify(x => x.GetResponse(), Times.Exactly(config.MaxSendRetries + 1),
                                   "Generic send error should be retried");
        }