public void CloseRequest_MaxEntryClosedRequestsLeaveAdditionalRequests_ShouldReorganizeQueue() { const int additional_requests = 5; const int max_entries = 20; var path = Path.Combine(Path.GetTempPath(), ".titanic", "Close_3"); var sut = new TitanicFileIO(path, max_entries); for (var i = 0; i < max_entries + additional_requests; i++) { sut.SaveNewRequestEntry(Guid.NewGuid()); // -> fill titanic.queue } var requests = sut.GetRequestEntries(null).ToArray(); requests.Length.Should().Be(max_entries + additional_requests); for (var i = 0; i < max_entries; i++) { sut.CloseRequest(requests[i].RequestId); } sut.GetNotClosedRequestEntries() .Count() .Should() .Be(additional_requests, "because 5 requests should have been left over!"); Directory.Delete(sut.TitanicDirectory, true); }
public void CloseRequest_MaxEntryClosedAndAdditionalRequestsAndReplies_ShouldReorganizeQueue() { const int max_entries = 20; const int additional_requests = 5; var path = Path.Combine(Path.GetTempPath(), ".titanic", "Close_4"); var sut = new TitanicFileIO(path, max_entries); var titanicQueue = sut.TitanicQueue; for (var i = 0; i < max_entries + additional_requests; i++) { var id = Guid.NewGuid(); sut.SaveNewRequestEntry(id); // -> fill titanic.queue var message = new NetMQMessage(); message.Push($"Message #{i}"); message.Push("echo"); sut.SaveMessage(TitanicOperation.Request, id, message); } foreach (var entry in sut.GetRequestEntries(null).Skip(3).Take(5)) { sut.SaveProcessedRequestEntry(entry); var message = sut.GetMessage(TitanicOperation.Request, entry.RequestId); sut.SaveMessage(TitanicOperation.Reply, entry.RequestId, message); } var requests = sut.GetRequestEntries(null).ToArray(); requests.Length.Should().Be(max_entries + additional_requests); requests.Count(re => re.State == RequestEntry.Is_Processed).Should().Be(5); for (var i = 0; i < max_entries; i++) { sut.CloseRequest(requests[i].RequestId); // mark closed not worrying about state } sut.GetNotClosedRequestEntries() .Count() .Should() .Be(additional_requests, "because 5 requests should have been left over!"); Directory.Delete(sut.TitanicDirectory, true); }