public void LoadTest_HeavyWork() { // start with the warmup... var cnt = 0; var proc = 0; var pipelineId = Guid.NewGuid().ToString(); var server = new ProcessingServer(); server.Register(pipelineId, () => { var pipeline = new EventPipeline(); pipeline.AddHandler(new LoadTestOuptuHandler(e => { proc += 1; // do some heavy work Thread.Sleep(100); })); return(pipeline); }); server.Register(pipelineId, new InputHandler <InputItem>()); var client = new EventDispatcher(server); var profiler = ProfilerSession.StartSession() .SetIterations(1000) .SetThreads(5) .Task(() => { lock (pipelineId) { cnt += 1; } client.Process(pipelineId, new InputItem { Value = "StaticServer", Name = "test", Number = cnt }); }).RunSession(); server.WaitAll(pipelineId); profiler.Trace(); var monitor = new StatisticsApi(pipelineId); var processed = monitor.GetMetricValue <long>(MetricType.ProcessedEvents); Assert.AreEqual(processed, cnt, "Processed events are not equal to sent events {0} to {1}", processed, cnt); }
public void PerformanceMeasures_FullProcess() { GlobalConfiguration.Setup(s => s.UseOptions(new Options { MaxItemsInQueue = 10, MaxProcessors = 30 })); // start with the warmup... var cnt = 0; var pipelineId = Guid.NewGuid().ToString(); var server = new ProcessingServer(); server.Register(pipelineId, () => { var pipeline = new EventPipeline(); pipeline.AddHandler(new LoadTestOuptuHandler(e => { })); return(pipeline); }); server.Register(pipelineId, new InputHandler <InputItem>()); var client = new EventDispatcher(server); var sw = new Stopwatch(); sw.Start(); for (var i = 0; i < 10; i++) { client.Process(pipelineId, new InputItem { Value = "StaticServer", Name = "test", Number = i }); } //sw.Stop(); var time1 = sw.Elapsed; server.WaitAll(pipelineId); sw.Stop(); var time2 = sw.Elapsed; Assert.Less(time1, TimeSpan.FromMilliseconds(30)); Assert.Less(time2, TimeSpan.FromMilliseconds(600)); }
public void PluginManagerTests_BuildConfig() { var ctx = new ActivationContext(); ctx.Register <IEventDataConverter, EventDataConverter>(); var inputPlugin = _pluginMgr.GetPlugin(typeof(IInputHandler), "CustomInput"); var input = ctx.Resolve <IInputHandler>(inputPlugin.Type); var outputPlugin = _pluginMgr.GetPlugin(typeof(IOutputHandler), "ConsoleOutput"); var output = ctx.Resolve <IOutputHandler>(outputPlugin.Type); var pipelineId = Guid.NewGuid().ToString(); var loghandler = new LogQueueHandler(); var cnt = 0; var server = new ProcessingServer(); server.SetupPipeline(pipelineId, s => { s.Register(() => { var pipeline = new EventPipeline(); pipeline.AddHandler(output); pipeline.AddHandler(loghandler); cnt = cnt + 1; return(pipeline); }); s.Register(input); }); var client = new EventDispatcher(server); client.Process(pipelineId, new LogMessage { Message = "Event1" }); client.Process(pipelineId, new LogMessage { Message = "Event2" }); server.WaitAll(pipelineId); //Assert.That(cnt == 1, () => $"Count is {cnt} but is expected to be 1"); Assert.That(loghandler.Log.Count() == 2, () => $"Logcount is {loghandler.Log.Count()} but is expected to be 2"); }
public void PerformanceMeasures_WorkersCount(string id, int maxitems, int maxprocessors, int workers, int ticks) { var server = new ProcessingServer(); server.Register(id, () => { var pipeline = new EventPipeline(); pipeline.AddHandler(new LoadTestOuptuHandler(e => { })); return(pipeline); }); server.Register(id, new InputHandler <InputItem>()); var client = new EventDispatcher(server); GlobalConfiguration.Setup(s => s.UseOptions(new Options { MinProcessors = workers, MaxItemsInQueue = maxitems, MaxProcessors = maxprocessors })); var result = ProfilerSession.StartSession() .Setup(() => { }) .Task(() => { for (var i = 0; i < 1000; i++) { client.Process(id, new InputItem { Value = "StaticServer", Name = "test", Number = i }); } server.WaitAll(id); }) .RunSession(); result.Trace(); Assert.Less(result.AverageMilliseconds, ticks); }