Esempio n. 1
0
        public void GivenCtor_ThenCorrectlyInitialisesMembers_Test()
        {
            var expectedGeneratedOn = TimeSpan.FromSeconds(1);

            var actual = new StubEvent(expectedGeneratedOn);

            Assert.Equal(expectedGeneratedOn, actual.GeneratedOn);
        }
        public GetCommandHandlerGenericTEventArgsTests()
        {
            _factory = new MockBindingFactory();
            _command = Substitute.For <ICommand <string> >();

            var obj = new StubProducer();

            _e = new StubEvent(obj, nameof(obj.GenericStringEvent));
        }
        public GetCommandHandlerTests()
        {
            _factory = new MockBindingFactory();
            _command = Substitute.For <ICommand>();

            var obj = new StubProducer();

            _e = new StubEvent(obj, nameof(obj.SimpleEvent));
        }
        public void ShouldIgnoreException()
        {
            var exception = new Exception();
            var stubEvent = new StubEvent(0);

            var exceptionHandler = new IgnoreExceptionHandler();

            exceptionHandler.HandleEventException(exception, 0L, stubEvent);
        }
Esempio n. 5
0
        public void Should_Claim_And_Get_In_Separate_Thread()
        {
            var messages = GetMessages(0, 0);

            var expectedEvent = new StubEvent(2701);

            _ringBuffer.PublishEvent(StubEvent.Translator, expectedEvent.Value, expectedEvent.TestString);

            Assert.Equal(expectedEvent, messages.Result[0]);
        }
            public override bool Equals(object value)
            {
                StubEvent inst = value as StubEvent;

                if (System.Object.ReferenceEquals(null, inst))
                {
                    return(false);
                }

                return(EventType.KillMob.Equals(inst.GetEventType()));
            }
Esempio n. 7
0
    public void ShouldHandleFatalException()
    {
        var causeException = new Exception();
        var evt            = new StubEvent(0);

        var exceptionHandler = new FatalExceptionHandler <StubEvent>();

        var exception = Assert.Throws <ApplicationException>(() => exceptionHandler.HandleEventException(causeException, 0L, evt));

        Assert.IsNotNull(exception);
        Assert.AreEqual(causeException, exception !.InnerException);
    }
    public void ShouldClaimAndGetInSeparateThread()
    {
        var events = GetEvents(0, 0);

        var expectedEvent = new StubEvent(2701);

        using (var scope = _ringBuffer.PublishEvent())
        {
            scope.Event().Copy(expectedEvent);
        }

        Assert.AreEqual(expectedEvent, events.Result[0]);
    }
Esempio n. 9
0
        public void shouldClaimAndGetInSeparateThread()
        {
            Future<List<StubEvent>> messages = getMessages(0, 0);

            StubEvent expectedEvent = new StubEvent(2701);

            long sequence = ringBuffer.next();
            StubEvent oldEvent = ringBuffer.get(sequence);
            oldEvent.copy(expectedEvent);
            ringBuffer.publish(sequence);

            assertEquals(expectedEvent, messages.get()[0]);
        }
Esempio n. 10
0
        public void ShouldClaimAndGetInSeparateThread()
        {
            var events = GetEvents(0, 0);

            var expectedEvent = new StubEvent(2701);

            var       sequence = _ringBuffer.Next();
            StubEvent oldEvent = _ringBuffer[sequence];

            oldEvent.Copy(expectedEvent);
            _ringBuffer.Publish(sequence);

            Assert.AreEqual(expectedEvent, events.Result[0]);
        }
Esempio n. 11
0
        public void ShouldHandleFatalException()
        {
            var causeException = new Exception();
            var evt            = new StubEvent(0);

            var exceptionHandler = new FatalExceptionHandler();

            try
            {
                exceptionHandler.HandleEventException(causeException, 0L, evt);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(causeException, ex.InnerException);
            }
        }
