Skip to content

Commit 929c811

Browse files
authored
Fix ReindexTests by removing unnecessary search parameter cleanup (#5543)
* Refactor ReindexTests by removing unnecessary search parameter cleanup logic to improve test performance
1 parent a894a3b commit 929c811

1 file changed

Lines changed: 0 additions & 85 deletions

File tree

test/Microsoft.Health.Fhir.Shared.Tests.E2E/Rest/Reindex/ReindexTests.cs

Lines changed: 0 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ public class ReindexTests : IClassFixture<HttpIntegrationTestFixture>
3939
// multi-replica search-parameter cache convergence in CI (poll interval up to 30s, conformance refresh
4040
// up to 60s, plus reindex worker queue scheduling and retry backoffs).
4141
private static readonly TimeSpan ReindexJobCompletionTimeout = TimeSpan.FromMinutes(20);
42-
private static readonly TimeSpan SearchParameterCleanupTimeout = TimeSpan.FromMinutes(2);
43-
private static readonly TimeSpan SearchParameterCleanupPollDelay = TimeSpan.FromSeconds(5);
44-
private static readonly TimeSpan SearchParameterCleanupStableWindow = TimeSpan.FromSeconds(30);
4542
private const string TestSearchParameterUrlPrefix = "http://my.org/";
4643

4744
private readonly HttpIntegrationTestFixture _fixture;
@@ -1229,12 +1226,6 @@ private async Task CleanupSearchParametersAsync(params SearchParameter[] searchP
12291226
_output.WriteLine($"Failed to delete SearchParameter/{param?.Id}: {ex.Message}");
12301227
}
12311228
}
1232-
1233-
await WaitForSearchParameterCleanupAsync(searchParameters);
1234-
1235-
// Note: Final reindex is handled by ReindexTestFixture.OnDisposedAsync() which runs
1236-
// once at the very end after all tests complete. This eliminates the need to reindex
1237-
// after each individual test cleanup.
12381229
}
12391230

12401231
private static string CreateUniqueSearchParameterSuffix()
@@ -1247,82 +1238,6 @@ private static string BuildTestSearchParameterUrl(string suffix)
12471238
return $"{TestSearchParameterUrlPrefix}{suffix}";
12481239
}
12491240

1250-
private async Task WaitForSearchParameterCleanupAsync(params SearchParameter[] searchParameters)
1251-
{
1252-
SearchParameter[] cleanupTargets = searchParameters
1253-
.Where(param => param != null && !string.IsNullOrWhiteSpace(param.Id) && !string.IsNullOrWhiteSpace(param.Url))
1254-
.ToArray();
1255-
1256-
if (cleanupTargets.Length == 0)
1257-
{
1258-
return;
1259-
}
1260-
1261-
var stopwatch = Stopwatch.StartNew();
1262-
TimeSpan? stableSince = null;
1263-
string[] lastOutstanding = Array.Empty<string>();
1264-
1265-
while (stopwatch.Elapsed < SearchParameterCleanupTimeout)
1266-
{
1267-
var outstanding = new List<string>();
1268-
1269-
foreach (var searchParameter in cleanupTargets)
1270-
{
1271-
bool resourceDeleted = await IsSearchParameterDeletedAsync(searchParameter.Id);
1272-
bool metadataCleared = await IsSearchParameterMissingFromMetadataAsync(searchParameter.Url);
1273-
1274-
if (!resourceDeleted || !metadataCleared)
1275-
{
1276-
outstanding.Add($"{searchParameter.Id} (deleted={resourceDeleted}, metadataCleared={metadataCleared})");
1277-
}
1278-
}
1279-
1280-
if (outstanding.Count == 0)
1281-
{
1282-
stableSince ??= stopwatch.Elapsed;
1283-
if (stopwatch.Elapsed - stableSince.Value >= SearchParameterCleanupStableWindow)
1284-
{
1285-
return;
1286-
}
1287-
}
1288-
else
1289-
{
1290-
stableSince = null;
1291-
lastOutstanding = outstanding.ToArray();
1292-
_output.WriteLine($"Waiting for SearchParameter cleanup to converge: {string.Join(", ", lastOutstanding)}");
1293-
}
1294-
1295-
await Task.Delay(SearchParameterCleanupPollDelay);
1296-
}
1297-
1298-
Assert.Fail($"Timed out waiting for SearchParameter cleanup to converge. Remaining: {string.Join(", ", lastOutstanding)}");
1299-
}
1300-
1301-
private async Task<bool> IsSearchParameterDeletedAsync(string id)
1302-
{
1303-
try
1304-
{
1305-
await _fixture.TestFhirClient.ReadAsync<SearchParameter>($"SearchParameter/{id}");
1306-
return false;
1307-
}
1308-
catch (FhirClientException ex) when (ex.StatusCode == HttpStatusCode.NotFound || ex.StatusCode == HttpStatusCode.Gone)
1309-
{
1310-
return true;
1311-
}
1312-
}
1313-
1314-
private async Task<bool> IsSearchParameterMissingFromMetadataAsync(string url)
1315-
{
1316-
using FhirResponse<CapabilityStatement> response = await _fixture.TestFhirClient.ReadAsync<CapabilityStatement>("metadata");
1317-
1318-
return response.Resource.Rest
1319-
.Where(rest => rest?.Resource != null)
1320-
.SelectMany(rest => rest.Resource)
1321-
.Where(resource => resource?.SearchParam != null)
1322-
.SelectMany(resource => resource.SearchParam)
1323-
.All(searchParam => !string.Equals(searchParam?.Definition, url, StringComparison.Ordinal));
1324-
}
1325-
13261241
private async Task<OperationStatus> WaitForJobCompletionAsync(Uri jobUri, TimeSpan timeout)
13271242
{
13281243
var stopwatch = Stopwatch.StartNew();

0 commit comments

Comments
 (0)