Esempio n. 1
0
        public void ShouldNotReturnNextClaimSequenceUntilBufferHasReserve()
        {
            var dependentSequence = new Sequence(Sequencer.InitialCursorValue);

            Sequence[] dependentSequences = { dependentSequence };
            _claimStrategy.SetSequence(_claimStrategy.BufferSize - 1L, dependentSequences);

            var done        = new Volatile.Boolean(false);
            var beforeLatch = new ManualResetEvent(false);
            var afterLatch  = new ManualResetEvent(false);

            new Thread(
                () =>
            {
                beforeLatch.Set();

                Assert.AreEqual(_claimStrategy.BufferSize, _claimStrategy.IncrementAndGet(dependentSequences));

                done.WriteFullFence(true);
                afterLatch.Set();
            }).Start();

            beforeLatch.WaitOne();

            Thread.Sleep(1000);
            Assert.IsFalse(done.ReadFullFence());

            dependentSequence.Value = dependentSequence.Value + 1L;

            afterLatch.WaitOne();
            Assert.AreEqual(_claimStrategy.BufferSize, _claimStrategy.Sequence);
        }
        public void ShouldNotReturnNextClaimSequenceUntilBufferHasReserve()
        {
            var dependentSequence = new Sequence(Sequencer.InitialCursorValue);
            Sequence[] dependentSequences = { dependentSequence };
            _claimStrategy.SetSequence(_claimStrategy.BufferSize - 1L, dependentSequences);

            var done = new Volatile.Boolean(false);
            var beforeLatch = new ManualResetEvent(false);
            var afterLatch = new ManualResetEvent(false);

            new Thread(
                ()=>
                    {
                        beforeLatch.Set();

                        Assert.AreEqual(_claimStrategy.BufferSize, _claimStrategy.IncrementAndGet(dependentSequences));

                        done.WriteFullFence(true);
                        afterLatch.Set();
                    }).Start();

            beforeLatch.WaitOne();

            Thread.Sleep(100);
            Assert.IsFalse(done.ReadFullFence());

            dependentSequence.Value = (dependentSequence.Value + 1L);

            afterLatch.WaitOne();
            Assert.AreEqual(_claimStrategy.BufferSize, _claimStrategy.Sequence);
        }
 public void SetUp()
 {
     _volatile = new Volatile.Boolean(InitialValue);
 }
Esempio n. 4
0
 public void SetUp()
 {
     _volatile = new Volatile.Boolean(InitialValue);
 }