public void ManualExpirationCausesRecordsToExpire() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredIncomplete = 0; int expiredComplete = 0; var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredIncomplete; }, ec => { ++expiredComplete; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start)); coll.Expire(start); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(0, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 2)); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(1, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 6)); Assert.AreEqual(1, expiredIncomplete); Assert.AreEqual(1, expiredComplete); }
public void ExpiredRecordsAreNotFoundByTryGetValue() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredRecords = 0; var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredRecords; }, ec => { ++expiredRecords; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.Expire(start + maxComplete + new TimeSpan(0, 0, 1)); Assert.AreEqual(1, expiredRecords); TestCompositeEvent val; Assert.IsFalse(coll.TryGetValue(1, out val)); coll.ProcessEvent(2, CreateAnyEvent(start)); coll.Expire(start + maxIncomplete + new TimeSpan(0, 0, 1)); Assert.AreEqual(2, expiredRecords); Assert.IsFalse(coll.TryGetValue(2, out val)); }
public void IncompleteRecordsAreNotExpiredIfEventsOccurAtExactlyMaxRecordAge() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredRecords = 0; var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredRecords; }, this.CompleteExpiredEventHandler); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start + maxIncomplete)); Assert.AreEqual(0, expiredRecords); }
public void RecordsAreFoundByTryGetValue() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(maxIncomplete, maxComplete, this.IncompleteExpiredEventHandler, this.CompleteExpiredEventHandler); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); TestCompositeEvent val; Assert.IsTrue(coll.TryGetValue(1, out val)); Assert.IsNotNull(val); coll.ProcessEvent(1, CreateEndEvent(start)); TestCompositeEvent val2; Assert.IsTrue(coll.TryGetValue(1, out val2)); Assert.AreSame(val, val2); }
public void FlushCausesCompleteRecordsToBeExpiredExpiration() { int expiredComplete = 0; var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(new TimeSpan(0, 0, 5), new TimeSpan(0, 0, 5), ec => { }, ec => { ++expiredComplete; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); Assert.AreEqual(0, expiredComplete); coll.FlushComplete(); Assert.AreEqual(1, expiredComplete); }
public void CompleteRecordsAreExpiredWhenEventsOccurBeyondMaxRecordAge() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredRecords = 0; var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(maxIncomplete, maxComplete, this.IncompleteExpiredEventHandler, ec => { ++expiredRecords; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start + new TimeSpan(0, 0, 2))); Assert.AreEqual(1, expiredRecords); }
public void NegativeExpirationValuesAreTreatedAsPositive() { var maxIncomplete = new TimeSpan(0, 0, -5); Assert.IsTrue(0 > maxIncomplete.TotalSeconds); var maxComplete = new TimeSpan(0, 0, -1); Assert.IsTrue(0 > maxComplete.TotalSeconds); int expiredIncomplete = 0; int expiredComplete = 0; var coll = new ExpiringCompositeEventCollection <int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredIncomplete; }, ec => { ++expiredComplete; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start)); coll.Expire(start); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(0, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 2)); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(1, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 6)); Assert.AreEqual(1, expiredIncomplete); Assert.AreEqual(1, expiredComplete); }
public void NegativeExpirationValuesAreTreatedAsPositive() { var maxIncomplete = new TimeSpan(0, 0, -5); Assert.IsTrue(0 > maxIncomplete.TotalSeconds); var maxComplete = new TimeSpan(0, 0, -1); Assert.IsTrue(0 > maxComplete.TotalSeconds); int expiredIncomplete = 0; int expiredComplete = 0; var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredIncomplete; }, ec => { ++expiredComplete; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start)); coll.Expire(start); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(0, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 2)); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(1, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 6)); Assert.AreEqual(1, expiredIncomplete); Assert.AreEqual(1, expiredComplete); }
public void RecordsAreFoundByTryGetValue() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(maxIncomplete, maxComplete, this.IncompleteExpiredEventHandler, this.CompleteExpiredEventHandler); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); TestCompositeEvent val; Assert.IsTrue(coll.TryGetValue(1, out val)); Assert.IsNotNull(val); coll.ProcessEvent(1, CreateEndEvent(start)); TestCompositeEvent val2; Assert.IsTrue(coll.TryGetValue(1, out val2)); Assert.AreSame(val, val2); }
public void ManualExpirationCausesRecordsToExpire() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredIncomplete = 0; int expiredComplete = 0; var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredIncomplete; }, ec => { ++expiredComplete; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start)); coll.Expire(start); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(0, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 2)); Assert.AreEqual(0, expiredIncomplete); Assert.AreEqual(1, expiredComplete); coll.Expire(start + new TimeSpan(0, 0, 6)); Assert.AreEqual(1, expiredIncomplete); Assert.AreEqual(1, expiredComplete); }
public void IncompleteRecordsAreNotExpiredIfEventsOccurAtExactlyMaxRecordAge() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredRecords = 0; var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredRecords; }, this.CompleteExpiredEventHandler); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start + maxIncomplete)); Assert.AreEqual(0, expiredRecords); }
public void FlushCausesCompleteRecordsToBeExpiredExpiration() { int expiredComplete = 0; var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(new TimeSpan(0, 0, 5), new TimeSpan(0, 0, 5), ec => { }, ec => { ++expiredComplete; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); Assert.AreEqual(0, expiredComplete); coll.FlushComplete(); Assert.AreEqual(1, expiredComplete); }
public void ExpiredRecordsAreNotFoundByTryGetValue() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredRecords = 0; var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(maxIncomplete, maxComplete, ec => { ++expiredRecords; }, ec => { ++expiredRecords; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.Expire(start + maxComplete + new TimeSpan(0, 0, 1)); Assert.AreEqual(1, expiredRecords); TestCompositeEvent val; Assert.IsFalse(coll.TryGetValue(1, out val)); coll.ProcessEvent(2, CreateAnyEvent(start)); coll.Expire(start + maxIncomplete + new TimeSpan(0, 0, 1)); Assert.AreEqual(2, expiredRecords); Assert.IsFalse(coll.TryGetValue(2, out val)); }
public void CompleteRecordsAreExpiredWhenEventsOccurBeyondMaxRecordAge() { var maxIncomplete = new TimeSpan(0, 0, 5); var maxComplete = new TimeSpan(0, 0, 1); int expiredRecords = 0; var coll = new ExpiringCompositeEventCollection<int, TestCompositeEvent>(maxIncomplete, maxComplete, this.IncompleteExpiredEventHandler, ec => { ++expiredRecords; Assert.IsTrue(ec.IsComplete); }); var start = DateTime.Now; coll.ProcessEvent(1, CreateStartEvent(start)); coll.ProcessEvent(1, CreateEndEvent(start)); coll.ProcessEvent(2, CreateAnyEvent(start + new TimeSpan(0, 0, 2))); Assert.AreEqual(1, expiredRecords); }