public void produced_checkpoint_tags_are_correctly_ordered()
        {
            var t    = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var zero = t.MakeZeroCheckpointTag();

            var zeroEvent  = t.MakeCheckpointTag(zero, _zeroEvent);
            var zeroEvent2 = t.MakeCheckpointTag(zeroEvent, _zeroEvent);
            var first      = t.MakeCheckpointTag(zeroEvent2, _firstEvent);
            var second     = t.MakeCheckpointTag(first, _secondEvent);
            var second2    = t.MakeCheckpointTag(zeroEvent, _secondEvent);
            var third      = t.MakeCheckpointTag(second, _thirdEvent);

            Assert.IsTrue(zeroEvent > zero);
            Assert.IsTrue(first > zero);
            Assert.IsTrue(second > first);

            Assert.AreEqual(zeroEvent2, zeroEvent);
            Assert.AreEqual(second, second2); // strong order (by tf)
            Assert.IsTrue(second2 > zeroEvent);
            Assert.IsTrue(second2 > first);

            Assert.IsTrue(third > second);
            Assert.IsTrue(third > first);
            Assert.IsTrue(third > zeroEvent);
            Assert.IsTrue(third > zero);
        }
        public void When()
        {
            _tagger          = new EventByTypeIndexPositionTagger(new[] { "type1", "type2" });
            _positionTracker = new PositionTracker(_tagger);
            // when

            _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag());
        }
        public void adjust_compatible_tag_returns_the_same_tag()
        {
            var t   = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var tag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(100, 50), new Dictionary <string, int> {
                { "type1", 1 }, { "type2", 2 }
            });

            Assert.AreEqual(tag, t.AdjustTag(tag));
        }
        public void zero_position_tag_is_before_first_event_possible()
        {
            var t    = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var zero = t.MakeZeroCheckpointTag();

            var zeroFromEvent = t.MakeCheckpointTag(zero, _zeroEvent);

            Assert.IsTrue(zeroFromEvent > zero);
        }
        public void streams_checkpoint_tag_is_incompatible()
        {
            var t = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });

            Assert.IsFalse(
                t.IsCompatible(
                    CheckpointTag.FromStreamPositions(0, new Dictionary <string, int> {
                { "$et-type1", 100 }, { "$et-type2", 150 }
            })));
        }
        public void the_same_events_checkpoint_tag_is_compatible()
        {
            var t = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });

            Assert.IsTrue(
                t.IsCompatible(
                    CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(100, 50), new Dictionary <string, int> {
                { "type1", 100 }, { "type2", 150 }
            })));
        }
        public void can_adjust_tf_position_tag()
        {
            var t   = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var tag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(100, 50), new Dictionary <string, int> {
                { "type1", 1 }, { "type2", 2 }
            });
            var original = CheckpointTag.FromPosition(0, 100, 50);

            Assert.AreEqual(tag, t.AdjustTag(original));
        }
        public void is_message_after_checkpoint_tag_tf_only_after_case()
        {
            var t      = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var result =
                t.IsMessageAfterCheckpointTag(
                    CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary <string, int> {
                { "type1", 0 }, { "type2", 0 }
            }), _firstEvent);

            Assert.IsTrue(result);
        }
        public void cannot_update_by_prior_tf_position()
        {
            var t         = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var linkEvent = ReaderSubscriptionMessage.CommittedEventDistributed.Sample(
                Guid.NewGuid(), new TFPos(180, 170), "$et-type2", 1, false, Guid.NewGuid(), "$>", false,
                Helper.UTF8NoBom.GetBytes("0@stream2"), new byte[0]);
            var tag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(270, 260), new Dictionary <string, int> {
                { "type1", 2 }, { "type2", 2 }
            });

            t.MakeCheckpointTag(tag, linkEvent);
        }
        public void is_message_after_checkpoint_tag_incompatible_streams_case()
        {
            var t      = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var result =
                t.IsMessageAfterCheckpointTag(
                    CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(30, 20), new Dictionary <string, int> {
                { "type1", -1 }, { "type3", -1 }
            }),
                    _firstEvent);

            Assert.IsFalse(result);
        }
        public void is_message_after_checkpoint_tag_before_case()
        {
            var t      = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var result =
                t.IsMessageAfterCheckpointTag(
                    CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(40, 35), new Dictionary <string, long> {
                { "type1", 2 }, { "type2", 2 }
            }),
                    _firstEvent);

            Assert.IsFalse(result);
        }
        public void When()
        {
            // given
            _tagger          = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            _positionTracker = new PositionTracker(_tagger);
            var newTag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary <string, int> {
                { "type1", 1 }, { "type2", 2 }
            });
            var newTag2 = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(20, 15), new Dictionary <string, int> {
                { "type1", 1 }, { "type2", 3 }
            });

            _positionTracker.UpdateByCheckpointTagInitial(newTag);
            _positionTracker.UpdateByCheckpointTagForward(newTag2);
        }
        public void can_update_by_tf_event_if_with_prior_index_position()
        {
            var t         = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var linkEvent = ReaderSubscriptionMessage.CommittedEventDistributed.Sample(
                Guid.NewGuid(), new TFPos(180, 170), "$et-type2", 1, false, Guid.NewGuid(), "$>", false,
                Helper.UTF8NoBom.GetBytes("0@stream2"), new byte[0]);
            var tag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(70, 60), new Dictionary <string, int> {
                { "type1", 2 }, { "type2", 2 }
            });
            var updated = t.MakeCheckpointTag(tag, linkEvent);

            Assert.AreEqual(new TFPos(180, 170), updated.Position);
            Assert.AreEqual(2, updated.Streams["type1"]);
            Assert.AreEqual(2, updated.Streams["type2"]);
        }
Beispiel #14
0
        public void When()
        {
            // given
            var tagger  = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            var tracker = new PositionTracker(tagger);

            var newTag = CheckpointTag.FromEventTypeIndexPositions(0, new TFPos(10, 5), new Dictionary <string, int> {
                { "type1", 1 }, { "type2", 2 }
            });

            tracker.UpdateByCheckpointTagInitial(newTag);
            _tag             = tracker.LastTag;
            _tagger          = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
            _positionTracker = new PositionTracker(_tagger);
            // when

            _positionTracker.UpdateByCheckpointTagInitial(_tag);
        }
Beispiel #15
0
 public void when()
 {
     _tagger          = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });
     _positionTracker = new PositionTracker(_tagger);
 }
        public void can_be_created()
        {
            var t = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });

            new PositionTracker(t);
        }
        public void position_checkpoint_tag_is_incompatible()
        {
            var t = new EventByTypeIndexPositionTagger(0, new[] { "type1", "type2" });

            Assert.IsFalse(t.IsCompatible(CheckpointTag.FromPosition(0, 1000, 500)));
        }