static void Main(string[] args) { var options = new Options(); if (CommandLine.Parser.Default.ParseArgumentsStrict(args, options)) { var client = new Statsd(options.Host, options.Port, prefix : options.Namespace, connectionType : options.UseTCP ? ConnectionType.Tcp : ConnectionType.Udp); var tokenSource = new System.Threading.CancellationTokenSource(); var stopwatch = Stopwatch.StartNew(); var totalMetricsSent = 0; var tasks = new List<Task>(); int numThreads = options.Threads == 0 ? 1 : options.Threads; for ( int count = 0; count < numThreads; count++ ) { int myTaskNumber = count; var task = Task.Factory.StartNew( () => { var rnd = new Random(); int taskNumber = myTaskNumber; if ( taskNumber == 0 ) { Console.WriteLine( "Feeding stats to {0}:{1}, ctrl+c to exit.", options.Host, options.Port ); } while ( true ) { client.LogCount( "test.count.one." + rnd.Next( 5 ) ); client.LogCount( "test.count.bigValue", rnd.Next( 50 ) ); client.LogTiming( "test.timing." + rnd.Next( 5 ), rnd.Next( 100, 2000 ) ); client.LogGauge( "test.gauge." + rnd.Next( 5 ), rnd.Next( 100 ) ); Thread.Sleep( options.Delay ); Interlocked.Add( ref totalMetricsSent, 4 ); if ( taskNumber == 0 && stopwatch.ElapsedMilliseconds >= 5000 ) { Console.WriteLine( "Total sent: {0}", totalMetricsSent ); stopwatch.Restart(); } } }, tokenSource.Token ); tasks.Add( task ); } Console.CancelKeyPress += (sender, e) => { tokenSource.Cancel(); }; Task.WaitAll( tasks.ToArray() ); } }
public void CreateClient_WithInvalidCharactersInHostName_DoesNotError() { var statsd = new Statsd("@%)(F(FSDLKDEQ423t0-vbdfb", 12000); statsd.LogCount("test.foo"); }
public void CreateClient_WithIPAddress_DoesNotError() { var statsd = new Statsd("127.0.0.1", 12000); statsd.LogCount("test.stat"); }
public void CreateClient_WithInvalidHostName_DoesNotError() { var statsd = new Statsd("nowhere.here.or.anywhere", 12000); statsd.LogCount("test.stat"); }
public void LogCount_EmptyStringPrefix_DoesNotStartNameWithPeriod() { var statsd = new Statsd("localhost", 12000, prefix : "", outputChannel : _outputChannel.Object); var inputStat = "some.stat:1|c"; _outputChannel.Setup(p => p.Send(It.Is<string>(q => q == inputStat))) .Verifiable(); statsd.LogCount("some.stat"); _outputChannel.VerifyAll(); }
public void Constructor_PrefixEndsInPeriod_RemovePeriod() { var statsd = new Statsd("localhost", 12000, "foo.", outputChannel : _outputChannel.Object); var stat = _testData.NextStatName; var count = _testData.NextInteger; _outputChannel.Setup(p => p.Send("foo." + stat + ":" + count.ToString() + "|c")).Verifiable(); statsd.LogCount(stat, count); _outputChannel.VerifyAll(); }