public void is_message_after_checkpoint_tag_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", -1}}), _firstEvent); Assert.IsTrue(result); }
public void When() { _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"}); _positionTracker = new PositionTracker(_tagger); // when _positionTracker.UpdateByCheckpointTagInitial(_tagger.MakeZeroCheckpointTag()); }
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 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); }
public void cannot_update_by_prior_tf_position() { var t = new EventByTypeIndexPositionTagger(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( new TFPos(270, 260), new Dictionary<string, int> {{"type1", 2}, {"type2", 2}}); t.MakeCheckpointTag(tag, linkEvent); }
public void can_update_by_tf_event_if_with_prior_index_position() { var t = new EventByTypeIndexPositionTagger(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( 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"]); }
public void zero_position_tag_is_before_first_event_possible() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); var zero = t.MakeZeroCheckpointTag(); var zeroFromEvent = t.MakeCheckpointTag(zero, _zeroEvent); Assert.IsTrue(zeroFromEvent > zero); }
public void can_adjust_tf_position_tag() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); var tag = CheckpointTag.FromEventTypeIndexPositions( new TFPos(100, 50), new Dictionary<string, int> {{"type1", 1}, {"type2", 2}}); var original = CheckpointTag.FromPosition(100, 50); Assert.AreEqual(tag, t.AdjustTag(original)); }
public void adjust_compatible_tag_returns_the_same_tag() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); var tag = CheckpointTag.FromEventTypeIndexPositions( new TFPos(100, 50), new Dictionary<string, int> {{"type1", 1}, {"type2", 2}}); Assert.AreEqual(tag, t.AdjustTag(tag)); }
public void the_same_events_checkpoint_tag_is_compatible() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); Assert.IsTrue( t.IsCompatible( CheckpointTag.FromEventTypeIndexPositions( new TFPos(100, 50), new Dictionary<string, int> {{"type1", 100}, {"type2", 150}}))); }
public void position_checkpoint_tag_is_incompatible() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); Assert.IsFalse(t.IsCompatible(CheckpointTag.FromPosition(1000, 500))); }
public void is_message_after_checkpoint_tag_incompatible_streams_case() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); var result = t.IsMessageAfterCheckpointTag( CheckpointTag.FromEventTypeIndexPositions( new TFPos(30, 20), new Dictionary<string, int> {{"type1", -1}, {"type3", -1}}), _firstEvent); Assert.IsFalse(result); }
public void is_message_after_checkpoint_tag_tf_only_before_case() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); var result = t.IsMessageAfterCheckpointTag( CheckpointTag.FromEventTypeIndexPositions( new TFPos(40, 35), new Dictionary<string, int> {{"type1", 0}, {"type2", 0}}), _firstEvent); Assert.IsFalse(result); }
public void when() { _tagger = new EventByTypeIndexPositionTagger(0, new[] {"type1", "type2"}); _positionTracker = new PositionTracker(_tagger); }
public void produced_checkpoint_tags_are_correctly_ordered() { var t = new EventByTypeIndexPositionTagger(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 can_be_created() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); new PositionTracker(t); }
public void streams_checkpoint_tag_is_incompatible() { var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"}); Assert.IsFalse( t.IsCompatible( CheckpointTag.FromStreamPositions( new Dictionary<string, int> {{"$et-type1", 100}, {"$et-type2", 150}}))); }