示例#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 CreatesProperWebRequest()
        {
            var config = new Config
            {
                TimeoutInSeconds = 12,
                UserAgent        = "test-agent"
            };
            var request = (HttpWebRequest)LogdnaClient.CreateWebRequest(config, "http://test-url");

            request.Should().BeEquivalentTo(new
            {
                Method           = "POST",
                ReadWriteTimeout = 12000,
                Timeout          = 12000,
                ContentType      = "application/json",
                UserAgent        = "test-agent",
                KeepAlive        = true
            }, x => x.ExcludingMissingMembers());
        }
示例#6
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");
        }