Files
TimberWinR/TimberWinR.TestGenerator/TcpTestGenerator.cs

63 lines
2.0 KiB
C#

using System.Threading;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using ServiceStack.Text;
namespace TimberWinR.TestGenerator
{
class TcpTestParameters
{
public int Port { get; set; }
public string Host { get; set; }
public int NumMessages { get; set; }
public int SleepTimeMilliseconds { get; set; }
public TcpTestParameters()
{
NumMessages = 100;
Port = 5140;
Host = "localhost";
SleepTimeMilliseconds = 10;
}
}
class TcpTestGenerator
{
public static int Generate(TcpTestParameters parms)
{
TcpClient server = new TcpClient(parms.Host, parms.Port);
var hostName = System.Environment.MachineName + "." +
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
"SYSTEM\\CurrentControlSet\\services\\Tcpip\\Parameters").GetValue("Domain", "").ToString();
using (NetworkStream stream = server.GetStream())
{
for (int i = 0; i < parms.NumMessages; i++)
{
JObject o = new JObject
{
{"Application", "tcp-generator"},
{"Host", hostName},
{"UtcTimestamp", DateTime.UtcNow.ToString("o")},
{"Type", "tcp"},
{"Message", "tcp message " + DateTime.UtcNow.ToString("o")},
{"Index", "logstash"}
};
byte[] data = Encoding.UTF8.GetBytes(string.Format("{0}\n", o.ToString()));
stream.Write(data, 0, data.Length);
Thread.Sleep(parms.SleepTimeMilliseconds);
}
}
return parms.NumMessages;
}
}
}