public async Task IndexFiles_CreateAndDelete() { // Arrange var config = new UnitTestQueueConfiguration { IndexItemsPerPage = 2 }; using var queue = new UnitTestPersistentQueue(config); // Act & Assert queue.EnqueueMany(2); await Dequeue(queue, 2); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(1); PrintFiles(config.GetIndexPath()); queue.EnqueueMany(2); await Dequeue(queue, 2); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(1); PrintFiles(config.GetIndexPath()); queue.EnqueueMany(2); await Dequeue(queue, 2); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(1); PrintFiles(config.GetIndexPath()); }
public void Enqueue10() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(10); // Act var statistics = queue.GetStatistics(); // Assert var expectedDataSize = Enumerable.Range(1, 10) .Select(itemNo => $"Message {itemNo}") .Select(Encoding.UTF8.GetBytes) .Select(bytes => bytes.LongLength) .Sum(); statistics.ShouldDeepEqual(new QueueStatistics() { QueueLength = 10, QueueDataSizeEstimate = expectedDataSize, TotalEnqueuedItems = 10 }); }
public void WaitForMinElements() { // Arrange using var queue = new UnitTestPersistentQueue(); // Act & Assert var resultTask = queue.DequeueAsync(10, 12); for (var i = 0; i < 4; i++) { queue.EnqueueMany(2); resultTask.IsCompleted.ShouldBeFalse(); } queue.EnqueueMany(2); resultTask.IsCompleted.ShouldBeTrue(); }
public void Empty_Enqueued() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(10); // Act & Assert queue.HasItems.ShouldBeTrue(); }
public async Task LessThanMaxItemsInQueue_ReturnsAvailable() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(2); // Act var result = await queue.DequeueAsync(1, 10); // Assert result.Items.Count.ShouldBe(2); }
public void ItemsInQueue_ReturnsSynchronous() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(2); // Act var resultTask = queue.DequeueAsync(1, 2); // Assert resultTask.IsCompleted.ShouldBeTrue(); }
public async Task EnqueueAndDequeue10_HasItemsFalse() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(10); // Act for (var i = 0; i < 5; i++) { var result = await queue.DequeueAsync(1, 2); result.Commit(); } // Assert queue.HasItems.ShouldBeFalse(); }
public async Task WithCommit_NewElementsAreReturned() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(10); // Act var results1 = await queue.DequeueAsync(1, 2); results1.Commit(); var results2 = await queue.DequeueAsync(1, 2); // Assert results1.Items.Count.ShouldBe(2); results2.Items.Count.ShouldBe(2); CollectionAssert.AreNotEqual(results1.Items[0].ToArray(), results2.Items[0].ToArray()); }
public async Task IndexFiles_ManyAreDeletedAfterCommit() { // Arrange var config = new UnitTestQueueConfiguration { IndexItemsPerPage = 2 }; using var queue = new UnitTestPersistentQueue(config); // Act & Assert queue.EnqueueMany(20); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(10); var result = await queue.DequeueAsync(1, 10); result.Commit(); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(6); }
public async Task IndexFiles_OneRemainsAfterAllItemsAreCommitted() { // Arrange var config = new UnitTestQueueConfiguration { IndexItemsPerPage = 2 }; using var queue = new UnitTestPersistentQueue(config); // Act & Assert queue.EnqueueMany(20); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(10); while (queue.HasItems) { await Dequeue(queue, 2); } Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(1); }
public async Task IndexFiles_OneIsDeletedAfterCommit() { // Arrange var config = new UnitTestQueueConfiguration { IndexItemsPerPage = 2 }; using var queue = new UnitTestPersistentQueue(config); // Act & Assert queue.EnqueueMany(20); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(10); await Dequeue(queue, 3); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(9); await Dequeue(queue, 4); Directory.GetFiles(config.GetIndexPath()).Length.ShouldBe(7); }
public async Task EnqueueAndDequeue10() { // Arrange using var queue = new UnitTestPersistentQueue(); queue.EnqueueMany(10); for (var i = 0; i < 5; i++) { var result = await queue.DequeueAsync(1, 2); result.Commit(); } // Act var statistics = queue.GetStatistics(); // Assert statistics.ShouldDeepEqual(new QueueStatistics() { QueueLength = 0, QueueDataSizeEstimate = 0, TotalEnqueuedItems = 10 }); }