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()); }
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()); }