public static void Main(string[] args) { TopicName = Config.TopicName; var numRecords = 50000000L; var recordSize = 100; try { TopicName = args[1]; numRecords = long.Parse(args[1]); recordSize = int.Parse(args[2]); } catch (Exception) { Log.Warn($"Default values were used. \n\ttopicName={TopicName}\n\tnumRecords={numRecords}\n\trecordSize={recordSize}"); } var tasksPerIteration = 1000; var iterationsCount = numRecords/tasksPerIteration; var payload = new string(Enumerable.Range(0, recordSize).Select(x => 'A').ToArray()); var tasks = Enumerable.Range(0, tasksPerIteration).Select(x => new XTask { Description = payload }).ToArray(); var stats = new Stats(numRecords, 5000); for (int i = 0; i < iterationsCount; i++) { var sendStart = DateTimeExtensions.CurrentTimeMillis(); var cb = stats.NextCompletion(sendStart, payload.Length, stats).Times(tasksPerIteration); Publish(tasks, cb); } stats.PrintTotal(); }
public Action NextCompletion(long start, int bytes, Stats stats) { Action cb = () => { var iter = _iteration; long now = DateTimeExtensions.CurrentTimeMillis(); int latency = (int) (now - start); stats.Record(iter, latency, bytes, now); }; _iteration++; return cb; }