public OneToOneSequencedBatchValueThroughputTest() { _ringBuffer = ValueRingBuffer <PerfValueEvent> .CreateSingleProducer(PerfValueEvent.EventFactory, _bufferSize, new YieldingWaitStrategy()); var sequenceBarrier = _ringBuffer.NewBarrier(); _handler = new AdditionEventHandler(); _batchEventProcessor = BatchEventProcessorFactory.Create(_ringBuffer, sequenceBarrier, _handler); _ringBuffer.AddGatingSequences(_batchEventProcessor.Sequence); }
public void ShouldNotPublishEventsIfBatchIsLargerThanRingBuffer() { var ringBuffer = ValueRingBuffer <long> .CreateSingleProducer(() => - 1L, 4); try { Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(5)); } finally { AssertEmptyRingBuffer(ringBuffer); } }
public void ShouldNotTryPublishEventsWhenBatchSizeIs0() { var ringBuffer = ValueRingBuffer <long> .CreateSingleProducer(() => - 1L, 4); try { Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(0)); } finally { AssertEmptyRingBuffer(ringBuffer); } }
public PingPongSequencedValueLatencyTest() { _pingBuffer = ValueRingBuffer <PerfValueEvent> .CreateSingleProducer(PerfValueEvent.EventFactory, _bufferSize, new BlockingWaitStrategy()); _pongBuffer = ValueRingBuffer <PerfValueEvent> .CreateSingleProducer(PerfValueEvent.EventFactory, _bufferSize, new BlockingWaitStrategy()); _pingBarrier = _pingBuffer.NewBarrier(); _pongBarrier = _pongBuffer.NewBarrier(); _pinger = new Pinger(_pingBuffer, _iterations, _pauseNanos); _ponger = new Ponger(_pongBuffer); _pingProcessor = BatchEventProcessorFactory.Create(_pongBuffer, _pongBarrier, _pinger); _pongProcessor = BatchEventProcessorFactory.Create(_pingBuffer, _pingBarrier, _ponger); _pingBuffer.AddGatingSequences(_pongProcessor.Sequence); _pongBuffer.AddGatingSequences(_pingProcessor.Sequence); }
public void ShouldPublishEvent() { var ringBuffer = ValueRingBuffer <long> .CreateSingleProducer(() => - 1L, 4); using (var scope = ringBuffer.PublishEvent()) { scope.Event() = scope.Sequence; } using (var scope = ringBuffer.TryPublishEvent()) { Assert.IsTrue(scope.HasEvent); Assert.IsTrue(scope.TryGetEvent(out var e)); e.Event() = e.Sequence; } Assert.That(ringBuffer, ValueRingBufferEqualsConstraint.IsValueRingBufferWithEvents(0L, 1L)); }