public void ShouldSendLongUdpMessage()
            {
                var jsonObject = new JObject();
                var message    = ResourceHelper.GetResource("LongMessage.txt").ReadToEnd();

                jsonObject.Add("message", JToken.FromObject(message));

                var converter = new Mock <IConverter>();

                converter.Setup(c => c.GetLogEventJson(It.IsAny <LogEventInfo>())).Returns(jsonObject).Verifiable();
                var transportClient = new Mock <ITransportClient>();

                transportClient.Setup(t => t.Send(It.IsAny <byte[]>(), It.IsAny <Int32>(), It.IsAny <IPEndPoint>())).Verifiable();

                var transport = new UdpTransport(transportClient.Object);
                var dnslookup = new Mock <DnsBase>();

                dnslookup.Setup(x => x.GetHostAddresses(It.IsAny <string>())).Returns(new[] { IPAddress.Parse("127.0.0.1") });
                var target = new NetworkJsonTarget(new[] { transport }, converter.Object, dnslookup.Object)
                {
                    Endpoint = "udp://127.0.0.1:12201"
                };

                target.WriteLogEventInfo(new LogEventInfo());

                transportClient.Verify(t => t.Send(It.IsAny <byte[]>(), It.IsAny <Int32>(), It.IsAny <IPEndPoint>()), Times.Once());
                converter.Verify(c => c.GetLogEventJson(It.IsAny <LogEventInfo>()), Times.Once());
            }
Exemplo n.º 2
0
        public static void ThreadMethod(GuaranteedDeliveryThreadDelegate threadData)
        {
            SQLiteConnection dbConnection = null;
            var targets = new Dictionary <string, NetworkJsonTarget>();

            while (!threadData.IsAppShuttingDown)
            {
                try
                {
                    if (dbConnection == null)
                    {
                        dbConnection = LogStorageDbGlobals.OpenNewConnection();
                    }

                    var logMessages = LogStorageTable.GetNextTenRecords(dbConnection);
                    if (logMessages.Rows.Count == 0)
                    {
                        Thread.Sleep(500);
                    }
                    else
                    {
                        for (var inc = 0; inc < logMessages.Rows.Count; inc++)
                        {
                            var messageId  = logMessages.Rows[inc][LogStorageTable.Columns.MessageId.Index].ToString();
                            var endpoint   = logMessages.Rows[inc][LogStorageTable.Columns.Endpoint.Index].ToString();
                            var logMessage = logMessages.Rows[inc][LogStorageTable.Columns.LogMessage.Index].ToString();
                            NetworkJsonTarget currentTarget = null;
                            if (!targets.TryGetValue(endpoint, out currentTarget))
                            {
                                currentTarget = new NetworkJsonTarget {
                                    Endpoint = endpoint
                                };
                                targets.Add(endpoint, currentTarget);
                            }
                            currentTarget.Write(logMessage);
                            LogStorageTable.DeleteProcessedRecord(dbConnection, messageId);
                            Interlocked.Increment(ref TotalMessageCount);
                            Console.WriteLine($"OUT={TotalMessageCount}");
                        }
                    }
                }
                catch (Exception ex)
                {
                    dbConnection?.Close();
                    dbConnection = null;
                    targets.Clear();
                    Thread.Sleep(1000);
                }
            }
            Console.WriteLine("Background Thread Shutdown");
            threadData.ThreadHasShutdown();
        }
            public void ShouldSendShortUdpMessage()
            {
                var transportClient = new Mock <ITransportClient>();
                var transport       = new UdpTransport(transportClient.Object);
                var converter       = new Mock <IConverter>();
                var dnslookup       = new Mock <DnsBase>();

                converter.Setup(c => c.GetLogEventJson(It.IsAny <LogEventInfo>())).Returns(new JObject());

                var target = new NetworkJsonTarget(new [] { transport }, converter.Object, dnslookup.Object)
                {
                    Endpoint = "udp://127.0.0.1:12201"
                };
                var logEventInfo = new LogEventInfo {
                    Message = "Test Message"
                };

                dnslookup.Setup(x => x.GetHostAddresses(It.IsAny <string>())).Returns(new[] { IPAddress.Parse("127.0.0.1") });

                target.WriteLogEventInfo(logEventInfo);

                transportClient.Verify(t => t.Send(It.IsAny <byte[]>(), It.IsAny <Int32>(), It.IsAny <IPEndPoint>()), Times.Once());
                converter.Verify(c => c.GetLogEventJson(It.IsAny <LogEventInfo>()), Times.Once());
            }