public void Test_Snapshot_Behind_Stream_EmptyCache() { var cache = new DefaultLastValueCache <int, MockMessage>(); var subscriber = new MockTopicSubscriber(); var snapshotClient = new MockSnapshotClient { Data = new[] { new MockMessage { Data = new byte[] { 1, 11 } }, new MockMessage { Data = new byte[] { 2, 22 } }, new MockMessage { Data = new byte[] { 3, 33 } } } }; var subscription = new TopicSubscription <MockMessage> { Topic = "", Deserializer = m => new MockMessage { Data = m }, MessageHandler = m => Debug.WriteLine("[{0},{1}]", m.Data[0], m.Data[1]) }; var synchronizer = new TopicSynchronizer <int, MockMessage, IList <MockMessage> >( subscriber, subscription, cache, s => snapshotClient, (newValue, cachedValue) => newValue.Data[1] > cachedValue.Data[1], m => m.Data[1] >= 10, m => m.Data[0], x => x); Assert.IsTrue(cache.IsEmpty); Task.Run(() => { for (byte i = 50; i < 250; i++) { subscriber.InvokeSubscriptionAccessor("", new byte[] { 1, i }); Thread.Sleep(10); } }); synchronizer.Init(); Assert.AreEqual(3, cache.Count); subscriber.InvokeSubscriptionAccessor("", new byte[] { 1, 10 }); Assert.AreEqual(3, cache.Count); Assert.IsTrue(cache[1].Data[1] >= 50); subscriber.InvokeSubscriptionAccessor("", new byte[] { 1, 9 }); Assert.IsTrue(cache[1].Data[1] >= 50); }
public void Test_GetAndParseSnapshot() { var snapshotClient = new MockSnapshotClient { Data = new[] { new MockMessage { Data = new byte[] { 1, 11 } }, new MockMessage { Data = new byte[] { 2, 22 } }, new MockMessage { Data = new byte[] { 3, 33 } } } }; IList <MockMessage> result = snapshotClient.GetAndParseSnapshot(""); Assert.AreEqual(1, result[0].Data[0]); Assert.AreEqual(2, result[1].Data[0]); Assert.AreEqual(3, result[2].Data[0]); }