public void RemoveChunkedDataClearsAlreadyRetrievedChunks() { // given var target = new BeaconCache(); target.AddActionData(1, 1000L, "a"); target.AddActionData(1, 1001L, "iii"); target.AddActionData(42, 2000L, "z"); target.AddEventData(1, 1000L, "b"); target.AddEventData(1, 1001L, "jjj"); // when retrieving the first chunk and removing retrieved chunks var obtained = target.GetNextBeaconChunk(1, "prefix", 10, '&'); target.RemoveChunkedData(1); // then Assert.That(obtained, Is.EqualTo("prefix&b&jjj")); Assert.That(target.GetActionsBeingSent(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "a"), new BeaconCacheRecord(1001L, "iii") })); Assert.That(target.GetEventsBeingSent(1), Is.Empty); // when retrieving the second chunk and removing retrieved chunks obtained = target.GetNextBeaconChunk(1, "prefix", 10, '&'); target.RemoveChunkedData(1); // then Assert.That(obtained, Is.EqualTo("prefix&a&iii")); Assert.That(target.GetActionsBeingSent(1), Is.Empty); Assert.That(target.GetEventsBeingSent(1), Is.Empty); }
public void ResetChunkedRestoresData() { // given var target = new BeaconCache(); target.AddActionData(1, 1000L, "a"); target.AddActionData(1, 1001L, "iii"); target.AddEventData(1, 1000L, "b"); target.AddEventData(1, 1001L, "jjj"); // do same step we'd do when we send the target.GetNextBeaconChunk(1, "prefix", 10, '&'); // data has been copied, but still add some new event & action data target.AddActionData(1, 6666L, "123"); target.AddEventData(1, 6666L, "987"); // and when resetting the previously copied data target.ResetChunkedData(1); // then Assert.That(target.GetActionsBeingSent(1), Is.Null); Assert.That(target.GetEventsBeingSent(1), Is.Null); Assert.That(target.GetActions(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "a"), new BeaconCacheRecord(1001L, "iii"), new BeaconCacheRecord(6666L, "123") })); Assert.That(target.GetEvents(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "b"), new BeaconCacheRecord(1001L, "jjj"), new BeaconCacheRecord(6666L, "987") })); }
public void RemoveChunkedDataDoesNothingIfCalledWithNonExistingBeaconID() { // given var target = new BeaconCache(); target.AddActionData(1, 1000L, "a"); target.AddActionData(1, 1001L, "iii"); target.AddActionData(42, 2000L, "z"); target.AddEventData(1, 1000L, "b"); target.AddEventData(1, 1001L, "jjj"); // when retrieving the first chunk and removing the wrong beacon chunk target.GetNextBeaconChunk(1, "prefix", 10, '&'); target.RemoveChunkedData(2); // then Assert.That(target.GetActionsBeingSent(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "a"), new BeaconCacheRecord(1001L, "iii") })); var expectedEventRecords = new[] { new BeaconCacheRecord(1000L, "b"), new BeaconCacheRecord(1001L, "jjj") }; foreach (BeaconCacheRecord record in expectedEventRecords) { record.MarkForSending(); } Assert.That(target.GetEventsBeingSent(1), Is.EqualTo(expectedEventRecords)); }
public void getNextBeaconChunkRetrievesNextChunk() { // given var target = new BeaconCache(); target.AddActionData(1, 1000L, "a"); target.AddActionData(1, 1001L, "iii"); target.AddActionData(42, 2000L, "z"); target.AddEventData(1, 1000L, "b"); target.AddEventData(1, 1001L, "jjj"); // when retrieving the first chunk var obtained = target.GetNextBeaconChunk(1, "prefix", 10, '&'); // then Assert.That(obtained, Is.EqualTo("prefix&b&jjj")); // then Assert.That(target.GetActionsBeingSent(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "a"), new BeaconCacheRecord(1001L, "iii") })); var expectedEventRecords = new[] { new BeaconCacheRecord(1000L, "b"), new BeaconCacheRecord(1001L, "jjj") }; foreach (var record in expectedEventRecords) { record.MarkForSending(); } Assert.That(target.GetEventsBeingSent(1), Is.EqualTo(expectedEventRecords)); }
public void GetNextBeaconChunkDoesNotCopyDataForSending() { // given var keyOne = new BeaconKey(1, 0); var keyTwo = new BeaconKey(42, 0); var target = new BeaconCache(logger); target.AddActionData(keyOne, 1000L, "a"); target.AddActionData(keyOne, 1001L, "iii"); target.AddActionData(keyTwo, 2000L, "z"); target.AddEventData(keyOne, 1000L, "b"); target.AddEventData(keyOne, 1001L, "jjj"); // when var obtained = target.GetNextBeaconChunk(keyOne, "prefix", 0, '&'); // then Assert.That(obtained, Is.Empty); Assert.That(target.GetActions(keyOne), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "a"), new BeaconCacheRecord(1001L, "iii") })); Assert.That(target.GetEvents(keyOne), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "b"), new BeaconCacheRecord(1001L, "jjj") })); Assert.That(target.GetActionsBeingSent(keyOne), Is.Null); Assert.That(target.GetEventsBeingSent(keyOne), Is.Null); }
public void GetNextBeaconChunkCopiesDataForSending() { // given var target = new BeaconCache(); target.AddActionData(1, 1000L, "a"); target.AddActionData(1, 1001L, "iii"); target.AddActionData(42, 2000L, "z"); target.AddEventData(1, 1000L, "b"); target.AddEventData(1, 1001L, "jjj"); // when var obtained = target.GetNextBeaconChunk(1, "prefix", 0, '&'); // then Assert.That(obtained, Is.EqualTo("prefix")); Assert.That(target.GetActions(1), Is.Empty); Assert.That(target.GetEvents(1), Is.Empty); Assert.That(target.GetActionsBeingSent(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "a"), new BeaconCacheRecord(1001L, "iii") })); Assert.That(target.GetEventsBeingSent(1), Is.EqualTo(new[] { new BeaconCacheRecord(1000L, "b"), new BeaconCacheRecord(1001L, "jjj") })); }