Skip to content

Commit

Permalink
Fixing ScaleHostEndToEndTest (#36978)
Browse files Browse the repository at this point in the history
  • Loading branch information
alrod committed Jun 16, 2023
1 parent e49bccd commit dea6f2f
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ public EventHubsScalerProvider(IServiceProvider serviceProvider, TriggerMetadata
var logForwarder = serviceProvider.GetService<AzureEventSourceLogForwarder>();
var options = serviceProvider.GetService<IOptions<EventHubOptions>>();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
var checkpointClientProvider = new CheckpointClientProvider(configuration, azureComponentFactory, logForwarder, loggerFactory.CreateLogger<BlobServiceClient>());
var checkpointClientProvider = new CheckpointClientProvider(configuration, hostComponentFactory, logForwarder, loggerFactory.CreateLogger<BlobServiceClient>());
var nameResolver = serviceProvider.GetService<INameResolver>();
var eventHubMetadata = JsonConvert.DeserializeObject<EventHubMetadata>(triggerMetadata.Metadata.ToString());
var factory = new EventHubClientFactory(configuration, hostComponentFactory, options, nameResolver, logForwarder, checkpointClientProvider);
var factory = new EventHubClientFactory(configuration, azureComponentFactory, options, nameResolver, logForwarder, checkpointClientProvider);
eventHubMetadata.ResolveProperties(serviceProvider.GetService<INameResolver>());
var eventHubConsumerClient = factory.GetEventHubConsumerClient(eventHubMetadata.EventHubName, eventHubMetadata.Connection, eventHubMetadata.ConsumerGroup);
var checkpointStore = new BlobCheckpointStoreInternal(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ public ScaleHostEndToEndTests() : base()
}

[Test]
[Ignore("Consistently failing in CI; awaiting investigation")]
[TestCase(false)]
[TestCase(true)]
public async Task ScaleHostEndToEndTest(bool tbsEnabled)
Expand Down Expand Up @@ -169,50 +168,63 @@ public async Task ScaleHostEndToEndTest(bool tbsEnabled)
var blobCheckpointStoreInternal2 = new BlobCheckpointStoreInternal(blobContainerClient, Function2Name, loggerProvider.CreateLogger("Test"));
await blobCheckpointStoreInternal2.CreateIfNotExistsAsync(CancellationToken.None);

await TestHelpers.Await(async () =>
try
{
IScaleStatusProvider scaleStatusProvider = scaleHost.Services.GetService<IScaleStatusProvider>();
var scaleStatus = await scaleStatusProvider.GetScaleStatusAsync(new ScaleStatusContext());
bool scaledOut = false;
if (!tbsEnabled)
await TestHelpers.Await(async () =>
{
scaledOut = scaleStatus.Vote == ScaleVote.ScaleOut && scaleStatus.TargetWorkerCount == null
&& scaleStatus.FunctionScaleStatuses[Function1Name].Vote == ScaleVote.ScaleOut
&& scaleStatus.FunctionScaleStatuses[Function2Name].Vote == ScaleVote.ScaleOut;
IScaleStatusProvider scaleStatusProvider = scaleHost.Services.GetService<IScaleStatusProvider>();
if (scaledOut)
var scaleStatus = await scaleStatusProvider.GetScaleStatusAsync(new ScaleStatusContext());
bool scaledOut = false;
if (!tbsEnabled)
{
var logMessages = loggerProvider.GetAllLogMessages().Select(p => p.FormattedMessage).ToArray();
Assert.Contains("2 scale monitors to sample", logMessages);
scaledOut = scaleStatus.Vote == ScaleVote.ScaleOut && scaleStatus.TargetWorkerCount == null
&& scaleStatus.FunctionScaleStatuses[Function1Name].Vote == ScaleVote.ScaleOut
&& scaleStatus.FunctionScaleStatuses[Function2Name].Vote == ScaleVote.ScaleOut;
if (scaledOut)
{
var logMessages = loggerProvider.GetAllLogMessages().Select(p => p.FormattedMessage).ToArray();
Assert.Contains("2 scale monitors to sample", logMessages);
}
}
else
{
scaledOut = scaleStatus.Vote == ScaleVote.ScaleOut && scaleStatus.TargetWorkerCount == 2
&& scaleStatus.FunctionTargetScalerResults[Function1Name].TargetWorkerCount == 2
&& scaleStatus.FunctionTargetScalerResults[Function2Name].TargetWorkerCount == 2;
if (scaledOut)
{
var logMessages = loggerProvider.GetAllLogMessages().Select(p => p.FormattedMessage).ToArray();
Assert.Contains("2 target scalers to sample", logMessages);
}
}
}
else
{
scaledOut = scaleStatus.Vote == ScaleVote.ScaleOut && scaleStatus.TargetWorkerCount == 2
&& scaleStatus.FunctionTargetScalerResults[Function1Name].TargetWorkerCount == 2
&& scaleStatus.FunctionTargetScalerResults[Function2Name].TargetWorkerCount == 2;
if (scaledOut)
{
var logMessages = loggerProvider.GetAllLogMessages().Select(p => p.FormattedMessage).ToArray();
Assert.Contains("2 target scalers to sample", logMessages);
Assert.IsNotEmpty(logMessages.Where(x => x.StartsWith("Runtime scale monitoring is enabled.")));
if (!tbsEnabled)
{
Assert.Contains("Scaling out based on votes", logMessages);
}
}
}
if (scaledOut)
return scaledOut;
}, pollingInterval: 2000, timeout: 180000, throwWhenDebugging: true);
}
catch (ApplicationException)
{
// Write scale logs to the output:
var logMessages = loggerProvider.GetAllLogMessages().Where(x => x.Category.Contains("Scale")).Select(p => p.FormattedMessage).ToArray();
foreach (var logMessage in logMessages)
{
var logMessages = loggerProvider.GetAllLogMessages().Select(p => p.FormattedMessage).ToArray();
Assert.IsNotEmpty(logMessages.Where(x => x.StartsWith("Runtime scale monitoring is enabled.")));
if (!tbsEnabled)
{
Assert.Contains("Scaling out based on votes", logMessages);
}
TestContext.WriteLine(logMessage);
}
return scaledOut;
}, pollingInterval: 2000, timeout: 180000, throwWhenDebugging: true);
throw;
}
}
}
}

0 comments on commit dea6f2f

Please sign in to comment.