Implemented interface member:

property
Name
Aspire.Hosting.ApplicationModel.IResource.Name
4 overrides of Name
Aspire.Hosting.Azure.EventHubs (1)
Aspire.Hosting.Azure.PostgreSQL (1)
Aspire.Hosting.Azure.Redis (1)
Aspire.Hosting.Azure.Storage (1)
1 write to Name
Aspire.Hosting (1)
2121 references to Name
Aspire.Hosting (72)
Orchestrator\ParameterProcessor.cs (16)
146referencedParameters.TryAdd(parameter.Name, parameter);
179.LogWarning("Parameter resource {ResourceName} could not be initialized. Waiting for user input.", parameterResource.Name);
187.LogError(ex, "Failed to initialize parameter resource {ResourceName}.", parameterResource.Name);
381var message = string.Format(CultureInfo.CurrentCulture, InteractionStrings.DeleteParameterMessage, parameterResource.Name);
443return new ExecuteCommandResult { Success = true, Message = string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceSetParameter, parameterResource.Name) };
459logger.LogInformation("Parameter value deleted from deployment state for {ParameterName}.", parameterResource.Name);
462.LogInformation("Parameter resource {ResourceName} value has been deleted from user secrets.", parameterResource.Name);
466logger.LogInformation("Parameter value cleared for {ParameterName} (not deleted from user secrets).", parameterResource.Name);
469.LogInformation("Parameter resource {ResourceName} value has been cleared.", parameterResource.Name);
491logger.LogWarning(ex, "Failed to delete parameter {ParameterName} from deployment state.", parameterResource.Name);
492return CommandResults.Failure($"Failed to delete parameter '{parameterResource.Name}'.");
495return new ExecuteCommandResult { Success = true, Message = string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceDeletedParameter, parameterResource.Name) };
514.LogInformation("Parameter resource {ResourceName} has been resolved via user interaction.", parameterResource.Name);
524logger.LogInformation("Parameter value saved to deployment state for {ParameterName}.", parameterResource.Name);
528logger.LogWarning(ex, "Failed to save parameter {ParameterName} to deployment state.", parameterResource.Name);
691logger.LogWarning(ex, "Failed to save parameter {ParameterName} to deployment state.", parameter.Name);
Aspire.Hosting.Azure (100)
AzureProvisioningController.cs (26)
1926await SetResourceLocationOverrideAsync(targetBicepResource.Name, intent.Location, cancellationToken).ConfigureAwait(false);
2160!notificationService.TryGetCurrentState(environmentResource.Name, out var environmentEvent) ||
2509var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
2514var outputs = ParseDeploymentStateJson(resource.Name, "Outputs", section.Data["Outputs"]?.GetValue<string>());
2527["scope"] = ParseDeploymentStateJson(resource.Name, "Scope", section.Data["Scope"]?.GetValue<string>())
2744var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}", cancellationToken).ConfigureAwait(false);
2785=> resource.AzureResource is AzureBicepResource bicepResource ? bicepResource.Name : resource.Resource.Name;
2802var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}", cancellationToken).ConfigureAwait(false);
2820$"Azure:Deployments:{bicepResource.Name}",
2923var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
2942_logger.LogInformation(ex, "Azure deployment {DeploymentId} was absent while collecting target resources for {ResourceName}.", deploymentId, resource.Name);
3138if (!notificationService.TryGetCurrentState(resource.Name, out var resourceEvent))
3392var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
3406_logger.LogDebug(ex, "Unable to parse cached outputs for resource {ResourceName} while checking for Azure drift.", resource.Name);
3460resource.Name,
3481resource.Name,
3494resource.Name,
3502resource.Name,
3511var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
3530_logger.LogDebug(ex, "Unable to parse persisted parameters while checking whether Azure resource {ResourceName} must be deleted for a location change.", resource.Name);
3561_logger.LogDebug(ex, "Unable to verify cached Azure resource state for {ResourceName} because no Azure credential is available.", resource.Name);
3568_logger.LogDebug(ex, "Unable to verify cached Azure resource state for {ResourceName} because the Azure resource probe failed.", resource.Name);
3581var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
3794TryGetPublishedTerminalDeploymentState(bicepResource.Name, out publishedTerminalState))
3808!IsResourceInState(bicepResource.Name, CancelingState))
3813var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}").ConfigureAwait(false);
Provisioning\Provisioners\BicepProvisioner.cs (40)
54var stateSection = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
63logger.LogDebug("Cached deployment state for resource {ResourceName} is incomplete because provisioning state is {ProvisioningState}.", resource.Name, provisioningState);
72logger.LogDebug("Cached deployment state for resource {ResourceName} is incomplete because it is missing a checksum.", resource.Name);
78logger.LogDebug("Checksum mismatch for resource {ResourceName}. Expected cached checksum {ExpectedChecksum}, computed checksum {ActualChecksum}", resource.Name, configCheckSum, currentCheckSum);
82logger.LogDebug("Configuring resource {ResourceName} from existing deployment state.", resource.Name);
175var sectionName = $"Azure:Deployments:{resource.Name}";
207logger.LogDebug(ex, "Unable to reconcile cached deployment state for {ResourceName} because no Azure credential is available.", resource.Name);
212logger.LogDebug(ex, "Unable to reconcile cached deployment state for {ResourceName} because the Azure deployment probe failed.", resource.Name);
220logger.LogInformation("Cached Azure deployment {DeploymentId} for {ResourceName} no longer exists. Reprovisioning.", deploymentId, resource.Name);
242logger.LogInformation("Cached Azure deployment {DeploymentId} for {ResourceName} no longer exists after reconciliation started. Reprovisioning.", deploymentId, resource.Name);
255logger.LogDebug("Cached Azure deployment {DeploymentId} for {ResourceName} has provisioning state {ProvisioningState}. Reprovisioning.", deploymentId, resource.Name, deployment.ProvisioningState);
280logger.LogDebug(ex, "Unable to publish Azure deployment operation progress for cached deployment {DeploymentId} on {ResourceName}.", deploymentId, resource.Name);
284logger.LogDebug(ex, "Unable to publish Azure deployment operation progress for cached deployment {DeploymentId} on {ResourceName} because no Azure credential is available.", deploymentId, resource.Name);
299logger.LogDebug(ex, "Unable to continue reconciling cached Azure deployment {DeploymentId} for {ResourceName}.", deploymentId, resource.Name);
304logger.LogDebug(ex, "Unable to continue reconciling cached Azure deployment {DeploymentId} for {ResourceName} because no Azure credential is available.", deploymentId, resource.Name);
357if (!TryGetDeploymentStateJsonObject(stateSection, BicepUtilities.DeploymentStateParametersKey, resource.Name, out var parameters) ||
360logger.LogDebug("Cached deployment state for resource {ResourceName} cannot be reconciled because parameters or checksum are missing.", resource.Name);
371var scope = TryGetDeploymentStateJsonObject(stateSection, BicepUtilities.DeploymentStateScopeKey, resource.Name, out var cachedScope)
424throw new InvalidOperationException($"Azure deployment for {resource.Name} was canceled.");
433throw new InvalidOperationException($"Azure deployment for {resource.Name} failed.");
566logger.LogDebug("Setting parameters and scope for resource {ResourceName}", resource.Name);
579var deploymentName = executionContext.IsPublishMode ? $"{resource.Name}-{_timeProvider.GetUtcNow().ToUnixTimeSeconds()}" : resource.Name;
595resourceLogger.LogInformation("Deploying {Name} to {DeploymentTarget}", resource.Name, deploymentTargetName);
596logger.LogDebug("Starting deployment of resource {ResourceName} to {DeploymentTarget}", resource.Name, deploymentTargetName);
620var sectionName = $"Azure:Deployments:{resource.Name}";
677var sectionName = $"Azure:Deployments:{resource.Name}";
763resourceLogger.LogInformation("Deployment of {Name} to {DeploymentTarget} took {Elapsed}", resource.Name, deploymentTargetName, sw.Elapsed);
764logger.LogDebug("Deployment of resource {ResourceName} to {DeploymentTarget} completed in {Elapsed}", resource.Name, deploymentTargetName, sw.Elapsed);
785resourceLogger.LogError("Azure deployment of {Name} to {DeploymentTarget} completed with provisioning state {ProvisioningState}.", resource.Name, deploymentTargetName, provisioningState);
786throw new InvalidOperationException($"Deployment of {resource.Name} to {deploymentTargetName} failed with {provisioningState}");
795var sectionName = $"Azure:Deployments:{resource.Name}";
853var sectionName = $"Azure:Deployments:{resource.Name}";
865logger.LogDebug("Azure deployment {DeploymentId} for {ResourceName} is active, but cached state does not match the current deployment request.", deploymentId, resource.Name);
882logger.LogDebug(ex, "Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because the Azure deployment probe failed.", deploymentId, resource.Name);
887logger.LogDebug(ex, "Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because no Azure credential is available.", deploymentId, resource.Name);
896logger.LogDebug("Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because it could not be found.", deploymentId, resource.Name);
905logger.LogInformation("Azure deployment {DeploymentId} for {ResourceName} is already active. Waiting for the existing deployment to complete.", deploymentId, resource.Name);
918logger.LogDebug("Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because it disappeared while waiting.", deploymentId, resource.Name);
933logger.LogDebug("Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because provisioning state is {ProvisioningState}.", deploymentId, resource.Name, deployment.ProvisioningState);
Aspire.Hosting.Azure.AppConfiguration (3)
Aspire.Hosting.Azure.AppContainers (18)
Aspire.Hosting.Azure.AppService (13)
Aspire.Hosting.Azure.CognitiveServices (3)
Aspire.Hosting.Azure.ContainerRegistry (1)
Aspire.Hosting.Azure.CosmosDB (18)
Aspire.Hosting.Azure.EventHubs (8)
Aspire.Hosting.Azure.FrontDoor (2)
Aspire.Hosting.Azure.Functions (3)
Aspire.Hosting.Azure.KeyVault (3)
Aspire.Hosting.Azure.Kubernetes (28)
Aspire.Hosting.Azure.Kubernetes.Tests (12)
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (11)
71Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
128throw new DistributedApplicationException($"ConnectionStringAvailableEvent published for resource '{db.Name}', but the connection string was null.");
133var healthCheckKey = $"{kustoDatabase.Name}_check";
243throw new DistributedApplicationException($"ConnectionStringAvailableEvent published for resource '{resource.Name}', but the connection string was null.");
248var healthCheckKey = $"{resource.Name}_check";
259throw new DistributedApplicationException($"Connection string for Kusto resource '{server.Name}' is not set.");
386throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set.");
389var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: "");
401throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set.");
404var result = launcher.TryLaunchKustoWebExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: "");
415message: $"Could not automatically open Kusto Web Explorer for resource '{resourceBuilder.Resource.Name}'. Click [{connectionString}]({connectionString}) to manually open the Web Explorer.",
Aspire.Hosting.Azure.Kusto.Tests (8)
Aspire.Hosting.Azure.Network (23)
Aspire.Hosting.Azure.PostgreSQL (11)
Aspire.Hosting.Azure.Redis (13)
Aspire.Hosting.Azure.ServiceBus (14)
Aspire.Hosting.Azure.SignalR (2)
Aspire.Hosting.Azure.Sql (12)
Aspire.Hosting.Azure.Storage (21)
Aspire.Hosting.Azure.Tests (421)
AzureAppServiceEnvironmentExtensionsTests.cs (10)
124var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi");
125var roles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "env-mi-roles-final-registry");
154Assert.Null(model.Resources.OfType<AzureUserAssignedIdentityResource>().SingleOrDefault(resource => resource.Name == "env-mi"));
155Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal)));
175Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"));
176Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal)));
204var identityEast = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "east-mi");
205var identityWest = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "west-mi");
209var rolesEast = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "east-mi-roles-registry");
210var rolesWest = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "west-mi-roles-registry");
AzureBicepProvisionerTests.cs (33)
235AssertResourceGroupPropertyIsNull(services, resource.Name);
270AssertResourceGroupPropertyIsNull(services, resource.Name);
368AssertResourceGroupPropertyIsNull(services, resource.Name);
678Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
712Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
749Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
864Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
915Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
1106Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
1221Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent));
1342var deploymentId = GetTestDeploymentId(resource.Name);
1360Assert.Equal(resource.Name, deploymentCollection.DeploymentName);
1364var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1377var deploymentId = GetTestDeploymentId(resource.Name);
1507var deploymentId = GetTestDeploymentId(resource.Name);
1524var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1539var deploymentId = GetTestDeploymentId(resource.Name);
1567var deploymentId = GetTestDeploymentId(resource.Name);
1579var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1591var deploymentId = GetTestDeploymentId(resource.Name);
1605var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1618var deploymentId = GetTestDeploymentId(resource.Name);
1634var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1647var deploymentId = GetTestDeploymentId(resource.Name);
1659Assert.Contains(resource.Name, exception.Message, StringComparison.Ordinal);
1660var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1672var deploymentId = GetTestDeploymentId(resource.Name);
1684Assert.Contains(resource.Name, exception.Message, StringComparison.Ordinal);
1685var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1689Assert.True(notificationService.TryGetCurrentState(resource.Name, out var resourceEvent));
1701var deploymentId = GetTestDeploymentId(resource.Name);
1718var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
1776var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
AzureContainerAppEnvironmentExtensionsTests.cs (13)
277var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi");
278var roles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "env-mi-roles-final-registry");
306var roles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "env-mi-roles-registry");
349var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi");
375var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi");
401Assert.Null(model.Resources.OfType<AzureUserAssignedIdentityResource>().SingleOrDefault(resource => resource.Name == "env-mi"));
402Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal)));
421Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"));
422Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal)));
449var identityEast = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "east-mi");
450var identityWest = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "west-mi");
454var rolesEast = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "east-mi-roles-registry");
455var rolesWest = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "west-mi-roles-registry");
AzureContainerAppsTests.cs (18)
384var identityName = $"{proj.Name}-identity";
385var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == identityName);
461var identityName = $"{proj.Name}-identity";
462var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == identityName);
1060var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-identity");
1061var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-storage");
1104var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-identity");
1105var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-cosmos");
1145var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-identity");
1146var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-redis");
1923var env1Resource = Assert.Single(envResources, r => r.Name == "cae1");
1924var env2Resource = Assert.Single(envResources, r => r.Name == "cae2");
1974var env1Resource = Assert.Single(envResources, r => r.Name == "cae1");
1975var env2Resource = Assert.Single(envResources, r => r.Name == "cae2");
2285var env1Resource = Assert.Single(envResources, r => r.Name == "cae1");
2286var env2Resource = Assert.Single(envResources, r => r.Name == "cae2");
2800Assert.Contains("acr", defaultAcr.Name);
2822Assert.Equal("customregistry", acrResources[0].Name);
AzureCosmosDBEmulatorFunctionalTests.cs (17)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
54await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
94await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
98hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
99hb.AddAzureCosmosClient(db.Resource.Name);
100hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName);
175await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token);
183[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default)
186hb.AddAzureCosmosClient(cosmos1.Resource.Name);
223await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token);
232[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default)
235hb.AddAzureCosmosClient(cosmos2.Resource.Name);
293await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token);
297hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
298hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureEnvironmentResourceExtensionsTests.cs (149)
359ResourceName = environmentResource.Name,
380Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
384Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
413ResourceName = environmentResource.Name,
496Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
569Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
708Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
743Assert.True(notifications.TryGetCurrentState(postgres.Resource.Name, out var postgresEvent));
751ResourceName = postgres.Resource.Name,
832ResourceName = storage.Resource.Name,
916ResourceName = storage.Resource.Name,
1185ResourceName = storage.Resource.Name,
1249ResourceName = storage.Resource.Name,
1310ResourceName = storage.Resource.Name,
1371ResourceName = storage.Resource.Name,
1385Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1421Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1498Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1506ResourceName = storage.Resource.Name,
1546var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage.Resource.Name, CancellationToken.None);
1564ResourceName = storage.Resource.Name,
1575Assert.Equal([storage.Resource.Name], testBicepProvisioner.ProvisionedResources);
1605var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage1.Resource.Name, CancellationToken.None);
1615ResourceName = storage2.Resource.Name,
1627ResourceName = storage2.Resource.Name,
1668Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1711ResourceName = storage.Resource.Name,
1723Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1795ResourceName = storage.Resource.Name,
1826Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1829Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
1889ResourceName = keyVault.Resource.Name,
1908Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
1960ResourceName = storage.Resource.Name,
1971Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
1974Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1978Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2038ResourceName = storage.Resource.Name,
2052ResourceName = storage.Resource.Name,
2062Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2117ResourceName = storage.Resource.Name,
2135Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2140Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2181ResourceName = storage.Resource.Name,
2197Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2200Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2235ResourceName = storage.Resource.Name,
2246Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
2249Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2252Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2260Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out environmentEvent));
2263Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2295ResourceName = storage.Resource.Name,
2306Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
2309Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2318Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out environmentEvent));
2321Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2372ResourceName = storage.Resource.Name,
2386ResourceName = storage2.Resource.Name,
2449ResourceName = storage.Resource.Name,
2460Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2466ResourceName = storage.Resource.Name,
2477Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2480Assert.True(notifications.TryGetCurrentState(blobs.Resource.Name, out var blobsEvent));
2489Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2538await WaitForResourceStateAsync(notifications, storage2.Resource.Name, "Running");
2539Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var runningStorage2Event));
2547ResourceName = storage.Resource.Name,
2555Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2559Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2564Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out storage2Event));
2593ResourceName = storage.Resource.Name,
2646ResourceName = storage.Resource.Name,
2660ResourceName = storage2.Resource.Name,
2713ResourceName = storage.Resource.Name,
2726Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
2729Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2738Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2786ResourceName = storage.Resource.Name,
2839ResourceName = storage.Resource.Name,
2899ResourceName = visibleResource.Name,
2960ResourceName = storage.Resource.Name,
3030ResourceName = storage.Resource.Name,
3039Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
3091ResourceName = storage.Resource.Name,
3160ResourceName = storage.Resource.Name,
3217ResourceName = storage.Resource.Name,
3280ResourceName = storage.Resource.Name,
3351ResourceName = storage.Resource.Name,
3406ResourceName = environmentResource.Name,
3446ResourceName = environmentResource.Name,
3484Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
3520ResourceName = environmentResource.Name,
3537Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
3568ResourceName = environmentResource.Name,
3624ResourceName = environmentResource.Name,
3755var storage2 = model.Resources.OfType<AzureBicepResource>().Single(r => r.Name == "storage2");
3771ResourceName = storage2.Name,
3806var storage = model.Resources.OfType<AzureBicepResource>().Single(r => r.Name == "storage");
3850ResourceName = storage.Resource.Name,
3922ResourceName = keyVault.Resource.Name,
3935Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
4002ResourceName = keyVault.Resource.Name,
4039Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
4076ResourceName = postgres.Resource.Name,
4128ResourceName = storage.Resource.Name,
4174ResourceName = keyVault.Resource.Name,
4220ResourceName = storage.Resource.Name,
4246Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
4288ResourceName = storage.Resource.Name,
4332Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
4341Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent));
4385Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
4388Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent));
4444Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
4447Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
4450Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
4487Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
4490Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent));
4527ResourceName = environmentResource.Name,
4579ResourceName = environmentResource.Name,
4626ResourceName = environmentResource.Name,
4674ResourceName = environmentResource.Name,
4684Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent));
4751Assert.True(notifications.TryGetCurrentState(storage.Name, out var storageEvent));
4754Assert.True(notifications.TryGetCurrentState(storageRoles.Name, out var storageRolesEvent));
4812ResourceName = storage.Resource.Name,
4822Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
4828Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
4852Assert.True(notifications.TryGetCurrentState(azureEnvironment.Name, out var environmentEvent));
4858Assert.Equal([storage.Resource.Name, storage2.Resource.Name], Assert.IsType<string[]>(failedResourcesProperty.Value));
4873Assert.Equal("azure-environment", resource.Name);
4887Assert.Equal("azure-environment", resource.Name);
4915Assert.Equal("azure-environment2", resource.Name);
5473_configuredResources.Add(resource.Name);
5484_provisionedResources.Add(resource.Name);
5485_provisionedLocations[resource.Name] = resource.Parameters.TryGetValue(AzureBicepResource.KnownParameters.Location, out var location)
5609_provisionedResources.Add(resource.Name);
5619resource.Outputs["blobEndpoint"] = $"https://{resource.Name}.blob.core.windows.net/";
5695var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false);
5773if (string.Equals(resource.Name, childResourceName, StringComparison.Ordinal))
5782if (string.Equals(resource.Name, parentResourceName, StringComparison.Ordinal) &&
5795_provisionedResources.Add(resource.Name);
5798resource.Outputs["id"] = $"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Test/resources/{resource.Name}";
5799resource.Outputs["name"] = resource.Name;
5800resource.Outputs["vaultUri"] = $"https://{resource.Name}.vault.azure.net/";
5801resource.Outputs["connectionString"] = $"Host={resource.Name}.postgres.database.azure.com";
5802resource.Outputs["hostName"] = $"{resource.Name}.postgres.database.azure.com";
AzureEventHubsExtensionsTests.cs (7)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
53await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
78await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
130await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
294var ehRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "eh-roles");
AzureFunctionsTests.cs (16)
153Assert.NotEqual(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, storageResources.Name);
154Assert.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, storageResources.Name);
172r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName));
174Assert.Equal("my-own-storage", storageResource.Name);
198r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName));
211Assert.NotEqual(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, resource.Name);
212Assert.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, resource.Name);
323var storage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcstorage634f8");
356var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-funcstorage634f8");
384var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-my-own-storage");
413var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-my-own-storage");
444var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-my-own-storage");
445var projRolesStorage2 = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp2-roles-funcstorage634f8");
737.Where(r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName))
763r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName));
765Assert.Equal("my-custom-storage", storageResource.Name);
AzureResourcePreparerTests.cs (14)
93var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "storage-roles");
139var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "storage-roles");
182Assert.DoesNotContain(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "dbsrv-roles");
236var roleAssignmentResource = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "api-roles-storage");
273.OrderBy(resource => resource.Name, StringComparer.Ordinal)];
286Assert.Equal("api-roles-keyvault", resource.Name);
292Assert.Equal("worker-roles-keyvault", resource.Name);
330.OrderBy(resource => resource.Name, StringComparer.Ordinal)];
343Assert.Equal("service-a-roles-signalr", resource.Name);
349Assert.Equal("service-b-roles-signalr", resource.Name);
358.OrderBy(resource => resource.Name, StringComparer.Ordinal),
380var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "storage-roles");
590var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "storage-roles");
646var roleAssignmentResource = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "api-roles-storage");
AzureServiceBusExtensionsTests.cs (10)
98await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
100await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
104await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
106await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
139await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
140await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
756Assert.Equal("sb", serviceBus.Resource.Name);
775var sbRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "sb-roles");
848await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
849await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
AzureStorageEmulatorFunctionalTests.cs (17)
51await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
53await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
57await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token);
58await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token);
59await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token);
61await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
96await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
98await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
102await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cts.Token);
104await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
139await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
141await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
145await rns.WaitForResourceHealthyAsync(testQueue.Resource.Name, cts.Token);
147await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
193await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token);
225await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token);
265await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token);
AzureStorageExtensionsTests.cs (15)
461Assert.Equal("storage", storage.Resource.Name);
546Assert.Equal("storage", storage.Resource.Name);
634Assert.Equal("storage", storage.Resource.Name);
653var storageRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "storage-roles");
765Assert.Equal("storage", storage.Resource.Name);
852Assert.Equal("storage-blobs", blobService.Resource.Name);
879Assert.Equal("storage-queues", queueService.Resource.Name);
896Assert.Equal("blobs", blobServices[0].Name);
913Assert.Equal("queues", queueServices[0].Name);
930Assert.Equal("datalake", dataLakeServices[0].Name);
954var defaultBlobService = Assert.Single(blobServices, r => r.Name == "storage-blobs");
955var customBlobService = Assert.Single(blobServices, r => r.Name == "blobs");
957Assert.Equal("blobs", customBlobs.Resource.Name);
978Assert.Equal("blobs", customBlobs.Resource.Name);
979Assert.Equal("storage-blobs", defaultBlobs.Resource.Name);
AzureWebPubSubExtensionsTests.cs (14)
35Assert.Equal(hubName, hub.Resource.Name);
63Assert.Equal("wps1", wps.Resource.Name);
108Assert.Equal("wps1", wps.Resource.Name);
138Assert.Equal("wps1", wps.Resource.Name);
164Assert.Equal("wps1", wps.Resource.Name);
218Assert.Equal("wps1", wps.Resource.Name);
234Assert.Equal("hub1", hub1.Resource.Name);
235Assert.Equal("resource2", hub2.Resource.Name);
236Assert.Equal("hub3", hub3.Resource.Name);
237Assert.Equal("hub4", hub4.Resource.Name);
262Assert.Equal("resource1", hub1.Resource.Name);
292Assert.Equal("wps1", wps.Resource.Name);
295var wpsRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "wps1-roles");
348Assert.Equal("wps1", wps.Resource.Name);
ExistingAzureResourceExtensionsTests.cs (16)
38Assert.Equal("name", existingNameParameter.Name);
40Assert.Equal("resourceGroup", existingResourceGroupParameter.Name);
59Assert.Equal("name1", existingNameParameter.Name);
61Assert.Equal("resourceGroup1", existingResourceGroupParameter.Name);
77Assert.Equal("name", existingNameParameter.Name);
79Assert.Equal("resourceGroup", existingResourceGroupParameter.Name);
98Assert.Equal("name1", existingNameParameter.Name);
100Assert.Equal("resourceGroup1", existingResourceGroupParameter.Name);
136Assert.Equal("name", existingNameParameter.Name);
138Assert.Equal("resourceGroup", existingResourceGroupParameter.Name);
157Assert.Equal("name", existingNameParameter.Name);
159Assert.Equal("resourceGroup", existingResourceGroupParameter.Name);
161Assert.Equal("subscription", existingSubscriptionParameter.Name);
195Assert.Equal("name", existingNameParameter.Name);
198Assert.Equal("subscription", existingSubscriptionParameter.Name);
216Assert.Equal("name", existingNameParameter.Name);
Aspire.Hosting.Azure.WebPubSub (2)
Aspire.Hosting.Blazor (16)
Aspire.Hosting.Blazor.Tests (7)
Aspire.Hosting.Browsers.Tests (24)
BrowserLogsBuilderExtensionsTests.cs (23)
48Assert.Equal("web-browser-logs", browserLogsResource.Name);
49Assert.Equal(web.Resource.Name, browserLogsResource.ParentResource.Name);
56Assert.Equal(web.Resource.Name, parentRelationship.Resource.Name);
453Assert.Equal(browserLogsResource.Name, call.ResourceName);
709adminBrowserLogsResource.Name,
886app.Services.GetRequiredService<ResourceLoggerService>().WatchAsync(browserLogsResource.Name),
963browserLogsResource.Name,
1012browserLogsResource.Name,
1033browserLogsResource.Name,
1097browserLogsResource.Name,
1110browserLogsResource.Name,
1172browserLogsResource.Name,
1225browserLogsResource.Name,
1234browserLogsResource.Name,
1285browserLogsResource.Name,
1346browserLogsResource.Name,
1362browserLogsResource.Name,
1409browserLogsResource.Name,
1445browserLogsResource.Name,
1477browserLogsResource.Name,
1493browserLogsResource.Name,
1546browserLogsResource.Name,
1562browserLogsResource.Name,
Aspire.Hosting.CodeGeneration.Go.Tests (1)
Aspire.Hosting.CodeGeneration.Java.Tests (1)
Aspire.Hosting.CodeGeneration.Python.Tests (1)
Aspire.Hosting.CodeGeneration.Rust.Tests (1)
Aspire.Hosting.CodeGeneration.TypeScript.Tests (1)
Aspire.Hosting.Containers.Tests (4)
Aspire.Hosting.DevTunnels (4)
Aspire.Hosting.DevTunnels.Tests (5)
Aspire.Hosting.Docker (33)
DockerComposeEnvironmentResource.cs (26)
69Name = $"prepare-deployment-targets-{Name}",
70Description = $"Prepares Docker Compose deployment targets for {Name}.",
79Name = $"publish-{Name}",
80Description = $"Publishes the Docker Compose environment configuration for {Name}.",
119Name = $"prepare-{Name}",
120Description = $"Prepares the Docker Compose environment {Name} for deployment.",
130Name = $"docker-compose-up-{Name}",
133DependsOnSteps = [$"prepare-{Name}"]
140Name = $"destroy-compose-{Name}",
141Description = $"Confirms and destroys the Docker Compose environment {Name}.",
146var stateSection = await deploymentStateManager.AcquireSectionAsync($"DockerCompose:{Name}", ctx.CancellationToken).ConfigureAwait(false);
152$"No Docker Compose deployment state found for '{Name}'. Nothing to destroy.",
158await ConfirmDestroyAsync(ctx, Name).ConfigureAwait(false);
175new MarkdownString($"Running compose down for **{Name}** using **{runtime.Name}**"),
181new MarkdownString($"Compose shutdown complete for **{Name}** ({runtime.Name})"),
186ctx.Summary.Add("🗑️ Compose", Name);
198Name = $"docker-compose-down-{Name}",
246.RequiredBy($"docker-compose-up-{Name}")
414new MarkdownString($"Running compose up for **{Name}** using **{runtime.Name}**"),
426var stateSection = await deploymentStateManager.AcquireSectionAsync($"DockerCompose:{Name}", context.CancellationToken).ConfigureAwait(false);
433new MarkdownString($"Service **{Name}** is now running with Docker Compose locally (runtime: {runtime.Name})"),
460new MarkdownString($"Running compose down for **{Name}** using **{runtime.Name}**"),
471new MarkdownString($"Compose shutdown complete for **{Name}** ({runtime.Name})"),
571var environmentName = hostEnvironment?.EnvironmentName ?? environment.Name;
598return $"aspire-{environment.Name.ToLowerInvariant()}-{appHostSha[..8].ToLowerInvariant()}";
602return $"aspire-{environment.Name.ToLowerInvariant()}";
Aspire.Hosting.Docker.Tests (1)
Aspire.Hosting.Dotnet (2)
Aspire.Hosting.DotnetTool.Tests (7)
Aspire.Hosting.EntityFrameworkCore (28)
EFResourceBuilderExtensions.cs (21)
158$"The DbContext type '{GetShortTypeName(dbContextTypeName)}' has already been registered for EF migrations on resource '{builder.Resource.Name}'.");
164$"Cannot register a specific DbContext type for migrations when they have already been registered without a context type on resource '{builder.Resource.Name}'.");
172$"Cannot register migrations without a context type when they have already been registered without a context type on resource '{builder.Resource.Name}'.");
176$"Cannot register migrations without a context type when they have already been registered for specific DbContext types on resource '{builder.Resource.Name}'.");
213? $"{migrationResource.Name}-generate-migration-script"
217? $"{migrationResource.Name}-generate-migration-bundle"
245Description = $"Generate EF Core migration SQL script for {migrationResource.Name}",
254? Path.Combine(outputDir, migrationResource.Name + ".sql")
270? [WellKnownPipelineSteps.Publish, $"build-{migrationResource.Name}"]
289Description = $"Generate EF Core migration bundle for {migrationResource.Name}",
329if (StringComparer.Ordinal.Compare(sibling.Name, current.Name) >= 0)
334if (predecessor is null || StringComparer.Ordinal.Compare(sibling.Name, predecessor.Name) > 0)
348? $"{predecessor.Name}-generate-migration-bundle"
349: $"{predecessor.Name}-generate-migration-script";
375logger.LogInformation("Generating {Operation} for '{ResourceName}'...", operationName, migrationResource.Name);
387logger.LogInformation("{Operation} generated successfully for '{ResourceName}'.", operationName, migrationResource.Name);
391throw new InvalidOperationException($"Failed to generate {operationName} for '{migrationResource.Name}': {result.ErrorMessage}");
405return migrationResource.Name + (isWindowsBundle ? ".exe" : string.Empty);
640var toolName = $"ef-tool-{migrationResource.Name}";
Aspire.Hosting.EntityFrameworkCore.Tests (11)
Aspire.Hosting.Foundry (63)
HostedAgent\AzureHostedAgentResource.cs (11)
54Name = $"deploy-{Name}",
58ctx.ReportingStep.Log(LogLevel.Information, new MarkdownString($"Successfully deployed **{Name}** as Hosted Agent (version {version})"));
113throw new InvalidOperationException($"Container image for hosted agent '{Name}' could not be resolved.");
167throw new InvalidOperationException($"Project '{project.Name}' does not have a valid connection string.");
174Name,
204Name,
248context.Logger.LogWarning("Hosted agent '{Name}' version '{Version}' did not return an instance identity. The agent may not be able to access Foundry project storage.", Name, version.Version);
255context.Logger.LogWarning("Could not resolve the Microsoft Foundry resource ID for hosted agent '{Name}'. The agent identity '{PrincipalId}' may need the Cognitive Services User role assigned manually.", Name, principalId);
281context.Logger.LogInformation("Assigned Cognitive Services User role to hosted agent '{Name}' identity '{PrincipalId}'.", Name, principalId);
288Name,
503$"Unable to resolve environment variable '{environmentVariableName}' for Foundry hosted agent '{hostedAgent.Name}' from target resource '{resource.Name}'. " +
PromptAgent\AzurePromptAgentResource.cs (20)
72Name = $"deploy-{Name}-before-start",
73Description = $"Deploys prompt agent {Name} before the application starts.",
84Name = $"deploy-{Name}",
85Description = $"Deploys prompt agent {Name}.",
90new MarkdownString($"Successfully deployed **{Name}** as Prompt Agent (version {version.Version})"));
155$"Tool '{tool.Name}' belongs to project '{tool.Project.Name}' but agent '{Name}' " +
156$"belongs to project '{Project.Name}'. All tools must belong to the same project as the agent.");
164ReferenceExpression.Create($"{Project.Endpoint}/agents/{Name}");
168yield return new("AgentName", ReferenceExpression.Create($"{Name}"));
205throw new InvalidOperationException($"Project '{project.Name}' does not have a valid endpoint.");
223var retryMessage = $"Foundry project endpoint for '{project.Name}' is not ready yet. Retrying prompt agent deployment in {s_projectEndpointReadinessDelay.TotalSeconds:n0} seconds ({retry.AttemptNumber + 1}/{ProjectEndpointReadinessMaxRetryAttempts}).";
241Name,
349logger.LogInformation("Deploying prompt agent '{AgentName}' to Foundry project '{ProjectName}'...", Name, Project.Name);
354logger.LogInformation("Successfully deployed prompt agent '{AgentName}' (version {Version})", Name, version.Version);
378logger.LogError(ex, "Failed to deploy prompt agent '{AgentName}'", Name);
396Project.Name,
433var portalUrl = $"https://ai.azure.com/nextgen/r/{encodedSubscriptionId},{resourceGroupName},,{foundryAccountName},{projectName}/build/agents/{Name}/build";
Aspire.Hosting.Foundry.Tests (11)
Aspire.Hosting.Garnet (1)
Aspire.Hosting.Garnet.Tests (10)
Aspire.Hosting.GitHub.Models (1)
Aspire.Hosting.GitHub.Models.Tests (10)
Aspire.Hosting.Go (4)
Aspire.Hosting.Java (33)
JavaDockerfileGenerator.cs (19)
306jarPath = NormalizeContextRelativePath(annotation.JarPath, resource.Name, appDirectory, "its JAR");
356$"Java application '{resource.Name}' cannot be published because its jarPath " +
453resource.Name,
575$"Java application '{resource.Name}' cannot be published because the OpenTelemetry agent " +
600$"The OpenTelemetry agent path '{authored}' configured on resource '{resource.Name}' " +
612$"The OpenTelemetry agent path '{authored}' configured on resource '{resource.Name}' " +
709? $"cp {ShellQuote(NormalizeContextRelativePath(artifact.RelativePath, resource.Name, appDirectory, "its JAR artifact"))} {ContainerArtifactPath}"
714? SelectQuarkusArtifactCommand(outputDirectory, outputGlob, resource.Name)
716? SelectNamedJarCommand(namedJar, ContainerArtifactPath, resource.Name)
717: SelectSingleJarCommand(outputGlob, ContainerArtifactPath, resource.Name);
740CacheId: $"aspire-java-{tool.ToString().ToLowerInvariant()}-{resource.Name.ToLowerInvariant()}",
1007$"Java application '{resource.Name}' cannot be published because its {wrapper} has no " +
1043$"Java application '{resource.Name}' cannot be published because its wrapper " +
1054$"Java application '{resource.Name}' cannot be published because the wrapper " +
1060$"Java application '{resource.Name}' cannot be published because there is no " +
1079$"Java application '{resource.Name}' cannot be published because its wrapper " +
1095$"Java application '{resource.Name}' cannot be published because its wrapper path " +
1152$"The Java application '{resource.Name}' cannot be published because no build tool was found. " +
1175$"The Java application '{resource.Name}' cannot be published because no build tool was found. " +
Aspire.Hosting.Java.Tests (4)
Aspire.Hosting.JavaScript (11)
JavaScriptHostingExtensions.cs (11)
1359builder.TryCreateResourceBuilder<ContainerResource>(resource.Name, out var containerBuilder))
1361var validationStepName = $"validate-javascript-dockerfile-run-script-{resource.Name}";
1374Description = $"Validates that JavaScript app '{resource.Name}' does not publish an ignored run script with an existing Dockerfile.",
1438$"JavaScript app resource '{resource.Name}' is configured to run script '{runScript.ScriptName}'{argsClause}, but publish is using the existing Dockerfile '{dockerfileBuildAnnotation.DockerfilePath}'. " +
1570resourceLogger.LogWarning("Could not find a node_modules directory in or above '{AppDirectory}' for resource '{ResourceName}'. Automatic HTTPS configuration won't be available. Ensure packages are installed before starting the app.", appDirectory, resource.Name);
1578var aspireConfigDir = Path.Join(nodeModulesDir, ".aspire", appHostId, resource.Name);
1606resourceLogger.LogWarning(ex, "Failed to generate Aspire Vite HTTPS config wrapper for resource '{ResourceName}'. Falling back to existing Vite config without Aspire modifications. Automatic HTTPS configuration won't be available", resource.Name);
2198$"Bun apps cannot be debugged through the Node dev-server debug path. '{resource.Name}' is a {nameof(BunAppResource)}; use {nameof(AddBunApp)}, which wires its own Bun debug support.");
2262var debuggerResourceName = $"{parentResource.Name}-browser";
2284$"Resource '{parentResource.Name}' does not have an HTTP or HTTPS endpoint. Browser debugging requires an endpoint to navigate to.");
2335var installerName = $"{resource.Resource.Name}-installer";
Aspire.Hosting.JavaScript.Tests (24)
Aspire.Hosting.Kafka (2)
Aspire.Hosting.Kafka.Tests (8)
Aspire.Hosting.Keycloak.Tests (1)
Aspire.Hosting.Kubernetes (125)
CertManagerExtensions.cs (28)
344$"Gateway '{builder.Resource.Name}' is in Kubernetes environment '{gatewayEnvironment.Name}' but issuer " +
345$"'{issuer.Resource.Name}' belongs to cert-manager installation '{issuer.Resource.Parent.Name}' in environment " +
346$"'{issuerEnvironment.Name}'. cert-manager is per-cluster, so an issuer can only be used by gateways in the " +
352.WithGatewayAnnotation(ClusterIssuerAnnotationKey, issuer.Resource.Name);
369Name = $"cm-issuer-apply-{captured.Name}",
370Description = $"Applies cert-manager ClusterIssuer '{captured.Name}'",
398Name = $"cm-issuer-delete-{captured.Name}",
399Description = $"Deletes cert-manager ClusterIssuer '{captured.Name}'",
426$"ClusterIssuer '{issuer.Name}' has no spec. Configure it with WithLetsEncryptProduction(), " +
433$"ClusterIssuer '{issuer.Name}' has no solvers configured. Add at least one " +
443"Applying cert-manager ClusterIssuer '{IssuerName}'.", issuer.Name);
451var manifestPath = Path.Combine(tempDir.FullName, $"{issuer.Name}.yaml");
482$"kubectl apply for ClusterIssuer '{issuer.Name}' failed with exit code {result.ExitCode}: {errOut}");
486context.Logger.LogInformation("ClusterIssuer '{IssuerName}' applied.", issuer.Name);
503var k8sIssuerName = issuer.Name.ToKubernetesResourceName();
506"Deleting cert-manager ClusterIssuer '{IssuerName}'.", issuer.Name);
542issuer.Name,
549context.Logger.LogInformation("ClusterIssuer '{IssuerName}' deleted.", issuer.Name);
566var k8sIssuerName = issuer.Name.ToKubernetesResourceName();
590$"Unknown issuer spec type '{issuer.Spec?.GetType().Name}' on issuer '{issuer.Name}'.");
624&& string.Equals(v.Format, issuer.Name, StringComparison.Ordinal))
640issuer.Name,
641certManager.Parent.Name,
642issuer.Name);
653sb.Append(" name: ").AppendLine(gateway.Name.ToKubernetesResourceName());
659$"Unknown solver type '{solver.GetType().Name}' on issuer '{issuer.Name}'.");
Deployment\HelmDeploymentEngine.cs (26)
136Name = $"check-helm-prereqs-{environment.Name}",
137Description = $"Verifies Helm CLI is available for {environment.Name}.",
149Name = $"prepare-{environment.Name}",
150Description = $"Prepares Helm chart values for {environment.Name}.",
155prepareStep.DependsOn($"check-helm-prereqs-{environment.Name}");
161Name = $"helm-deploy-{environment.Name}",
162Description = $"Deploys {environment.Name} to Kubernetes via Helm.",
166helmDeployStep.DependsOn($"prepare-{environment.Name}");
173Name = $"print-{environment.Name}-instructions",
174Description = $"Prints access instructions for {environment.Name}.",
178instructionsStep.DependsOn($"helm-deploy-{environment.Name}");
185Name = $"destroy-helm-{environment.Name}",
186Description = $"Confirms and destroys the Helm deployment for {environment.Name}.",
191var stateSection = await deploymentStateManager.AcquireSectionAsync($"Helm:{environment.Name}", ctx.CancellationToken).ConfigureAwait(false);
198$"No Helm deployment state found for '{environment.Name}'. Nothing to destroy.",
229Name = $"helm-uninstall-{environment.Name}",
230Description = $"Uninstalls the Helm release for {environment.Name}.",
234helmUninstallStep.DependsOn($"check-helm-prereqs-{environment.Name}");
252new MarkdownString($"Preparing Helm chart values for **{environment.Name}**"),
266new MarkdownString($"Helm chart values prepared for **{environment.Name}**"),
362var overrideFilePath = Path.Combine(outputPath, GetDeployValuesFileName(environment.Name));
421new MarkdownString($"Deploying **{environment.Name}** to Kubernetes namespace **{@namespace}** as Helm release **{releaseName}**"),
451var deployValuesFilePath = Path.Combine(outputPath, GetDeployValuesFileName(environment.Name));
485var stateSection = await deploymentStateManager.AcquireSectionAsync($"Helm:{environment.Name}", context.CancellationToken).ConfigureAwait(false);
552var dashboardServiceName = environment.Dashboard.Resource.Name.ToKubernetesResourceName() + "-service";
557var dashboardDeploymentName = environment.Dashboard.Resource.Name.ToKubernetesResourceName();
KubernetesEnvironmentResource.cs (44)
238Name = $"prepare-deployment-targets-{Name}",
239Description = $"Prepares Kubernetes deployment targets for {Name}.",
250Name = $"publish-{Name}",
251Description = $"Publishes the Kubernetes environment configuration for {Name}.",
275Name = $"tls-bootstrap-{environment.Name}",
279tlsBootstrapStep.DependsOn($"helm-deploy-{environment.Name}");
291Name = $"tls-fqdn-discovery-{environment.Name}",
295fqdnDiscoveryStep.DependsOn($"helm-deploy-{environment.Name}");
299fqdnDiscoveryStep.DependsOn($"tls-bootstrap-{environment.Name}");
319Name = $"gateway-field-cleanup-{environment.Name}",
323cleanupStep.RequiredBy($"helm-deploy-{environment.Name}");
324cleanupStep.DependsOn($"prepare-{environment.Name}");
516$"Resource '{r.Name}' is assigned to Kubernetes environment '{Name}' but binds " +
517$"persistent volume '{binding.Volume.Name}' which belongs to environment " +
518$"'{binding.Volume.Parent.Name}'. A workload can only bind persistent volumes " +
520$"'{Name}', or assign the workload to '{binding.Volume.Parent.Name}' with " +
673var valueKey = parameter.Name.ToHelmValuesSectionName();
727ingressResource.Name);
737EndpointRoutingValidation.ThrowIfEndpointNotExternal(path.Endpoint, "Ingress", ingressResource.Name);
742EndpointRoutingValidation.ThrowIfEndpointNotExternal(defaultBackend.Endpoint, "Ingress", ingressResource.Name);
763Name = ingressResource.Name.ToKubernetesResourceName(),
769ingress.Spec.IngressClassName = await ResolveExpressionAsync(ingressResource.IngressClassName, ingressResource.Name, cancellationToken).ConfigureAwait(false);
774ingress.Metadata.Annotations[key] = await ResolveExpressionAsync(value, ingressResource.Name, cancellationToken).ConfigureAwait(false);
779ingressResource.Name,
812var backend = ResolveIngressBackend(pathRule.Endpoint, deploymentTargets, ingressResource.Name, logger);
834var defaultBackend = ResolveIngressBackend(ingressResource.DefaultBackend.Endpoint, deploymentTargets, ingressResource.Name, logger);
845SecretName = await ResolveExpressionAsync(tls.SecretName, ingressResource.Name, cancellationToken).ConfigureAwait(false),
900logger.LogWarning("Ingress '{IngressName}' produced no valid rules or default backend. Skipping.", ingressResource.Name);
968gatewayResource.Name);
976EndpointRoutingValidation.ThrowIfEndpointNotExternal(route.Endpoint, "Gateway", gatewayResource.Name);
1013claim.Metadata.Annotations[key] = await ResolveExpressionAsync(value, volumeResource.Name, cancellationToken).ConfigureAwait(false);
1031? await ResolveExpressionAsync(capacityExpression, volumeResource.Name, cancellationToken).ConfigureAwait(false)
1037var storageClass = await ResolveExpressionAsync(storageClassExpression, volumeResource.Name, cancellationToken).ConfigureAwait(false);
1060$"Gateway '{gatewayResource.Name}' must have a GatewayClassName set via WithGatewayClass(). " +
1064var gatewayName = gatewayResource.Name.ToKubernetesResourceName();
1078gatewayResource.Name,
1085$"Gateway '{gatewayResource.Name}' configures {resolvedHostnames.Count} hostnames that would be inherited by a hostless route, " +
1091gateway.Spec.GatewayClassName = await ResolveExpressionAsync(gatewayResource.GatewayClassName, gatewayResource.Name, cancellationToken).ConfigureAwait(false);
1095gateway.Metadata.Annotations[key] = await ResolveExpressionAsync(value, gatewayResource.Name, cancellationToken).ConfigureAwait(false);
1112var resolvedSecretName = await ResolveExpressionAsync(tls.SecretName, gatewayResource.Name, cancellationToken).ConfigureAwait(false);
1193var backendRef = ResolveGatewayBackendRef(route.Endpoint, deploymentTargets, gatewayResource.Name, logger);
1402var gatewayName = gateway.Name.ToKubernetesResourceName();
1856var gatewayName = gateway.Name.ToKubernetesResourceName();
Aspire.Hosting.Kubernetes.Tests (15)
Aspire.Hosting.Maui (13)
Aspire.Hosting.Maui.Tests (16)
Aspire.Hosting.Milvus (2)
Aspire.Hosting.Milvus.Tests (10)
Aspire.Hosting.MongoDB (4)
Aspire.Hosting.MongoDB.Tests (16)
Aspire.Hosting.MySql (6)
Aspire.Hosting.MySql.Tests (35)
MySqlFunctionalTests.cs (30)
51await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
57await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
59await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
93[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
96hb.AddMySqlDataSource(db.Resource.Name);
170[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
173hb.AddMySqlDataSource(db1.Resource.Name);
240[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
243hb.AddMySqlDataSource(db2.Resource.Name);
351[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
354hb.AddMySqlDataSource(db.Resource.Name);
435[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
438hb.AddMySqlDataSource(db.Resource.Name);
506[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
509hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name);
664hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
666hb.AddMySqlDataSource(newDb.Resource.Name);
672await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
678resourceName: mysql.Resource.Name,
747hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
749hb.AddMySqlDataSource(newDb.Resource.Name);
755await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token);
807hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
808hb.AddKeyedMySqlDataSource(db.Resource.Name);
817await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
819var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name);
850hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
851hb.AddMySqlDataSource(newDb.Resource.Name);
856await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
Aspire.Hosting.Nats (1)
Aspire.Hosting.Nats.Tests (16)
NatsFunctionalTests.cs (14)
37await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
42hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
83await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
89hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString;
126await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
136hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString;
189await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name);
195hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default);
238await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name);
244hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default);
349await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
351await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
355await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
357await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.OpenAI (1)
Aspire.Hosting.OpenAI.Tests (13)
OpenAIFunctionalTests.cs (8)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
90await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
92await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
96await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
98await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Oracle (1)
Aspire.Hosting.Oracle.Tests (14)
Aspire.Hosting.PostgreSQL (8)
Aspire.Hosting.PostgreSQL.Tests (41)
PostgresFunctionalTests.cs (37)
54await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
57await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
63await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
66await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
88await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name);
90var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http");
121[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
124hb.AddNpgsqlDataSource(db.Resource.Name);
130await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
167var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http");
169await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
235await app.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
244[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
247hb.AddNpgsqlDataSource(db1.Resource.Name);
298await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
307[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default)
310hb.AddNpgsqlDataSource(db2.Resource.Name);
410[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
413hb.AddNpgsqlDataSource(db.Resource.Name);
419await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
494[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
497hb.AddNpgsqlDataSource(db.Resource.Name);
503await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
622hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
624hb.AddNpgsqlDataSource(newDb.Resource.Name);
630await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
636resourceName: postgres.Resource.Name,
671hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
673hb.AddNpgsqlDataSource(newDb.Resource.Name);
679await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
741hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
743hb.AddNpgsqlDataSource(newDb.Resource.Name);
749await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
801hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
802hb.AddKeyedNpgsqlDataSource(db.Resource.Name);
811await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
813var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
Aspire.Hosting.Python (6)
Aspire.Hosting.Python.Tests (19)
AddPythonAppTests.cs (18)
162Assert.Equal("pythonProject", pythonProjectResource.Name);
201Assert.Equal("pythonProject", pythonProjectResource.Name);
244Assert.Equal("pythonProject", pythonProjectResource.Name);
740Assert.Equal("pythonProject-installer", installerResource.Name);
830Assert.Equal("pythonProject-installer", uvEnvironmentResource.Name);
849Assert.Equal("pythonProject-installer", installerResource.Name);
874Assert.Equal("pythonProject-installer", installerResource.Name);
905Assert.Equal("pythonProject-installer", installerResource.Name);
929Assert.Equal("python-script", resource.Name);
948Assert.Equal("flask-app", resource.Name);
967Assert.Equal("pytest", resource.Name);
990Assert.Equal("pythonProject", pythonProjectResource.Name);
2032Assert.Equal("pythonProject-installer", installerResource.Name);
2067Assert.Equal("pythonProject-installer", installerResource.Name);
2171Assert.Equal("pythonProject-venv-creator", venvCreatorResource.Name);
2199Assert.Equal("pythonProject-venv-creator", venvCreatorResource.Name);
2493Assert.Equal("pythonProject-installer", installerResource.Name);
2526Assert.Equal("pythonProject-installer", installerResource.Name);
Aspire.Hosting.Qdrant (1)
Aspire.Hosting.Qdrant.Tests (11)
Aspire.Hosting.RabbitMQ (3)
Aspire.Hosting.RabbitMQ.Tests (11)
Aspire.Hosting.Radius (88)
Publishing\RadiusDeploymentPipelineStep.cs (11)
90Name = $"deploy-radius-{_environment.Name}",
91Description = $"Deploy Radius environment '{_environment.Name}' via rad CLI",
94step.DependsOn($"publish-radius-{_environment.Name}");
113logger.LogInformation("rad CLI detected on PATH for environment '{EnvironmentName}'", _environment.Name);
133$"Deploying Radius environment '{_environment.Name}' via rad deploy...",
201logger.LogWarning("Cancellation requested — terminating rad deploy process for environment '{EnvironmentName}'", _environment.Name);
217logger.LogInformation("rad deploy exited with code {ExitCode} for environment '{EnvironmentName}'", exitCode, _environment.Name);
226logger.LogError("rad deploy failed for environment '{EnvironmentName}': {ErrorMessage}", _environment.Name, errorMessage);
233$"Radius deployment complete for '{_environment.Name}'",
238logger.LogError(ex, "Unexpected error during rad deploy for environment '{EnvironmentName}'", _environment.Name);
309parameters.Count, _environment.Name);
Publishing\RadiusInfrastructureBuilder.cs (25)
122var envIdentifier = BicepPostProcessor.SanitizeIdentifier(_environment.Name);
587if (!storeConstructs.TryGetValue(store.Name, out var construct))
734construct.EnvironmentName = _environment.Name;
901construct.EnvironmentName = _environment.Name;
1318if (_envParametersByName.TryGetValue(parameter.Name, out var existing))
1323var identifier = Infrastructure.NormalizeBicepIdentifier(parameter.Name);
1333if (_recipeParameters.TryGetValue(parameter.Name, out var recipeParameter))
1343_envParametersByName[parameter.Name] = provisioningParameter;
1828if (!_recipeParameters.TryGetValue(parameter.Name, out var provisioningParameter))
1830var identifier = BicepPostProcessor.SanitizeIdentifier(parameter.Name);
1839$"Recipe parameters bound to Aspire parameters '{existingName}' and '{parameter.Name}' both " +
1848_recipeParameters[parameter.Name] = provisioningParameter;
1849_recipeParameterIdentifiers[identifier] = parameter.Name;
1884new($"A recipe parameter on Radius environment '{_environment.Name}' references {cloud} provider " +
1910resourceType, _environment.Name);
1946var identifier = BicepPostProcessor.SanitizeIdentifier(store.Name);
1949StoreName = store.Name,
1967storeConstructs[store.Name] = construct;
2017$"Unknown secret-store consumer kind '{consumer.Kind}' for store '{consumer.Store.Name}'.");
2060if (storeConstructs.TryGetValue(store.Name, out var construct))
2070$"Environment '{_environment.Name}' references secret store '{store.Name}', but that store is not " +
2148if (!options.SealedSecretManifests.TryGetValue(store.Name, out var manifest))
2150manifest = SealedSecretManifest.ReadValidated(store.Name, manifestPath, defaultNamespace);
2151options.SealedSecretManifests[store.Name] = manifest;
Publishing\SealedSecretApplyStep.cs (11)
47Name = $"apply-sealed-secrets-{_environment.Name}",
48Description = $"Apply and await sealed secrets for '{_environment.Name}' before rad deploy",
51step.DependsOn($"publish-radius-{_environment.Name}");
53step.RequiredBy($"deploy-radius-{_environment.Name}");
104var manifestPath = ResolveManifestPath(storeOutputDir, store.Name, sourceManifestPath);
110var validated = SealedSecretManifest.ReadValidated(store.Name, manifestPath, defaultNamespace);
129ct => ApplyManifestAsync(validated.Content, applyNamespace, kubeContext, store.Name, metadata.Namespace, metadata.Name, manifestPath, logger, ct),
132() => CreateOperationTimeoutException(store.Name, metadata.Namespace, metadata.Name, "apply", store.MaterializationTimeout))
136store.Name, metadata.Namespace, metadata.Name, appliedGeneration, deadline, store.MaterializationTimeout, s_pollInterval,
151() => CreateOperationTimeoutException(store.Name, metadata.Namespace, metadata.Name, "verify", store.MaterializationTimeout))
158$"'{store.Name}' is missing the declared key(s) {string.Join(", ", missing.Select(k => $"'{k}'"))}. " +
Aspire.Hosting.Radius.Tests (10)
Aspire.Hosting.Redis (6)
Aspire.Hosting.Redis.Tests (49)
AddRedisTests.cs (11)
41Assert.Equal("myRedis", containerResource.Name);
69Assert.Equal("myRedis", containerResource.Name);
302Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value);
312Assert.Equal(redis1.Resource.Name, item.Value);
324Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value);
334Assert.Equal(redis2.Resource.Name, item.Value);
346Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value);
356Assert.Equal(redis3.Resource.Name, item.Value);
498Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
520Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]);
545Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
RedisFunctionalTests.cs (38)
53await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
59await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
82await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name);
84var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http");
93var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info";
115[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync()
118hb.AddRedisClient(redis.Resource.Name);
148await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
155[$"ConnectionStrings:{redis.Resource.Name}"] = $"{await redis.Resource.GetConnectionStringAsync()},allowAdmin=true"
158hb.AddRedisClient(redis.Resource.Name);
189await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
191var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http");
207Assert.Equal(redis1.Resource.Name, db.Name);
208Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host);
213Assert.Equal(redis2.Resource.Name, db.Name);
214Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host);
219Assert.Equal(redis3.Resource.Name, db.Name);
220Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host);
257[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
260hb.AddRedisClient(redis1.Resource.Name);
294[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
297hb.AddRedisClient(redis2.Resource.Name);
340[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
343hb.AddRedisClient(redis1.Resource.Name);
375[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
378hb.AddRedisClient(redis2.Resource.Name);
425[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
428hb.AddRedisClient(redis1.Resource.Name);
456[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
459hb.AddRedisClient(redis2.Resource.Name);
524await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
528var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http");
559await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
563var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http");
680await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
681await app.ResourceNotifications.WaitForResourceHealthyAsync(redisCommander.Name, cts.Token);
Aspire.Hosting.RemoteHost.Tests (4)
Aspire.Hosting.Rust (25)
RustDockerfileGenerator.cs (12)
77ValidateDockerfileValue(options.ManifestPath, "cargo manifest path", resource.Name);
78var containerManifestPath = ValidateManifestPath(options.ManifestPath, workingDirectory, resource.Name);
79var targetCacheId = BuildTargetCacheId(resource.Name, containerManifestPath, workingDirectory);
84.ReadAsync(workingDirectory, options.ManifestPath, resource.Name, ReadOnlyDictionary<string, string>.Empty, context.CancellationToken)
91resource.Name);
95ValidateDockerfileValue(target.Name, "resolved Cargo target executable name", resource.Name);
96ValidateDockerfileValue(target.ProfileDirectory, "resolved Cargo profile directory", resource.Name);
97ValidateDockerfileValue(target.Target, "resolved Cargo target triple directory", resource.Name);
108ValidateCargoArgumentsDoNotContainCredentials(cargoArgs, resource.Name);
112ValidateDockerfileValue(cargoArg, "cargo argument", resource.Name);
122ValidateDockerfileValue(buildImage, "Dockerfile build image", resource.Name);
123ValidateDockerfileValue(runtimeImage, "Dockerfile runtime image", resource.Name);
RustHostingExtensions.cs (13)
112$"Cargo arguments for resource '{resource.Name}' have not been resolved yet. " +
150if (!builder.TryCreateResourceBuilder<ContainerResource>(resource.Name, out var containerBuilder)
154$"The published Rust app '{resource.Name}' was not converted to a Dockerfile container resource.");
652$"Cargo arguments for resource '{resource.Name}' have not been resolved yet. " +
699.ReadAsync(workingDirectory, options.ManifestPath, resource.Name, environment, cancellationToken)
702var target = RustCargoTargetResolver.Resolve(metadata, options, executionContext, resource.Name);
726if (!applicationBuilder.TryCreateResourceBuilder<ContainerResource>(resource.Name, out var containerBuilder))
729$"The published Rust app '{resource.Name}' was not converted to a container resource.");
800$"The Rust app '{resource.Name}' targets '{cargoTarget}', " +
906$"The Rust app '{resource.Name}' targets '{target}', which is not compatible with the default " +
915$"The Rust app '{resource.Name}' targets '{target}', but the default Rust build image does not support " +
922$"The Rust app '{resource.Name}' targets '{target}', but the default Rust runtime image is not compatible " +
933$"The Rust app '{resource.Name}' targets '{target}', which cannot be mapped to a supported Docker Linux " +
Aspire.Hosting.Seq.Tests (10)
Aspire.Hosting.SqlServer (4)
Aspire.Hosting.SqlServer.Tests (28)
SqlServerFunctionalTests.cs (27)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
48await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
52await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
84hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
86hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name);
87hb.AddSqlServerClient(newDb.Resource.Name);
182await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
191[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default),
194hb1.AddSqlServerClient(db1.Resource.Name);
268await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
277[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default),
280hb2.AddSqlServerClient(db2.Resource.Name);
374hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
376hb.AddSqlServerClient(newDb.Resource.Name);
382await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
388resourceName: sqlserver.Resource.Name,
435hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
437hb.AddSqlServerClient(newDb.Resource.Name);
443await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
508hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
510hb.AddSqlServerClient(newDb.Resource.Name);
516await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token);
569hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
570hb.AddKeyedSqlServerClient(db.Resource.Name);
579await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
581var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (2)
Aspire.Hosting.Tests (306)
Dcp\DcpExecutorTests.cs (22)
581var executables = GetCreatedExecutablesForResource(kubernetesService, resource.Name);
600executables = GetCreatedExecutablesForResource(kubernetesService, resource.Name);
1134Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == emulator.Resource.Name);
4644var executable = GetCreatedExecutableForResource(kubernetesService, resource.Name);
8886.Where(c => c.AppModelResourceName == container.Resource.Name)
8903await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234);
8904await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765);
8909await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234);
8910await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765);
8994s => s.AppModelResourceName == executable.Resource.Name
9419while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == container.Resource.Name))
9435Assert.Single(createdContainers, c => c.AppModelResourceName == container.Resource.Name);
9436Assert.Single(createdContainers, c => c.AppModelResourceName == waiting.Resource.Name);
9437var waitingConsumingContainer = Assert.Single(createdContainers, c => c.AppModelResourceName == waitingConsumingEndpoint.Resource.Name);
9444Assert.Single(tunnelServices, s => s.AppModelResourceName == executableA.Resource.Name);
9445var executableBTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == executableB.Resource.Name);
9480while (!kubernetesService.CreatedResources.OfType<Executable>().Any(e => e.AppModelResourceName == upstreamExecutable.Resource.Name))
9488while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name))
9504var upstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == upstreamExecutable.Resource.Name);
9505var downstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == downstreamExecutable.Resource.Name);
9506var tunnelDependentDcpContainer = Assert.Single(createdResources.OfType<Container>(), c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name);
9517var upstreamTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == upstreamExecutable.Resource.Name);
DistributedApplicationTests.cs (15)
780using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http");
781using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http");
788var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http");
1106var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
1772await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration);
1775var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http");
1793var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https");
1843using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1917using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
2046await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.NotStarted, token)
2048await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.NotStarted, token)
2054var dcpContainer = Assert.Single(containers, c => c.AppModelResourceName == container.Resource.Name);
2063var dcpExecutable = Assert.Single(executables, e => e.AppModelResourceName == executable.Resource.Name);
2347var expectedServiceName = hasMultipleEndpoints ? $"{redis.Name}-{endpoint.EndpointName}" : redis.Name;
ExternalServiceTests.cs (16)
22Assert.Equal("nuget", externalService.Resource.Name);
35Assert.Equal("nuget", externalService.Resource.Name);
48Assert.Equal("nuget", externalService.Resource.Name);
51Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name);
86Assert.Equal("nuget", externalService.Resource.Name);
102Assert.Equal("nuget", externalService.Resource.Name);
233Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
249Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
341externalService.Resource.Name,
368externalService.Resource.Name,
395externalService.Resource.Name,
420var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
441var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
466var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
507Assert.Equal("service", externalService.Resource.Name);
522Assert.Equal("service", externalService.Resource.Name);
Orchestrator\ApplicationOrchestratorTests.cs (33)
471Assert.True(resourceNotificationService.TryGetCurrentState(resource.Resource.Name, out var currentState));
599await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
602Assert.True(resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waitingEvent));
607await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
608await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
639CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, waiter.Resource.Name));
641await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
643Assert.True(resourceNotificationService.TryGetCurrentState(dependency.Resource.Name, out var dependencyEvent));
648await resourceNotificationService.WaitForResourceAsync(dependency.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
691waiter.Resource.Name,
749waiter.Resource.Name,
800waiter.Resource.Name,
854waiter.Resource.Name,
862waiter.Resource.Name,
909await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
914await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
916Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent));
961waiter.Resource.Name,
965while (!resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waiterEvent)
980await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, cancellationToken).DefaultTimeout();
982Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent));
1013await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
1017await resourceNotificationService.WaitForResourceAsync(referenced.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1018await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1049waiter.Resource.Name,
1054Assert.Equal(new[] { blocker.Resource.Name }, Assert.IsAssignableFrom<IEnumerable<string>>(waitingFor));
1060await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1061await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1190public ReferenceExpression ConnectionStringExpression => ReferenceExpression.Create($"{Name}-connection-string");
1315var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null;
1316var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
1362var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null;
1363var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
Orchestrator\ParameterProcessorTests.cs (14)
605var explicitParameterResource = model.Resources.OfType<ParameterResource>().First(p => p.Name == "explicitParam");
606var referencedParameterResource = model.Resources.OfType<ParameterResource>().First(p => p.Name == "referencedParam");
651Assert.Equal("explicitParam", explicitParameterResource.Name);
677Assert.Equal("envParam", parameterResource.Name);
856Assert.Equal("excludedParam", parameterResource.Name);
1101Assert.Equal(string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceSetParameter, parameter.Name), result.Message);
1152Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode));
1158Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out savedValueNode));
1185Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode));
1529Assert.Equal(string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceDeletedParameter, parameter.Name), result.Message);
1530var section = await capturingStateManager.AcquireSectionAsync($"Parameters:{parameter.Name}").DefaultTimeout();
1547Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode));
1565Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode));
1631var section = await capturingStateManager.AcquireSectionAsync($"Parameters:{parameter.Name}").DefaultTimeout();
ResourceNotificationTests.cs (45)
159Assert.True(notificationService.TryGetCurrentState(resource.Name, out var resourceEvent));
372resource.Name,
374GetWaitingForDependencies(re).SequenceEqual(new[] { dependency1.Name, dependency2.Name }),
385resource.Name,
387GetWaitingForDependencies(re).SequenceEqual(new[] { dependency2.Name }),
390Assert.Equal(new[] { dependency2.Name }, GetWaitingForDependencies(updatedWaitingEvent));
399Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent));
420resource.Name,
422GetWaitingForDependencies(re).SequenceEqual(new[] { dependency1.Name, dependency2.Name }),
438resource.Name,
440GetWaitingForDependencies(re).SequenceEqual(new[] { dependency2.Name }),
443Assert.Equal(new[] { dependency2.Name }, GetWaitingForDependencies(updatedWaitingEvent));
457Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent));
476resource.Name,
478GetWaitingForDependencies(re).SequenceEqual(new[] { dependency1.Name, dependency2.Name }),
490resource.Name,
492GetWaitingForDependencies(re).SequenceEqual(new[] { dependency2.Name }),
495Assert.Equal(new[] { dependency2.Name }, GetWaitingForDependencies(updatedWaitingEvent));
505Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent));
530resource.Name,
535Assert.Equal(new[] { dependency.Name }, GetWaitingForDependencies(waitingEvent));
576Assert.True(notificationService.TryGetCurrentState(resource.Name, out var resourceEvent));
610resource.Name,
681resource.Name,
685Assert.Equal(new[] { dependency.Name }, GetWaitingForDependencies(waitingEvent));
720resource.Name,
724Assert.Equal(new[] { dependency.Name }, GetWaitingForDependencies(waitingEvent));
752resource.Name,
765resource.Name,
779Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent));
795Assert.True(notificationService.TryGetCurrentState(resource.Name, out var waitingEvent));
803Assert.True(notificationService.TryGetCurrentState(resource.Name, out var runningEvent));
822Properties = [new ResourcePropertySnapshot(KnownProperties.Resource.WaitingFor, new[] { dependency.Name })]
826var waitTask = notificationService.WaitForResourceAsync(resource.Name, KnownResourceStates.Running, cts.Token);
856resource.Name,
858GetWaitingForDependencies(re).SequenceEqual(new[] { dependency.Name }),
1554Assert.True(notificationService.TryGetCurrentState(resource.Name, out var initial));
1561Assert.True(notificationService.TryGetCurrentState(resource.Name, out var unchanged));
1577Assert.True(notificationService.TryGetCurrentState(resource.Name, out var initial));
1580Assert.True(notificationService.TryGetCurrentState(resource.Name, out var changed));
1606Assert.True(notificationService.TryGetCurrentState(resource.Name, out var initial));
1612Assert.True(notificationService.TryGetCurrentState(resource.Name, out var changed));
WaitForTests.cs (37)
33await app.ResourceNotifications.WaitForResourceAsync(throwingResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
34await app.ResourceNotifications.WaitForResourceAsync(dependingContainerResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
35await app.ResourceNotifications.WaitForResourceAsync(dependingExecutableResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
108await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
139await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
217await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
224await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token);
245dependency.Resource.Name,
269dependency.Resource.Name,
299await app.ResourceNotifications.WaitForResourceHealthyAsync(dependency.Resource.Name)
328await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
335await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token);
362await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
369await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
377await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
409await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
416await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
424await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
454await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
469await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
501await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token);
516await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
556await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token);
572await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
610await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
624await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
661await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
669await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
677await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
714await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
722await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
730await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
763await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
771await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
875await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
885await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
Aspire.Hosting.Valkey (1)
Aspire.Hosting.Valkey.Tests (12)
Aspire.Hosting.Yarp (1)
Aspire.Hosting.Yarp.Tests (3)
Aspire.Playground.Tests (3)
CustomResources.AppHost (2)
ExternalServices.AppHost (2)
KafkaBasic.AppHost (2)
Pipelines.Library (3)
Stress.AppHost (2)
Testing.Tests (14)
WaitFailures.cs (14)
34await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token);
49await app.ResourceNotifications.WaitForResourceAsync(pwsh.Resource.Name, cancellationToken: cts.Token);
68await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token);
72await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.TerminalStates, cancellationToken: cts.Token);
87await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "StateThatIsNeverUsed", cts.Token);
102await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, ["States", "That", "Are", "Never", "Used"], cts.Token);
117await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => false, cts.Token);
136await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token);
156await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthReports.All(x => x.Status.HasValue), cts.Token);
159await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token);
176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthStatus == HealthStatus.Healthy, cts.Token);
180await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token);
228await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token);
252await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token);
TestProject.AppHost (1)