public ConsumerRepositoryTest() { _repository = new ConsumerRepository <TestEvent>(); _processor1 = new DummyEventProcessor(); _processor2 = new DummyEventProcessor(); _processor1.Run(); _processor2.Run(); _handler1 = new SleepingEventHandler(); _handler2 = new SleepingEventHandler(); _barrier1 = new DummySequenceBarrier(); _barrier2 = new DummySequenceBarrier(); }
public long Run(ThroughputSessionContext sessionContext) { long expectedCount = _eventProcessor.Sequence.Value + _iterations; _eventHandler.Reset(expectedCount); var processorTask = PerfTestUtil.StartLongRunning(() => { using var _ = ThreadAffinityUtil.SetThreadAffinity(0); Thread.CurrentThread.Priority = ThreadPriority.Highest; _eventProcessor.Run(); }); _eventProcessor.WaitUntilStarted(TimeSpan.FromSeconds(5)); using var _ = ThreadAffinityUtil.SetThreadAffinity(1); Thread.CurrentThread.Priority = ThreadPriority.Highest; sessionContext.Start(); var ringBuffer = _ringBuffer; for (long i = 0; i < _iterations; i++) { var s = ringBuffer.Next(); ringBuffer[s].Value = i; ringBuffer.Publish(s); } _eventHandler.WaitForSequence(); sessionContext.Stop(); PerfTestUtil.WaitForEventProcessorSequence(expectedCount, _eventProcessor); _eventProcessor.Halt(); processorTask.Wait(2000); sessionContext.SetBatchData(_eventHandler.BatchesProcessed, _iterations); PerfTestUtil.FailIfNot(_expectedResult, _eventHandler.Value, $"Handler should have processed {_expectedResult} events, but was: {_eventHandler.Value}"); return(_iterations); }
public static async Task <HttpResponseMessage> Run(IEventProcessor eventProcessor) { try { await eventProcessor.Run(); } catch (ValidationException e) { eventProcessor.Logger.LogError($"Invalid request: {e.Message}"); return(new HttpResponseMessage(HttpStatusCode.BadRequest)); } catch (Exception e) { eventProcessor.Logger.LogError($"An error occured: {e}"); return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } return(new HttpResponseMessage(HttpStatusCode.OK)); }