Esempio n. 12
0
        public void Should_Publish_And_Get()
        {
            Assert.Equal(Sequence.InitialValue, _ringBuffer.GetCursor());

            var expectedEvent = new StubEvent(2701);

            _ringBuffer.PublishEvent(StubEvent.Translator, expectedEvent.Value, expectedEvent.TestString);

            var sequence = _barrier.WaitFor(0L);

            Assert.Equal(0L, sequence);

            var @event = _ringBuffer.Get(sequence);

            Assert.Equal(expectedEvent, @event);

            Assert.Equal(0L, _barrier.GetCursor());
        }
Esempio n. 13
0
        public void shouldClaimAndGetWithTimeout()
        {
            assertEquals(Sequencer.INITIAL_CURSOR_VALUE, ringBuffer.getCursor());

            StubEvent expectedEvent = new StubEvent(2701);

            long claimSequence = ringBuffer.next();
            StubEvent oldEvent = ringBuffer.get(claimSequence);
            oldEvent.copy(expectedEvent);
            ringBuffer.publish(claimSequence);

            long sequence = sequenceBarrier.waitFor(0, TimeSpan.FromMilliseconds(5));
            assertEquals(0, sequence);

            StubEvent @event = ringBuffer.get(sequence);
            assertEquals(expectedEvent, @event);

            assertEquals(0L, ringBuffer.getCursor());
        }
Esempio n. 14
0
        public void ShouldSetAtSpecificSequence()
        {
            const long expectedSequence = 5;

            _ringBuffer.Claim(expectedSequence);
            StubEvent expectedEvent = _ringBuffer[expectedSequence];

            expectedEvent.Value = (int)expectedSequence;
            _ringBuffer.ForcePublish(expectedSequence);

            long sequence = _sequenceBarrier.WaitFor(expectedSequence);

            Assert.AreEqual(expectedSequence, sequence);

            StubEvent evt = _ringBuffer[sequence];

            Assert.AreEqual(expectedEvent, evt);

            Assert.AreEqual(expectedSequence, _ringBuffer.Cursor);
        }
Esempio n. 15
0
        public void ShouldPreventProducersOvertakingEventProcessorsWrapPoint()
        {
            const int ringBufferSize   = 4;
            var       mre              = new ManualResetEvent(false);
            var       producerComplete = false;
            var       ringBuffer       = new RingBuffer <StubEvent>(() => new StubEvent(-1), ringBufferSize);
            var       processor        = new TestEventProcessor(ringBuffer.NewBarrier());

            ringBuffer.SetGatingSequences(processor.Sequence);

            var thread = new Thread(
                () =>
            {
                for (int i = 0; i <= ringBufferSize; i++)         // produce 5 events
                {
                    var sequence  = ringBuffer.Next();
                    StubEvent evt = ringBuffer[sequence];
                    evt.Value     = i;
                    ringBuffer.Publish(sequence);

                    if (i == 3)         // unblock main thread after 4th event published
                    {
                        mre.Set();
                    }
                }

                producerComplete = true;
            });

            thread.Start();

            mre.WaitOne();
            Assert.AreEqual(ringBufferSize - 1, ringBuffer.Cursor);
            Assert.IsFalse(producerComplete);

            processor.Run();
            thread.Join();

            Assert.IsTrue(producerComplete);
        }
