public void StartProcessingBatchesIfNoFailures_WhenProcessingQueueContainsCompletedTasks_StartsNewBatch() { var commitItemBatch0 = new CatalogCommitItemBatch(new[] { _commitItem0 }, _packageIdentitya.Id); var commitItemBatch1 = new CatalogCommitItemBatch(new[] { _commitItem1 }, _packageIdentityb.Id); var completedTask = new CatalogCommitItemBatchTask(commitItemBatch0, Task.CompletedTask); var unprocessedBatches = new List <CatalogCommitItemBatch>() { commitItemBatch1 }; var processingBatches = new List <CatalogCommitItemBatchTask>() { completedTask }; CatalogCommitUtilities.StartProcessingBatchesIfNoFailures( new CollectorHttpClient(), new JObject(), unprocessedBatches, processingBatches, _maxConcurrentBatches, NoOpProcessBatchAsync, CancellationToken.None); Assert.Empty(unprocessedBatches); Assert.Equal(2, processingBatches.Count); }
public void StartProcessingBatchesIfNoFailures_WhenMaxConcurrencyLimitHit_DoesNotStartNewBatch() { var commitItemBatch0 = new CatalogCommitItemBatch(new[] { _commitItem0 }, _packageIdentitya.Id); var commitItemBatch1 = new CatalogCommitItemBatch(new[] { _commitItem2 }, _packageIdentityc.Id); using (var cancellationTokenSource = new CancellationTokenSource()) { var inProcessTask = new CatalogCommitItemBatchTask( commitItemBatch0, Task.Delay(TimeSpan.FromMilliseconds(-1), cancellationTokenSource.Token)); var unprocessedBatches = new List <CatalogCommitItemBatch>() { commitItemBatch1 }; var processingBatches = new List <CatalogCommitItemBatchTask>() { inProcessTask }; const int maxConcurrentBatches = 1; CatalogCommitUtilities.StartProcessingBatchesIfNoFailures( new CollectorHttpClient(), new JObject(), unprocessedBatches, processingBatches, maxConcurrentBatches, NoOpProcessBatchAsync, CancellationToken.None); Assert.Single(unprocessedBatches); Assert.Single(processingBatches); } }
static CatalogCommitUtilitiesTests() { var commitTimeStamp = DateTime.UtcNow; var commit = TestUtility.CreateCatalogCommitItem(commitTimeStamp, _packageIdentitya); _lastBatch = new CatalogCommitItemBatch(new[] { commit }, _packageIdentitya.Id); }
public void StartProcessingBatchesIfNoFailures_WhenNoBatchIsCancelled_DoesNotStartNewBatch() { var commitItemBatch = new CatalogCommitItemBatch( new[] { _commitItem0, _commitItem1 }, _packageIdentitya.Id); var cancelledBatchTask = new CatalogCommitItemBatchTask( commitItemBatch, Task.FromCanceled(new CancellationToken(canceled: true))); var unprocessedBatches = new List <CatalogCommitItemBatch>() { commitItemBatch }; var processingBatches = new List <CatalogCommitItemBatchTask>() { cancelledBatchTask }; CatalogCommitUtilities.StartProcessingBatchesIfNoFailures( new CollectorHttpClient(), new JObject(), unprocessedBatches, processingBatches, _maxConcurrentBatches, NoOpProcessBatchAsync, CancellationToken.None); Assert.Single(unprocessedBatches); Assert.Single(processingBatches); }
public void StartProcessingBatchesIfNoFailures_WhenAnyBatchIsFailed_DoesNotStartNewBatch() { var commitItemBatch = new CatalogCommitItemBatch( new[] { _commitItem0, _commitItem1 }, _packageIdentitya.Id); var failedBatchTask = new CatalogCommitItemBatchTask(commitItemBatch, FailedTask); var unprocessedBatches = new List <CatalogCommitItemBatch>() { commitItemBatch }; var processingBatches = new List <CatalogCommitItemBatchTask>() { failedBatchTask }; CatalogCommitUtilities.StartProcessingBatchesIfNoFailures( new CollectorHttpClient(), new JObject(), unprocessedBatches, processingBatches, _maxConcurrentBatches, NoOpProcessBatchAsync, CancellationToken.None); Assert.Equal(1, unprocessedBatches.Count); Assert.Equal(1, processingBatches.Count); }
private async Task ProcessBatchAsync( CollectorHttpClient client, JToken context, string packageId, CatalogCommitItemBatch batch, CatalogCommitItemBatch lastBatch, CancellationToken cancellationToken) { await Task.Yield(); using (_telemetryService.TrackDuration( TelemetryConstants.ProcessBatchSeconds, new Dictionary <string, string>() { { TelemetryConstants.Id, packageId }, { TelemetryConstants.BatchItemCount, batch.Items.Count.ToString() } })) { await OnProcessBatchAsync( client, batch.Items, context, batch.CommitTimeStamp, isLastBatch : false, cancellationToken : cancellationToken); } }
public void Constructor_WhenBatchIsNull_Throws() { const CatalogCommitItemBatch batch = null; var exception = Assert.Throws <ArgumentNullException>( () => new CatalogCommitItemBatchTask(batch, Task.CompletedTask)); Assert.Equal("batch", exception.ParamName); }
private static Task NoOpProcessBatchAsync( CollectorHttpClient client, JToken context, string packageId, CatalogCommitItemBatch batch, CatalogCommitItemBatch lastBatch, CancellationToken cancellationToken) { return(Task.CompletedTask); }
public void Equals_WhenObjectBatchHasSameKey_ReturnsTrue() { var commitTimeStamp0 = DateTime.UtcNow; var commitItem0 = TestUtility.CreateCatalogCommitItem(commitTimeStamp0, _packageIdentity); var commitItemBatch0 = new CatalogCommitItemBatch(new[] { commitItem0 }, _packageIdentity.Id); var commitItemBatchTask0 = new CatalogCommitItemBatchTask(commitItemBatch0, Task.CompletedTask); var commitTimeStamp1 = commitTimeStamp0.AddMinutes(1); var commitItem1 = TestUtility.CreateCatalogCommitItem(commitTimeStamp1, _packageIdentity); var commitItemBatch1 = new CatalogCommitItemBatch(new[] { commitItem1 }, _packageIdentity.Id); var commitItemBatchTask1 = new CatalogCommitItemBatchTask(commitItemBatch1, Task.CompletedTask); Assert.True(commitItemBatchTask0.Equals(obj: commitItemBatchTask1)); Assert.True(commitItemBatchTask1.Equals(obj: commitItemBatchTask0)); Assert.True(commitItemBatchTask0.Equals(other: commitItemBatchTask1)); Assert.True(commitItemBatchTask1.Equals(other: commitItemBatchTask0)); }
public void Constructor_WhenCommitsAreUnordered_OrdersCommitsInChronologicallyAscendingOrder(string key) { var commitTimeStamp = DateTime.UtcNow; var commitItem0 = TestUtility.CreateCatalogCommitItem(commitTimeStamp, _packageIdentity); var commitItem1 = TestUtility.CreateCatalogCommitItem(commitTimeStamp.AddMinutes(1), _packageIdentity); var commitItem2 = TestUtility.CreateCatalogCommitItem(commitTimeStamp.AddMinutes(2), _packageIdentity); var commitItemBatch = new CatalogCommitItemBatch( new[] { commitItem1, commitItem0, commitItem2 }, key); Assert.Equal(commitTimeStamp, commitItemBatch.CommitTimeStamp.ToUniversalTime()); Assert.Equal(3, commitItemBatch.Items.Count); Assert.Equal(key, commitItemBatch.Key); Assert.Same(commitItem0, commitItemBatch.Items[0]); Assert.Same(commitItem1, commitItemBatch.Items[1]); Assert.Same(commitItem2, commitItemBatch.Items[2]); }
public void Equals_WhenObjectBatchHasDifferentKey_ReturnsFalse() { var commitTimeStamp0 = DateTime.UtcNow; var commitItem0 = TestUtility.CreateCatalogCommitItem( commitTimeStamp0, new PackageIdentity(id: "a", version: new NuGetVersion("1.0.0"))); var commitItemBatch0 = new CatalogCommitItemBatch(new[] { commitItem0 }, key: "a"); var commitItemBatchTask0 = new CatalogCommitItemBatchTask(commitItemBatch0, Task.CompletedTask); var commitTimeStamp1 = commitTimeStamp0.AddMinutes(1); var commitItem1 = TestUtility.CreateCatalogCommitItem( commitTimeStamp1, new PackageIdentity(id: "b", version: new NuGetVersion("1.0.0"))); var commitItemBatch1 = new CatalogCommitItemBatch(new[] { commitItem1 }, key: "b"); var commitItemBatchTask1 = new CatalogCommitItemBatchTask(commitItemBatch1, Task.CompletedTask); Assert.False(commitItemBatchTask0.Equals(obj: commitItemBatchTask1)); Assert.False(commitItemBatchTask1.Equals(obj: commitItemBatchTask0)); Assert.False(commitItemBatchTask0.Equals(other: commitItemBatchTask1)); Assert.False(commitItemBatchTask1.Equals(other: commitItemBatchTask0)); }
public void StartProcessingBatchesIfNoFailures_WhenCanStartNewBatch_StartsNewBatch() { var commitItemBatch = new CatalogCommitItemBatch(new[] { _commitItem0 }, _packageIdentitya.Id); var unprocessedBatches = new List <CatalogCommitItemBatch>() { commitItemBatch }; var processingBatches = new List <CatalogCommitItemBatchTask>(); CatalogCommitUtilities.StartProcessingBatchesIfNoFailures( new CollectorHttpClient(), new JObject(), unprocessedBatches, processingBatches, _maxConcurrentBatches, NoOpProcessBatchAsync, CancellationToken.None); Assert.Empty(unprocessedBatches); Assert.Single(processingBatches); }
public CatalogCommitBatchTaskTests() { _commitItemBatch = CreateCatalogCommitItemBatch(_packageIdentity.Id); _commitItemBatchTask = new CatalogCommitItemBatchTask(_commitItemBatch, Task.CompletedTask); }