Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit 73f51dd

Browse files
authored
Enabling MaxConcurrentCalls settings for the Orchestrator (#482)
1 parent 0fe21b2 commit 73f51dd

4 files changed

Lines changed: 18 additions & 8 deletions

File tree

src/NuGet.Services.Validation.Orchestrator/Configuration/OrchestrationRunnerConfiguration.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,10 @@ public class OrchestrationRunnerConfiguration
1717
/// if not done by the interval end, process would be terminated forcefully with log record about the incident.
1818
/// </summary>
1919
public TimeSpan ShutdownWaitInterval { get; set; }
20+
21+
/// <summary>
22+
/// Max number of concurrent calls to be handled by the service bus library
23+
/// </summary>
24+
public int MaxConcurrentCalls { get; set; }
2025
}
2126
}

src/NuGet.Services.Validation.Orchestrator/OrchestrationRunner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public async Task RunOrchestrationAsync()
3838
{
3939
_logger.LogInformation("Starting up the orchestration");
4040

41-
_subscriptionProcessor.Start();
41+
_subscriptionProcessor.Start(_configuration.MaxConcurrentCalls);
4242
await Task.Delay(_configuration.ProcessRecycleInterval);
4343

4444
_logger.LogInformation("Recycling the process...");

src/NuGet.Services.Validation.Orchestrator/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@
9292
},
9393
"RunnerConfiguration": {
9494
"ProcessRecycleInterval": "1:00:00:00",
95-
"ShutdownWaitInterval": "00:01:00"
95+
"ShutdownWaitInterval": "00:01:00",
96+
"MaxConcurrentCalls": 10
9697
},
9798
"GalleryDb": {
9899
"ConnectionString": "Data Source=(localdb)\\mssqllocaldb; Initial Catalog=NuGetGallery; Integrated Security=True; MultipleActiveResultSets=True"

tests/NuGet.Services.Validation.Orchestrator.Tests/OrchestrationRunnerFacts.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,23 @@ namespace NuGet.Services.Validation.Orchestrator.Tests
1313
{
1414
public class OrchestrationRunnerFacts
1515
{
16+
private const int DefaultMaxConcurrentCalls = 24;
17+
1618
[Fact]
1719
public async Task StartsMessageProcessing()
1820
{
1921
var runner = CreateRunner();
2022
await runner.RunOrchestrationAsync();
2123

22-
SubscriptionProcessorMock.Verify(o => o.Start(), Times.Once());
24+
SubscriptionProcessorMock.Verify(o => o.Start(DefaultMaxConcurrentCalls), Times.Once());
2325
}
2426

2527
[Fact]
2628
public async Task ShutsDownMessageProcessing()
2729
{
2830
var startCalled = false;
2931
SubscriptionProcessorMock
30-
.Setup(o => o.Start())
32+
.Setup(o => o.Start(DefaultMaxConcurrentCalls))
3133
.Callback(() => startCalled = true);
3234

3335
SubscriptionProcessorMock
@@ -43,7 +45,7 @@ public async Task ShutsDownMessageProcessing()
4345
[Fact(Skip = "Flaky test. Won't run it as part of CI.")]
4446
public async Task WaitsOrchestratorToShutDown()
4547
{
46-
SetupOptionsAccessorMock(TimeSpan.Zero, TimeSpan.FromSeconds(3));
48+
SetupOptionsAccessorMock(TimeSpan.Zero, TimeSpan.FromSeconds(3), 2);
4749

4850
int numberOfRequestsInProgress = 2;
4951
SubscriptionProcessorMock
@@ -58,15 +60,17 @@ public async Task WaitsOrchestratorToShutDown()
5860

5961
private Mock<IOptionsSnapshot<OrchestrationRunnerConfiguration>> SetupOptionsAccessorMock(
6062
TimeSpan processRecycleInterval,
61-
TimeSpan shutdownWaitInterval)
63+
TimeSpan shutdownWaitInterval,
64+
int maxConcurrentCalls)
6265
{
6366
OrchestrationRunnerConfigurationAccessorMock = new Mock<IOptionsSnapshot<OrchestrationRunnerConfiguration>>();
6467
OrchestrationRunnerConfigurationAccessorMock
6568
.SetupGet(o => o.Value)
6669
.Returns(new OrchestrationRunnerConfiguration
6770
{
6871
ProcessRecycleInterval = processRecycleInterval,
69-
ShutdownWaitInterval = shutdownWaitInterval
72+
ShutdownWaitInterval = shutdownWaitInterval,
73+
MaxConcurrentCalls = maxConcurrentCalls
7074
});
7175
return OrchestrationRunnerConfigurationAccessorMock;
7276
}
@@ -81,7 +85,7 @@ public OrchestrationRunnerFacts()
8185
{
8286
SubscriptionProcessorMock = new Mock<ISubscriptionProcessor<PackageValidationMessageData>>();
8387
LoggerMock = new Mock<ILogger<OrchestrationRunner>>();
84-
SetupOptionsAccessorMock(TimeSpan.Zero, TimeSpan.Zero);
88+
SetupOptionsAccessorMock(TimeSpan.Zero, TimeSpan.Zero, DefaultMaxConcurrentCalls);
8589
}
8690

8791
private Mock<ISubscriptionProcessor<PackageValidationMessageData>> SubscriptionProcessorMock { get; }

0 commit comments

Comments
 (0)