Esempio n. 16
0
        public async Task PersistAsync_WhenFailureEvent_WillCallFailureAuditRecord()
        {
            // Arrange
            var recorder = new Mock <IRecordAuditableActions>();
            var factory  = new Mock <IAdapterFactory>();

            factory.Setup(x => x.Create(It.IsAny <Event>())).Returns(new Mock <IAuditEventArguments>().Object);

            var sut = new AuditSink(recorder.Object)
            {
                Factory = factory.Object
            };


            var successfulEvent = new StubEvent(string.Empty, string.Empty, EventTypes.Failure, -1);

            // Act
            await sut.PersistAsync(successfulEvent);

            // Assert
            recorder.Verify(x => x.RecordFailure(It.IsAny <IAuditEventArguments>()), Times.Once);
        }
    public void ShouldClaimAndGet()
    {
        Assert.AreEqual(Sequence.InitialCursorValue, _ringBuffer.Cursor);

        var expectedEvent = new StubEvent(2701);

        var claimSequence = _ringBuffer.Next();
        var oldEvent      = _ringBuffer[claimSequence];

        oldEvent.Copy(expectedEvent);
        _ringBuffer.Publish(claimSequence);

        var waitResult = _sequenceBarrier.WaitFor(0);

        Assert.AreEqual(new SequenceWaitResult(0), waitResult);

        var evt = _ringBuffer[waitResult.UnsafeAvailableSequence];

        Assert.AreEqual(expectedEvent, evt);

        Assert.AreEqual(0L, _ringBuffer.Cursor);
    }
Esempio n. 18
0
        public void ShouldClaimAndGet()
        {
            Assert.AreEqual(Sequencer.InitialCursorValue, _ringBuffer.Cursor);

            var expectedEvent = new StubEvent(2701);

            var claimSequence = _ringBuffer.Next();
            var oldEvent      = _ringBuffer[claimSequence];

            oldEvent.Copy(expectedEvent);
            _ringBuffer.Publish(claimSequence);

            long sequence = _sequenceBarrier.WaitFor(0);

            Assert.AreEqual(0, sequence);

            StubEvent evt = _ringBuffer[sequence];

            Assert.AreEqual(expectedEvent, evt);

            Assert.AreEqual(0L, _ringBuffer.Cursor);
        }
Esempio n. 19
0
        public void ShouldClaimAndGetWithTimeout()
        {
            Assert.AreEqual(Sequencer.InitialCursorValue, _ringBuffer.Cursor);

            var expectedEvent = new StubEvent(2701);

            long      claimSequence = _ringBuffer.Next();
            StubEvent oldEvent      = _ringBuffer[claimSequence];

            oldEvent.Copy(expectedEvent);
            _ringBuffer.Publish(claimSequence);

            long sequence = _sequenceBarrier.WaitFor(0, TimeSpan.FromMilliseconds(5));

            Assert.AreEqual(0, sequence);

            var evt = _ringBuffer[sequence];

            Assert.AreEqual(expectedEvent, evt);

            Assert.AreEqual(0L, _ringBuffer.Cursor);
        }
Esempio n. 20
0
        public void ShouldClaimAndGetMultipleEvents()
        {
            var numEvents = _ringBuffer.BufferSize;

            for (var i = 0; i < numEvents; i++)
            {
                var       sequence = _ringBuffer.Next();
                StubEvent evt      = _ringBuffer[sequence];
                evt.Value = i;
                _ringBuffer.Publish(sequence);
            }

            var expectedSequence = numEvents - 1;
            var available        = _sequenceBarrier.WaitFor(expectedSequence);

            Assert.AreEqual(expectedSequence, available);

            for (var i = 0; i < numEvents; i++)
            {
                Assert.AreEqual(i, _ringBuffer[i].Value);
            }
        }
Esempio n. 21
0
        public void ShouldWrap()
        {
            var       numEvents = _ringBuffer.BufferSize;
            const int offset    = 1000;

            for (var i = 0; i < numEvents + offset; i++)
            {
                var       sequence = _ringBuffer.Next();
                StubEvent evt      = _ringBuffer[sequence];
                evt.Value = i;
                _ringBuffer.Publish(sequence);
            }

            var expectedSequence = numEvents + offset - 1;
            var available        = _sequenceBarrier.WaitFor(expectedSequence);

            Assert.AreEqual(expectedSequence, available);

            for (var i = offset; i < numEvents + offset; i++)
            {
                Assert.AreEqual(i, _ringBuffer[i].Value);
            }
        }