3 implementations of Resource
Aspire.Hosting (1)
DistributedApplicationResourceBuilder.cs (1)
10public T Resource { get; } = resource;
Aspire.Hosting.Azure.Sql (1)
AzureSqlServerResource.cs (1)
730public T Resource => resource;
Aspire.Hosting.RemoteHost.Tests (1)
CapabilityDispatcherTests.cs (1)
2647public T Resource { get; }
7791 references to Resource
Aspire.Hosting (265)
ApplicationModel\CertificateAuthorityCollectionResourceExtensions.cs (4)
53builder.Resource.Certificates.Add(certificate); 70builder.Resource.Certificates.AddRange(certificates); 87builder.Resource.Certificates.AddRange(certificates.ToArray()); 128builder.Resource.Certificates.AddRange(certificates.ToArray());
ApplicationModel\ReferenceExpression.cs (4)
431_valueProviders.Add(valueProvider.Resource); 432_manifestExpressions.Add(valueProvider.Resource.ValueExpression); 596var unwrapped = valueProvider is IResourceBuilder<IResource> rb ? rb.Resource : valueProvider; 716builder.AppendFormatted(valueProvider.Resource, format);
ApplicationModel\ResourceExtensions.cs (3)
598(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await resource.GetValue(executionContext, key, provider, logger, cancellationToken).ConfigureAwait(false), 600(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false), 1863VisitReferences(resourceBuilder.Resource, visitedValues, visitor);
Ats\CoreExports.cs (1)
179return resource.Resource.Name;
Ats\LoggingExports.cs (1)
107loggerService.Complete(resource.Resource);
Ats\NotificationExports.cs (2)
71return notificationService.WaitForDependenciesAsync(resource.Resource, CancellationToken.None); 99return notificationService.PublishUpdateAsync(resource.Resource, snapshot =>
ContainerRegistryResourceBuilderExtensions.cs (3)
49var endpointExpression = ReferenceExpression.Create($"{endpoint.Resource}"); 51? ReferenceExpression.Create($"{repository.Resource}") 194return builder.WithAnnotation(new ContainerRegistryReferenceAnnotation(registry.Resource));
ContainerResourceBuilderExtensions.cs (33)
55if (builder.Resource.IsExcludedFromPublish()) 60if (builder.Resource.RequiresImageBuild()) 64Name = $"build-{builder.Resource.Name}", 69builder.Resource, 75Resource = builder.Resource 80if (builder.Resource.RequiresImageBuildAndPush()) 84Name = $"push-{builder.Resource.Name}", 85Action = ctx => PipelineStepHelpers.PushImageToRegistryAsync(builder.Resource, ctx), 88Resource = builder.Resource 98var buildSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.BuildCompute); 99var pushSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.PushContainerImage); 342builder.Resource.Entrypoint = entrypoint; 360if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 366if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation && 391if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 432if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation) 439builder.Resource.Annotations.Add(imageAnnotation); 460if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation) 483if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 617throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a container image specified. Use WithImage to specify the container image and tag."); 631return builder.WithManifestPublishingCallback(context => context.WriteContainerAsync(builder.Resource)); 717if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 867if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 1154var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1158throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildArg."); 1206if (value.Resource.Secret) 1208throw new InvalidOperationException($"Cannot add secret parameter '{value.Resource.Name}' as build argument '{name}' while configuring resource '{builder.Resource.Name}'. Use WithBuildSecret instead."); 1211return builder.WithBuildArg(name, value.Resource); 1285var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1289throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildSecret."); 1292annotation.BuildSecrets[name] = value.Resource; 1718var callbackAnnotation = builder.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
DistributedApplicationEventingExtensions.cs (2)
141builder.ApplicationBuilder.Eventing.Subscribe<TEvent>(builder.Resource, (evt, ct) => callback(builder.Resource, evt, ct));
DotnetProgramResourceBuilderExtensions.cs (5)
63builder.Resource.Annotations.Add(new EndpointEnvironmentInjectionFilterAnnotation(filter)); 120if (builder.Resource is not IComputeResource) 123$"Resource '{builder.Resource.Name}' must implement {nameof(IComputeResource)} to use .NET SDK publishing."); 126_ = builder.Resource.GetProjectMetadata(); 127DotnetProgramPublishing.Configure(builder.Resource);
DotnetToolResourceExtensions.cs (6)
129builder.Resource.ToolConfiguration?.PackageId = packageId; 145builder.Resource.ToolConfiguration?.Version = version; 160builder.Resource.ToolConfiguration?.Prerelease = true; 176builder.Resource.ToolConfiguration?.Sources.Add(source); 191builder.Resource.ToolConfiguration?.IgnoreExistingFeeds = true; 206builder.Resource.ToolConfiguration?.IgnoreFailedSources = true;
ExecutableResourceBuilderExtensions.cs (12)
136if (builder.ApplicationBuilder.TryCreateResourceBuilder<ExecutableContainerResource>(builder.Resource.Name, out var existingBuilder)) 154builder.ApplicationBuilder.Resources.Remove(builder.Resource); 156var container = new ExecutableContainerResource(builder.Resource); 159cb.WithImage(builder.Resource.Name); 160var dockerfileContextPath = builder.Resource.WorkingDirectory; 161if (builder.Resource is IDotnetProgramResource && 162builder.Resource.TryGetProjectMetadata(out var projectMetadata)) 172if (builder.Resource is IDotnetProgramResource) 200var executableAnnotation = builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault(); 212builder.Resource.Annotations.Add(executableAnnotation); 231if (builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault() is { } executableAnnotation) 241throw new InvalidOperationException($"The resource '{builder.Resource.Name}' is missing the ExecutableAnnotation");
ExternalServiceBuilderExtensions.cs (14)
94return AddExternalServiceImpl(builder, name, urlParameter: urlParameter.Resource); 227if (builder.Resource.UrlParameter is null) 229if (builder.Resource.Uri is null) 231throw new ArgumentException($"The URL for external service '{builder.Resource.Name}' is null.", nameof(builder)); 233else if (builder.Resource.Uri.Scheme != "http" && builder.Resource.Uri.Scheme != "https") 235throw new ArgumentException($"The URL '{builder.Resource.Uri}' for external service '{builder.Resource.Name}' cannot be used for HTTP health checks because it has a non-HTTP scheme.", nameof(builder)); 239Debug.Assert(builder.Resource.Uri is not null || builder.Resource.UrlParameter is not null, "Either Uri or UrlParameter must be provided."); 244var healthCheckKey = $"{builder.Resource.Name}_external{pathKey}_{statusCode}_check"; 250if (builder.Resource.UrlParameter is not null) 256builder.Resource.UrlParameter, 266var uri = builder.Resource.Uri!;
OtlpConfigurationExtensions.cs (4)
72builder.Resource.Annotations.Add(new OtlpExporterAnnotation { RequiredProtocol = protocol }); 74builder.Resource, 219AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment); 256AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment, protocol);
ParameterResourceBuilderExtensions.cs (5)
212builder.Resource.Description = description; 213builder.Resource.EnableDescriptionMarkdown = enableMarkdown; 245builder.Resource.Annotations.Add(new InputGeneratorAnnotation(createInput)); 262builder.Resource.Annotations.Add(new InputGeneratorAnnotation(parameter => new InteractionInput 385var parameter = new ParameterResource(builder.Resource.Name, _ => "", secret: true);
Pipelines\PipelineStepFactoryExtensions.cs (1)
123Resource = builder.Resource
ProjectResourceBuilderExtensions.cs (20)
506var projectMetadata = builder.Resource.GetProjectMetadata(); 510if (!builder.Resource.TryGetLastAnnotation<ProjectLaunchDefaultsAnnotation>(out var launchDefaults)) 521$"Project defaults have already been applied to resource '{builder.Resource.Name}'. " + 531builder.Resource, 534mode => ProjectLaunchConfigurationFactory.Create(builder.Resource, mode), 572if (!string.Equals(builder.Resource.Name, KnownResourceNames.AspireDashboard, StringComparisons.ResourceName)) 591var logger = resourceLogger.GetLogger(builder.Resource); 632var projectResource = builder.Resource; 989builder.Resource.Annotations.Add(new EndpointEnvironmentInjectionFilterAnnotation(filter)); 1021if (builder.ApplicationBuilder.TryCreateResourceBuilder<ProjectContainerResource>(builder.Resource.Name, out var existingBuilder)) 1035builder.ApplicationBuilder.Resources.Remove(builder.Resource); 1037var container = new ProjectContainerResource(builder.Resource); 1040cb.WithImage(builder.Resource.Name); 1042var projectFilePath = builder.Resource.GetProjectMetadata().ProjectPath; 1147foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 1198foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 1230foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment))
ResourceBuilderExtensions.cs (138)
140if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource) 147SourceResource = sourceBuilder.Resource 151throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration."); 208if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource) 223throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration."); 229foreach (var annotation in builder.Resource.Annotations.OfType<ContainerLifetimeAnnotation>().ToArray()) 231builder.Resource.Annotations.Remove(annotation); 447builder.WithReferenceRelationship(externalService.Resource); 449if (externalService.Resource.Uri is not null) 451builder.WithEnvironment(name, externalService.Resource.Uri.ToString()); 453else if (externalService.Resource.UrlParameter is not null) 460var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false); 463throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 467context.EnvironmentVariables[name] = externalService.Resource.UrlParameter; 489builder.WithReferenceRelationship(parameter.Resource); 493context.EnvironmentVariables[name] = parameter.Resource; 516builder.WithReferenceRelationship(resource.Resource); 520context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false); 734builder.Resource.WithSerializedAnnotation(annotationId, json); 772return GetSerializedAnnotation(builder.Resource, annotationId); 803return HasSerializedAnnotation(builder.Resource, annotationId); 855return GetAnnotation(builder.Resource, definition); 1217var hasConnectionString = source.Resource is IResourceWithConnectionString && connectionStringSource is not null; 1218var hasServiceDiscovery = source.Resource is IResourceWithServiceDiscovery && serviceDiscoverySource is not null; 1219var hasExternalService = source.Resource is ExternalServiceResource && externalServiceSource is not null; 1269throw new InvalidOperationException($"The resource '{source.Resource.Name}' can't be used with withReference because it doesn't provide a connection string, service discovery, or a custom withReference implementation."); 1296return TryDispatchCustomWithReference(builder, source, connectionName, optional, name, source.Resource.GetType(), out dispatchedBuilder); 1369var resource = source.Resource; 1375builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1521ApplyEndpoints(builder, source.Resource); 1553ApplyEndpoints(builder, source.Resource, endpointName: null, name); 1577throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it must be absolute."); 1582throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a fragment."); 1587throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a query string."); 1591builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1622builder.WithReferenceRelationship(externalService.Resource); 1625builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1628if (externalService.Resource.Uri is { } uri) 1632var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1638var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1642else if (externalService.Resource.UrlParameter is not null) 1648var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1653discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0"; 1656else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message)) 1658discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1664throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 1669context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter; 1674context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter; 1709var endpointReferenceAnnotation = builder.Resource.Annotations 1717if (builder.Resource.IsContainer()) 1779var endpoint = builder.Resource.Annotations 1796builder.Resource.Annotations.Add(endpoint); 1846!builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(endpoint => string.Equals(endpoint.Name, endpointName, StringComparisons.EndpointAnnotationName))) 1883var existing = builder.Resource.Annotations.OfType<EndpointAnnotation>() 1964if (env is null || builder.Resource is not IResourceWithEndpoints resourceWithEndpoints || builder.Resource is not IResourceWithEnvironment) 2174if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints)) 2205return builder.Resource.GetEndpoint(name, contextNetworkId); 2222return builder.Resource.GetEndpoint(name); 2502if (builder.Resource is IResourceWithEndpoints resource) 2516context.Logger.LogWarning("Could not execute callback to customize endpoint URL as no endpoint with name '{EndpointName}' could be found on resource '{ResourceName}'.", endpointName, builder.Resource.Name); 2562context.Logger.LogWarning("Could not execute callback to add an endpoint URL as no endpoint with name '{EndpointName}' could be found on resource '{ResourceName}'.", endpointName, builder.Resource.Name); 2602if (resourceComparer.Equals(builder.Resource, endpoint.Resource)) 2604context.Logger.LogWarning("Could not execute callback to customize endpoint URL as no URL for endpoint '{EndpointName}' could be found on resource '{ResourceName}'.", endpoint.EndpointName, builder.Resource.Name); 2645Source = source.Resource, 2684builder.Resource.Annotations 2687.ForEach(w => builder.Resource.Annotations.Remove(w)); 2805if (builder.Resource as IResource == dependency.Resource) 2807throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2810if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2812throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2815if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 2828builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2831return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior }); 2928if (builder.Resource as IResource == dependency.Resource) 2930throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2933if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2935throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2938if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 2950if (dependency.Resource is ConnectionStringResource cs) 2961builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2964return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior }); 3031if (builder.Resource as IResource == dependency.Resource) 3033throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 3036if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 3038throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 3041builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 3043return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode)); 3091if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key)) 3093throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'."); 3180?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 3184throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint with name '{endpoint.EndpointName}' and scheme '{endpoint.Scheme}' is not an HTTP endpoint."); 3197throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'."); 3203var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check"; 3299var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 3302builder.Resource.Annotations.Remove(existingAnnotation); 3366var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 3369builder.Resource.Annotations.Remove(existingAnnotation); 4055?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 4059throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint with name '{endpoint.EndpointName}' and scheme '{endpoint.Scheme}' is not an HTTP endpoint."); 4367CertificateAuthorityCollections = { certificateAuthorityCollection.Resource }, 4369if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4373if (existingCollection != certificateAuthorityCollection.Resource) 4426if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4477if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4590Password = password?.Resource, 4626Password = password?.Resource, 4733var resource = builder.Resource; 4780var endpoints = builder.Resource.GetEndpoints(); 4790throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as the endpoint with name '{matchingEndpoint.EndpointName}' and scheme '{matchingEndpoint.Scheme}' is not an HTTP endpoint."); 4798throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}"); 4806var endpoints = builder.Resource.GetEndpoints(); 4818throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints."); 4855if (!builder.Resource.Annotations.OfType<ResourceRelationshipAnnotation>().Any(r => ReferenceEquals(r.Resource, resource) && r.Type == type)) 4880return builder.WithRelationship(resourceBuilder.Resource, type); 4946AddReference(resourceBuilder.Resource); 4979return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference)); 5012return builder.WithParentRelationship(parent.Resource); 5078child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent); 5172builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource)); 5423builder.Resource.Name, 5452var workingDirectory = Path.GetFullPath(builder.Resource.WorkingDirectory); 5563var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 5591if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation) 5593builder.Resource.Annotations.Remove(existingAnnotation);
TerminalResourceBuilderExtensions.cs (3)
76if (builder.Resource.Annotations.OfType<TerminalAnnotation>().Any()) 79$"Resource '{builder.Resource.Name}' already has a terminal configured. Call WithTerminal() only once per resource."); 98var parent = builder.Resource;
Utils\ImageNameGenerator.cs (1)
18return builder.Resource.Name.ToLowerInvariant();
VolumeNameGenerator.cs (1)
33var resourceName = builder.Resource.Name;
VolumeResourceBuilderExtensions.cs (2)
79if (builder.Resource is not IResourceWithEnvironment) 82$"Resource '{builder.Resource.Name}' does not support environment variables and cannot use the '{env}' volume path variable.");
Aspire.Hosting.Azure (48)
AzureBicepResourceExtensions.cs (15)
60return new BicepOutputReference(name, builder.Resource); 72return new BicepSecretOutputReference(name, builder.Resource); 135builder.Resource.Parameters[name] = null; 186builder.Resource.Parameters[name] = value; 203builder.Resource.Parameters[name] = value; 221builder.Resource.Parameters[name] = value; 239builder.Resource.Parameters[name] = valueCallback; 255return builder.WithParameter(name, value.Resource); 275builder.Resource.Parameters[name] = value; 293builder.WithReferenceRelationship(value.Resource); 295builder.Resource.Parameters[name] = value.Resource; 315builder.Resource.Parameters[name] = value; 335builder.Resource.Parameters[name] = value; 355builder.Resource.Parameters[name] = value;
AzureEnvironmentResourceExtensions.cs (4)
116builder.Resource.Location = location.Resource; 140builder.Resource.ResourceGroupName = resourceGroup.Resource;
AzureProvisioningResourceExtensions.cs (2)
48builder.Resource.ConfigureInfrastructure += configure; 134return parameterResourceBuilder.Resource.AsProvisioningParameter(infrastructure, parameterName);
AzureResourceExtensions.cs (2)
74var annotations = builder.Resource.Annotations.OfType<DefaultRoleAssignmentsAnnotation>().ToList(); 77builder.Resource.Annotations.Remove(annotation);
AzureUserAssignedIdentityExtensions.cs (1)
72builder.WithAnnotation(new AppIdentityAnnotation(identityResourceBuilder.Resource));
ExistingAzureResourceExtensions.cs (24)
54return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 109return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 164return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 203return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 260return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 317return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 374return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 434return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 494return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 553return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true); 605return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true); 657return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true);
Aspire.Hosting.Azure.AppConfiguration (3)
AzureAppConfigurationExtensions.cs (2)
120var surrogate = new AzureAppConfigurationEmulatorResource(builder.Resource); 143return builder.WithBindMount(path ?? $".aace/{builder.Resource.Name}", "/app/.aace", isReadOnly: false);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.AppContainers (17)
AzureContainerAppExtensions.cs (8)
928builder.Resource.UseAzdNamingConvention = true; 959builder.Resource.UseCompactResourceNaming = true; 1014builder.Resource.UseUniqueResourceNaming = true; 1043builder.Resource.IsExpress = true; 1057builder.Resource.EnableDashboard = enable; 1078builder.Resource.PreserveHttpEndpoints = !upgrade; 1097builder.WithAnnotation(new AzureLogAnalyticsWorkspaceReferenceAnnotation(workspaceBuilder.Resource)); 1154builder.WithAnnotation(new AzureContainerAppEnvironmentAcrPullIdentityAnnotation(identityBuilder.Resource));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
45if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 54Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 55Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 106if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 107builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 115var identityName = $"{builder.Resource.Name}-mi"; 119$"Cannot create the cross-scope ACR pull identity '{identityName}' for environment '{builder.Resource.Name}' because a resource with that name already exists. Call 'WithAcrPullIdentity' on the environment to select an existing identity, or use a different resource name."); 143builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 144if (builder.Resource is AzureBicepResource environment)
Aspire.Hosting.Azure.ApplicationInsights (1)
AzureApplicationInsightsExtensions.cs (1)
156return builder.WithLogAnalyticsWorkspace(logAnalyticsWorkspace.Resource.WorkspaceId);
Aspire.Hosting.Azure.AppService (23)
AzureAppServiceComputeResourceExtensions.cs (2)
90if (!builder.Resource.HasAnnotationOfType<AzureAppServiceWebsiteCustomizationAnnotation>() && 91!builder.Resource.HasAnnotationOfType<AzureAppServiceWebsiteSlotCustomizationAnnotation>())
AzureAppServiceEnvironmentExtensions.cs (12)
331builder.Resource.PreserveHttpEndpoints = !upgrade; 345builder.Resource.EnableDashboard = enable; 358builder.Resource.EnableApplicationInsights = true; 394builder.Resource.ApplicationInsightsLocation = applicationInsightsLocation; 408builder.Resource.ApplicationInsightsLocationParameter = applicationInsightsLocation.Resource; 422builder.Resource.ApplicationInsightsResource = applicationInsightsBuilder.Resource; 438builder.Resource.DeploymentSlotParameter = deploymentSlot.Resource; 473builder.Resource.DeploymentSlot = deploymentSlot; 542builder.WithAnnotation(new AzureAppServiceEnvironmentAcrPullIdentityAnnotation(identityBuilder.Resource));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
45if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 54Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 55Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 106if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 107builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 115var identityName = $"{builder.Resource.Name}-mi"; 119$"Cannot create the cross-scope ACR pull identity '{identityName}' for environment '{builder.Resource.Name}' because a resource with that name already exists. Call 'WithAcrPullIdentity' on the environment to select an existing identity, or use a different resource name."); 143builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 144if (builder.Resource is AzureBicepResource environment)
Aspire.Hosting.Azure.CognitiveServices (5)
AzureOpenAIExtensions.cs (4)
175builder.Resource.AddDeployment(deployment); 198var deployment = new AzureOpenAIDeploymentResource(name, modelName, modelVersion, builder.Resource); 199builder.Resource.AddDeployment(deployment); 218configure(builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.ConnectorNamespace (48)
AzureConnectorNamespaceExtensions.cs (48)
280if (builder.Resource.Connections.Any(connection => 284$"Connector connection '{connectionName}' is already registered on Connector Namespace '{builder.Resource.Name}'."); 292builder.Resource); 294builder.Resource.Connections.Add(connection); 326var configurationName = connectionName ?? connection.Resource.Name; 329connection.Resource.Parent.NameOutputReference); 332connection.Resource.ConnectionName); 348if (!string.IsNullOrWhiteSpace(builder.Resource.DisplayName)) 351$"Connector connection '{builder.Resource.Name}' configures a display name and cannot be marked as existing."); 353if (builder.Resource.AccessPolicies.Count > 0) 356$"Connector connection '{builder.Resource.Name}' configures access policies and cannot be marked as existing."); 359builder.Resource.IsExisting = true; 391if (builder.Resource.IsExisting) 394$"Existing connector connection '{builder.Resource.Name}' is read-only and cannot create an access policy."); 399var resourceName = GetValidatedAccessPolicyResourceName(builder.Resource, name, policyName); 401builder.Resource.AccessPolicies.Add(new AzureConnectorNamespaceConnectionAccessPolicyResource( 404builder.Resource, 433if (builder.Resource.IsExisting) 436$"Existing connector connection '{builder.Resource.Name}' is read-only and cannot create an access policy."); 441var resourceName = GetValidatedAccessPolicyResourceName(builder.Resource, name, policyName); 443builder.Resource.AccessPolicies.Add( 447builder.Resource, 448identity.Resource)); 471if (builder.Resource.McpServerConfigs.Any(config => 475$"MCP server configuration '{configName}' is already registered on Connector Namespace '{builder.Resource.Name}'."); 482builder.Resource); 484builder.Resource.McpServerConfigs.Add(config); 499if (builder.Resource.Connectors.Count > 0) 502$"MCP server configuration '{builder.Resource.Name}' has connector routes and cannot be marked as existing."); 505if (!string.IsNullOrWhiteSpace(builder.Resource.Description)) 508$"MCP server configuration '{builder.Resource.Name}' configures a description and cannot be marked as existing."); 511if (builder.Resource.AccessPolicies.Count > 0) 514$"MCP server configuration '{builder.Resource.Name}' configures access policies and cannot be marked as existing."); 517builder.Resource.IsExisting = true; 544if (builder.Resource.IsExisting) 547$"Existing MCP server configuration '{builder.Resource.Name}' is read-only and cannot create an access policy."); 550var resourceName = GetValidatedMcpAccessPolicyResourceName(builder.Resource, name, options.ObjectId); 551builder.Resource.AccessPolicies.Add(new AzureConnectorNamespaceMcpAccessPolicyResource( 553builder.Resource, 588if (builder.Resource.IsExisting) 591$"Existing MCP server configuration '{builder.Resource.Name}' is read-only."); 594if (!ReferenceEquals(builder.Resource.Parent, connection.Resource.Parent)) 597$"Connector connection '{connection.Resource.Name}' belongs to a different Connector Namespace."); 600if (builder.Resource.Connectors.Count > 0) 603$"MCP server configuration '{builder.Resource.Name}' already has a connector. " + 619connection.Resource); 641builder.Resource.Connectors.Add(connectorDefinition);
Aspire.Hosting.Azure.ContainerRegistry (5)
AzureContainerRegistryExtensions.cs (4)
96builder.WithAnnotation(new ContainerRegistryReferenceAnnotation(registryBuilder.Resource)); 118var containerRegistry = builder.Resource.ContainerRegistry ?? throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have an associated Azure Container Registry."); 119var registry = containerRegistry as AzureContainerRegistryResource ?? throw new InvalidOperationException($"The Container Registry associated with resource '{builder.Resource.Name}' is not an Azure Container Registry.");
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.CosmosDB (23)
AzureCosmosDBExtensions.cs (23)
105builder.Resource.IsVNextEmulator = useVNext; 126throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{builder.Resource.Name}' resource but the connection string was null."); 164var emulatorSurrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 185var password = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-certificate-passphrase"); 222var healthCheckKey = $"{builder.Resource.Name}_check"; 233var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 277var isVNext = builder.Resource.InnerResource.IsVNextEmulator; 323if (builder.Resource.InnerResource.IsVNextEmulator) 372var database = new AzureCosmosDBDatabaseResource(name, databaseName, builder.Resource); 373builder.Resource.Databases.Add(database); 397var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPath, builder.Resource); 398builder.Resource.Containers.Add(container); 454var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPaths, builder.Resource); 456builder.Resource.Containers.Add(container); 471builder.Resource.UseDefaultAzureSku = true; 489if (!builder.Resource.InnerResource.IsVNextEmulator) 552var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 553.WithParentRelationship(builder.Resource); 561if (builder.Resource.IsEmulator) 563data.Model.Resources.Remove(kv.Resource); 598var azureResource = builder.Resource; 599azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 600azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}");
Aspire.Hosting.Azure.EventHubs (14)
AzureEventHubsExtensions.cs (13)
169var hub = new AzureEventHubResource(name, hubName, builder.Resource); 170builder.Resource.Hubs.Add(hub); 189configure(builder.Resource); 214var consumerGroup = new AzureEventHubConsumerGroupResource(name, groupName, builder.Resource); 215builder.Resource.ConsumerGroups.Add(consumerGroup); 256if (builder.Resource.IsEmulator) 284.AddAzureStorage($"{builder.Resource.Name}-storage") 287var surrogate = new AzureEventHubsEmulatorResource(builder.Resource); 299var storage = storageResource.Resource; 317var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 330var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 338var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>(); 377return builder.WithBindMount(path ?? $".eventhubs/{builder.Resource.Name}", "/data", isReadOnly: false);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.FrontDoor (5)
AzureFrontDoorExtensions.cs (5)
194if (builder.Resource.Annotations 196.Any(a => a.Resource.Name == resource.Resource.Name)) 199$"Origin resource '{resource.Resource.Name}' has already been added to Azure Front Door resource '{builder.Resource.Name}'. " + 203return builder.WithAnnotation(new AzureFrontDoorOriginAnnotation(resource.Resource));
Aspire.Hosting.Azure.Functions (19)
AzureFunctionsProjectResourceExtensions.cs (12)
156.Resource; 266var launchProfile = builder.Resource.GetEffectiveLaunchProfile(); 310var targetEndpoint = builder.Resource.GetEndpoint(useHttps ? "https" : "http"); 328builder.Resource.HostStorage = storage.Resource; 348destination.WithReferenceRelationship(source.Resource); 352connectionName ??= source.Resource.Name; 353source.Resource.ApplyAzureFunctionsConfiguration(context.EnvironmentVariables, connectionName); 364if (source.Resource is not IResourceWithConnectionString || source.Resource is not IResourceWithAzureFunctionsConfig azureFunctionsConfig) 379destination.WithReferenceRelationship(source.Resource); 383connectionName ??= source.Resource.Name;
DurableTask\DurableTaskResourceExtensions.cs (6)
98builder.WithAnnotation(new DurableTaskSchedulerConnectionStringAnnotation(connectionString.Resource)); 165var emulatorResource = new DurableTaskSchedulerEmulatorResource(builder.Resource); 181.Where(th => th.Parent == builder.Resource) 224var hub = new DurableTaskHubResource(name, builder.Resource); 236var url = builder.Resource.IsEmulator 293return builder.WithAnnotation(new DurableTaskHubNameAnnotation(taskHubName.Resource));
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.KeyVault (12)
AzureKeyVaultResourceExtensions.cs (11)
241return builder.Resource.GetSecret(secretName); 257return builder.AddSecret(name, name, parameterResource.Resource); 298var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, parameterResource); 299builder.Resource.Secrets.Add(secret); 319var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, value); 320builder.Resource.Secrets.Add(secret); 339return builder.AddSecret(name, secretName, parameterResource.Resource); 358var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, parameterResource); 359builder.Resource.Secrets.Add(secret); 380var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, value); 381builder.Resource.Secrets.Add(secret);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Kubernetes (46)
AzureCertManagerExtensions.cs (1)
42var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment);
AzureKubernetesEnvironmentExtensions.cs (33)
77resource.KubernetesEnvironment = k8sEnvBuilder.Resource; 91resource.DefaultContainerRegistry = defaultRegistry.Resource; 92resource.Annotations.Add(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource)); 93k8sEnvBuilder.WithAnnotation(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource)); 98resource.Parameters["acrName"] = defaultRegistry.Resource.NameOutputReference; 177builder.Resource.NodePools.Add(config); 179var nodePool = new AksNodePoolResource(name, config, builder.Resource); 230builder.Resource.NodePools.RemoveAll(p => p.Mode is AksNodePoolMode.System); 231builder.Resource.NodePools.Insert(0, new AksNodePoolConfig("system", vmSize, minCount, maxCount, AksNodePoolMode.System)); 262builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id), ResourceAnnotationMutationBehavior.Replace); 298builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id)); 302builder.Resource.AksParent.NodePoolSubnets[builder.Resource.Name] = subnet.Resource.Id; 329if (builder.Resource.DefaultContainerRegistry is not null) 331builder.ApplicationBuilder.Resources.Remove(builder.Resource.DefaultContainerRegistry); 332builder.Resource.DefaultContainerRegistry = null; 338new ContainerRegistryReferenceAnnotation(registry.Resource), 344var staleAnnotations = builder.Resource.KubernetesEnvironment.Annotations 348builder.Resource.KubernetesEnvironment.Annotations.Remove(old); 351builder.Resource.KubernetesEnvironment.Annotations.Add( 352new ContainerRegistryReferenceAnnotation(registry.Resource)); 356builder.Resource.Parameters["acrName"] = registry.Resource.NameOutputReference; 426builder.Resource.GatewayApiEnabled = true; 427builder.Resource.ApplicationLoadBalancerEnabled = true; 443var existingDelegation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().LastOrDefault(); 456builder.Resource, 457subnet.Resource.Id, 458subnet.Resource, 466builder.Resource.LoadBalancers.Add(lb); 503builder.Resource.OidcIssuerEnabled = enabled; 504builder.Resource.WorkloadIdentityEnabled = enabled;
AzureKubernetesIngressExtensions.cs (11)
51var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment); 81var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment); 135var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment); 168var lb = loadBalancer.Resource; 172builder.Resource.GatewayAnnotations["alb.networking.azure.io/alb-name"] = 174builder.Resource.GatewayAnnotations["alb.networking.azure.io/alb-namespace"] = 179builder.Resource.GatewayClassName ??= ReferenceExpression.Create($"azure-alb-external"); 206var lb = loadBalancer.Resource; 207builder.Resource.IngressAnnotations["alb.networking.azure.io/alb-name"] = 209builder.Resource.IngressAnnotations["alb.networking.azure.io/alb-namespace"] = 212builder.Resource.IngressClassName ??= ReferenceExpression.Create($"azure-alb-external");
AzureKubernetesPersistentVolumeExtensions.cs (1)
60var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment);
Aspire.Hosting.Azure.Kubernetes.Tests (224)
AzureKubernetesEnvironmentExtensionsTests.cs (91)
30Assert.Equal("aks", aks.Resource.Name); 31Assert.Equal("{aks.outputs.id}", aks.Resource.Id.ValueExpression); 32Assert.Equal("{aks.outputs.clusterFqdn}", aks.Resource.ClusterFqdn.ValueExpression); 33Assert.Equal("{aks.outputs.oidcIssuerUrl}", aks.Resource.OidcIssuerUrl.ValueExpression); 35var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 52Assert.Equal(2, aks.Resource.NodePools.Count); 54Assert.Equal("gpu", gpuPool.Resource.Name); 55Assert.Equal("gpu", gpuPool.Resource.Config.Name); 56Assert.Equal("Standard_NC6s_v3", gpuPool.Resource.Config.VmSize); 57Assert.Equal(0, gpuPool.Resource.Config.MinCount); 58Assert.Equal(5, gpuPool.Resource.Config.MaxCount); 59Assert.Equal(AksNodePoolMode.User, gpuPool.Resource.Config.Mode); 60Assert.Same(aks.Resource, gpuPool.Resource.AksParent); 74Assert.Single(aks.Resource.NodePools); 75var defaultPool = aks.Resource.NodePools[0]; 94Assert.True(aks.Resource.OidcIssuerEnabled); 95Assert.True(aks.Resource.WorkloadIdentityEnabled); 96Assert.Null(aks.Resource.KubernetesVersion); 97Assert.False(aks.Resource.IsPrivateCluster); 98Assert.False(aks.Resource.ContainerInsightsEnabled); 99Assert.Null(aks.Resource.LogAnalyticsWorkspace); 113Assert.NotNull(aks.Resource.KubernetesEnvironment); 114Assert.Equal("aks", aks.Resource.KubernetesEnvironment.Name); 115Assert.True(aks.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var annotation)); 132Assert.Same(aks.Resource, computeEnvironment); 184Assert.True(aks.Resource.OidcIssuerEnabled); 185Assert.True(aks.Resource.WorkloadIdentityEnabled); 203Assert.True(project.Resource.TryGetLastAnnotation<AppIdentityAnnotation>(out var appIdentity)); 204Assert.Same(identity.Resource, appIdentity.IdentityResource); 216Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(aks.Resource); 228Assert.IsAssignableFrom<IAzureNspAssociationTarget>(aks.Resource); 266Assert.True(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 269Assert.Single(aks.Resource.NodePoolSubnets); 270Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu")); 273Assert.True(gpuPool.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 292Assert.False(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 295Assert.Single(aks.Resource.NodePoolSubnets); 296Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu")); 314Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 315Assert.Same(gpuPool.Resource, affinity.NodePool); 333Assert.Equal(3, aks.Resource.NodePools.Count); 334Assert.Equal("cpu", pool1.Resource.Name); 335Assert.Equal("gpu", pool2.Resource.Name); 346Assert.NotNull(aks.Resource.DefaultContainerRegistry); 347Assert.Equal("aks-acr", aks.Resource.DefaultContainerRegistry.Name); 362Assert.Null(aks.Resource.DefaultContainerRegistry); 365Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation)); 366Assert.Same(explicitAcr.Resource, annotation.Registry); 381Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var aksAnnotation)); 382Assert.Same(aks.Resource.DefaultContainerRegistry, aksAnnotation.Registry); 384Assert.True(aks.Resource.KubernetesEnvironment 386Assert.Same(aks.Resource.DefaultContainerRegistry, annotation.Registry); 401Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 402var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 421var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 439Assert.Equal("Standard_D2s_v5", aks.Resource.NodePools[0].VmSize); 445Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 446Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize); 462Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 463var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 484Assert.Equal(2, aks.Resource.NodePools.Count); 485Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize); 486Assert.Equal("gpu", gpuPool.Resource.Name); 514var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 534var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 550Assert.True(aks.Resource.GatewayApiEnabled); 551Assert.True(aks.Resource.ApplicationLoadBalancerEnabled); 552Assert.True(aks.Resource.RequiresPreviewIngressApi); 555Assert.True(albSubnet.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out var delegation)); 571Assert.Same(aks.Resource, lb.Resource.Parent); 572Assert.Equal("alb-lb", lb.Resource.AlbName); 573Assert.True(lb.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var stepAnnotations)); 591Assert.NotSame(lb1.Resource, lb2.Resource); 592Assert.Equal("alb-lb1", lb1.Resource.AlbName); 593Assert.Equal("alb-lb2", lb2.Resource.AlbName); 596Assert.True(lb1.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb1Steps)); 597Assert.True(lb2.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb2Steps)); 603Assert.True(alb1.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _)); 604Assert.True(alb2.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _)); 624var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 628Assert.Equal("Microsoft.Netapp/volumes", lb.Resource.DisplacedDelegationServiceName); 645var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 649Assert.Null(lb1.Resource.DisplacedDelegationServiceName); 650Assert.Null(lb2.Resource.DisplacedDelegationServiceName); 666var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 668Assert.Null(lb.Resource.DisplacedDelegationServiceName); 689var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 693Assert.Equal("Microsoft.Sql/managedInstances", lb.Resource.DisplacedDelegationServiceName);
AzureKubernetesHelmChartTests.cs (12)
24Assert.IsType<KubernetesHelmChartResource>(chart.Resource); 25Assert.IsType<KubernetesEnvironmentResource>(chart.Resource.Parent); 37Assert.Equal("cert-manager", chart.Resource.Name); 38Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference); 39Assert.Equal("1.17.0", chart.Resource.ChartVersion); 53Assert.Equal(2, chart.Resource.Values.Count); 54Assert.Equal("true", chart.Resource.Values["crds.enabled"]); 55Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]); 68Assert.Equal("ingress-nginx", chart.Resource.Namespace); 81Assert.Equal("my-nginx", chart.Resource.ReleaseName); 94Assert.True(chart.Resource.DestroyOnUninstall); 106Assert.False(chart.Resource.DestroyOnUninstall);
AzureKubernetesInfrastructureTests.cs (101)
32Assert.Single(aks.Resource.NodePools); 33Assert.Equal(AksNodePoolMode.System, aks.Resource.NodePools[0].Mode); 41Assert.Equal(2, aks.Resource.NodePools.Count); 42var workloadPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.User); 46Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 65Assert.Equal(2, aks.Resource.NodePools.Count); // system + gpu 66Assert.DoesNotContain(aks.Resource.NodePools, p => p.Name == "workload"); 69Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 90Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 106Assert.True(container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target)); 110Assert.Same(aks.Resource, target.ComputeEnvironment); 141Assert.Same(enva.Resource, enva.Resource.KubernetesEnvironment.OwningComputeEnvironment); 142Assert.Same(envb.Resource, envb.Resource.KubernetesEnvironment.OwningComputeEnvironment); 143Assert.True(enva.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _)); 144Assert.True(envb.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _)); 150Assert.True(cache.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var cacheTarget), 152Assert.Same(enva.Resource, cacheTarget.ComputeEnvironment); 154Assert.True(api.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var apiTarget), 156Assert.Same(enva.Resource, apiTarget.ComputeEnvironment); 159Assert.True(other.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var otherTarget), 161Assert.Same(envb.Resource, otherTarget.ComputeEnvironment); 319aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 320aks.Resource.AzCommandRunnerForTesting = (_, _, _) => Task.FromResult( 455aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 456aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 487Assert.Empty(aks.Resource.Outputs); 488Assert.NotNull(aks.Resource.KubernetesEnvironment.KubeConfigPath); 490["version --short", $"uninstall aks --namespace default --ignore-not-found --kubeconfig \"{aks.Resource.KubernetesEnvironment.KubeConfigPath}\""], 537aks.Resource.Scope = new AzureBicepResourceScope( 538aks.Resource.NameOutputReference, 539aks.Resource.Id); 540aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 541aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 570Assert.Empty(aks.Resource.Outputs); 571Assert.NotNull(aks.Resource.KubernetesEnvironment.KubeConfigPath); 573["version --short", $"uninstall aks --namespace default --ignore-not-found --kubeconfig \"{aks.Resource.KubernetesEnvironment.KubeConfigPath}\""], 601aks.Resource.AzCliPathResolverForTesting = () => 615Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 649aks.Resource.AzCliPathResolverForTesting = () => 666Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 701Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 738Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 772aks.Resource.AzCliPathResolverForTesting = () => 789Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 835aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 836aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 861Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 862Assert.True(aks.Resource.KubernetesEnvironment.SkipDestroyCleanup); 899aks.Resource.KubernetesEnvironment.Annotations.Add( 900new HelmReleaseNameAnnotation(ReferenceExpression.Create($"{releaseParameter.Resource}"))); 901aks.Resource.KubernetesEnvironment.Annotations.Add( 902new KubernetesNamespaceAnnotation(ReferenceExpression.Create($"{namespaceParameter.Resource}"))); 903aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 904aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 933Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 934Assert.True(aks.Resource.KubernetesEnvironment.SkipDestroyCleanup); 971aks.Resource.KubernetesEnvironment.Annotations.Add( 972new HelmReleaseNameAnnotation(ReferenceExpression.Create($"{aks.Resource.NameOutputReference}"))); 973aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 974aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 1003Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 1004Assert.True(aks.Resource.KubernetesEnvironment.SkipDestroyCleanup); 1036aks.Resource.KubernetesEnvironment.Annotations.Add( 1038aks.Resource.KubernetesEnvironment.Annotations.Add( 1040aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 1041aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 1063var kubeConfigPath = Assert.IsType<string>(aks.Resource.KubernetesEnvironment.KubeConfigPath); 1103Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 1346aks.Resource.Outputs["name"] = clusterName; 1349aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1350aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1374foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1379Resource = aks.Resource 1389Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1390aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 1419await File.ReadAllTextAsync(aks.Resource.KubernetesEnvironment.KubeConfigPath!, TestContext.Current.CancellationToken)); 1447aks.Resource.Outputs["name"] = clusterName; 1450aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1451aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1468foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1473Resource = aks.Resource 1479Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1480aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 1659aks.Resource.Scope = new AzureBicepResourceScope(scopeResourceGroup, scopeSubscriptionId); 1660aks.Resource.Outputs["name"] = clusterName; 1663aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1664aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1681foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1686Resource = aks.Resource 1692Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1693aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 1729aks.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscriptionId); 1730aks.Resource.Outputs["name"] = clusterName; 1733aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1734aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1751foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1756Resource = aks.Resource 1762Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1763aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
AzureKubernetesIngressTests.cs (16)
49Assert.IsType<KubernetesIngressResource>(ingress.Resource); 50Assert.IsType<KubernetesEnvironmentResource>(ingress.Resource.Parent); 61Assert.IsType<KubernetesGatewayResource>(gateway.Resource); 62Assert.IsType<KubernetesEnvironmentResource>(gateway.Resource.Parent); 78Assert.NotNull(gateway.Resource.GatewayClassName); 79var resolvedClass = await gateway.Resource.GatewayClassName!.GetValueAsync(default); 82Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue("alb.networking.azure.io/alb-name", out var albNameRef)); 85Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue("alb.networking.azure.io/alb-namespace", out var albNsRef)); 102Assert.NotNull(ingress.Resource.IngressClassName); 103var resolvedClass = await ingress.Resource.IngressClassName!.GetValueAsync(default); 106Assert.True(ingress.Resource.IngressAnnotations.TryGetValue("alb.networking.azure.io/alb-name", out var albNameRef)); 109Assert.True(ingress.Resource.IngressAnnotations.TryGetValue("alb.networking.azure.io/alb-namespace", out var albNsRef)); 130Assert.NotNull(gateway.Resource.GatewayClassName); 131var resolvedClass = await gateway.Resource.GatewayClassName!.GetValueAsync(default); 134Assert.True(gateway.Resource.GatewayAnnotations.ContainsKey("alb.networking.azure.io/alb-name")); 135Assert.True(gateway.Resource.GatewayAnnotations.ContainsKey("alb.networking.azure.io/alb-namespace"));
AzureKubernetesPersistentVolumeTests.cs (4)
24Assert.Same(aks.Resource.KubernetesEnvironment, volume.Resource.Parent); 62var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource); 64executable.Resource,
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (13)
118var kustoDatabase = new AzureKustoReadWriteDatabaseResource(name, databaseName, builder.Resource); 119builder.Resource.Databases.Add(kustoDatabase); 130kcsb = GetConnectionStringBuilder(builder.Resource, connectionString); 174var surrogate = new AzureKustoEmulatorResource(builder.Resource); 236var resource = resourceBuilder.Resource; 371if (resourceBuilder.Resource.IsEmulator) 382.Resource 386throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 389var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 397.Resource 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.",
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Kusto.Tests (33)
AddAzureKustoTests.cs (22)
26Assert.NotNull(resourceBuilder.Resource); 27Assert.Equal(name, resourceBuilder.Resource.Name); 28Assert.IsType<AzureKustoClusterResource>(resourceBuilder.Resource); 49var containerAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 69var endpointAnnotations = resourceBuilder.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 89var emulatorAnnotation = resourceBuilder.Resource.Annotations.OfType<EmulatorResourceAnnotation>().SingleOrDefault(); 107var nameAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerNameAnnotation>().SingleOrDefault(); 111var argsAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerRuntimeArgsCallbackAnnotation>().SingleOrDefault(); 126var annotation = resourceBuilder.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().SingleOrDefault(); 180Assert.IsType<IResourceWithConnectionString>(resourceBuilder.Resource, exactMatch: false); 199Assert.Equal(runAsEmulator, resourceBuilder.Resource.IsEmulator); 217var volumeAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().SingleOrDefault(); 240var mountAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().SingleOrDefault(); 262var mountAnnotations = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().ToList(); 292var containerImageAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 312var persistenceAnnotation = Assert.Single(resourceBuilder.Resource.Annotations.OfType<PersistenceAnnotation>()); 327Assert.Single(kustoServer.Resource.Annotations, annotation => annotation is HealthCheckAnnotation hca && hca.Key == $"{name}_check"); 342Assert.Single(database.Resource.Annotations, annotation => annotation is HealthCheckAnnotation hca && hca.Key == $"{name}_check"); 359var endpointAnnotations = resourceBuilder.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 388var script = database.Resource.GetDatabaseCreationScript(); 405var script = database.Resource.GetDatabaseCreationScript(); 424var script = database.Resource.GetDatabaseCreationScript();
AzureKustoConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)kusto.Resource).GetConnectionProperties().ToArray(); 34var properties = ((IResourceWithConnectionString)kusto.Resource).GetConnectionProperties().ToArray();
KustoFunctionalTests.cs (9)
56await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cancellationToken: cts.Token); 60hb.Configuration["ConnectionStrings:KustoConnection"] = await kusto.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 109await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cancellationToken: cts.Token); 113hb.Configuration["ConnectionStrings:KustoTestDbConnection"] = await kustoDb.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 189await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 217await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 220await rns.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 221await rns.WaitForResourceAsync(db2.Resource.Name, KnownResourceStates.FailedToStart, cts.Token); 258await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cts.Token);
Aspire.Hosting.Azure.Network (41)
AzureNatGatewayExtensions.cs (2)
85builder.Resource.PublicIPAddresses.Add(publicIPAddress.Resource);
AzureNetworkSecurityGroupExtensions.cs (3)
99if (builder.Resource.SecurityRules.Any(existing => string.Equals(existing.Name, rule.Name, StringComparison.OrdinalIgnoreCase))) 102$"A security rule named '{rule.Name}' already exists in Network Security Group '{builder.Resource.Name}'.", 106builder.Resource.SecurityRules.Add(rule);
AzureNetworkSecurityPerimeterExtensions.cs (8)
87if (builder.Resource.AccessRules.Any(existing => string.Equals(existing.Name, rule.Name, StringComparison.OrdinalIgnoreCase))) 90$"An access rule named '{rule.Name}' already exists in Network Security Perimeter '{builder.Resource.Name}'.", 94builder.Resource.AccessRules.Add(rule); 144associationName ??= $"{target.Resource.Name}-assoc"; 146if (nsp.Resource.Associations.Any(a => string.Equals(a.Name, associationName, StringComparison.OrdinalIgnoreCase))) 149$"An association named '{associationName}' already exists in Network Security Perimeter '{nsp.Resource.Name}'.", 153nsp.Resource.Associations.Add(new AzureNetworkSecurityPerimeterResource.NspAssociationConfig( 155target.Resource.Id,
AzurePrivateEndpointExtensions.cs (8)
58var name = $"{subnet.Resource.Name}-{target.Resource.Name}-pe"; 59var vnet = subnet.Resource.Parent; 61var resource = new AzurePrivateEndpointResource(name, subnet.Resource, target.Resource, ConfigurePrivateEndpoint); 70var zoneNames = target.Resource.GetPrivateDnsZoneNames(); 82IResource rootResource = target.Resource; 91if (target.Resource is IAzurePrivateEndpointTargetNotification notificationTarget)
AzureVirtualNetworkExtensions.cs (20)
74AzureVirtualNetworkResource resource = new(name, ConfigureVirtualNetwork, addressPrefix.Resource); 204var subnet = new AzureSubnetResource(name, subnetName, addressPrefix, builder.Resource); 238var subnet = new AzureSubnetResource(name, subnetName, addressPrefix.Resource, builder.Resource); 269builder.Resource.Subnets.Add(subnet); 316var target = builder.Resource; 318var subnetId = ReferenceExpression.Create($"{subnet.Resource.Id}"); 329var existingDelegation = subnet.Resource.Annotations 339$"The subnet '{subnet.Resource.Name}' is already delegated to '{existingDelegation.ServiceName}' and cannot also be delegated to '{target.DelegatedSubnetServiceName}'."); 400foreach (var existing in builder.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().ToArray()) 402builder.Resource.Annotations.Remove(existing); 436builder.Resource.NatGateway = natGateway.Resource; 469if (builder.Resource.NetworkSecurityGroup is { IsImplicitlyCreated: true }) 472$"The subnet '{builder.Resource.Name}' already has an NSG created via shorthand methods. " + 477builder.Resource.NetworkSecurityGroup = nsg.Resource; 614var subnet = builder.Resource; 621nsgBuilder.Resource.IsImplicitlyCreated = true; 622subnet.NetworkSecurityGroup = nsgBuilder.Resource;
Aspire.Hosting.Azure.PostgreSQL (24)
AzurePostgresExtensions.cs (24)
59var postgres = CreatePostgreSqlFlexibleServer(infrastructure, builder.ApplicationBuilder, builder.Resource.Databases); 75var resource = new AzurePostgresResource(builder.Resource, configureInfrastructure); 78.WithLoginAndPassword(builder.Resource); 87if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 89builder.Resource.Annotations.Remove(containerAnnotation); 173var azureResource = builder.Resource; 176builder.Resource.AddDatabase(name, databaseName); 187azurePostgresDatabase.SetInnerResource(innerDb.Resource); 229var azureResource = builder.Resource; 249azureResource.SetInnerResource(postgresContainer.Resource); 259existingDb.SetInnerResource(innerDb.Resource); 307var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 308.WithParentRelationship(builder.Resource); 316if (builder.Resource.IsContainer()) 318data.Model.Resources.Remove(kv.Resource); 362var azureResource = builder.Resource; 364azureResource.UserNameParameter = userName?.Resource ?? 368azureResource.PasswordParameter = password?.Resource ?? 369ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-password"); 372azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{builder.Resource.Name}"); 421if (!builder.Resource.IsContainer) 427var innerBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.InnerResource); 632builder.ApplicationBuilder, $"{builder.Resource.Name}-username", secret: false, generatedUserName);
Aspire.Hosting.Azure.Redis (20)
AzureManagedRedisExtensions.cs (9)
101var azureResource = builder.Resource; 106azureResource.SetInnerResource(redisContainer.Resource); 139var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 140.WithParentRelationship(builder.Resource); 148if (builder.Resource.IsContainer()) 150data.Model.Resources.Remove(kv.Resource); 186var azureResource = builder.Resource; 187azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 188azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}");
AzureRedisExtensions.cs (11)
59var resource = new AzureRedisResource(builder.Resource, configureInfrastructure); 70if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 72builder.Resource.Annotations.Remove(containerAnnotation); 165var azureResource = builder.Resource; 170azureResource.SetInnerResource(redisContainer.Resource); 203var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 204.WithParentRelationship(builder.Resource); 212if (builder.Resource.IsContainer()) 214data.Model.Resources.Remove(kv.Resource); 235var azureResource = builder.Resource; 236azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}");
Aspire.Hosting.Azure.Sandboxes (19)
AzureSandboxesExtensions.cs (9)
222builder.Resource.WorkloadManagedIdentityType = ManagedServiceIdentityType.None; 223builder.Resource.WorkloadUserAssignedIdentities.Clear(); 243builder.Resource.WorkloadManagedIdentityType = ManagedServiceIdentityType.SystemAssigned; 244builder.Resource.WorkloadUserAssignedIdentities.Clear(); 267builder.Resource.AddWorkloadUserAssignedIdentity(identity.Resource); 292builder.Resource.References.Add(identity.Resource); 294new AzureSandboxGroupAcrPullIdentityAnnotation(identity.Resource),
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
45if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 54Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 55Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 106if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 107builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 115var identityName = $"{builder.Resource.Name}-mi"; 119$"Cannot create the cross-scope ACR pull identity '{identityName}' for environment '{builder.Resource.Name}' because a resource with that name already exists. Call 'WithAcrPullIdentity' on the environment to select an existing identity, or use a different resource name."); 143builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 144if (builder.Resource is AzureBicepResource environment)
Aspire.Hosting.Azure.Search (1)
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.ServiceBus (30)
AzureServiceBusExtensions.cs (29)
185var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource); 186builder.Resource.Queues.Add(queue); 205configure(builder.Resource); 271var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource); 272builder.Resource.Topics.Add(topic); 291configure(builder.Resource); 313if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource) 344var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource); 345builder.Resource.Subscriptions.Add(subscription); 364configure(builder.Resource); 402if (builder.Resource.IsEmulator) 429var surrogate = new AzureServiceBusEmulatorResource(builder.Resource); 440if (!builder.Resource.HasAnnotationOfType<SqlServerConnectionAnnotation>()) 446$"{builder.Resource.Name}-sql-pwd", 453.AddSqlServer($"{builder.Resource.Name}-mssql", passwordBuilder) 462foreach (var sqlServerConfiguration in builder.Resource.Annotations.OfType<SqlServerConfigurationAnnotation>()) 467if (!sqlServerBuilder.Resource.Annotations.OfType<EndpointAnnotation>().Any(e => e.Name == SqlServerEndpointName)) 475builder.WithAnnotation(new SqlServerConnectionAnnotation(sqlServerBuilder.Resource, [])); 484if (!builder.Resource.TryGetLastAnnotation<SqlServerConnectionAnnotation>(out var sqlConnection)) 503var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 516var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 524var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>(); 672if (builder.Resource.HasAnnotationOfType<SqlServerConnectionAnnotation>()) 713if (builder.Resource.HasAnnotationOfType<SqlServerConfigurationAnnotation>()) 720if (builder.Resource.TryGetLastAnnotation<SqlServerConnectionAnnotation>(out var previousConnection)) 722RemoveWaitFor(builder.Resource, previousConnection.WaitAnnotations); 726var existingAnnotations = builder.Resource.Annotations.ToHashSet(); 728var waitAnnotations = builder.Resource.Annotations 732return builder.WithAnnotation(new SqlServerConnectionAnnotation(sqlServer.Resource, waitAnnotations), ResourceAnnotationMutationBehavior.Replace);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.SignalR (2)
AzureSignalRExtensions.cs (1)
172var surrogate = new AzureSignalREmulatorResource(builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Sql (27)
AzureSqlExtensions.cs (16)
32CreateSqlServer(infrastructure, builder.ApplicationBuilder, builder.Resource.Databases); 35var resource = new AzureSqlServerResource(builder.Resource, configureInfrastructure); 46if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 48builder.Resource.Annotations.Remove(containerAnnotation); 120var azureResource = builder.Resource; 123builder.Resource.AddDatabase(azureSqlDatabase); 134azureSqlDatabase.SetInnerResource(innerDb.Resource); 151builder.Resource.UseDefaultAzureSku = true; 190var azureResource = builder.Resource; 200azureResource.SetInnerResource(sqlContainer.Resource); 210existingDb.SetInnerResource(innerDb.Resource); 409builder.Resource.Annotations.Add(new AdminDeploymentScriptSubnetAnnotation(subnet.Resource)); 461builder.Resource.DeploymentScriptStorage = storage.Resource; 464if (!storage.Resource.IsExisting())
AzureSqlServerResource.cs (11)
536DeploymentScriptDependsOn.Add(privateEndpoint.Resource); 552DeploymentScriptStorage = CreateDeploymentScriptStorage(builder, builder.CreateResourceBuilder(this)).Resource; 558AdminIdentity = admin.Resource; 584}).Resource; 621var sqlName = azureSqlServer.Resource.Name; 689sql.DeploymentScriptDependsOn.Add(storagePe.Resource); 706var vnet = builder.CreateResourceBuilder(peSubnet.Resource.Parent); 709.Where(s => ReferenceEquals(s.Parent, vnet.Resource)); 711var aciSubnetCidr = SubnetAddressAllocator.AllocateDeploymentScriptSubnet(vnet.Resource, existingSubnets); 714aciSubnetResource = aciSubnet.Resource; 716sql.Annotations.Add(new AdminDeploymentScriptSubnetAnnotation(aciSubnet.Resource));
Aspire.Hosting.Azure.Storage (43)
AzureStorageExtensions.cs (42)
185if (builder.Resource.IsHnsEnabled) 218var blobConnectionString = await builder.Resource.GetBlobConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null."); 221var queueConnectionString = await builder.Resource.GetQueueConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null."); 232foreach (var container in builder.Resource.BlobContainers) 238foreach (var queue in builder.Resource.Queues) 246var healthCheckKey = $"{builder.Resource.Name}_check"; 259var surrogate = new AzureStorageEmulatorResource(builder.Resource); 281return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly); 391if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName)) 396builder.Resource.ImplicitBlobService ??= defaultService; 401builder.Resource.ImplicitBlobService ??= service; 418builder.Resource.IsHnsEnabled = true; 420if (string.Equals(name, builder.Resource.Name + "-data-lake", StringComparisons.ResourceName)) 425builder.Resource.ImplicitDataLakeService ??= defaultService; 430builder.Resource.ImplicitDataLakeService ??= service; 461var name = builder.Resource.Name + "-blobs"; 463return builder.Resource.BlobStorageBuilder ??= CreateBlobService(builder, name); 470var name = builder.Resource.Name + "-data-lake"; 472return builder.Resource.DataLakeStorageBuilder ??= CreateDataLakeService(builder, name); 492var parentBuilder = builder.Resource.ImplicitBlobService ??= GetBlobService(builder); 493AzureBlobStorageContainerResource resource = new(name, blobContainerName, parentBuilder.Resource); 494builder.Resource.BlobContainers.Add(resource); 531builder.Resource.IsHnsEnabled = true; 535var parentBuilder = builder.Resource.ImplicitDataLakeService ??= GetDataLakeService(builder); 536AzureDataLakeStorageFileSystemResource resource = new(name, dataLakeFileSystemName, parentBuilder.Resource); 537builder.Resource.DataLakeFileSystems.Add(resource); 559AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource); 560builder.Resource.Parent.BlobContainers.Add(resource); 611if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName)) 616builder.Resource.ImplicitQueueService ??= defaultService; 621builder.Resource.ImplicitQueueService ??= service; 634var name = builder.Resource.Name + "-queues"; 636return builder.Resource.QueueStorageBuilder ??= CreateQueueService(builder, name); 656var parentBuilder = builder.Resource.ImplicitQueueService ??= builder.GetQueueService(); 657AzureQueueStorageQueueResource resource = new(name, queueName, parentBuilder.Resource); 658builder.Resource.Queues.Add(resource); 798var resource = new AzureBlobStorageResource(name, builder.Resource); 824var resource = new AzureDataLakeStorageResource(name, builder.Resource); 833var resource = new AzureTableStorageResource(name, builder.Resource); 840var resource = new AzureQueueStorageResource(name, builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Tests (1773)
AzureAppConfigurationExtensionsTests.cs (7)
19appConfig.Resource.Outputs["appConfigEndpoint"] = "https://myendpoint"; 20Assert.Equal("https://myendpoint", await appConfig.Resource.ConnectionStringExpression.GetValueAsync(default)); 24var manifest = await GetManifestWithBicep(model, appConfig.Resource); 26var connectionStringResource = (IResourceWithConnectionString)appConfig.Resource; 123_ = appConfig.Resource.AddAsExistingResource(infra); 126var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 140appConfiguration.Resource.Annotations,
AzureApplicationInsightsExtensionsTests.cs (19)
19appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey"; 21var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource; 23Assert.Equal("appInsights", appInsights.Resource.Name); 25Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression); 27var (appInsightsManifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 40appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey"; 42var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource; 44Assert.Equal("appInsights", appInsights.Resource.Name); 46Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression); 48var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 69appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey"; 71var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource; 73Assert.Equal("appInsights", appInsights.Resource.Name); 75Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression); 77var (appInsightsManifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 90appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey"; 95var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 112var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 126var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
AzureAppServiceEnvironmentExtensionsTests.cs (11)
41_ = appServiceEnvironment.Resource.AddAsExistingResource(infra); 44var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 58var registry = appServiceEnvironment.Resource.ContainerRegistry; 73var registry = appServiceEnvironment.Resource.ContainerRegistry; 74Assert.Same(acr.Resource, registry); 96var exception = Assert.Throws<InvalidOperationException>(() => appServiceEnvironment.Resource.ContainerRegistry); 125Assert.Same(finalRegistry.Resource, roles.TargetAzureResource); 127var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true); 174Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 210Assert.Same(registry.Resource, rolesEast.TargetAzureResource); 211Assert.Same(registry.Resource, rolesWest.TargetAzureResource);
AzureAppServiceTests.cs (38)
48Assert.Same(env.Resource, target.ComputeEnvironment); 71var target = project.Resource.GetDeploymentTargetAnnotation(); 73Assert.Same(environment.Resource, target.ComputeEnvironment); 119var target = project.Resource.GetDeploymentTargetAnnotation(); 123var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource); 159var target = project.Resource.GetDeploymentTargetAnnotation(); 163var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource); 201var target = project.Resource.GetDeploymentTargetAnnotation(); 243var target = project.Resource.GetDeploymentTargetAnnotation(); 377project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 421SetFoundryProjectOutputs(project.Resource); 423web.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 552Assert.NotNull(env.Resource.NameOutputReference); 553Assert.Equal("name", env.Resource.NameOutputReference.Name); 554Assert.Same(env.Resource, env.Resource.NameOutputReference.Resource); 644var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 664var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 695var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 713var steps = await CreateStepsAsync(app, env.Resource); 725Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 726Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 887project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 923project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 959project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 997project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1032project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1108project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1139container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1163var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 1169Assert.Equal(env.Resource, output.Resource); 1187env.Resource.Outputs["webSiteSuffix"] = "website123"; 1188env.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 1195var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property)); 1325project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1356project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1388project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1417featureFlag.Resource,
AzureBicepProvisionerTests.cs (1)
75if (resourceEvent.Resource == entries.Resource)
AzureBicepResourceTests.cs (11)
24Assert.Equal("content", bicepResource.Resource.TemplateString); 25Assert.Equal("value1", bicepResource.Resource.Parameters["param1"]); 26Assert.Equal("value2", bicepResource.Resource.Parameters["param2"]); 89if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 110if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 128bicepResource.Resource.Outputs["resourceEndpoint"] = "https://myendpoint"; 140bicepResource.Resource.SecretOutputs["connectionString"] = "https://myendpoint;Key=43"; 186bicepResource.Resource.TempDirectory = Environment.CurrentDirectory; 188var manifest = await ManifestUtils.GetManifest(bicepResource.Resource); 221var annotation = bicepResource.Resource.Annotations.OfType<Aspire.Hosting.Pipelines.PipelineStepAnnotation>().FirstOrDefault(); 230Resource = bicepResource.Resource
AzureConnectorNamespaceTests.cs (45)
52worker.Resource, 77worker.Resource, 183Assert.Same(gateway.Resource, connection.Resource.Parent); 184Assert.Same(gateway.Resource, mcp.Resource.Parent); 187Assert.Single(connection.Resource.Annotations.OfType<ManifestPublishingCallbackAnnotation>())); 190Assert.Single(mcp.Resource.Annotations.OfType<ManifestPublishingCallbackAnnotation>())); 191var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource); 223var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource); 257() => AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource)); 284() => AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource)); 311Assert.Single(gateway.Resource.Connections); 331Assert.Single(gateway.Resource.McpServerConfigs); 360Assert.NotEqual(firstConnection.Resource.BicepIdentifier, secondConnection.Resource.BicepIdentifier); 361Assert.NotEqual(secondConnection.Resource.BicepIdentifier, mcp.Resource.BicepIdentifier); 369Assert.StartsWith("connectorConnection_location_abcdefghijklmnop_", firstConnection.Resource.BicepIdentifier, StringComparison.Ordinal); 370Assert.StartsWith("connectorMcpServer_location_abcdefghijklmnop_", mcp.Resource.BicepIdentifier, StringComparison.Ordinal); 374var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource); 389var (_, firstBicep) = await AzureManifestUtils.GetManifestWithBicep(model, firstGateway.Resource); 390var (_, secondBicep) = await AzureManifestUtils.GetManifestWithBicep(model, secondGateway.Resource); 425Assert.Single(mcp.Resource.Connectors); 449Assert.Empty(mcp.Resource.AccessPolicies); 473Assert.False(mcp.Resource.IsExisting); 513Assert.Empty(mcp.Resource.AccessPolicies); 555Assert.Single(mcp.Resource.AccessPolicies); 578Assert.False(connection.Resource.IsExisting); 609Assert.Empty(connection.Resource.AccessPolicies); 639Assert.Empty(connection.Resource.AccessPolicies); 640Assert.Empty(mcp.Resource.AccessPolicies); 663Assert.Empty(connection.Resource.AccessPolicies); 707Assert.Single(office365.Resource.AccessPolicies).Name, 711Assert.Single(sharepoint.Resource.AccessPolicies).Name, 714Assert.Single(compoundParentName.Resource.AccessPolicies).Name, 715Assert.Single(compoundPolicyName.Resource.AccessPolicies).Name); 759Assert.Single(connection.Resource.AccessPolicies); 800connection.Resource.AccessPolicies, 804connection.Resource.AccessPolicies[0].BicepIdentifier, 805connection.Resource.AccessPolicies[1].BicepIdentifier); 835connection.Resource.BicepIdentifier, 836Assert.Single(connection.Resource.AccessPolicies).BicepIdentifier, 837mcp.Resource.BicepIdentifier, 838Assert.Single(mcp.Resource.AccessPolicies).BicepIdentifier
AzureContainerAppEnvironmentExtensionsTests.cs (27)
44_ = containerAppEnvironment.Resource.AddAsExistingResource(infra); 47var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 74Assert.True(logAnalyticsWorkspace.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAnnotation)); 75Assert.Equal(lawName.Resource, existingAnnotation.Name); 76Assert.Equal(lawResourceGroup.Resource, existingAnnotation.ResourceGroup); 79Assert.True(containerAppEnvironment.Resource.TryGetLastAnnotation<AzureLogAnalyticsWorkspaceReferenceAnnotation>(out var workspaceRef)); 80Assert.Same(logAnalyticsWorkspace.Resource, workspaceRef.Workspace); 83var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 97var registry = containerAppEnvironment.Resource.ContainerRegistry; 112var registry = containerAppEnvironment.Resource.ContainerRegistry; 113Assert.Same(acr.Resource, registry); 135var exception = Assert.Throws<InvalidOperationException>(() => containerAppEnvironment.Resource.ContainerRegistry); 151var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 152var (_, vnetBicep) = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 173var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 198var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 218var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 249var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 278Assert.Same(finalRegistry.Resource, roles.TargetAzureResource); 280var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true); 420Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 455Assert.Same(registry.Resource, rolesEast.TargetAzureResource); 456Assert.Same(registry.Resource, rolesWest.TargetAzureResource); 474() => AzureManifestUtils.GetManifestWithBicep(env.Resource)); 503() => AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true)); 527() => AzureManifestUtils.GetManifestWithBicep(env.Resource)); 600Assert.Same(environment.Resource, api.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
AzureContainerAppExpressEndpointTests.cs (37)
49enabled.Resource, bool.TrueString, nested, ReferenceExpression.Create($"disabled")); 57var apiTarget = GetTarget(api.Resource); 58var webTarget = GetTarget(web.Resource); 64Assert.Same(environment.Resource, domain.Resource); 81var host = environment.Resource.GetHostAddressExpression(endpoint); 84Assert.Same(environment.Resource, output.Resource); 85Assert.Null(api.Resource.GetDeploymentTargetAnnotation()); 89var target = GetTarget(api.Resource); 91Assert.Same(target, GetTarget(api.Resource)); 92Assert.Single(api.Resource.Annotations.OfType<DeploymentTargetAnnotation>()); 94environment.Resource.Outputs[DomainOutputName] = "salmonisland-e9e6a567.westus3.azurecontainerapps.io"; 95environment.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 109var expression = environment.Resource.GetEndpointPropertyExpression(endpoint.Property(property)); 130var expression = environment.Resource.GetEndpointPropertyExpression(api.GetEndpoint("http").Property(property)); 133Assert.Null(api.Resource.GetDeploymentTargetAnnotation()); 152environment.Resource.GetEndpointPropertyExpression(api.GetEndpoint("http").Property(property))); 174enabled.Resource, bool.TrueString, 185var exception = Assert.Throws<InvalidOperationException>(GetTarget(web.Resource).GetBicepTemplateString); 218web.WithEnvironment("EARLY_HOST", producerEnvironment.Resource.GetHostAddressExpression(api.GetEndpoint("http"))); 223var webTarget = GetTarget(web.Resource); 229output => output.Name == DomainOutputName && output.Resource == producerEnvironment.Resource); 230Assert.Same(producerEnvironment.Resource, domain.Resource); 259var target = GetTarget(web.Resource); 262output => output.Name == DomainOutputName && output.Resource == standard.Resource); 263Assert.Same(standard.Resource, domain.Resource); 291var target = GetTarget(web.Resource); 313? environment.Resource.GetEndpointPropertyExpression(endpoint.Property(EndpointProperty.Url)) 319var target = GetTarget(api.Resource); 324Assert.Same(environment.Resource, domain.Resource); 341var firstTarget = GetTarget(first.Resource); 342var secondTarget = GetTarget(second.Resource); 364var target = GetTarget(api.Resource); 365environment.Resource.Outputs[DomainOutputName] = "salmonisland-e9e6a567.westus3.azurecontainerapps.io"; 366environment.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"] = 372foreach (var annotation in environment.Resource.Annotations.OfType<PipelineStepAnnotation>()) 377Resource = environment.Resource 381environment.Resource.ProvisioningTaskCompletionSource?.TrySetResult();
AzureContainerAppExpressTests.cs (12)
72var exception = Assert.Throws<InvalidOperationException>(environment.Resource.GetBicepTemplateString); 93var (_, expressBicep) = await GetManifestWithBicep(express.Resource); 94var (_, standardBicep) = await GetManifestWithBicep(standard.Resource); 110var (manifest, bicep) = await GetManifestWithBicep(environment.Resource); 126var expressFirstBicep = expressFirst.Resource.GetBicepTemplateString(); 130Assert.Equal(expressFirstBicep, dashboardFirst.Resource.GetBicepTemplateString()); 144var target = Assert.IsType<AzureContainerAppResource>(worker.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 164await Verify(environment.Resource.GetBicepTemplateString(), "bicep"); 189var target = Assert.IsType<AzureContainerAppResource>(project.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 229var target = Assert.IsType<AzureContainerAppResource>(project.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 266var target = Assert.IsType<AzureContainerAppResource>(container.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 286var target = Assert.IsType<AzureContainerAppResource>(container.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget);
AzureContainerAppsTests.cs (37)
111Assert.Same(env.Resource, target.ComputeEnvironment); 133var target = project.Resource.GetDeploymentTargetAnnotation(); 135Assert.Same(environment.Resource, target.ComputeEnvironment); 181SetFoundryProjectOutputs(project.Resource); 183var target = web.Resource.GetDeploymentTargetAnnotation(); 233Assert.Same(infra.Resource, target.ComputeEnvironment); 264Assert.Same(env.Resource, target?.ComputeEnvironment); 383.WithEnvironment("DATABASE_URL", pgContainer.Resource.UriExpression); 942var target = container.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget as AzureBicepResource; 1621var (manifest, bicep) = await GetManifestWithBicep(sql.Resource); 1738var managedEnvironment = (ContainerAppManagedEnvironment)env.Resource.AddAsExistingResource(infra); 1750var (manifest, bicep) = await GetManifestWithBicep(azResource.Resource); 1840Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 1841Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 2749var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 2813var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 2819Assert.Equal(env.Resource, output.Resource); 2837env.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"] = "example.azurecontainerapps.io"; 2838env.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 2845var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property)); 2930var containerRegistryInterface = env.Resource as IContainerRegistry; 3008var webappAcaTarget = webappAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 3010Assert.Same(aca.Resource, webappAcaTarget.ComputeEnvironment); 3014var webappServiceTarget = webappServiceResource.GetDeploymentTargetAnnotation(appService.Resource); 3016Assert.Same(appService.Resource, webappServiceTarget.ComputeEnvironment); 3020var containerAcaTarget = containerAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 3022Assert.Same(aca.Resource, containerAcaTarget.ComputeEnvironment); 3028var containerAppServiceAcaTarget = containerAppServiceResource.GetDeploymentTargetAnnotation(aca.Resource); 3032Assert.Null(webappAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 3033Assert.Null(webappServiceResource.GetDeploymentTargetAnnotation(aca.Resource)); 3034Assert.Null(containerAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 3112featureFlag.Resource, 3153featureFlag.Resource, 3155ReferenceExpression.Create($"prefix-{connectionPrefix.Resource}-enabled"), 3194innerFlag.Resource, 3200outerFlag.Resource, 3238var steps = await CreateStepsAsync(app, env.Resource);
AzureContainerRegistryTests.cs (20)
53Assert.Same(registryBuilder.Resource, annotation!.Registry); 63var (manifest, bicep) = await GetManifestWithBicep(acr.Resource); 122_ = acr.Resource.AddAsExistingResource(infra); 125var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 141var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 147Resource = acr.Resource 171var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 176Resource = acr.Resource 200var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 205Resource = acr.Resource 226var configAnnotations = acr.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 238var (_, bicep) = await GetManifestWithBicep(acr.Resource); 252var (_, bicep) = await GetManifestWithBicep(acr.Resource); 265var (_, bicep) = await GetManifestWithBicep(acr.Resource); 327await Assert.ThrowsAsync<ArgumentException>(async () => await GetManifestWithBicep(acr.Resource)); 338var (_, bicep) = await GetManifestWithBicep(acr.Resource); 354Assert.Same(acr.Resource, registryBuilder.Resource); 366Assert.NotNull(registryBuilder.Resource); 367Assert.IsType<AzureContainerRegistryResource>(registryBuilder.Resource);
AzureCosmosDBEmulatorFunctionalTests.cs (21)
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);
AzureCosmosDBExtensionsTests.cs (103)
38var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(); 59var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 107Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 110Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 111Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 137Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 138Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 139Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 140Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 142Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression); 143Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression); 156((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos"); 163((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1"); 172((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1"); 207var manifest = await GetManifestWithBicep(model, cosmos.Resource); 257Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 258Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression); 259Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression); 261var manifest = await GetManifestWithBicep(cosmos.Resource); 276Assert.True(cosmos.Resource.IsContainer()); 278var csExpr = cosmos.Resource.ConnectionStringExpression; 284Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 297Assert.True(cosmos.Resource.IsContainer()); 299var csExpr = cosmos.Resource.ConnectionStringExpression; 305Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 375var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 386var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 388Assert.Equal("cosmos", cosmos.Resource.Name); 406cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 408var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 429var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 431Assert.Equal("cosmos", cosmos.Resource.Name); 469kv.Resource.SecretResolver = (secretRef, _) => 479var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 490var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 492Assert.Equal("cosmos", cosmos.Resource.Name); 510cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 512var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 531var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 533Assert.Equal("cosmos", cosmos.Resource.Name); 544var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 556Assert.True(cosmos.Resource.IsEmulator()); 557Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 568Assert.True(cosmos.Resource.IsEmulator()); 569Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 579Assert.NotEmpty(cosmos.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 583var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 615_ = cosmosdb.Resource.AddAsExistingResource(infra); 618var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 645Assert.NotNull(cosmos.Resource.ConnectionStringSecretOutput); 646Assert.Same(cosmos.Resource, cosmos.Resource.ConnectionStringSecretOutput.SecretOwner); 648Assert.NotNull(cosmos.Resource.PrimaryAccessKeySecretOutput); 649Assert.Same(cosmos.Resource, cosmos.Resource.PrimaryAccessKeySecretOutput.SecretOwner); 652var references = ((IValueWithReferences)cosmos.Resource.ConnectionStringSecretOutput).References.ToList(); 653Assert.Contains(cosmos.Resource, references); 654Assert.Contains(cosmos.Resource.ConnectionStringSecretOutput.Resource, references); 665Assert.Contains(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 676Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 687cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 695Resource = cosmos.Resource, 722cosmos.Resource.Annotations.OfType<CertificateTrustConfigurationCallbackAnnotation>()); 730Resource = cosmos.Resource, 754cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 763Resource = cosmos.Resource, 809var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 841var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 870var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 900var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 911var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 926var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 939var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 953var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 961var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 973var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 978var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1013var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 1019var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 1033var csExpr = cosmos.Resource.ConnectionStringExpression; 1049var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 1062var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1073var healthEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulatorhealth"); 1078Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation); 1088Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation hc && hc.Key == "cosmos_check"); 1099var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 1112var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1124var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 1141() => builder.Eventing.PublishAsync(new ResourceReadyEvent(cosmos.Resource, app.Services))); 1158await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(cosmos.Resource, app.Services)); 1201Assert.False(cosmos.Resource.IsEmulator); 1202Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation); 1203Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1204Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation); 1214Assert.False(cosmos.Resource.IsEmulator); 1215Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation); 1216Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1217Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation); 1252cosmos.Resource, 1255foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 1277cosmos.Resource, 1280foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>())
AzureDeployerTests.cs (55)
171var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 294Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 295Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 296Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 297Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 298Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 354Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 355Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 356Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 357Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 358Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 420Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 421Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 422Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 423Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 424Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 488var (containerAppSubscriptionId, containerAppResourceGroupName) = GetSubscriptionAndResourceGroup((string)containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]!); 524var envResource = Assert.IsAssignableFrom<AzureBicepResource>(environment.Resource); 525var apiTarget = Assert.IsAssignableFrom<AzureBicepResource>(api.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 526var webTarget = Assert.IsAssignableFrom<AzureBicepResource>(web.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 610var webSiteSuffix = Assert.IsType<string>(appServiceEnv.Resource.Outputs["webSiteSuffix"]); 612var (planSubscriptionId, planResourceGroupName) = GetSubscriptionAndResourceGroup((string)appServiceEnv.Resource.Outputs["planId"]!); 705Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 706Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 707Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity"), acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 708Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 709Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/acaenv"), acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 712Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 713Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 714Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity"), aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 715Assert.Equal(GetTestResourceId("/providers/Microsoft.Web/serverfarms/aasplan"), aasEnv.Resource.Outputs["planId"]); 716Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]); 832var setValue = await param.Resource.GetValueAsync(default); 906var setValue = await param.Resource.GetValueAsync(default); 956Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 957Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 958Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 959Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 960Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1018Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1019Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/testenv"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1228Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 1229Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 1230Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 1231Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1232Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1235var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 1237Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1238Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1930Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 1931Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 1932Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default)); 1986Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 1987Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 1988Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
AzureEnvironmentResourceExtensionsTests.cs (229)
58Assert.Same(firstBuilder.Resource, secondBuilder.Resource); 325storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 336await notifications.PublishUpdateAsync(storage.Resource, state => state with 375Assert.Empty(storage.Resource.Outputs); 381Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 493Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 495Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 512storage.Resource.ProvisioningTaskCompletionSource = existingTcs; 522Assert.Same(existingTcs, storage.Resource.ProvisioningTaskCompletionSource); 556Assert.Empty(storage.Resource.Outputs); 566Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 568Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 604Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 633Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 654Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName); 655var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 672Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 673var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 674var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 675var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 679Assert.DoesNotContain(blobs.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => 703await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running }); 705Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 738await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running }); 740Assert.True(notifications.TryGetCurrentState(postgres.Resource.Name, out var postgresEvent)); 743var changeLocationCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 748ResourceName = postgres.Resource.Name, 824var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 829ResourceName = storage.Resource.Name, 908var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 913ResourceName = storage.Resource.Name, 1177var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1182ResourceName = storage.Resource.Name, 1241var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1246ResourceName = storage.Resource.Name, 1302var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1307ResourceName = storage.Resource.Name, 1361await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Waiting for Deployment", KnownResourceStateStyles.Info) }); 1363var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1368ResourceName = storage.Resource.Name, 1382Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1416await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Creating ARM Deployment", KnownResourceStateStyles.Info) }); 1418Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1493await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new(AzureProvisioningController.WaitingForDeploymentState, KnownResourceStateStyles.Info) }); 1495Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1498var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1503ResourceName = storage.Resource.Name, 1543var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage.Resource.Name, CancellationToken.None); 1556var command = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == commandName); 1561ResourceName = storage.Resource.Name, 1572Assert.Equal([storage.Resource.Name], testBicepProvisioner.ProvisionedResources); 1602var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage1.Resource.Name, CancellationToken.None); 1608var queuedReprovisionCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 1612ResourceName = storage2.Resource.Name, 1620var conflictingCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1624ResourceName = storage2.Resource.Name, 1663await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1665Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1701await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1703var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1708ResourceName = storage.Resource.Name, 1720Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1781storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 1782storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/"; 1784await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 1785await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 1787var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1792ResourceName = storage.Resource.Name, 1820Assert.Empty(storage.Resource.Outputs); 1821Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]); 1823Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1826Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 1879await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 1881var deleteCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1886ResourceName = keyVault.Resource.Name, 1905Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 1949await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1950await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 1952var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1957ResourceName = storage.Resource.Name, 1971Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1975Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2027await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2029var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 2030var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2035ResourceName = storage.Resource.Name, 2049ResourceName = storage.Resource.Name, 2059Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2092storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 2093storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/"; 2095await notifications.PublishUpdateAsync(storage.Resource, state => state with 2102await notifications.PublishUpdateAsync(storage2.Resource, state => state with 2109var forgetCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName); 2114ResourceName = storage.Resource.Name, 2129Assert.Empty(storage.Resource.Outputs); 2130Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]); 2132Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2137Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2170await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2171await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2173var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2178ResourceName = storage.Resource.Name, 2186Assert.Contains(storage.Resource.Outputs, output => output.Key == "blobEndpoint"); 2194Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2197Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2224await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2225await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2227var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2232ResourceName = storage.Resource.Name, 2246Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2249Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2260Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2285await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2287var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2292ResourceName = storage.Resource.Name, 2306Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2318Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2363var reprovisionStorageCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2364var reprovisionStorage2Command = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2369ResourceName = storage.Resource.Name, 2383ResourceName = storage2.Resource.Name, 2440var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2441var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2446ResourceName = storage.Resource.Name, 2457Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2463ResourceName = storage.Resource.Name, 2474Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2477Assert.True(notifications.TryGetCurrentState(blobs.Resource.Name, out var blobsEvent)); 2486Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2535await WaitForResourceStateAsync(notifications, storage2.Resource.Name, "Running"); 2536Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var runningStorage2Event)); 2539var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2544ResourceName = storage.Resource.Name, 2552Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2556Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2561Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out storage2Event)); 2585var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2590ResourceName = storage.Resource.Name, 2637var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2638var cancelCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2643ResourceName = storage.Resource.Name, 2657ResourceName = storage2.Resource.Name, 2702await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2703await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2705var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2710ResourceName = storage.Resource.Name, 2726Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2735Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2775await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 2776await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2778var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2783ResourceName = storage.Resource.Name, 2829await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2831var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2836ResourceName = storage.Resource.Name, 2944await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2946var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2957ResourceName = storage.Resource.Name, 3017await notifications.PublishUpdateAsync(storage.Resource, state => state with 3023var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3027ResourceName = storage.Resource.Name, 3036Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 3077await notifications.PublishUpdateAsync(storage.Resource, state => state with 3083var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3088ResourceName = storage.Resource.Name, 3150await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3152var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3157ResourceName = storage.Resource.Name, 3203await notifications.PublishUpdateAsync(storage.Resource, state => state with 3209var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3214ResourceName = storage.Resource.Name, 3266await notifications.PublishUpdateAsync(storage.Resource, state => state with 3272var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3277ResourceName = storage.Resource.Name, 3338await notifications.PublishUpdateAsync(storage.Resource, state => state with 3344var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3348ResourceName = storage.Resource.Name, 3395await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3396await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 3610await notifications.PublishUpdateAsync(storage.Resource, state => state with 3840await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3842var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 3847ResourceName = storage.Resource.Name, 3912await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) }); 3914var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 3919ResourceName = keyVault.Resource.Name, 3932Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 3992await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) }); 3994var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 3999ResourceName = keyVault.Resource.Name, 4036Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 4066await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running }); 4068var reprovisionCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4073ResourceName = postgres.Resource.Name, 4118await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4120var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 4125ResourceName = storage.Resource.Name, 4164await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running }); 4166var changeLocationCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 4171ResourceName = keyVault.Resource.Name, 4210await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4212var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4217ResourceName = storage.Resource.Name, 4243Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4278var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4285ResourceName = storage.Resource.Name, 4325await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4338Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4378await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4385Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4436await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4437await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 4444Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4447Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 4480await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4487Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4544Assert.Empty(storage.Resource.Outputs); 4589Assert.Empty(storage.Resource.Outputs); 4635Assert.Empty(storage.Resource.Outputs); 4805var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 4809ResourceName = storage.Resource.Name, 4819Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4825Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 4855Assert.Equal([storage.Resource.Name, storage2.Resource.Name], Assert.IsType<string[]>(failedResourcesProperty.Value)); 4894var icon = Assert.Single(resourceBuilder.Resource.Annotations.OfType<ResourceIconAnnotation>()); 4940Assert.Equal(expectedLocation.Resource, resource.Location); 4956Assert.Equal(expectedResourceGroup.Resource, resource.ResourceGroupName);
AzureEnvironmentResourceTests.cs (12)
114.WithParameter("pgdb", pgdb.Resource.ConnectionStringExpression); 162["kvUri"] = kv.Resource.VaultUri, 163["blob"] = blobs.Resource.ConnectionStringExpression, 194roles.Resource.Parameters[AzureBicepResource.KnownParameters.PrincipalId] = null; 195roles.Resource.Parameters[AzureBicepResource.KnownParameters.PrincipalType] = null; 220resourceGroupScoped.Resource.Scope = new(resourceGroup.Resource, subscription.Resource); 230subscriptionScoped.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscription.Resource); 240tenantScoped.Resource.Scope = AzureBicepResourceScope.CreateForTenant(); 325module.Resource.Scope = AzureBicepResourceScope.CreateForTenant();
AzureEventHubsConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)eventHubs.Resource).GetConnectionProperties().ToArray(); 39var properties = ((IResourceWithConnectionString)eventHubs.Resource).GetConnectionProperties().ToArray();
AzureEventHubsExtensionsTests.cs (34)
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); 84hb.Configuration["ConnectionStrings:hub"] = await eventHub.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 90hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 91hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 92hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 130await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 136hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 137hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 138hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 142hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None) + $";EntityPath={hubName};"; 168var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 187var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 206var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 225var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 244var endpoints = eventHubs.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 272var containerImageAnnotation = eventHubs.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 292var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, eventHubs.Resource); 325var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 517Assert.Same(eventHubs.Resource.Annotations, sourceResource.Annotations); 519var persistenceAnnotation = Assert.Single(eventHubs.Resource.Annotations.OfType<PersistenceAnnotation>()); 568Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression); 569Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression); 570Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression); 583((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh"); 593((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1"); 609((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1"); 639Assert.True(eventHubs.Resource.IsEmulator()); 640Assert.Contains(eventHubs.Resource.Annotations, a => a is EmulatorResourceAnnotation); 670_ = eventHubs.Resource.AddAsExistingResource(infra); 673var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureFrontDoorTests.cs (11)
22Assert.Equal("frontdoor", frontDoor.Resource.Name); 23Assert.IsType<AzureFrontDoorResource>(frontDoor.Resource); 37var annotations = frontDoor.Resource.Annotations.OfType<AzureFrontDoorOriginAnnotation>().ToList(); 55var annotations = frontDoor.Resource.Annotations.OfType<AzureFrontDoorOriginAnnotation>().ToList(); 77var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 82var endpointUrl = frontDoor.Resource.GetEndpointUrl("my-api"); 108var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 139var endpointUrl = frontDoor.Resource.GetEndpointUrl("api"); 180var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 203var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 228var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource);
AzureFunctionsTests.cs (10)
45Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 176Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 179Assert.Equal(storage.Resource, rel.Resource); 293Assert.True(funcApp.Resource.TryGetAnnotationsOfType<EnvironmentCallbackAnnotation>(out var envAnnotations)); 354var (_, bicep) = await GetManifestWithBicep(funcApp.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 663Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 683Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 767Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 770Assert.Equal(customStorage.Resource, rel.Resource); 801var annotation = funcApp.Resource.Annotations.OfType<RequiredCommandAnnotation>().SingleOrDefault();
AzureInfrastructureExtensionsTests.cs (3)
27var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 52var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 91var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
AzureKeyVaultConnectionPropertiesTests.cs (1)
17var properties = ((IResourceWithConnectionString)keyVault.Resource).GetConnectionProperties().ToArray();
AzureKeyVaultTests.cs (47)
21var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(mykv.Resource); 37var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, mykv.Resource); 57kv.Resource.SecretResolver = (s, ct) => 63var secretReference = kv.Resource.GetSecret("mySecret"); 72containerBuilder.Resource, 77containerBuilder.Resource, 98var secretReference = kv.Resource.GetSecret("mySecret"); 99var secretReference2 = kv.Resource.GetSecret("mySecret2"); 120var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 136var secretReference = kv.Resource.GetSecret("mySecret"); 137var secretReference2 = kv.Resource.GetSecret("mySecret2"); 158module2.Resource.Scope = new(existingRg.Resource); 160var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 161var (manifest2, bicep2) = await AzureManifestUtils.GetManifestWithBicep(module2.Resource, skipPreparer: true); 176var secretReference = kv.Resource.GetSecret("mySecret"); 177var secretReference2 = kv.Resource.GetSecret("mySecret2"); 189var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 206Assert.Same(kv.Resource, secret.Resource); 220Assert.IsType<AzureKeyVaultSecretResource>(secretResource.Resource); 221Assert.Equal("mySecret", secretResource.Resource.Name); 222Assert.Equal("mySecret", secretResource.Resource.SecretName); 223Assert.Same(kv.Resource, secretResource.Resource.Parent); 224Assert.Single(kv.Resource.Secrets); 225Assert.Same(secretResource.Resource, kv.Resource.Secrets[0]); 237var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource); 252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource); 267Assert.True(secretResource.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource); 381_ = keyVault.Resource.AddAsExistingResource(infra); 384var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 397Assert.False(keyVault.Resource.IsEmulator); 408keyVault.Resource.Annotations.Add(new ContainerImageAnnotation 413Assert.True(keyVault.Resource.IsEmulator); 424keyVault.Resource.Annotations.Add(new ContainerImageAnnotation 432var connectionString = keyVault.Resource.ConnectionStringExpression; 434Assert.True(keyVault.Resource.IsEmulator); 445var connectionString = keyVault.Resource.ConnectionStringExpression; 447Assert.False(keyVault.Resource.IsEmulator); 463keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget)); 465var connectionString = keyVault.Resource.ConnectionStringExpression; 466var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default); 484keyVault.Resource.Annotations.Add(new ContainerImageAnnotation 493keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget)); 495var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
AzureKustoExtensionsTests.cs (9)
20kusto.Resource.Outputs["clusterUri"] = "https://kusto-cluster.eastus.kusto.windows.net"; 21Assert.Equal("https://kusto-cluster.eastus.kusto.windows.net", await kusto.Resource.ConnectionStringExpression.GetValueAsync(default)); 25var manifest = await GetManifestWithBicep(model, kusto.Resource); 27var connectionStringResource = (IResourceWithConnectionString)kusto.Resource; 64_ = kusto.Resource.AddAsExistingResource(infra); 67var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 91Assert.True(kusto.Resource.TryGetLastAnnotation<EmulatorResourceAnnotation>(out _)); 94var connectionStringExpr = kusto.Resource.ConnectionStringExpression; 98Assert.True(kusto.Resource.IsEmulator);
AzureLogAnalyticsWorkspaceExtensionsTests.cs (5)
17Assert.Equal("logAnalyticsWorkspace", logAnalyticsWorkspace.Resource.Name); 18Assert.Equal("{logAnalyticsWorkspace.outputs.logAnalyticsWorkspaceId}", logAnalyticsWorkspace.Resource.Id.ValueExpression); 20var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(logAnalyticsWorkspace.Resource); 59_ = logAnalyticsWorkspace.Resource.AddAsExistingResource(infra); 62var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureManagedRedisConnectionPropertiesTests.cs (4)
17var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray(); 44var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray(); 78var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray(); 92var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray();
AzureManagedRedisExtensionsTests.cs (21)
38var (_, bicep) = await GetManifestWithBicep(model, redis.Resource); 55redisResource = c.Resource; 60Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource."); 65Assert.Equal($"localhost:12455,password={await redisResource.PasswordParameter.GetValueAsync(CancellationToken.None)}{sslArg}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 78redisResource = c.Resource; 96Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource."); 99Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 102Assert.NotNull(redis.Resource.HostName); 103Assert.Equal("localhost", await redis.Resource.HostName.GetValueAsync(CancellationToken.None)); 105Assert.NotNull(redis.Resource.Password); 106Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None)); 154Assert.NotNull(redis.Resource.HostName); 155Assert.NotNull(redis.Resource.Password); 158var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None); 161var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None); 174Assert.Null(redis.Resource.Password); 177Assert.NotNull(redis.Resource.HostName); 178Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression); 216_ = redis.Resource.AddAsExistingResource(infra); 219var (manifest, bicep) = await GetManifestWithBicep(module.Resource, skipPreparer: true); 242var (_, bicep) = await GetManifestWithBicep(redis.Resource);
AzureNatGatewayExtensionsTests.cs (8)
20Assert.Equal("mynat", natGw.Resource.Name); 21Assert.IsType<AzureNatGatewayResource>(natGw.Resource); 31Assert.DoesNotContain(natGw.Resource, builder.Resources); 70Assert.Same(natGw.Resource, subnet.Resource.NatGateway); 81Assert.Equal("mypip", pip.Resource.Name); 82Assert.IsType<AzurePublicIPAddressResource>(pip.Resource); 104Assert.Equal("ipAddress", pip.Resource.IpAddress.Name);
AzureNetworkSecurityGroupExtensionsTests.cs (10)
23Assert.Equal("web-nsg", nsg.Resource.Name); 24Assert.IsType<AzureNetworkSecurityGroupResource>(nsg.Resource); 34Assert.DoesNotContain(nsg.Resource, builder.Resources); 47var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 110var manifest = await AzureManifestUtils.GetManifestWithBicep(nsg.Resource); 179Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 293var manifest = await AzureManifestUtils.GetManifestWithBicep(nsg.Resource); 314SourceAddressPrefixReference = ReferenceExpression.Create($"{pip.Resource.IpAddress}") 336DestinationAddressPrefixReference = ReferenceExpression.Create($"{pip.Resource.IpAddress}")
AzureNetworkSecurityPerimeterExtensionsTests.cs (9)
23Assert.Equal("my-nsp", nsp.Resource.Name); 24Assert.IsType<AzureNetworkSecurityPerimeterResource>(nsp.Resource); 34Assert.DoesNotContain(nsp.Resource, builder.Resources); 44var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 68var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 86var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 123var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 138var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 162var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource);
AzureOpenAIExtensionsTests.cs (3)
62var manifest = await GetManifestWithBicep(model, openai.Resource); 262_ = openAI.Resource.AddAsExistingResource(infra); 265var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzurePostgresExtensionsTests.cs (53)
41var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource, skipPreparer: true); 98var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 133Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource."); 134Assert.StartsWith("Host=localhost;Port=12455;Username=postgres;Password=", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 136var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 140var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 182var endpoint = Assert.Single(innerPostgres.Resource.Annotations.OfType<EndpointAnnotation>()); 191Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource."); 192Assert.Equal("Host=localhost;Port=12455;Username=user1;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 195Assert.NotNull(postgres.Resource.Host); 196Assert.Equal("localhost", await postgres.Resource.Host.GetValueAsync(CancellationToken.None)); 198Assert.NotNull(postgres.Resource.Port); 199Assert.Equal("12455", await postgres.Resource.Port.GetValueAsync(CancellationToken.None)); 201Assert.NotNull(postgres.Resource.HostName); 202Assert.Equal("localhost:12455", await postgres.Resource.HostName.GetValueAsync(CancellationToken.None)); 204Assert.NotNull(postgres.Resource.UserName); 205Assert.Equal("user1", await postgres.Resource.UserName.GetValueAsync(CancellationToken.None)); 207Assert.NotNull(postgres.Resource.Password); 208Assert.Equal("p@ssw0rd1", await postgres.Resource.Password.GetValueAsync(CancellationToken.None)); 210var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 213var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 247Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 248Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db1", await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 249Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db2Name", await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 324Assert.NotNull(postgres.Resource.UserName); 325Assert.NotNull(postgres.Resource.Password); 326Assert.NotNull(postgres.Resource.HostName); 329var hostValue = await postgres.Resource.HostName.GetValueAsync(CancellationToken.None); 332var userValue = await postgres.Resource.UserName.GetValueAsync(CancellationToken.None); 336var passwordValue = await postgres.Resource.Password.GetValueAsync(CancellationToken.None); 350Assert.Null(postgres.Resource.UserName); 351Assert.Null(postgres.Resource.Password); 354Assert.NotNull(postgres.Resource.HostName); 355Assert.Equal("{postgres-data.outputs.hostName}", postgres.Resource.HostName.ValueExpression); 442Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation)); 446var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 451Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default)); 485Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation)); 489var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 494Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default)); 529var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 535Assert.Equal(expectedConnectionString, await postgres.Resource.GetConnectionStringAsync()); 561var manifest = await ManifestUtils.GetManifest(postgres.Resource); 581manifest = await ManifestUtils.GetManifest(postgres.Resource); 600manifest = await ManifestUtils.GetManifest(postgres.Resource); 643_ = postgres.Resource.AddAsExistingResource(infra); 646var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 674Assert.NotNull(postgres.Resource.ConnectionStringSecretOutput); 675Assert.Same(postgres.Resource, postgres.Resource.ConnectionStringSecretOutput.SecretOwner); 678var references = ((IValueWithReferences)postgres.Resource.ConnectionStringSecretOutput).References.ToList(); 679Assert.Contains(postgres.Resource, references); 680Assert.Contains(postgres.Resource.ConnectionStringSecretOutput.Resource, references);
AzurePrivateEndpointExtensionsTests.cs (20)
25Assert.Equal("pesubnet-blobs-pe", pe.Resource.Name); 26Assert.IsType<AzurePrivateEndpointResource>(pe.Resource); 27Assert.Same(subnet.Resource, pe.Resource.Subnet); 28Assert.Same(blobs.Resource, pe.Resource.Target); 42Assert.Empty(storage.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>()); 47var annotation = storage.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>().SingleOrDefault(); 63var annotation = storage.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>().SingleOrDefault(); 79var manifest = await AzureManifestUtils.GetManifestWithBicep(pe.Resource); 96var manifest = await AzureManifestUtils.GetManifestWithBicep(pe.Resource); 114Assert.DoesNotContain(pe.Resource, builder.Resources); 125Assert.IsAssignableFrom<IAzurePrivateEndpointTarget>(blobs.Resource); 127var target = (IAzurePrivateEndpointTarget)blobs.Resource; 140Assert.IsAssignableFrom<IAzurePrivateEndpointTarget>(queues.Resource); 142var target = (IAzurePrivateEndpointTarget)queues.Resource; 178var (_, pe1Bicep) = await AzureManifestUtils.GetManifestWithBicep(pe1.Resource); 179var (_, pe2Bicep) = await AzureManifestUtils.GetManifestWithBicep(pe2.Resource); 234Assert.Equal(3, pe.Resource.DnsZones.Count); 237var manifest = await AzureManifestUtils.GetManifestWithBicep(pe.Resource);
AzurePrivateEndpointLockdownTests.cs (14)
23var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 39var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource); 55var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 71var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 87var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 103var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 119var manifest = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource); 135var manifest = await AzureManifestUtils.GetManifestWithBicep(appConfig.Resource); 151var manifest = await AzureManifestUtils.GetManifestWithBicep(search.Resource); 167var manifest = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource); 183var manifest = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 199var manifest = await AzureManifestUtils.GetManifestWithBicep(openai.Resource); 215var manifest = await AzureManifestUtils.GetManifestWithBicep(foundry.Resource); 231var manifest = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
AzureProvisioningResourceExtensionsTests.cs (1)
48var manifest = await AzureManifestUtils.GetManifestWithBicep(resource1.Resource);
AzureProvisioningResourceTests.cs (6)
29Assert.Same(apiProject.Resource, containerAppResource.TargetResource); 45Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 63Assert.Same(apiProject.Resource, webSiteResource.TargetResource); 79Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 96Assert.Same(container.Resource, containerAppResource.TargetResource); 111Assert.Same(container.Resource, provisioningResource.TargetResource);
AzureRedisExtensionsTests.cs (32)
40var (manifest, bicep) = await GetManifestWithBicep(model, redis.Resource); 83var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 99redisResource = c.Resource; 104Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource."); 108Assert.Equal($"localhost:12455,password={redisResource.PasswordParameter.Value}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 122redisResource = c.Resource; 140Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource."); 143Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 146Assert.NotNull(redis.Resource.HostName); 147Assert.Equal("localhost:12455", await redis.Resource.HostName.GetValueAsync(CancellationToken.None)); 149Assert.NotNull(redis.Resource.Password); 150Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None)); 198Assert.NotNull(redis.Resource.HostName); 199Assert.NotNull(redis.Resource.Password); 202var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None); 205var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None); 218Assert.Null(redis.Resource.Password); 221Assert.NotNull(redis.Resource.HostName); 222Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression); 244Assert.True(redis.Resource.IsContainer()); 245Assert.NotNull(redis.Resource.PasswordParameter); 248Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync()); 251var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 295_ = redis.Resource.AddAsExistingResource(infra); 298var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 325Assert.NotNull(redis.Resource.ConnectionStringSecretOutput); 326Assert.Same(redis.Resource, redis.Resource.ConnectionStringSecretOutput.SecretOwner); 329var references = ((IValueWithReferences)redis.Resource.ConnectionStringSecretOutput).References.ToList(); 330Assert.Contains(redis.Resource, references); 331Assert.Contains(redis.Resource.ConnectionStringSecretOutput.Resource, references);
AzureResourcePreparerTests.cs (56)
86Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 93Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 105Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 106Assert.Equal(storage.Resource, apiRoleAssignments.Target); 139Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 149Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 150Assert.Equal(storage.Resource, apiRoleAssignments.Target); 155Assert.True(api2.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var api2RoleAssignments)); 156Assert.Equal(storage.Resource, api2RoleAssignments.Target); 198context.Args.Add(blobs.Resource.ConnectionStringExpression); 204Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 206Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 207Assert.Equal(storage.Resource, apiRoleAssignments.Target); 236var deploymentTarget = Assert.IsAssignableFrom<AzureBicepResource>(api.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 238Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 239Assert.Same(api.Resource, roleAssignmentResource.OwnerResource); 241Assert.Contains(blobPE.Resource, deploymentTarget.References); 242Assert.Contains(queuesPE.Resource, deploymentTarget.References); 271.Where(resource => resource.TargetAzureResource == keyVault.Resource) 286Assert.Same(keyVault.Resource, resource.TargetAzureResource); 287Assert.Same(api.Resource, resource.OwnerResource); 292Assert.Same(keyVault.Resource, resource.TargetAzureResource); 293Assert.Same(worker.Resource, resource.OwnerResource); 298resource => resource.TargetAzureResource == storage.Resource); 299Assert.Same(api.Resource, storageRoleAssignment.OwnerResource); 328.Where(resource => resource.TargetAzureResource == signalR.Resource) 343Assert.Same(signalR.Resource, resource.TargetAzureResource); 344Assert.Same(serviceA.Resource, resource.OwnerResource); 349Assert.Same(signalR.Resource, resource.TargetAzureResource); 350Assert.Same(serviceB.Resource, resource.OwnerResource); 380Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 382Assert.Single(storage.Resource.Annotations.OfType<RoleAssignmentResourceAnnotation>()); 553agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 554storage.Resource, 563Assert.True(consumer.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var consumerRoleAssignments)); 564Assert.Equal(storage.Resource, consumerRoleAssignments.Target); 578agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 579storage.Resource, 590Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 603agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 604storage.Resource, 614Assert.False(bystander.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out _)); 632agent1.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role)); 635agent2.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role)); 646Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 647Assert.Same(consumer.Resource, roleAssignmentResource.OwnerResource); 666agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 667storage.Resource, 682var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>() 683.Where(a => a.Target == storage.Resource) 709agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 710storage.Resource, 723var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>() 724.Where(a => a.Target == storage.Resource)
AzureRunAsEmulatorModeTests.cs (8)
14{ "Azure App Configuration", (builder, configure) => builder.AddAzureAppConfiguration("appconfig").RunAsEmulator(_ => configure()).Resource }, 15{ "Azure Cosmos DB", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsEmulator(_ => configure()).Resource }, 16{ "Azure Cosmos DB classic", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsClassicEmulator(_ => configure()).Resource }, 17{ "Azure Event Hubs", (builder, configure) => builder.AddAzureEventHubs("eventhubs").RunAsEmulator(_ => configure()).Resource }, 18{ "Azure Kusto", (builder, configure) => builder.AddAzureKustoCluster("kusto").RunAsEmulator(_ => configure()).Resource }, 19{ "Azure Service Bus", (builder, configure) => builder.AddAzureServiceBus("servicebus").RunAsEmulator(_ => configure()).Resource }, 20{ "Azure SignalR", (builder, configure) => builder.AddAzureSignalR("signalr").RunAsEmulator(_ => configure()).Resource }, 21{ "Azure Storage", (builder, configure) => builder.AddAzureStorage("storage").RunAsEmulator(_ => configure()).Resource },
AzureSandboxesTests.cs (127)
35Assert.Equal("{sandboxes.outputs.id}", sandboxGroup.Resource.IdOutputReference.ValueExpression); 36Assert.Equal("{sandboxes.outputs.name}", sandboxGroup.Resource.NameOutputReference.ValueExpression); 44firstGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/example-rg/providers/Microsoft.App/sandboxGroups/first-group"; 45firstGroup.Resource.Outputs["location"] = "westus3"; 47secondGroup.Resource.Outputs["id"] = "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/other-rg/providers/Microsoft.App/sandboxGroups/second-group"; 48secondGroup.Resource.Outputs["location"] = "eastus2"; 51var firstSteps = await CreateStepsAsync(app, firstGroup.Resource); 57var secondSteps = await CreateStepsAsync(app, secondGroup.Resource); 105var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 138sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group"; 139sandboxGroup.Resource.Outputs["location"] = "eastus2"; 141var scope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource); 162var (hostGroupManifest, hostGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, hostGroup.Resource); 163var (workerGroupManifest, workerGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, workerGroup.Resource); 200var (_, sandbox1Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox1.Resource); 201var (_, sandbox2Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox2.Resource); 226Assert.Equal(ManagedServiceIdentityType.SystemAssignedUserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 227Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 238var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 251var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 267.WithAnnotation(new AppIdentityAnnotation(computeIdentity.Resource)) 273Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 274Assert.Equal(computeIdentity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 276var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 289.WithAnnotation(new AppIdentityAnnotation(identity.Resource)) 295Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 296Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 297Assert.Empty(otherGroup.Resource.WorkloadUserAssignedIdentities); 298var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 315.WithAnnotation(new AppIdentityAnnotation(identity.Resource)) 340var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource); 342var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>()); 343Assert.Same(pullIdentity.Resource, annotation.Identity); 364() => AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource)); 422var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>()); 424Assert.Same(registry.Resource, roles.TargetAzureResource); 426Assert.Contains(identity, sandboxGroup.Resource.References); 428var (_, sandboxBicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 467var buildOptionsCallbackCount = container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 481Assert.Null(computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)); 483Assert.Equal(buildOptionsCallbackCount, container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count()); 588sandboxGroup.Resource.ContainerRegistry!.Outputs["loginServer"] = "example.azurecr.io"; 589sandboxGroup.Resource.Outputs[AzureSandboxGroupResource.ImagePullIdentityClientIdOutputName] = 593sandboxGroup.Resource, 597sandboxGroup.Resource, 1169sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group"; 1170sandboxGroup.Resource.Outputs["location"] = "eastus2"; 1171var existingScope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource); 1174var targetResource = builder.AddContainer("frontend", "example/image").Resource; 1178sandboxGroup.Resource); 2019var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2094defaultResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2096disabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2098enabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2185var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2211Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http"), sandboxGroup.Resource, out var urlExpression)); 2216Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http").Property(EndpointProperty.TargetPort), sandboxGroup.Resource, out var targetPortExpression)); 2247var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2286var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2310var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2343var frontendCallbackCount = frontend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 2344var backendCallbackCount = backend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 2354Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment()); 2355Assert.Same(sandboxGroup.Resource, explicitComputeResource.GetComputeEnvironment()); 2395var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2397Assert.Same(sandboxGroup.Resource.ContainerRegistry, deploymentTarget.ContainerRegistry); 2398Assert.Same(sandboxGroup.Resource, deploymentTarget.ComputeEnvironment); 2402Assert.Same(sandboxGroup.Resource, sandboxContainer.Parent); 2433Resource = sandboxGroup.Resource.ContainerRegistry, 2486foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>() 2535Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment()); 2537var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2598var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2655Assert.Same(sandboxGroup.Resource, project.GetComputeEnvironment()); 2661project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2699project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2725project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2746project.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2781project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2813sandboxGroup.Resource, 2817sandboxGroup.Resource, 2842frontend.Resource.GetDeploymentTargetAnnotation(frontendGroup.Resource)?.DeploymentTarget); 2844backend.Resource.GetDeploymentTargetAnnotation(backendGroup.Resource)?.DeploymentTarget); 2845Assert.Null(frontend.Resource.GetDeploymentTargetAnnotation(backendGroup.Resource)); 2846Assert.Null(backend.Resource.GetDeploymentTargetAnnotation(frontendGroup.Resource)); 2866var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2887container.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2889var registry = Assert.IsType<AzureContainerRegistryResource>(sandboxGroup.Resource.ContainerRegistry); 2909Assert.Empty(context.GetSteps(container.Resource, WellKnownPipelineTags.PushContainerImage)); 2931api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2958var value = await AzureSandboxContainerDeployment.ResolveValueWithEgressHostsAsync(stepContext, web.Resource, endpointExpression); 2959var environment = await AzureSandboxContainerDeployment.ResolveEnvironmentVariablesAsync(stepContext, web.Resource); 2980storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 2996worker.Resource); 3033worker.Resource); 3058var dependencies = await web.Resource.GetResourceDependenciesAsync( 3061Assert.Contains(api.Resource, dependencies); 3062var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 3069foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 3098var steps = await CreateStepsAsync(app, consumerGroup.Resource); 3108foreach (var annotation in consumerGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 3138var firstDependencies = await first.Resource.GetResourceDependenciesAsync( 3141var secondDependencies = await second.Resource.GetResourceDependenciesAsync( 3144Assert.Contains(second.Resource, firstDependencies); 3145Assert.Contains(first.Resource, secondDependencies); 3146var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 3155foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 3188project.Resource); 3192Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(project.Resource)); 3196Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(container.Resource)); 3217api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 3241var command = await AzureSandboxContainerDeployment.ResolveModeledCommandAsync(stepContext, worker.Resource); 3276worker.Resource);
AzureSearchExtensionsTests.cs (6)
30search.Resource.Outputs["connectionString"] = fakeConnectionString; 32var connectionStringResource = (IResourceWithConnectionString)search.Resource; 35Assert.Equal("search", search.Resource.Name); 41var manifest = await GetManifestWithBicep(model, search.Resource); 126_ = search.Resource.AddAsExistingResource(infra); 129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureServiceBusConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)serviceBus.Resource).GetConnectionProperties().ToArray(); 39var properties = ((IResourceWithConnectionString)serviceBus.Resource).GetConnectionProperties().ToArray();
AzureServiceBusExtensionsTests.cs (71)
42var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 67var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 99await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 101await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 105await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 107await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 133hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 140await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 141await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 145await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 148await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 168serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(), 191var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 269var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 612Assert.Same(serviceBus.Resource.Annotations, sourceResource.Annotations); 614var persistenceAnnotation = Assert.Single(serviceBus.Resource.Annotations.OfType<PersistenceAnnotation>()); 655var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 671AssertWaitsForHealthy(serviceBus.Resource, sql); 730var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 747resource => Assert.Same(sql.Resource, resource)); 748AssertWaitsForHealthy(serviceBus.Resource, sql.Resource); 750AllocateContainerNetworkEndpoint(sql.Resource, "sql.dev.internal", 1433); 752var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 756Assert.Equal(await sql.Resource.PasswordParameter.GetValueAsync(CancellationToken.None), env["MSSQL_SA_PASSWORD"]); 771AllocateContainerNetworkEndpoint(sql.Resource, "sql.dev.internal", 1433); 773var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 792AllocateContainerNetworkEndpoint(sql.Resource, "host.docker.internal", 52133); 794var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 808var endpoint = sql.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == "tcp"); 809sql.Resource.Annotations.Remove(endpoint); 844AllocateContainerNetworkEndpoint(sql2.Resource, "sql2.dev.internal", 1433); 846var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 849Assert.Equal(await sql2.Resource.PasswordParameter.GetValueAsync(CancellationToken.None), env["MSSQL_SA_PASSWORD"]); 852AssertWaitsForHealthy(serviceBus.Resource, sql2.Resource); 854serviceBus.Resource.Annotations.OfType<ResourceRelationshipAnnotation>(), 855relationship => Assert.Same(sql2.Resource, relationship.Resource)); 871var waits = serviceBus.Resource.Annotations.OfType<WaitAnnotation>().ToArray(); 874wait => Assert.Same(sql1.Resource, wait.Resource), 875wait => Assert.Same(sql2.Resource, wait.Resource)); 945var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1010Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression); 1011Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression); 1012Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression); 1013Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression); 1027((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb"); 1033((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue"); 1040((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic"); 1047((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub"); 1083serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint"; 1085var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource; 1087Assert.Equal("sb", serviceBus.Resource.Name); 1093var manifest = await GetManifestWithBicep(model, serviceBus.Resource); 1176hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 1179await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 1180await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 1187await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 1190await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 1254Assert.True(serviceBus.Resource.IsEmulator()); 1255Assert.Contains(serviceBus.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1285_ = serviceBus.Resource.AddAsExistingResource(infra); 1288var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1307_ = serviceBus.Resource.AddAsExistingResource(infra); 1310var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1326_ = serviceBus.Resource.AddAsExistingResource(infra); 1329var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1347_ = serviceBus.Resource.AddAsExistingResource(infra); 1350var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1367_ = serviceBus.Resource.AddAsExistingResource(infra); 1370var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureSignalRConnectionPropertiesTests.cs (1)
17var properties = ((IResourceWithConnectionString)signalr.Resource).GetConnectionProperties().ToArray();
AzureSignalREmulatorFunctionalTest.cs (8)
28Assert.True(signalR.Resource.IsEmulator); 30var connectionStringExpr = signalR.Resource.ConnectionStringExpression; 35Assert.Equal(connectionString, await ((IResourceWithConnectionString)signalR.Resource).GetConnectionStringAsync()); 60await app.ResourceNotifications.WaitForResourceAsync(signalR.Resource.Name, KnownResourceStates.Running, cts.Token); 61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 65await app.ResourceNotifications.WaitForResourceHealthyAsync(signalR.Resource.Name, cts.Token); 67await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 98var connectionString = await signalR.Resource.ConnectionStringExpression.GetValueAsync(default);
AzureSignalRExtensionsTests.cs (6)
24var (manifest, bicep) = await GetManifestWithBicep(signalr.Resource, skipPreparer: true); 46var (manifest, bicep) = await GetManifestWithBicep(signalr.Resource, skipPreparer: true); 65Assert.True(signalR.Resource.IsEmulator()); 66Assert.Contains(signalR.Resource.Annotations, a => a is EmulatorResourceAnnotation); 96_ = signalR.Resource.AddAsExistingResource(infra); 99var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureSqlDatabaseConnectionPropertiesTests.cs (2)
94var resource = sqlServer.Resource; 145var resource = database.Resource;
AzureSqlDeploymentScriptTests.cs (1)
201var delegation = Assert.Single(aciSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
AzureSqlExtensionsTests.cs (22)
46var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource, skipPreparer: true); 92Assert.True(sql.Resource.IsContainer(), "The resource should now be a container resource."); 93var serverConnectionString = await sql.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 97var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 101var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 105var db3ConnectionString = await db3.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 149var endpoint = Assert.Single(innerSql.Resource.Annotations.OfType<EndpointAnnotation>()); 158Assert.True(sql.Resource.IsContainer(), "The resource should now be a container resource."); 159var serverConnectionString = await sql.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 162var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 165var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 168var db3ConnectionString = await db3.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 248var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource); 250Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation)); 254Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default)); 255Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression); 279var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource); 281Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation)); 285Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default)); 286Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression); 327_ = sql.Resource.AddAsExistingResource(infra); 330var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureStorageConnectionPropertiesTests.cs (3)
18var properties = ((IResourceWithConnectionString)blobs.Resource).GetConnectionProperties().ToArray(); 36var properties = ((IResourceWithConnectionString)queues.Resource).GetConnectionProperties().ToArray(); 54var properties = ((IResourceWithConnectionString)tables.Resource).GetConnectionProperties().ToArray();
AzureStorageEmulatorFunctionalTests.cs (23)
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); 178hb.Configuration[$"ConnectionStrings:{blobsResourceName}"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 179hb.Configuration[$"ConnectionStrings:{blobContainerName}"] = await container.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 180hb.Configuration[$"ConnectionStrings:{queuesResourceName}"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 181hb.Configuration[$"ConnectionStrings:{queueName}"] = await queue.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 193await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token); 225await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token); 229hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 265await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token); 269hb.Configuration["ConnectionStrings:QueueConnection"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
AzureStorageExtensionsTests.cs (114)
36var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 62var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 88var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 114var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 133storage.Resource.Annotations.OfType<EndpointAnnotation>(), 147var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource); 167var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource); 187Assert.True(storage.Resource.IsContainer()); 191Assert.Equal(expected, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default)); 203storage.Resource.Outputs["blobEndpoint"] = blobsConnectionString; 207Assert.Equal(blobsConnectionString, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default)); 218Assert.Equal("{storage.outputs.blobEndpoint}", blobs.Resource.ConnectionStringExpression.ValueExpression); 235Assert.True(storage.Resource.IsContainer()); 240string? blobConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default); 241string? blobContainerConnectionString = await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default); 257storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 262string? blobsConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default); 265Assert.Equal(expected, await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default)); 276Assert.Equal("Endpoint={storage.outputs.blobEndpoint};ContainerName=myContainer", blobContainer.Resource.ConnectionStringExpression.ValueExpression); 293Assert.True(storage.Resource.IsContainer()); 297Assert.Equal(expected, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync()); 309storage.Resource.Outputs["queueEndpoint"] = connectionString; 313Assert.Equal(connectionString, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync()); 324Assert.Equal("{storage.outputs.queueEndpoint}", queues.Resource.ConnectionStringExpression.ValueExpression); 341Assert.True(storage.Resource.IsContainer()); 346string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync(); 349Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 361storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 366string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync(); 369Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 381Assert.Equal("Endpoint={storage.outputs.queueEndpoint};QueueName=myqueue", queue.Resource.ConnectionStringExpression.ValueExpression); 396var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 413Assert.True(storage.Resource.IsContainer()); 420=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port)); 426Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression); 427Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression); 428Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression); 435Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync()); 436Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 437Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync()); 456storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 457storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 458storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 461Assert.Equal("storage", storage.Resource.Name); 463var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 481var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 490var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 496var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 505var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 511var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 520var tableManifest = await ManifestUtils.GetManifest(table.Resource); 541storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 542storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 543storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 546Assert.Equal("storage", storage.Resource.Name); 548var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 566var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 575var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 581var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 590var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 596var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 605var tableManifest = await ManifestUtils.GetManifest(table.Resource); 629storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 630storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 631storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 634Assert.Equal("storage", storage.Resource.Name); 638var storageManifest = await GetManifestWithBicep(model, storage.Resource); 704var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 713var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 717var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 726var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 730var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 739var tableManifest = await ManifestUtils.GetManifest(table.Resource); 760storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 761storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 762storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 765Assert.Equal("storage", storage.Resource.Name); 767var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 786var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 795var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 801var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 810var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 816var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 825var tableManifest = await ManifestUtils.GetManifest(table.Resource); 852Assert.Equal("storage-blobs", blobService.Resource.Name); 853Assert.Equal(blobService.Resource, blobStorageResource); 879Assert.Equal("storage-queues", queueService.Resource.Name); 880Assert.Equal(queueService.Resource, queueStorageResource); 897Assert.Same(blobs.Resource, container1.Resource.Parent); 898Assert.Same(blobs.Resource, container2.Resource.Parent); 914Assert.Same(queues.Resource, q1.Resource.Parent); 915Assert.Same(queues.Resource, q2.Resource.Parent); 931Assert.Same(dataLake.Resource, fs1.Resource.Parent); 932Assert.Same(dataLake.Resource, fs2.Resource.Parent); 957Assert.Equal("blobs", customBlobs.Resource.Name); 958Assert.Same(customBlobService, customBlobs.Resource); 960Assert.Same(defaultBlobService, originals.Resource.Parent); 961Assert.Same(defaultBlobService, derived.Resource.Parent); 977Assert.NotSame(customBlobs.Resource, defaultBlobs.Resource); 978Assert.Equal("blobs", customBlobs.Resource.Name); 979Assert.Equal("storage-blobs", defaultBlobs.Resource.Name); 994Assert.Same(first.Resource, container.Resource.Parent); 1005Assert.True(storage.Resource.IsEmulator()); 1006Assert.Contains(storage.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1036_ = storage.Resource.AddAsExistingResource(infra); 1039var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureStoragePrivateEndpointLockdownTests.cs (4)
31var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 52var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 69var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 91var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
AzureUserAssignedIdentityTests.cs (11)
124Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 171Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 176Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 229Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 234Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 312Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 313Assert.Same(identity.Resource, identityAnnotation2.IdentityResource); 320Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 322Assert.Same(storage.Resource, roleAssignmentResource2.TargetAzureResource); 370_ = userAssignedIdentity.Resource.AddAsExistingResource(infra); 373var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureVirtualNetworkExtensionsTests.cs (80)
22Assert.Equal("myvnet", vnet.Resource.Name); 23Assert.IsType<AzureVirtualNetworkResource>(vnet.Resource); 34Assert.Equal("myvnet", vnet.Resource.Name); 35Assert.Equal("10.1.0.0/16", vnet.Resource.AddressPrefix); 36Assert.Null(vnet.Resource.AddressPrefixParameter); 48Assert.Equal("myvnet", vnet.Resource.Name); 49Assert.Null(vnet.Resource.AddressPrefix); 50Assert.Same(vnetPrefixParam.Resource, vnet.Resource.AddressPrefixParameter); 61var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 76Assert.Equal("mysubnet", subnet.Resource.Name); 77Assert.Equal("mysubnet", subnet.Resource.SubnetName); 78Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix); 79Assert.Same(vnet.Resource, subnet.Resource.Parent); 90Assert.Equal("mysubnet", subnet.Resource.Name); 91Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 92Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix); 105Assert.Same(vnet.Resource, subnet1.Resource.Parent); 106Assert.Same(vnet.Resource, subnet2.Resource.Parent); 108Assert.NotSame(subnet1.Resource, subnet2.Resource); 121var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 135Assert.DoesNotContain(vnet.Resource, builder.Resources); 137Assert.DoesNotContain(subnet.Resource, builder.Resources); 152var subnetAnnotation = env.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault(); 157var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 171var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 186var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 201var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 226var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().Single(); 245var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 283var subnetAnnotation = environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault(); 287var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 304var subnetAnnotation = Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 307var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 323Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 324var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 341Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 342var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 364Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 365Assert.Single(firstSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 366Assert.Empty(secondSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 386Assert.Empty(appServiceEnvironment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 388var delegation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 402Assert.Equal("mysubnet", subnet.Resource.Name); 403Assert.Equal("mysubnet", subnet.Resource.SubnetName); 404Assert.Null(subnet.Resource.AddressPrefix); 405Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 406Assert.Same(vnet.Resource, subnet.Resource.Parent); 418Assert.Equal("mysubnet", subnet.Resource.Name); 419Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 420Assert.Null(subnet.Resource.AddressPrefix); 421Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 433var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 448var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 462Assert.NotNull(subnet.Resource.NetworkSecurityGroup); 463Assert.Equal("web-nsg", subnet.Resource.NetworkSecurityGroup.Name); 464Assert.Single(subnet.Resource.NetworkSecurityGroup.SecurityRules); 478Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 479Assert.Single(nsg.Resource.SecurityRules); 493var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 510var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 527var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 543var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 557var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 572var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 587var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 603var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 616var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 634var vnetManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 635var nsgManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource.Subnets[0].NetworkSecurityGroup!); 653var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 713var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
AzureWebPubSubExtensionsTests.cs (43)
35Assert.Equal(hubName, hub.Resource.Name); 36var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 57var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 63Assert.Equal("wps1", wps.Resource.Name); 76Assert.Equal("{wps1.outputs.endpoint}", wps.Resource.ConnectionStringExpression.ValueExpression); 77Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=abc", hub.Resource.ConnectionStringExpression.ValueExpression); 79Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hij", otherHub.Resource.ConnectionStringExpression.ValueExpression); 102var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 108Assert.Equal("wps1", wps.Resource.Name); 132var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 138Assert.Equal("wps1", wps.Resource.Name); 158wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 159var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 164Assert.Equal("wps1", wps.Resource.Name); 193wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 208var connectionStringResource = (IResourceWithConnectionString)wps.Resource; 211var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 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); 239Assert.Equal("hub1", hub1.Resource.HubName); 240Assert.Equal("hub2", hub2.Resource.HubName); 241Assert.Equal("hub3", hub3.Resource.HubName); 242Assert.Equal("hub4", hub4.Resource.HubName); 244Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub1", hub1.Resource.ConnectionStringExpression.ValueExpression); 245Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub2", hub2.Resource.ConnectionStringExpression.ValueExpression); 246Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub3", hub3.Resource.ConnectionStringExpression.ValueExpression); 247Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub4", hub4.Resource.ConnectionStringExpression.ValueExpression); 261Assert.Same(hub1.Resource, hub2.Resource); 262Assert.Equal("resource1", hub1.Resource.Name); 263Assert.Equal("same-hub", hub1.Resource.HubName); 272wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 282var connectionStringResource = (IResourceWithConnectionString)wps.Resource; 288var manifest = await GetManifestWithBicep(model, wps.Resource); 292Assert.Equal("wps1", wps.Resource.Name); 332wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 345var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 348Assert.Equal("wps1", wps.Resource.Name); 380_ = webPubSub.Resource.AddAsExistingResource(infra); 383var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
BicepUtilitiesTests.cs (49)
24await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource, builder.ExecutionContext); 56.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1")) 60await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource, builder.ExecutionContext); 74Assert.True(bicep0.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 79Assert.Equal(connectionStringResource.Resource, r.Resource); 84Assert.Equal(param.Resource, r.Resource); 89Assert.Equal(container.Resource, r.Resource); 99var bicep = builder.AddBicepTemplateString("test", "param value string").Resource; 143await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 144var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 147await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 148var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 170await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 171var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 174await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 175var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 187bicep0.Resource.Scope = new("rg0"); 191bicep1.Resource.Scope = new("rg1"); 195await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 196await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 197var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 201await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 202await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 203var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 215bicep0.Resource.Scope = new("rg0"); 219bicep1.Resource.Scope = new("rg0"); 223await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 224await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 225var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 229await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 230await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 231var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 241var bicep1 = builder.AddBicepTemplateString("test1", "param name string").Resource; 242var bicep2 = builder.AddBicepTemplateString("test2", "param name string").Resource; 262var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 287var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 315var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 347var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 368var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 383var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 399var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 414var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 433var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 448var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 462var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 474var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 490var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 515.Resource; 550var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
DurableTaskResourceExtensionsTests.cs (20)
30var connectionString = await dts.Resource.ConnectionStringExpression.GetValueAsync(default); 46var connectionString = await dts.Resource.ConnectionStringExpression.GetValueAsync(default); 64var connectionString = await dts.Resource.ConnectionStringExpression.GetValueAsync(default); 89var connectionString = await taskHub.Resource.ConnectionStringExpression.GetValueAsync(default); 101Assert.True(dts.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 114Assert.True(taskHub.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 130var ex = Assert.Throws<InvalidOperationException>(() => _ = dts.Resource.ConnectionStringExpression); 142Assert.False(dts.Resource.IsEmulator); 143Assert.DoesNotContain(dts.Resource.Annotations, a => a is EmulatorResourceAnnotation); 145Assert.Throws<InvalidOperationException>(() => _ = dts.Resource.ConnectionStringExpression); 156Assert.True(dts.Resource.IsEmulator); 158var emulatorAnnotation = dts.Resource.Annotations.OfType<EmulatorResourceAnnotation>().SingleOrDefault(); 161var containerImageAnnotation = dts.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 167var endpointAnnotations = dts.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 193var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 208var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 224var env1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 225var env2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts2.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 244var connectionString = await hub.Resource.ConnectionStringExpression.GetValueAsync(default); 255var ex = Assert.Throws<InvalidOperationException>(() => _ = dts.Resource.ConnectionStringExpression);
ExistingAzureResourceExtensionsTests.cs (11)
22Assert.False(serviceBus.Resource.IsExisting()); 36Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 57Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 75Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 96Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 116Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 134Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 155Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 173Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 193Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 214Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation));
ExistingAzureResourceTests.cs (38)
23var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 40var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 57var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 77var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource); 97var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 114var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource); 129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource); 146var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource); 163var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 180var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource); 197var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource); 214var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource); 235var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource); 252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource); 269var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource); 286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 303var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource); 319var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource); 337var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 354var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 371var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 386var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 402var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 425var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(openAI.Resource); 445var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 466var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 482var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource); 499var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource); 521Assert.Null(serviceBus.Resource.GetDeploymentTargetAnnotation()); 522Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 541Assert.Null(serviceBus.Resource.GetDeploymentTargetAnnotation()); 542Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 562var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource); 588resource.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(existingSubscriptionId.Resource); 590var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(resource.Resource, skipPreparer: true); 607resource.Resource.Scope = AzureBicepResourceScope.CreateForTenant(); 609var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(resource.Resource, skipPreparer: true);
FoundryConnectionPropertiesTests.cs (4)
17var properties = ((IResourceWithConnectionString)aiFoundry.Resource).GetConnectionProperties().ToArray(); 40aiFoundry.Resource.EmulatorServiceUri = new Uri("http://localhost:8080"); 41aiFoundry.Resource.ApiKey = "OPENAI_KEY"; 43var properties = ((IResourceWithConnectionString)aiFoundry.Resource).GetConnectionProperties().ToArray();
FoundryDeploymentConnectionPropertiesTests.cs (5)
21deployment.Resource.Parent.EmulatorServiceUri = new Uri("http://localhost:8080"); 22deployment.Resource.Parent.ApiKey = "OPENAI_KEY"; 23deployment.Resource.LocalModelId = "Phi-4-mini-instruct-generic-gpu:5"; 25var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray(); 68var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray();
FoundryExtensionsTests.cs (22)
355.PublishAsync(new ResourceReadyEvent(foundry.Resource, app.Services), cancellation.Token) 359.WaitForResourceAsync(deployment.Resource.Name, KnownResourceStates.Running, cancellation.Token) 363Assert.Equal("Phi-4-mini-instruct-generic-gpu:5", deployment.Resource.LocalModelId); 560Assert.True(foundry.Resource.IsEmulator); 561Assert.False(foundry.Resource.ManageLocalService); 562Assert.Equal(new Uri("http://windows-host:5273/"), foundry.Resource.EmulatorServiceUri); 563Assert.Equal("Endpoint=http://windows-host:5273/;Key=unused", foundry.Resource.ConnectionStringExpression.ValueExpression); 628Assert.Equal("{myAIFoundry.connectionString};Model=gpt-4", deployment.Resource.ConnectionStringExpression.ValueExpression); 639deployment.Resource.LocalModelId = "custom-model-id"; 641Assert.Equal("{myAIFoundry.connectionString};Model=custom-model-id", deployment.Resource.ConnectionStringExpression.ValueExpression); 654Assert.Equal("{myAIFoundry.connectionString};Deployment=deployment1", deployment.Resource.ConnectionStringExpression.ValueExpression); 670var manifest = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource); 688Assert.Same(foundry.Resource, project.Resource.Parent); 701Assert.Null(project.Resource.ContainerRegistry); 716var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource); 736var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource); 754var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource); 801SetFoundryProjectOutputs(project.Resource); 829SetFoundryProjectOutputs(project.Resource); 869SetFoundryProjectOutputs(project.Resource); 909SetFoundryProjectOutputs(project.Resource);
PublicApiTests\CosmosDBPublicApiTests.cs (10)
21var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 41var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 61var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 81var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 101var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 119var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 135var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 153var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 199var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource); 217var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
PublicApiTests\EventHubsPublicApiTests.cs (2)
21var parent = new AzureEventHubResource("hub", "event-hub", resource.Resource); 40var parent = new AzureEventHubResource("hub", "event-hub", resource.Resource);
ResourceWithAzureFunctionsConfigTests.cs (36)
16var storageResource = builder.AddAzureStorage("storage").Resource; 28var blobResource = storageResource.AddBlobs("blobs").Resource; 40var queueResource = storageResource.AddQueues("queues").Resource; 51var cosmosResource = builder.AddAzureCosmosDB("cosmos").Resource; 63var dbResource = cosmosResource.AddCosmosDatabase("database").Resource; 76var containerResource = dbResource.AddContainer("container", "/id").Resource; 87var eventHubsResource = builder.AddAzureEventHubs("eventhubs").Resource; 98var serviceBusResource = builder.AddAzureServiceBus("servicebus").Resource; 109var storage = builder.AddAzureStorage("storage").RunAsEmulator().Resource; 127var storage = builder.AddAzureStorage("storage").Resource; 148var blobResource = storage.AddBlobs("blobs").Resource; 165var tableResource = storage.AddTables("tables").Resource; 182var queueResource = storage.AddQueues("queues").Resource; 198var cosmosResource = builder.AddAzureCosmosDB("cosmos").RunAsEmulator().Resource; 214var cosmosResource = builder.AddAzureCosmosDB("cosmos").WithAccessKeyAuthentication().Resource; 230var cosmosResource = builder.AddAzureCosmosDB("cosmos").Resource; 247var dbResource = cosmosResource.AddCosmosDatabase("database").Resource; 256Assert.Equal(cosmosResource.Resource.ConnectionStringExpression.ValueExpression, targetReferenceExpression.ValueExpression); 259Assert.Equal(cosmosResource.Resource.ConnectionStringExpression.ValueExpression, targetReferenceExpression.ValueExpression); 272var containerResource = cosmosResource.AddCosmosDatabase("database").AddContainer("container", "/partitionKey").Resource; 281Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 284Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 300var dbResource = cosmosResource.AddCosmosDatabase("database").Resource; 309Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 322var containerResource = cosmosResource.AddCosmosDatabase("database").AddContainer("container", "/partitionKey").Resource; 331Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 342var eventHubsResource = builder.AddAzureEventHubs("eventhubs").RunAsEmulator().Resource; 362var eventHubsResource = builder.AddAzureEventHubs("eventhubs").Resource; 382var serviceBusResource = builder.AddAzureServiceBus("servicebus").Resource; 399var queueResource = serviceBusResource.AddServiceBusQueue("ordersqueue").Resource; 418var queueResource = serviceBusResource.AddServiceBusQueue("ordersqueue").Resource; 438var topicResource = serviceBusResource.AddServiceBusTopic("notificationstopic").Resource; 457var topicResource = serviceBusResource.AddServiceBusTopic("notificationstopic").Resource; 478var subscriptionResource = topicResource.AddServiceBusSubscription("usersubscription").Resource; 500var subscriptionResource = topicResource.AddServiceBusSubscription("usersubscription").Resource; 515Assert.Equal(serviceBusResource.Resource.ConnectionStringExpression.ValueExpression, connectionStringExpression.ValueExpression);
Aspire.Hosting.Azure.WebPubSub (5)
AzureWebPubSubExtensions.cs (4)
190if (!builder.Resource.Hubs.TryGetValue(hubName, out hubResource)) 192hubResource = new AzureWebPubSubHubResource(name, hubName, builder.Resource); 193builder.Resource.Hubs[hubName] = hubResource; 250builder.Resource.EventHandlers.Add((urlExpression, userEventPattern, systemEvents, authSettings));
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Blazor (44)
BlazorGatewayExtensions.cs (26)
160if (gateway.Resource is ProjectResource) 170else if (gateway.Resource is ExecutableResource executableResource) 295var pathPrefix = wasmApp.Resource.Name; 300var referencedServices = GetServiceDiscoveryReferences(wasmApp.Resource); 306var existingGatewayRefs = GetReferencedResourceNames(gateway.Resource); 318wasmApp.Resource.Parent = gateway.Resource; 331gateway.Resource, 333wasmApp.Resource.ProjectPath, 335browser: wasmApp.Resource.DebuggerBrowser); 355wasmApp.Resource.DebuggerBrowser = browser; 379var annotation = GetOrAddGatewayAppsAnnotation(gateway.Resource); 382GetBlazorStorePath(gateway.ApplicationBuilder), "gateways", gateway.Resource.Name); 391var registeredApps = GetRegisteredApps(gateway.Resource); 392var httpsGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "https"); 393var httpGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "http"); 395?? throw new InvalidOperationException($"The gateway '{gateway.Resource.Name}' must define an HTTP or HTTPS endpoint."); 498gateway.ApplicationBuilder.Eventing.Subscribe<InitializeResourceEvent>(gateway.Resource, (e, ct) => 501_ = Task.Run(() => WatchGatewayStateAsync(gateway.Resource, notificationService, ct), ct); 530await notificationService.PublishUpdateAsync(reg.AppBuilder.Resource, snapshot => snapshot with 623var publishResourceName = $"{wasmApp.Resource.Name}publish"; 624var project = GetProjectInfo(wasmApp.Resource.ProjectPath, gateway.ApplicationBuilder.AppHostDirectory); 626project.SolutionRoot, wasmApp.Resource.ProjectPath).Replace('\\', '/'); 648wasmApp.Resource.ProjectPath, 651?? throw new InvalidOperationException($"Unable to determine publish properties for '{wasmApp.Resource.ProjectPath}'."); 657Source = companion.Resource,
BlazorHostedExtensions.cs (13)
62var annotation = GetOrAddHostedClientAnnotation(host.Resource); 63annotation.Services.Add(new HostedClientService(service.Resource.Name, apiPrefix)); 66var existingRefs = GetReferencedResourceNames(host.Resource); 67if (!existingRefs.Contains(service.Resource.Name)) 110var annotation = GetOrAddHostedClientAnnotation(host.Resource); 151var annotation = GetOrAddHostedClientAnnotation(host.Resource); 172var debuggerName = $"{host.Resource.Name}-wasm-debugger"; 175var projectMetadata = host.Resource.GetProjectMetadata(); 226var httpsHostEndpoint = GetEndpointIfDefined(host.Resource, "https"); 227var httpHostEndpoint = GetEndpointIfDefined(host.Resource, "http"); 229?? throw new InvalidOperationException($"The host '{host.Resource.Name}' must define an HTTP or HTTPS endpoint."); 246$"{host.Resource.Name} (client)", 382host.Resource,
BrowserDebuggerHelper.cs (4)
70? $"{parentResource.Name}-{commandTarget.Resource.Name}-debugger" 183commandTarget.Resource, 197await notificationService.PublishUpdateAsync(commandTarget.Resource, s => s).ConfigureAwait(false); 256await notificationService.PublishUpdateAsync(commandTarget.Resource, s => s).ConfigureAwait(false);
Resources\GatewayAppsAnnotation.cs (1)
26public BlazorWasmAppResource Resource => AppBuilder.Resource;
Aspire.Hosting.Blazor.Tests (59)
AddBlazorGatewayTests.cs (17)
37gateway.Resource.GetProjectMetadata().ProjectPath); 39var executable = Assert.Single(gateway.Resource.Annotations.OfType<ExecutableAnnotation>()); 42Assert.Single(gateway.Resource.Annotations.OfType<ProjectLaunchArgsOverrideAnnotation>()); 44var initialSnapshot = Assert.Single(gateway.Resource.Annotations.OfType<ResourceSnapshotAnnotation>()).InitialSnapshot; 51gateway.Resource.Annotations.OfType<EndpointAnnotation>().OrderBy(endpoint => endpoint.Name), 63var args = await ArgumentEvaluator.GetArgumentListAsync(gateway.Resource); 88await AssertGatewayProcessLaunchPlanAsync(gateway.Resource, builder, app.Services); 114Assert.Empty(gateway.Resource.Annotations.OfType<ProjectLaunchArgsOverrideAnnotation>()); 115Assert.Empty(gateway.Resource.Annotations.OfType<ExecutableAnnotation>()); 216var backendEndpoint = backend.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 222gateway.Resource.Annotations.Remove(gateway.Resource.Annotations.OfType<EndpointAnnotation>().Single(endpoint => endpoint.Name == "https")); 225var companion = Assert.Single(gateway.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()).Source; 270var endpoint = gateway.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 497gateway.Resource.Annotations.OfType<EndpointReferenceAnnotation>(), 501Assert.Same(gateway.Resource, wasmApp.Resource.Parent);
AddDotnetProjectBlazorGatewayTests.cs (7)
23Assert.True(gateway.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 29gateway.Resource.Annotations.OfType<EndpointAnnotation>().Select(e => e.Name)); 31var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 54var gatewayRefs = gateway.Resource.Annotations 69await AddBlazorGatewayTests.AssertGatewayProcessLaunchPlanAsync(gateway.Resource, builder, app.Services); 79Assert.True(gateway.Resource.SupportsDotnetProgramPublishing()); 80Assert.IsAssignableFrom<IContainerFilesDestinationResource>(gateway.Resource);
BlazorHostedExtensionsTests.cs (12)
59var env = await GetEnvironmentVariables(blazorApp.Resource, builder); 207Assert.Same(host.Resource, parentRelationship.Resource); 209var commands = host.Resource.Annotations 245host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 282host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 315host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 325ResourceName = host.Resource.Name, 413var endpointRef = host.Resource.Annotations 464var weatherRefs = host.Resource.Annotations 486var referencedNames = host.Resource.Annotations 544var (_, sink) = await GetEnvironmentVariablesWithLogs(gateway.Resource, builder); 565var (_, sink) = await GetEnvironmentVariablesWithLogs(gateway.Resource, builder);
WithBlazorAppTests.cs (23)
28var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 50var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 74var annotations = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().ToList(); 97var gatewayRefs = gateway.Resource.Annotations 124var weatherRefs = gateway.Resource.Annotations 152var refs = gateway.Resource.Annotations 173var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 202Assert.Same(gateway.Resource, parentRelationship.Resource); 208var commandNames = wasmApp.Resource.Annotations 214Assert.DoesNotContain(gateway.Resource.Annotations, annotation => annotation is ResourceCommandAnnotation); 231Assert.DoesNotContain(wasmApp.Resource.Annotations, annotation => annotation is ResourceCommandAnnotation); 232Assert.Single(gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>()); 249var commands = wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToDictionary(annotation => annotation.Name); 289wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 316wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 323ResourceName = wasmApp.Resource.Name, 355Assert.Equal(wasmApp.Resource.ProjectPath, launchConfiguration.WebRoot); 372var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 397var endpointRef = gateway.Resource.Annotations 426var endpointRef = gateway.Resource.Annotations 437var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().Single(); 467var endpointRef = gateway.Resource.Annotations 478var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().Single();
Aspire.Hosting.Browsers (1)
BrowserLogsBuilderExtensions.cs (1)
130var parentResource = builder.Resource;
Aspire.Hosting.Browsers.Tests (5)
BrowserLogsBuilderExtensionsTests.cs (4)
48Assert.Equal(web.Resource.Name, browserLogsResource.ParentResource.Name); 55Assert.Equal(web.Resource.Name, parentRelationship.Resource.Name); 1352await app.ResourceNotifications.PublishUpdateAsync(web.Resource, snapshot => snapshot with 1358await eventing.PublishAsync(new ResourceReadyEvent(web.Resource, app.Services)).DefaultTimeout();
src\Aspire.Hosting.Browsers\BrowserLogsBuilderExtensions.cs (1)
130var parentResource = builder.Resource;
Aspire.Hosting.Containers.Tests (55)
ContainerResourceBuilderTests.cs (17)
16Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 24Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 25Assert.Equal("1.0.0", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 33container.Resource.Annotations.RemoveAt(0); 36Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 37Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 45container.Resource.Annotations.Add(new ContainerImageAnnotation { Image = "another-image" }); 48Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Image); 49Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Tag); 57Assert.Equal("7.1", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 65Assert.Equal("myregistry.azurecr.io", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Registry); 73Assert.Equal("42b5c726e719639fcc1e9dbc13dd843f567dcd37911d0e1abb9f47f2cc1c95cd", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().SHA256); 151var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 163var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 176var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 212var annotation = redis.Resource.Annotations.OfType<ContainerImagePullPolicyAnnotation>().Single(); 220var containerImage = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
ContainerResourceTests.cs (3)
125var args = await ArgumentEvaluator.GetArgumentListAsync(c2.Resource); 135Assert.False(c2.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 137var manifest = await ManifestUtils.GetManifest(c2.Resource);
ResourceFailureLoggingTests.cs (5)
34await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 58await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 82await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 105await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, [KnownResourceStates.Exited, KnownResourceStates.FailedToStart], cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 118var category = $"{builder.ApplicationBuilder.Environment.ApplicationName}.Resources.{builder.Resource.Name}";
WithDockerfileTests.cs (30)
104Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 108Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 129Assert.True(dockerFile.Resource.TryGetLastAnnotation<ContainerImageAnnotation>(out var containerImageAnnotation)); 133Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 137Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 152Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 156Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 174Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 178Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 185Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 280var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 329var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 377var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 424var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 654var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 670var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 687var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 703var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 720var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 736var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 753var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 769var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 794var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 798var stepsAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 803Resource = container.Resource 821Resource = container.Resource, 846var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 854Resource = container.Resource, 880var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 899var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
Aspire.Hosting.DevTunnels (12)
DevTunnelResourceBuilderExtensions.cs (12)
296foreach (var endpoint in resourceBuilder.Resource.GetEndpoints()) 366tunnelBuilder.Resource.Options.AllowAnonymous = true; 395tunnelBuilder.Resource.Options.ExpirationHours = expirationHours; 420return tunnelBuilder.GetEndpoint(resourceBuilder.Resource, endpointName); 440var portResource = tunnelBuilder.Resource.Ports 445return CreateEndpointReferenceWithError(tunnelBuilder.Resource, resource, endpointName); 463var portResource = tunnelBuilder.Resource.Ports 469return CreateEndpointReferenceWithError(tunnelBuilder.Resource, targetEndpointReference.Resource, targetEndpointReference.EndpointName); 522foreach (var port in tunnelResource.Resource.Ports.Where(p => p.TargetEndpoint.Resource == targetResource.Resource)) 524var serviceName = targetResource.Resource.Name; 568var tunnel = tunnelBuilder.Resource;
Aspire.Hosting.DevTunnels.Tests (49)
DevTunnelExpirationTests.cs (2)
66Assert.Equal(hours, tunnel.Resource.Options.ExpirationHours); 92Assert.Null(tunnel.Resource.Options.ExpirationHours);
DevTunnelResourceBuilderExtensionsTests.cs (46)
32var tunnelPort = tunnel.Resource.Ports.FirstOrDefault(); 37var values = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: builder.Services.BuildServiceProvider()).DefaultTimeout(); 51Assert.True(tunnel.Resource.Options.AllowAnonymous); 61Assert.Equal("custom-id", tunnel.Resource.TunnelId); 72var annotation = Assert.Single(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>()); 83Assert.Empty(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>()); 96Assert.Single(tunnel.Resource.Ports); 97var port = tunnel.Resource.Ports.First(); 111var tunnelPort = Assert.Single(tunnel.Resource.Ports); 126var tunnelPort = Assert.Single(tunnel.Resource.Ports); 145var tunnelPort = Assert.Single(tunnel.Resource.Ports); 165var tunnelPort = Assert.Single(tunnel.Resource.Ports); 185var args = await tunnel.Resource.GetArgumentValuesAsync().DefaultTimeout(); 216var tunnelPort = Assert.Single(tunnel.Resource.Ports); 224await builder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnel.Resource, app.Services)).DefaultTimeout(); 256var tunnelPort = Assert.Single(tunnel.Resource.Ports); 264await builder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnel.Resource, app.Services)).DefaultTimeout(); 297var port = Assert.Single(tunnel.Resource.Ports); 300var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 359var port = Assert.Single(tunnel.Resource.Ports); 362var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 389var tunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 392Assert.Equal(target.Resource, tunnelEndpoint.Resource); 409Assert.Equal(target.Resource, tunnelEndpoint.Resource); 427Assert.Equal(target.Resource, tunnelEndpoint.Resource); 441var endpointRef = tunnel.GetEndpoint(target.Resource, "nonexistent"); 481var endpointRef = tunnel.GetEndpoint(target.Resource, "https"); 501var httpTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "http"); 502var httpsTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 524var port = Assert.Single(tunnel.Resource.Ports); 614var port = Assert.Single(tunnel.Resource.Ports); 659var contextualTargetEndpoint = new EndpointReference(target.Resource, targetEndpoint.EndpointAnnotation, containerNetwork); 662var port = Assert.Single(tunnel.Resource.Ports); 731var tunnelPort = Assert.Single(tunnel.Resource.Ports); 743foreach (var annotation in tunnel.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>().ToArray()) 745tunnel.Resource.Annotations.Remove(annotation); 768var stopped = await app.ResourceCommands.ExecuteCommandAsync(tunnel.Resource, "stop", cts.Token).DefaultTimeout(); 773var restarted = await app.ResourceCommands.ExecuteCommandAsync(tunnel.Resource, "start", cts.Token).DefaultTimeout(); 787await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnel.Resource.Name, cts.Token); 808await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnel.Resource.Name, cts.Token); 816var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 818var waitForDependency = app.ResourceNotifications.WaitForDependenciesAsync(dependent.Resource, cts.Token); 836var port = Assert.Single(tunnel.Resource.Ports); 840var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 841await monitor.StartAsync(tunnel.Resource.TunnelId, CancellationToken.None); 843await monitor.ProcessLogAsync($"Ready to accept connections for tunnel: {tunnel.Resource.TunnelId}", CancellationToken.None);
TestDevTunnelMonitor.cs (1)
35Tunnel = _builder.AddDevTunnel("tunnel", "mytunnel").WithReference(target).Resource;
Aspire.Hosting.Docker (12)
DockerComposeEnvironmentExtensions.cs (6)
115configure(builder.Resource); 137builder.Resource.ConfigureComposeFile += configure; 160builder.Resource.ConfigureEnvFile += configure; 176builder.Resource.DashboardEnabled = enabled; 195builder.Resource.DashboardEnabled = true; 197configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized"));
DockerComposeEnvironmentResource.cs (4)
85var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 210var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 307if (DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard && !IsAlreadyTargeted(dashboard)) 340if (DashboardEnabled && Dashboard?.Resource is { } dashboardResource)
DockerComposePublishingContext.cs (1)
76IEnumerable<IResource> resources = environment.Dashboard?.Resource is IResource r
DockerComposeServiceExtensions.cs (1)
87return builder.Resource.AsEnvironmentPlaceholder(dockerComposeService);
Aspire.Hosting.Docker.Tests (29)
DockerComposePublisherTests.cs (3)
82.WithArgs("--cs", cs.Resource) 342var parmeters = paramNames.Select(name => builder.AddParameter(name).Resource).ToArray(); 1284enableTls.Resource,
DockerComposeTests.cs (26)
42Assert.Same(composeEnv.Resource, container.Resource.GetDeploymentTargetAnnotation()?.ComputeEnvironment); 276var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 518var containerImageReference = new ContainerImageReference(project.Resource); 543var containerImageReference = new ContainerImageReference(project.Resource); 566var containerImageReference = new ContainerImageReference(project.Resource); 590var containerImageReference = new ContainerImageReference(project.Resource); 618var containerImageReference = new ContainerImageReference(project.Resource); 643var containerImageReference = new ContainerImageReference(container.Resource); 668acr.Resource.Outputs["loginServer"] = "myacr.azurecr.io"; 669Assert.NotNull(acr.Resource.ProvisioningTaskCompletionSource); 670acr.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 673var containerImageReference = new ContainerImageReference(project.Resource); 887var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 889Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 893var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 895Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 899var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 901Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 905var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 907Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 910Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 911Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 912Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 913Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 943Assert.Same(dockerCompose.Resource, target.ComputeEnvironment);
Aspire.Hosting.Dotnet (7)
DotnetProjectBuildCoordinator.cs (2)
66state.AddResource(resourceBuilder.Resource); 69state.WaitForBuildCompletionAsync(resourceBuilder.Resource, services, cancellationToken)));
DotnetProjectHostingExtensions.cs (5)
159if (builder.Resource.Annotations.OfType<DotnetProjectMetadata>().SingleOrDefault() is { } metadata) 161ValidateBuildEnvironmentSupport(builder.Resource, metadata); 323var projectLaunchConfigurationType = resource.Resource.Annotations 330var defaultRunWorkingDirectory = resource.Resource.WorkingDirectory; 354resource.Resource,
Aspire.Hosting.Dotnet.Tests (174)
DotnetProjectBuildCoordinatorTests.cs (109)
54AssertBuildDependency(api.Resource, buildResource); 55AssertBuildDependency(worker.Resource, buildResource); 58Assert.Single(api.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 61Assert.Single(worker.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 279Assert.Empty(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 280Assert.False(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 283Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 284Assert.True(project.Resource.SupportsDebugging(builder.Configuration, out _)); 305Assert.True(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 308Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 330Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 351Assert.False(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 354Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 355Assert.True(project.Resource.SupportsDebugging(builder.Configuration, out _)); 394AssertBuildDependency(project.Resource, buildResource); 415AssertBuildDependency(file.Resource, buildResource); 462var fileArgs = await ArgumentEvaluator.GetArgumentListAsync(file.Resource, app.Services); 529AssertBuildDependency(project.Resource, finalBuild); 530AssertBuildDependency(file.Resource, finalBuild); 552var fileArgs = await ArgumentEvaluator.GetArgumentListAsync(file.Resource, app.Services); 610AssertBuildDependency(first.Resource, buildResources[1]); 611AssertBuildDependency(second.Resource, buildResources[1]); 613foreach (var (resource, path) in new[] { (first.Resource, firstPath), (second.Resource, secondPath) }) 619expected.Add(resource == first.Resource ? firstSentinel : secondSentinel); 662resource.Resource, 696AssertBuildDependency(first.Resource, buildResource); 697AssertBuildDependency(second.Resource, buildResource); 708var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 710Assert.Empty(project.Resource.Annotations.OfType<WaitAnnotation>()); 917Assert.Null(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).BuildWorkingDirectory); 1137AssertBuildDependency(api.Resource, buildResources[1]); 1138AssertBuildDependency(worker.Resource, buildResources[1]); 1357project.Resource, 1393project.Resource, 1397Assert.Same(project.Resource, callbackResource); 1433await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, serviceProvider: app.Services); 1452ForgetCachedCallbackResults(project.Resource); 1454project.Resource, 1457project.Resource, 1462await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 1561resource.Resource.Annotations.Add( 1639var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 1655project.Resource, 1658project.Resource, 1667await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 1698ForgetCachedCallbackResults(project.Resource); 1709project.Resource, 1718var projectArguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 1720project.Resource, 1725await project.Resource.CreateLaunchConfigurationAsync(refreshedCallbackContext)); 1995api.Resource, 1998worker.Resource, 2022var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 2035project.Resource, 2040await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 2049var arguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 2052Assert.Equal("resolved-command", project.Resource.Command); 2053Assert.Equal(runtimeWorkingDirectory, project.Resource.WorkingDirectory); 2071var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 2086var launchTool = Assert.Single(project.Resource.Annotations.OfType<LaunchToolArgsCallbackAnnotation>()); 2088var firstArguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 2091Assert.Equal(firstSdkWorkingDirectory, project.Resource.WorkingDirectory); 2097var secondArguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 2100Assert.Equal(projectDirectory, project.Resource.WorkingDirectory); 2125Assert.Equal(runtimeWorkingDirectory, worker.Resource.WorkingDirectory); 2151project.Resource, 2156await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 2160Assert.Equal(runtimeWorkingDirectory, project.Resource.WorkingDirectory); 2176Assert.True(@event.Model.Resources.Remove(removed.Resource)); 2200var index = @event.Model.Resources.IndexOf(replaced.Resource); 2202@event.Model.Resources[index] = new ExecutableResource(replaced.Resource.Name, "dotnet", workspace.Path); 2228Assert.True(@event.Model.Resources.Remove(project.Resource)); 2243AssertBuildDependency(file.Resource, buildResource); 2246project.Resource.Annotations 2252project.Resource.Annotations 2306AssertBuildDependency(first.Resource, buildResources[1]); 2307AssertBuildDependency(second.Resource, buildResources[1]); 2551Assert.True(builder.Resources.Remove(removed.Resource)); 2557Assert.True(Assert.Single(missing.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 2558AssertBuildDependency(missing.Resource, primaryBuildResource); 2559AssertBuildDependency(removed.Resource, primaryBuildResource); 2652Assert.Single(first.Resource.Annotations.OfType<DotnetProjectMetadata>()).ProjectPath); 2655Assert.Single(second.Resource.Annotations.OfType<DotnetProjectMetadata>()).ProjectPath); 2656Assert.Equal(Path.GetDirectoryName(coordinatedProjectPath), first.Resource.WorkingDirectory); 2657Assert.Equal(Path.GetDirectoryName(coordinatedProjectPath), second.Resource.WorkingDirectory); 2658Assert.Equal(coordinatedProjectPath, (await ArgumentEvaluator.GetArgumentListAsync(first.Resource))[2]); 2659Assert.Equal(coordinatedProjectPath, (await ArgumentEvaluator.GetArgumentListAsync(second.Resource))[2]); 2794var instances = resource.Resource.GetResolvedResourceNames(); 2800resource.Resource.Name, 2836var instances = resource.Resource.GetResolvedResourceNames(); 2842resource.Resource.Name, 3003Assert.False(missing.Resource.Annotations.OfType<DotnetProjectMetadata>().Single().SuppressBuild); 3005missing.Resource.Annotations.OfType<SupportsDebuggingAnnotation>(), 3040Assert.False(Assert.Single(missing.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 3042missing.Resource.Annotations.OfType<SupportsDebuggingAnnotation>(), 3044Assert.False(missing.Resource.SupportsDebugging(builder.Configuration, out _)); 3045var args = await ArgumentEvaluator.GetArgumentListAsync(missing.Resource, app.Services); 3115project.Resource, 3139var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 3156var callbackContext = new CommandLineArgsCallbackContext([], project.Resource, startCts.Token) 3161var launchTool = Assert.Single(project.Resource.Annotations.OfType<LaunchToolArgsCallbackAnnotation>()); 3193var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3297var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3343var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3377var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3429var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3485project.Resource, 3652worker.Resource,
DotnetProjectBuildEnvironmentTests.cs (2)
79Assert.Single(project.Resource.Annotations.OfType<DotnetProjectBuildEnvironmentCallbackAnnotation>()); 80Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildEnvironmentCallbackAnnotation>());
DotnetProjectOptionsTests.cs (5)
34var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(resource.Resource, ExecutableLaunchMode.Debug); 36await resource.Resource.CreateLaunchConfigurationAsync(callbackContext)); 40AssertEndpointPort(resource.Resource, expectedPort); 55var endpoint = Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 79AssertEndpointPort(resource.Resource, expectedPort);
DotnetProjectPublicApiTests.cs (1)
116project.Resource.Annotations.Add(new DotnetProjectMetadata("app.cs", buildConfiguration: null));
DotnetProjectResourceTests.cs (57)
40var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 56var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 72Assert.Equal("dotnet", app.Resource.Command); 73Assert.Equal(Path.GetDirectoryName(projectPath), app.Resource.WorkingDirectory); 83Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 84Assert.IsAssignableFrom<ExecutableResource>(app.Resource); 85Assert.IsAssignableFrom<IComputeResource>(app.Resource); 112.Where(item => ReferenceEquals(item.ModelResource, resource.Resource)) 118Assert.True(resource.Resource.TryGetInstances(out var instances)); 127Assert.Equal(resource.Resource.Command, executable.Spec.ExecutablePath); 128Assert.Equal(resource.Resource.WorkingDirectory, executable.Spec.WorkingDirectory); 156Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 178var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 179var metadata = app.Resource.GetProjectMetadata(); 185Assert.True(app.Resource.SupportsDotnetProgramPublishing()); 186Assert.IsAssignableFrom<IDotnetProgramResource>(app.Resource); 187Assert.IsAssignableFrom<IContainerFilesDestinationResource>(app.Resource); 197var metadata = resource.Resource.GetProjectMetadata(); 199Assert.True(resource.Resource.SupportsDotnetProgramPublishing()); 202Assert.Single(resource.Resource.Annotations.OfType<PipelineStepAnnotation>()); 203Assert.Single(resource.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 204Assert.Single(resource.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>()); 233var manifest = await ManifestUtils.GetManifestOrNull(resource.Resource, workspace.Path); 249var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path); 267var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path); 316Source = assets.Resource, 361await imageBuilder.BuildImageAsync(resource.Resource, cancellation.Token); 412await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 415Assert.Empty(resource.Resource.GetProjectMetadata().BuildEnvironment); 416Assert.Null(resource.Resource.GetProjectMetadata().BuildWorkingDirectory); 438() => imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)); 484Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 502Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 512var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 526var launchDefaults = Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 581var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 595var resource = builder.AddDotnetProject("testapp", projectPath, o => o.ExcludeLaunchProfile = true).Resource; 609var resource = builder.AddDotnetProject("testapp", appPath, o => o.ExcludeLaunchProfile = true).Resource; 642Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out var supportsDebugging)); 646app.Resource, 649await app.Resource.CreateLaunchConfigurationAsync(callbackContext)); 685app.Resource, 688await app.Resource.CreateLaunchConfigurationAsync(callbackContext)); 706var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 722Assert.Empty(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 724var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 768var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 794var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 820var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 839var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 874var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 898var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 930var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 962var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 992var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 1035var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 1063var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
Aspire.Hosting.DotnetTool.Tests (31)
AddDotnetToolTests.cs (25)
20Assert.Equal("mytool", tool.Resource.Name); 21Assert.IsType<DotnetToolResource>(tool.Resource); 30var annotation = Assert.Single(tool.Resource.Annotations.OfType<DotnetToolAnnotation>()); 64var annotation = Assert.Single(tool.Resource.Annotations.OfType<ResourceIconAnnotation>()); 76var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 96var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 118var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 139var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 162var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 187var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 209var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 230var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 255var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 280var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 291var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 302var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 314var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 325var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 336var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 337tool.Resource.Annotations.Remove(annotation); 341var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 357var manifest = await ManifestUtils.GetManifest(tool.Resource).DefaultTimeout(); 398var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 401var manifest = await ManifestUtils.GetManifest(tool.Resource).DefaultTimeout(); 427var annotation = Assert.Single(tool.Resource.Annotations.OfType<RequiredCommandAnnotation>());
DotnetToolFunctionalTests.cs.cs (6)
23await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 24var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); 28Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState)); 46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 47var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); 50Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState));
Aspire.Hosting.EntityFrameworkCore (28)
EFMigrationResourceBuilderExtensions.cs (18)
39var migrationResource = builder.Resource; 104builder.Resource.PublishAsMigrationScript = true; 105builder.Resource.ScriptIdempotent = idempotent; 106builder.Resource.ScriptNoTransactions = noTransactions; 164builder.Resource.PublishAsMigrationBundle = true; 165builder.Resource.BundleSelfContained = selfContained; 166builder.Resource.PublishBundleContainer = publishContainer; 167builder.Resource.BundleBaseImage = baseImage; 171builder.Resource.BundleTargetRuntime = targetRuntime ?? (publishContainer ? "linux-x64" : null); 202builder.Resource.MigrationOutputDirectory = outputDirectory; 220builder.Resource.MigrationNamespace = @namespace; 244builder.Resource.MigrationsProjectPath = projectPath; 267builder.Resource.MigrationsProjectPath = metadata.ProjectPath; 268builder.Resource.MigrationsProjectMetadata = metadata; 286IResourceBuilder<IDotnetProgramResource> projectBuilder => WithMigrationsProjectResource(builder, projectBuilder.Resource), 304builder.Resource.MigrationsProjectResource = projectResource; 305builder.Resource.MigrationsProjectMetadata = metadata; 328var migrationResource = builder.Resource;
EFResourceBuilderExtensions.cs (10)
233.Where(r => ReferenceEquals(r.StartupProjectResource, builder.Resource)) 241$"The DbContext type '{GetShortTypeName(dbContextTypeName)}' has already been registered for EF migrations on resource '{builder.Resource.Name}'."); 247$"Cannot register a specific DbContext type for migrations when they have already been registered without a context type on resource '{builder.Resource.Name}'."); 255$"Cannot register migrations without a context type when they have already been registered without a context type on resource '{builder.Resource.Name}'."); 259$"Cannot register migrations without a context type when they have already been registered for specific DbContext types on resource '{builder.Resource.Name}'."); 262var projectMetadata = builder.Resource.GetProjectMetadata(); 266$"EF Core migrations require a project file. Resource '{builder.Resource.Name}' is a file-based app."); 269var migrationResource = new EFMigrationResource(name, builder.Resource, dbContextTypeName) 741var toolResource = toolBuilder.Resource; 775migrationResource.ToolResource = toolBuilder.Resource;
Aspire.Hosting.EntityFrameworkCore.Tests (214)
AddEFMigrationsTests.cs (34)
24Assert.Equal("mymigrations", migrations.Resource.Name); 25Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 26Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 38Assert.Equal("mymigrations", migrations.Resource.Name); 39Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 40Assert.Null(migrations.Resource.DbContextTypeName); 52Assert.Equal("mymigrations", migrations.Resource.Name); 53Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 54Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 67Assert.Equal("mymigrations", migrations.Resource.Name); 68Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 69Assert.Equal(contextTypeName, migrations.Resource.DbContextTypeName); 95Assert.Same(project.Resource, migrations.Resource.StartupProjectResource); 99_ = migrations.Resource.ProjectResource; 129Assert.Same(project.Resource, migrations.Resource.ProjectResource); 142Assert.NotEqual(migrations1.Resource, migrations2.Resource); 143Assert.Equal(typeof(TestDbContext).FullName, migrations1.Resource.DbContextTypeName); 144Assert.Equal(typeof(AnotherDbContext).FullName, migrations2.Resource.DbContextTypeName); 156Assert.NotEqual(migrations1.Resource, migrations2.Resource); 157Assert.Equal("MyApp.Data.AppDbContext", migrations1.Resource.DbContextTypeName); 158Assert.Equal("MyApp.Data.LoggingDbContext", migrations2.Resource.DbContextTypeName); 238var snapshotAnnotation = migrations.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().FirstOrDefault(); 251var iconAnnotation = migrations.Resource.Annotations.OfType<ResourceIconAnnotation>().FirstOrDefault(); 263Assert.IsAssignableFrom<IResourceWithWaitSupport>(migrations.Resource); 273Assert.False(migrations.Resource.PublishAsMigrationScript); 274Assert.False(migrations.Resource.PublishAsMigrationBundle);
EFBuildCustomizationWarningTests.cs (7)
75migrations.Resource, logger, TestContext.Current.CancellationToken, app.Services, tool.Resource); 97ExpectedArguments(executor, migrations.Resource, "database", "update", noBuild: true), 117migrations.Resource, new TestLogger("EF", sink, level => level >= LogLevel.Information), 138Assert.Empty(startup.Resource.GetProjectMetadata().BuildEnvironment); 150migrations.Resource, new TestLogger("EF", sink, level => level >= LogLevel.Information), 161var expected = ExpectedArguments(executor, migrations.Resource, "migrations", bundle ? "bundle" : "script", noBuild: false); 181migrations.Resource, logger, TestContext.Current.CancellationToken, app.Services, tool.Resource);
EFBuildReadinessTests.cs (18)
34migrations.Resource.ToolResource = tool.Resource; 38migrations.Resource, command, TestContext.Current.CancellationToken); 48Assert.True(app.ResourceNotifications.TryGetCurrentState(migrations.Resource.Name, out var state)); 67migrations.Resource.ToolResource = tool.Resource; 78migrations.Resource.Name, KnownResourceStates.FailedToStart, token); 81() => app.ResourceNotifications.WaitForDependenciesAsync(project.Resource, token)); 99migrations.Resource.ToolResource = tool.Resource; 106migrations.Resource.Name, succeed ? KnownResourceStates.Finished : KnownResourceStates.FailedToStart, token); 109Assert.False(migrations.Resource.IsExecutingCommand); 113() => app.ResourceNotifications.WaitForDependenciesAsync(project.Resource, token)); 139migrations.Resource.ToolResource = tool.Resource; 144migrations.Resource, "ef-database-update", TestContext.Current.CancellationToken); 148Assert.False(migrations.Resource.IsExecutingCommand); 151migrations.Resource, "ef-database-update", TestContext.Current.CancellationToken); 170Assert.Same(target.Resource, migrations.Resource.MigrationsProjectResource); 179migrations.Resource, NullLogger.Instance, TestContext.Current.CancellationToken, app.Services, tool.Resource); 203migrations.Resource, NullLogger.Instance, TestContext.Current.CancellationToken, app.Services, tool.Resource);
EFCoreOperationExecutorTests.cs (7)
144new EFMigrationResource("migrations", project.Resource, dbContextTypeName: null), 165new EFMigrationResource("migrations", project.Resource, dbContextTypeName: null), 187tool.Resource.Annotations.Add(firstCommand); 190tool.Resource, 195tool.Resource.Annotations.Remove(firstCommand); 196tool.Resource.Annotations.Add(new CommandLineArgsCallbackAnnotation(args => args.Add("second"))); 199tool.Resource,
EFMigrationCommandsTests.cs (18)
20var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 34var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 49var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 64var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 82var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 96var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 110var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 124var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 139Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 149var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 164var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 180var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 196var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 224migrations.Resource.IsExecutingCommand = true; 226var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 254migrations.Resource.IsExecutingCommand = true; 256var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 277migrations.Resource.IsExecutingCommand = false;
EFMigrationConfigurationTests.cs (45)
34Assert.True(migrations.Resource.PublishAsMigrationScript); 45Assert.True(migrations.Resource.PublishAsMigrationBundle); 56Assert.Equal("Data/Migrations", migrations.Resource.MigrationOutputDirectory); 67Assert.Equal("MyApp.Data.Migrations", migrations.Resource.MigrationNamespace); 99Assert.True(migrations.Resource.PublishAsMigrationScript); 114Assert.True(migrations.Resource.PublishAsMigrationScript); 115Assert.True(migrations.Resource.PublishAsMigrationBundle); 116Assert.Equal("CustomDir", migrations.Resource.MigrationOutputDirectory); 117Assert.Equal("MyApp.Migrations", migrations.Resource.MigrationNamespace); 131Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 163Assert.False(migrations.Resource.PublishAsMigrationScript); 164Assert.False(migrations.Resource.PublishAsMigrationBundle); 165Assert.Null(migrations.Resource.MigrationOutputDirectory); 166Assert.Null(migrations.Resource.MigrationNamespace); 167Assert.Null(migrations.Resource.MigrationsProjectPath); 178Assert.NotNull(migrations.Resource.MigrationsProjectPath); 180Assert.EndsWith("Target.csproj", migrations.Resource.MigrationsProjectPath); 215Assert.Null(migrations.Resource.MigrationsProjectPath); 233Assert.Equal(target.Resource.GetProjectMetadata().ProjectPath, migrations.Resource.MigrationsProjectPath); 234Assert.Same(target.Resource, migrations.Resource.MigrationsProjectResource); 237Assert.Null(migrations.Resource.MigrationsProjectResource); 240migrations.Resource.MigrationsProjectPath = new Projects.ServiceA().ProjectPath; 241Assert.Null(migrations.Resource.MigrationsProjectResource); 242Assert.Null(migrations.Resource.MigrationsProjectMetadata); 253Assert.Null(migrations.Resource.MigrationsProjectPath); 258Assert.Equal(Path.GetFullPath(Path.Combine(builder.AppHostDirectory, "Target.csproj")), migrations.Resource.MigrationsProjectPath); 260Assert.Equal(Path.GetFullPath(Path.Combine(builder.AppHostDirectory, "Target.csproj")), migrations.Resource.MigrationsProjectPath); 271Assert.True(migrations.Resource.PublishAsMigrationScript); 272Assert.True(migrations.Resource.ScriptIdempotent); 283Assert.True(migrations.Resource.PublishAsMigrationScript); 284Assert.False(migrations.Resource.ScriptIdempotent); 295Assert.True(migrations.Resource.PublishAsMigrationScript); 296Assert.True(migrations.Resource.ScriptNoTransactions); 307Assert.True(migrations.Resource.PublishAsMigrationBundle); 308Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 319Assert.True(migrations.Resource.PublishAsMigrationBundle); 320Assert.True(migrations.Resource.BundleSelfContained); 332Assert.True(migrations.Resource.PublishAsMigrationScript); 333Assert.True(migrations.Resource.ScriptIdempotent); 334Assert.True(migrations.Resource.ScriptNoTransactions); 335Assert.True(migrations.Resource.PublishAsMigrationBundle); 336Assert.Equal("win-x64", migrations.Resource.BundleTargetRuntime); 337Assert.True(migrations.Resource.BundleSelfContained);
EFMigrationPipelineTests.cs (73)
47migrations.Resource.ToolResource = tool.Resource; 54foreach (var annotation in migrations.Resource.Annotations.OfType<PipelineStepAnnotation>()) 59Resource = migrations.Resource 89var steps = await CreateStepsAsync(builder, migrations.Resource); 106var steps = await CreateStepsAsync(builder, migrations.Resource); 122var steps = await CreateStepsAsync(builder, migrations.Resource); 140var steps = await CreateStepsAsync(builder, migrations.Resource); 158var m1Steps = await CreateStepsAsync(builder, m1.Resource); 159var m2Steps = await CreateStepsAsync(builder, m2.Resource); 184var m1Steps = await CreateStepsAsync(builder, m1.Resource); 185var m2Steps = await CreateStepsAsync(builder, m2.Resource); 214var m1Steps = await CreateStepsAsync(builder, m1.Resource); 215var m2Steps = await CreateStepsAsync(builder, m2.Resource); 236var m1Steps = await CreateStepsAsync(builder, m1.Resource); 237var m2Steps = await CreateStepsAsync(builder, m2.Resource); 262var m1Steps = await CreateStepsAsync(builder, m1.Resource); 263var m3Steps = await CreateStepsAsync(builder, m3.Resource); 285var steps = await CreateStepsAsync(builder, migrations.Resource); 288Assert.True(migrations.Resource.PublishAsMigrationBundle); 289Assert.True(migrations.Resource.PublishBundleContainer); 301var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 321var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 333var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 344var startCommand = migrations.Resource.ToolResource.Annotations 361Assert.True(migrations.Resource.PublishAsMigrationBundle); 362Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 363Assert.True(migrations.Resource.BundleSelfContained); 364Assert.True(migrations.Resource.PublishBundleContainer); 375Assert.True(migrations.Resource.PublishAsMigrationBundle); 376Assert.False(migrations.Resource.PublishBundleContainer); 387Assert.True(migrations.Resource.PublishAsMigrationScript); 388Assert.True(migrations.Resource.ScriptIdempotent); 389Assert.True(migrations.Resource.ScriptNoTransactions); 390Assert.False(migrations.Resource.PublishAsMigrationBundle); 403Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 416Assert.Equal("linux-arm64", migrations.Resource.BundleTargetRuntime); 429Assert.False(migrations.Resource.BundleSelfContained); 440Assert.Null(migrations.Resource.BundleTargetRuntime); 453Assert.IsAssignableFrom<ContainerResource>(migrations.Resource); 454Assert.IsAssignableFrom<IComputeResource>(migrations.Resource); 455Assert.False(migrations.Resource.IsContainer()); 468var dockerfileAnnotation = Assert.Single(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 474Assert.True(migrations.Resource.IsContainer()); 490Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 491Assert.False(migrations.Resource.IsContainer()); 494Assert.True(migrations.Resource.PublishBundleContainer); 505Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 506Assert.False(migrations.Resource.IsContainer()); 519var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 538var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 562var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 582migrations.Resource.ResolvedFramework = resolvedFramework; 584var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 599migrations.Resource.ResolvedFramework = "net11.0"; 601var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 615var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 629var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 648EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 665EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 683var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 703var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 722EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 736var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource)); 743var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 757var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource)); 764var waitedResources = migrations.Resource.Annotations.OfType<WaitAnnotation>().Select(w => w.Resource).ToList(); 765Assert.Contains(server.Resource, waitedResources); 766Assert.Contains((IResource)database.Resource, waitedResources); 769var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 781Assert.Equal("mymigrations.exe", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource)); 792Assert.Equal("mymigrations", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource)); 805var steps = await CreateStepsAsync(builder, migrations.Resource); 813Assert.Contains($"build-{migrations.Resource.Name}", generateStep.RequiredBySteps);
EFMigrationWaitForTests.cs (12)
24var waitAnnotation = anotherProject.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(); 26Assert.Equal(migrations.Resource, waitAnnotation.Resource); 41var wait1 = project1.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(w => w.Resource == migrations.Resource); 42var wait2 = project2.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(w => w.Resource == migrations.Resource); 60var waitAnnotations = anotherProject.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 62Assert.Contains(waitAnnotations, w => w.Resource == migrations1.Resource); 63Assert.Contains(waitAnnotations, w => w.Resource == migrations2.Resource); 77Assert.NotNull(anotherProject.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault()); 90var waitAnnotation = container.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(); 92Assert.Equal(migrations.Resource, waitAnnotation.Resource);
Aspire.Hosting.Foundry (102)
FoundryExtensions.cs (6)
70var deployment = new FoundryDeploymentResource(name, modelName, modelVersion, format, builder.Resource); 74builder.Resource.AddDeployment(deployment); 79if (builder.Resource.IsEmulator) 156configure(builder.Resource); 221var resource = builder.Resource; 394var foundryResource = builder.Resource.Parent;
HostedAgent\HostedAgentBuilderExtension.cs (10)
268if (project.Resource.DefaultContainerRegistry is { } defaultRegistry) 271project.Resource.DefaultContainerRegistry = null; 284.AddFoundry($"{builder.Resource.Name}-proj-foundry") 285.AddProject($"{builder.Resource.Name}-proj"); 295var existingHttpEndpoint = builder.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(e => e.Name == "http"); 448var resource = builder.Resource; 449var projectResource = project.Resource; 464existingHostedAgent.Resource.Configure = configureHostedAgent; 476target = containerResourceBuilder.Resource; 493target = containerResourceBuilder.Resource;
Project\AzureCognitiveServicesBase.cs (2)
114var r = AzureProvisionableAspireResource<P>.GetProvisionableResource(infra, builder.Resource.GetBicepIdentifier()) ?? throw new InvalidOperationException($"Provisionable resource for Aspire resource '{builder.Resource.Name}' not found in infrastructure.");
Project\ConnectionBuilderExtensions.cs (10)
83var connectionResource = new AzureCognitiveServicesProjectConnectionResource(name, configureInfrastructure, builder.Resource); 121return builder.AddConnection(db.Resource); 161return builder.AddConnection(storage.Resource); 205return builder.AddConnection(registry.Resource); 246var projectPrincipalId = builder.Resource.PrincipalId.AsProvisioningParameter(infra); 270return builder.AddConnection(search.Resource); 309if (keyVault.Resource.IsEmulator()) 317return builder.AddConnection($"{keyVault.Resource.Name}-{Guid.NewGuid():N}", (infra) => 319var vault = (KeyVaultService)keyVault.Resource.AddAsExistingResource(infra); 513var connectionResource = new BingGroundingConnectionResource(name, configureInfrastructure, builder.Resource);
Project\ProjectBuilderExtension.cs (18)
45if (builder.Resource.IsEmulator) 52var project = builder.ApplicationBuilder.AddResource(new AzureCognitiveServicesProjectResource(name, ConfigureInfrastructure, builder.Resource)); 55project.Resource.DefaultContainerRegistry = CreateDefaultRegistry(builder.ApplicationBuilder, $"{name}-acr"); 97if (builder.Resource.KeyVaultConn is not null) 99throw new InvalidOperationException($"Azure Cognitive Services project resource '{builder.Resource.Name}' already has a Key Vault connection configured."); 104builder.Resource.KeyVaultConn = conn.Resource; 121builder.Resource.AppInsights = appInsights.Resource; 186GetCapabilityHostConfiguration(builder).CosmosDB = cosmosDb.Resource; 204GetCapabilityHostConfiguration(builder).Storage = storage.Resource; 222GetCapabilityHostConfiguration(builder).Search = search.Resource; 240GetCapabilityHostConfiguration(builder).AzureOpenAI = openAI.Resource; 287return builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.Parent).AddDeployment(name, model); 328return builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.Parent).AddDeployment(name, modelName, modelVersion, format); 719builder.Resource.CapabilityHostConfiguration = config; 724=> builder.Resource.CapabilityHostConfiguration 725?? throw new InvalidOperationException($"Microsoft Foundry project resource '{builder.Resource.Name}' does not have a capability host configured. Call addCapabilityHost first.");
Project\ProjectResource.cs (4)
369configuration.CosmosDB = cosmosDb.Resource; 381configuration.Storage = storage.Resource; 393configuration.Search = search.Resource; 405configuration.AzureOpenAI = openAI.Resource;
PromptAgent\PromptAgentBuilderExtensions.cs (35)
69var agent = new AzurePromptAgentResource(name, model.Resource.DeploymentName, project.Resource, instructions); 152agent.Resource.AddTool(tool.Resource); 179var resource = new CodeInterpreterToolResource(name, project.Resource); 203var resource = new FileSearchToolResource(name, project.Resource) 228var resource = new WebSearchToolResource(name, project.Resource); 250var resource = new ImageGenerationToolResource(name, project.Resource); 278var resource = new ComputerToolResource(name, project.Resource, displayWidth, displayHeight, environment); 311var resource = new AzureAISearchToolResource(name, project.Resource) 336if (tool.Resource.Connection is not null) 339$"Azure AI Search tool '{tool.Resource.Name}' already has a backing resource configured."); 343var projectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project); 348tool.Resource.Connection = connection.Resource; 349tool.Resource.SearchResource = search.Resource; 374var resource = new BingGroundingToolResource(name, project.Resource); 447if (tool.Resource.Connection is not null) 450$"Bing Grounding tool '{tool.Resource.Name}' already has a connection configured."); 456tool.Resource.Connection = connectionBuilder.Resource; 461var projectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project); 462var connection = projectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", bingResourceId); 463tool.Resource.Connection = connection.Resource; 467var paramProjectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project); 468var paramConnection = paramProjectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", parameterBuilder); 469tool.Resource.Connection = paramConnection.Resource; 505var resource = new SharePointToolResource(name, project.Resource, projectConnectionIds); 529var resource = new FabricToolResource(name, project.Resource, projectConnectionIds); 568name, project.Resource, functionName, description, parameters, 631name, project.Resource, functionName, parameters, description, strictModeEnabled); 685builder.Resource.AddCustomTool(tool);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Toolbox\FoundryToolboxBuilderExtensions.cs (16)
53var toolbox = new FoundryToolboxResource(name, builder.Resource); 62toolbox.Annotations.Add(new ReferenceRoleAssignmentAnnotation(builder.Resource, roles)); 183builder.Resource.AddTool(new FoundryToolboxWebSearchToolDefinition(name, description)); 203builder.Resource.Description = description; 323if (builder.Resource.IsExisting) 328var projectBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.Parent); 330builder.Resource.Parent.Name, 331builder.Resource.Name, 333search.Resource.Name); 334var connection = projectBuilder.AddSearchConnection(connectionName, search.Resource); 335builder.Resource.AddTool(new FoundryToolboxAzureAISearchToolDefinition( 337search.Resource, 338connection.Resource, 358foreach (var connection in builder.Resource.Tools 365builder.Resource.ClearTools(); 379builder.Resource.AddTool(new FoundryToolboxMcpToolDefinition(name, endpointExpression, options));
Aspire.Hosting.Foundry.Tests (199)
AddFoundryTests.cs (3)
19Assert.NotNull(resourceBuilder.Resource); 20Assert.Equal(name, resourceBuilder.Resource.Name); 21Assert.IsType<FoundryResource>(resourceBuilder.Resource);
AddProjectTests.cs (4)
21Assert.NotNull(resourceBuilder.Resource); 22Assert.Equal(name, resourceBuilder.Resource.Name); 23Assert.IsType<AzureCognitiveServicesProjectResource>(resourceBuilder.Resource); 37var envVars = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
HostedAgentExtensionTests.cs (29)
34Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 49Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 66Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 170var endpoint = Assert.Single(agent.Resource.Annotations.OfType<EndpointAnnotation>()); 184var result = await app.ResourceCommands.ExecuteCommandAsync(agent.Resource, "send-message", arguments); 372ReferenceEquals(r.Resource, project.Resource)); 385ReferenceEquals(r.Resource, project.Resource)); 422SetFoundryProjectOutputs(project.Resource); 450Assert.Same(agent.Resource, hostedAgent.Target); 451Assert.True(agent.Resource.SupportsDotnetProgramPublishing()); 452Assert.DoesNotContain(builder.Resources.OfType<ContainerResource>(), resource => resource.Name == agent.Resource.Name); 453Assert.DoesNotContain(agent.Resource.Annotations, annotation => annotation is DockerfileBuildAnnotation); 454Assert.Contains(agent.Resource.Annotations, annotation => annotation is EndpointEnvironmentInjectionFilterAnnotation); 589var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 616var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 625Assert.Equal(agent.Resource.Name, envVars["RESOURCE_NAME"]); 639var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 665() => configuration.ToProjectsAgentVersionCreationOptions(agent.Resource.Name)); 677var reference = new ConnectionStringReference(connection.Resource, optional: false); 683var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 705var names = ConnectionStringEnvironmentVariableNames.Create(connection.Resource, "my-db-http"); 707connection.Resource, optional: false, names, "HttpConnectionStringExpression", 715var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 738var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 828Assert.Contains(app.Resource.Annotations.OfType<WaitAnnotation>(), w => ReferenceEquals(w.Resource, project.Resource)); 843Assert.Null(project.Resource.DefaultContainerRegistry); 877var registryTargets = container.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 879Assert.Same(registry.Resource, registryTarget.Registry);
ProjectResourceTests.cs (35)
21Assert.IsType<AzureCognitiveServicesProjectResource>(project.Resource); 22Assert.Equal("my-project", project.Resource.Name); 23Assert.Same(account.Resource, project.Resource.Parent); 34var registry = project.Resource.ContainerRegistry; 36Assert.Same(project.Resource.DefaultContainerRegistry, registry); 49Assert.Null(project.Resource.DefaultContainerRegistry); 50Assert.Null(project.Resource.ContainerRegistry); 63Assert.Same(registry.Resource, project.Resource.ContainerRegistry); 64Assert.True(project.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation)); 65Assert.Same(registry.Resource, annotation.Registry); 78var defaultRegistry = project.Resource.DefaultContainerRegistry; 88Assert.Same(registry.Resource, registries[0]); 100var defaultRegistry = project.Resource.DefaultContainerRegistry; 110Assert.Null(project.Resource.DefaultContainerRegistry); 120var expr = project.Resource.ConnectionStringExpression; 131var expr = project.Resource.UriExpression; 142var properties = ((IResourceWithConnectionString)project.Resource) 163Assert.Same(appInsights.Resource, project.Resource.AppInsights); 176Assert.Equal("chat", deployment.Resource.Name); 177Assert.Equal("gpt-4", deployment.Resource.ModelName); 191Assert.Equal("chat", deployment.Resource.Name); 210Assert.NotNull(project.Resource.CapabilityHostConfiguration); 211Assert.Equal("cap-host", project.Resource.CapabilityHostConfiguration.Name); 212Assert.Same(cosmosDb.Resource, project.Resource.CapabilityHostConfiguration.CosmosDB); 213Assert.Same(storage.Resource, project.Resource.CapabilityHostConfiguration.Storage); 214Assert.Same(search.Resource, project.Resource.CapabilityHostConfiguration.Search); 234Assert.NotNull(project.Resource.CapabilityHostConfiguration); 235Assert.Same(foundry.Resource, project.Resource.CapabilityHostConfiguration.AzureOpenAI);
ProjectWithReferenceTests.cs (4)
23pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 42pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 61pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 80pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
PromptAgentTests.cs (72)
30Assert.NotNull(agent.Resource); 31Assert.Equal("my-agent", agent.Resource.Name); 32Assert.IsType<AzurePromptAgentResource>(agent.Resource); 45Assert.Equal("gpt41", agent.Resource.Model); 46Assert.Equal("You tell jokes.", agent.Resource.Instructions); 59Assert.Same(project.Resource, agent.Resource.Project); 90project.Resource.Outputs["endpoint"] = "https://account.services.ai.azure.com/api/projects/my-project"; 96var command = Assert.Single(agent.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 100ResourceName = agent.Resource.Name, 149Assert.Null(agent.Resource.Instructions); 168Assert.Equal(2, agent.Resource.Tools.Count); 169Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]); 170Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]); 183Assert.Equal("code-interp", tool.Resource.Name); 184Assert.IsType<CodeInterpreterToolResource>(tool.Resource); 185Assert.Same(project.Resource, tool.Resource.Project); 198Assert.IsType<FileSearchToolResource>(tool.Resource); 199Assert.Equal(["store-1", "store-2"], tool.Resource.VectorStoreIds); 212Assert.IsType<WebSearchToolResource>(tool.Resource); 225Assert.IsType<AzureAISearchToolResource>(tool.Resource); 226Assert.Same(project.Resource, tool.Resource.Project); 227Assert.Null(tool.Resource.SearchResource); 240Assert.NotNull(tool.Resource.SearchResource); 241Assert.Same(search.Resource, tool.Resource.SearchResource); 242Assert.NotNull(tool.Resource.Connection); 269Assert.IsType<BingGroundingToolResource>(tool.Resource); 270Assert.Null(tool.Resource.Connection); 284Assert.NotNull(tool.Resource.Connection); 285Assert.Same(connection.Resource, tool.Resource.Connection); 313Assert.NotNull(tool.Resource.Connection); 340Assert.IsType<BingGroundingConnectionResource>(connection.Resource); 353Assert.NotNull(tool.Resource.Connection); 367Assert.IsType<BingGroundingConnectionResource>(connection.Resource); 380Assert.IsType<SharePointToolResource>(tool.Resource); 381Assert.Equal(["conn-1", "conn-2"], tool.Resource.ProjectConnectionIds); 394Assert.IsType<FabricToolResource>(tool.Resource); 395Assert.Equal(["fab-conn-1"], tool.Resource.ProjectConnectionIds); 416Assert.IsType<AzureFunctionToolResource>(tool.Resource); 417Assert.Equal("myFunc", tool.Resource.FunctionName); 434Assert.IsType<FunctionToolResource>(tool.Resource); 435Assert.Equal("get_weather", tool.Resource.FunctionName); 436Assert.Equal("Gets the current weather", tool.Resource.Description); 460Assert.Equal(4, agent.Resource.Tools.Count); 461Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]); 462Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]); 463Assert.IsType<AzureAISearchToolResource>(agent.Resource.Tools[2]); 464Assert.IsType<SharePointToolResource>(agent.Resource.Tools[3]); 480Assert.Single(agent1.Resource.Tools); 481Assert.Single(agent2.Resource.Tools); 482Assert.Same(codeInterp.Resource, agent1.Resource.Tools[0]); 483Assert.Same(codeInterp.Resource, agent2.Resource.Tools[0]); 515pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 529Assert.IsAssignableFrom<IResourceWithConnectionString>(agent.Resource); 530Assert.IsAssignableFrom<IResourceWithEnvironment>(agent.Resource); 531Assert.IsNotAssignableFrom<IComputeResource>(agent.Resource); 544Assert.IsType<ImageGenerationToolResource>(tool.Resource); 557var computerTool = Assert.IsType<ComputerToolResource>(tool.Resource); 574Assert.Same(project.Resource, ci.Resource.Project); 575Assert.Same(project.Resource, fs.Resource.Project); 576Assert.Same(project.Resource, ws.Resource.Project); 591var annotations = agent.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 608Resource = agent.Resource
ToolboxTests.cs (52)
31Assert.Equal("field-tools", toolbox.Resource.Name); 32Assert.Equal("7", toolbox.Resource.Version); 33Assert.Same(project.Resource, toolbox.Resource.Parent); 34Assert.IsNotAssignableFrom<IResourceWithParent>(toolbox.Resource); 36toolbox.Resource.Annotations.OfType<ResourceRelationshipAnnotation>()); 38Assert.Same(project.Resource, parentRelationship.Resource); 42toolbox.Resource.Annotations.OfType<ReferenceRoleAssignmentAnnotation>()); 43Assert.Same(project.Resource, consumerRole.Target); 64Assert.True(runToolbox.Resource.IsExisting); 65Assert.False(publishToolbox.Resource.IsExisting); 83Assert.False(runToolbox.Resource.IsExisting); 84Assert.True(publishToolbox.Resource.IsExisting); 98Assert.True(toolbox.Resource.IsExisting); 99Assert.Empty(toolbox.Resource.Tools); 116Assert.Empty(toolbox.Resource.Tools); 133Assert.Empty(toolbox.Resource.Tools); 156toolbox.Resource.Tools, 172Assert.Same(search.Resource, aiSearch.SearchResource); 192pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 222var expression = toolbox.Resource.GetVersionUriExpression("9"); 229toolbox.Resource.UriExpression.ValueExpression, 252project.Resource.Outputs["endpoint"] = "https://project.example.com"; 253project.Resource.Outputs["APPLICATION_INSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=test;IngestionEndpoint=https://test.example.com/"; 275var annotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 280Resource = toolbox.Resource 292Assert.Same(toolbox.Resource, step.Resource); 305var annotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 310Resource = toolbox.Resource 320Assert.Same(toolbox.Resource, beforeStart.Resource); 376var def = Assert.IsType<FoundryToolboxAzureAISearchToolDefinition>(toolbox.Resource.Tools[0]); 484var def = Assert.IsType<FoundryToolboxMcpToolDefinition>(toolbox.Resource.Tools[0]); 517Assert.Single(toolbox.Resource.Tools)); 557Assert.Single(toolbox.Resource.Tools)); 637ReferenceExpression.Create($"{empty.Resource}")); 747Assert.Single(firstToolbox.Resource.Tools)); 749Assert.Single(secondToolbox.Resource.Tools)); 764Assert.Single(toolbox.Resource.Tools)); 802var replacement = new ContainerResource(mcp.Resource.Name); 803model.Resources.Remove(mcp.Resource); 811var toolboxStepAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 815Resource = toolbox.Resource 834var configAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 853var toolboxStepAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 857Resource = toolbox.Resource 870var configAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 892var toolboxStepAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 896Resource = toolbox.Resource 903Resource = mcp.Resource, 909toolbox.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 927await notifications.PublishUpdateAsync(mcp.Resource, snapshot => snapshot with 935mcp.Resource,
Aspire.Hosting.Garnet (1)
GarnetBuilderExtensions.cs (1)
110var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false);
Aspire.Hosting.Garnet.Tests (21)
AddGarnetTests.cs (10)
93var manifest = await ManifestUtils.GetManifest(garnet.Resource); 133var manifest = await ManifestUtils.GetManifest(garnet.Resource); 169var manifest = await ManifestUtils.GetManifest(garnet.Resource); 214var volumeAnnotation = garnet.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 239var volumeAnnotation = garnet.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 254Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 278Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 286var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 309Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 326Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations));
GarnetFunctionalTests.cs (11)
42await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 44await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 48await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 77hb.Configuration[$"ConnectionStrings:{garnet.Resource.Name}"] = await garnet.Resource.ConnectionStringExpression.GetValueAsync(default); 79hb.AddRedisClient(garnet.Resource.Name); 155hb.Configuration[$"ConnectionStrings:{garnet1.Resource.Name}"] = $"{await garnet1.Resource.ConnectionStringExpression.GetValueAsync(default)}"; 207hb.Configuration[$"ConnectionStrings:{garnet2.Resource.Name}"] = $"{await garnet2.Resource.ConnectionStringExpression.GetValueAsync(default)}";
Aspire.Hosting.Go (22)
GoHostingExtensions.cs (22)
314if (rb.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>( 317var buildSteps = context.GetSteps(rb.Resource, WellKnownPipelineTags.BuildCompute); 361if (builder.Resource.TryGetLastAnnotation<GoModTidyAnnotation>(out _)) 372$"{builder.Resource.Name}-mod-tidy", "go", builder.Resource.WorkingDirectory); 385if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var existingVendor)) 411if (builder.Resource.TryGetLastAnnotation<GoModVendorAnnotation>(out _)) 421$"{builder.Resource.Name}-mod-vendor", "go", builder.Resource.WorkingDirectory); 429if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder)) 457if (builder.Resource.TryGetLastAnnotation<GoModDownloadAnnotation>(out _)) 467$"{builder.Resource.Name}-mod-download", "go", builder.Resource.WorkingDirectory); 476if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var vendorBuilder)) 480else if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder)) 505if (builder.Resource.TryGetLastAnnotation<GoVetToolAnnotation>(out _)) 515$"{builder.Resource.Name}-vet-tool", "go", builder.Resource.WorkingDirectory); 703var debuggingAnnotation = builder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 706builder.Resource.Annotations.Remove(debuggingAnnotation); 713new ExecutableAnnotation { Command = "dlv", WorkingDirectory = builder.Resource.WorkingDirectory }, 733var resource = builder.Resource;
Aspire.Hosting.Go.Tests (59)
AddGoAppTests.cs (36)
27var manifest = await ManifestUtils.GetManifest(app.Resource); 64var manifest = await ManifestUtils.GetManifest(app.Resource); 108var manifest = await ManifestUtils.GetManifest(app.Resource); 132var manifest = await ManifestUtils.GetManifest(app.Resource); 156var manifest = await ManifestUtils.GetManifest(app.Resource); 180var manifest = await ManifestUtils.GetManifest(app.Resource); 208var manifest = await ManifestUtils.GetManifest(app.Resource); 238var manifest = await ManifestUtils.GetManifest(app.Resource); 266var manifest = await ManifestUtils.GetManifest(app.Resource); 291var manifest = await ManifestUtils.GetManifest(app.Resource); 316var manifest = await ManifestUtils.GetManifest(app.Resource); 342var manifest = await ManifestUtils.GetManifest(app.Resource); 369var manifest = await ManifestUtils.GetManifest(app.Resource); 397var manifest = await ManifestUtils.GetManifest(app.Resource); 425var manifest = await ManifestUtils.GetManifest(app.Resource); 457var manifest = await ManifestUtils.GetManifest(app.Resource); 494var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 496Assert.Equal("dlv", app.Resource.Command); 516var launchConfig = await CreateLaunchConfigurationAsync(app.Resource); 534var launchConfig = await CreateLaunchConfigurationAsync(app.Resource); 568var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 581var debugAnnotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Last(); 582Assert.True(app.Resource.HasLaunchToolArgsOwnedBy(debugAnnotation)); 600var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 633var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 656var manifest = await ManifestUtils.GetManifest(app.Resource); 686var manifest = await ManifestUtils.GetManifest(app.Resource); 716var manifest = await ManifestUtils.GetManifest(app.Resource); 747var manifest = await ManifestUtils.GetManifest(app.Resource); 868Assert.False(app.Resource.TryGetLastAnnotation<DockerfileBuilderCallbackAnnotation>(out _), 942Assert.IsType<GoAppResource>(app.Resource, exactMatch: false); 943Assert.True(app.Resource is IContainerFilesDestinationResource); 962api.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var annotations), 966Assert.Same(source.Resource, annotation.Source); 1054app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations), 1066app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations));
GoPublicApiTests.cs (23)
97Assert.Equal("go", app.Resource.Command); 106var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 119var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 130var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 142var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 156var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 167var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 178var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 189var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 200var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 215var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 241var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 254.WithAppArgs("--db", param.Resource); 258Assert.True(app.Resource.TryGetLastAnnotation<GoAppArgsAnnotation>(out var annotation)); 261Assert.Same(param.Resource, annotation.Args[1]); 272var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 435var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 457Assert.Equal("dlv", app.Resource.Command); 467var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 481var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 501var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 528var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 542var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
Aspire.Hosting.Java (41)
JavaHostingExtensions.cs (41)
688if (builder.Resource.HasAnnotationOfType<JavaJarPathAnnotation>()) 695if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var existing) && existing.Tool != tool) 702if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) && buildStep.Tool != tool) 726.WithCommand(ResolveWrapperInvocation(builder.Resource, tool).Command) 759buildResourceName: $"{builder.Resource.Name}-maven-build", 792buildResourceName: $"{builder.Resource.Name}-gradle-build", 805if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var existing) && existing.Tool != tool) 808$"Resource '{builder.Resource.Name}' is already configured to build with {existing.Tool}. " + 812if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var launchTool) && launchTool.Tool != tool) 815$"Resource '{builder.Resource.Name}' is already configured to launch with {launchTool.Tool}. " + 824|| launchTool is null && !builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>()); 855var resource = builder.Resource; 915foreach (var annotation in builder.Resource.Annotations 922builder.Resource.Annotations.Remove(annotation); 953Path.Combine(builder.Resource.WorkingDirectory, wrapperPath)); 959if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var buildTool)) 961builder.WithCommand(ResolveWrapperInvocation(builder.Resource, buildTool.Tool).Command); 964foreach (var buildStep in builder.Resource.Annotations.OfType<JavaBuildStepAnnotation>()) 979.WithCommand(ResolveWrapperInvocation(builder.Resource, buildStep.Tool).Command); 1215var isFirstCall = !builder.Resource.HasAnnotationOfType<JavaOtelAgentAnnotation>(); 1230if (!builder.Resource.TryGetLastAnnotation<JavaOtelAgentAnnotation>(out var agent)) 1235var authored = ResolveOtelAgentPath(builder.Resource, agent); 1241resolved = Path.GetFullPath(Path.Combine(builder.Resource.WorkingDirectory, authored)); 1243else if (JavaDockerfileGenerator.TryGetBuildProducedAgentPath(builder.Resource, out _)) 1249if (builder.Resource.HasAnnotationOfType<JavaAuthoredDockerfileAnnotation>()) 1252$"Java application '{builder.Resource.Name}' cannot be published because it uses " + 1253$"the Dockerfile in '{builder.Resource.WorkingDirectory}' and its OpenTelemetry " + 1306if (!TryResolveConfiguredBuildTool(builder.Resource, out var tool)) 1311var buildArgs = builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) 1313: builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>() 1314? ResolveDetectedBuildTool(builder.Resource).Configuration.BuildArgs 1319buildResourceName: $"{builder.Resource.Name}-{(tool is JavaBuildTool.Gradle ? "gradle" : "maven")}-build", 1336=> HasBuildProducedOtelAgent(builder.Resource) 1356=> builder.Resource.HasAnnotationOfType<JavaQuarkusAnnotation>() 1357&& builder.Resource.SupportsDebugging(builder.ApplicationBuilder.Configuration, out _); 1558if (builder.Resource.Annotations.OfType<JavaWrapperValidationAnnotation>().Any(a => a.Tool == tool)) 1755var (mainClass, classPaths) = ResolveEntryPointForIde(builder.Resource); 1760JavaExec = TryResolveJavaExecutableForIde(builder.Resource), 1761WorkingDirectory = builder.Resource.WorkingDirectory, 1780: TryResolveIdeProjectName(builder.Resource), 1781BuildTool = TryResolveConfiguredBuildTool(builder.Resource, out var buildTool)
Aspire.Hosting.Java.Tests (168)
AddJavaAppPublishTests.cs (21)
155() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 205() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 241() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 299() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 1172() => JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path)); 1195var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path); 1213var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path); 1260() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1281() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1304() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out _)); 1327() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1346Assert.True(JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out var resolved)); 1412() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1439() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 2006() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, tempDir.Path, out _)); 2023() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 2141() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 2290() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 2311() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 2328() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path)); 2343() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path));
AddJavaAppTests.cs (78)
45Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 46Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 58Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 59Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun", "--no-daemon"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 69var manifest = await ManifestUtils.GetManifest(app.Resource); 92var manifest = await ManifestUtils.GetManifest(app.Resource); 118Assert.Equal("myapi", app.Resource.Name); 128Assert.Equal("java", app.Resource.Command); 140Assert.Equal(expectedPath, app.Resource.WorkingDirectory); 150Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 160Assert.IsAssignableFrom<IContainerFilesDestinationResource>(app.Resource); 173async () => await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 187var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 199var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 243var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 257var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 302var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 317var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 321Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 335var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 339Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 357var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 360Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 377var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 380Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 396var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 441var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 550var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 554Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 568var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 572Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 610app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 624app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 639app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 677app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 695app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 712app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 727app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 747new BeforeResourceStartedEvent(app.Resource, built.Services), 766new BeforeResourceStartedEvent(app.Resource, built.Services), 793new BeforeResourceStartedEvent(app.Resource, built.Services), 800Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 803await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 824var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 826using var process = Process.Start(new ProcessStartInfo(app.Resource.Command) 854new BeforeResourceStartedEvent(app.Resource, built.Services), 875Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 878await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 893Assert.True(app.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var certAnnotation)); 906Assert.True(javaApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 916Resource = javaApp.Resource, 944app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 961app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 977app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 984Path.Combine(app.Resource.WorkingDirectory, "target", "agent", "opentelemetry-javaagent.jar")); 999app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1016app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1139Assert.Same(app.Resource, Assert.Single(builder.Resources)); 1140Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName); 1154Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource); 1168Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource); 1182var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1184Assert.Equal("java", app.Resource.Command); 1197var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1209var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1225app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1261Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 1262Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName); 1275var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1279app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1293var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1297app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1311var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1315Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 1330var manifest = await ManifestUtils.GetManifest(app.Resource); 1347var manifest = await ManifestUtils.GetManifest(app.Resource); 1356var annotation = Assert.Single(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 1361app.Resource,
AddJavaContainerTests.cs (9)
63var image = Assert.Single(app.Resource.Annotations.OfType<ContainerImageAnnotation>()); 75var image = Assert.Single(app.Resource.Annotations.OfType<ContainerImageAnnotation>()); 87Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 88Assert.IsAssignableFrom<IJavaAppResource>(app.Resource); 89var icon = Assert.Single(app.Resource.Annotations.OfType<ResourceIconAnnotation>()); 102Assert.Empty(app.Resource.Annotations.OfType<EndpointAnnotation>()); 118app.Resource, serviceProvider: built.Services.GetRequiredService<IServiceProvider>()); 135app.Resource, serviceProvider: built.Services.GetRequiredService<IServiceProvider>()); 149var scope = Assert.Single(app.Resource.Annotations.OfType<CertificateAuthorityCollectionAnnotation>());
AddQuarkusAppTests.cs (24)
35app.Resource.Annotations.OfType<WaitAnnotation>(), 51Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 68Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 97new BeforeResourceStartedEvent(app.Resource, application.Services), 100Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 101Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "quarkus:dev"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 114new BeforeResourceStartedEvent(app.Resource, application.Services), 117Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 118Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "quarkusDev"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 132Assert.Same(app.Resource, Assert.Single(builder.Resources)); 144var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 161var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 176TestEndpointAllocator.AllocateEndpoints(app.Resource); 179app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 195app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 211TestEndpointAllocator.AllocateEndpoints(app.Resource); 214app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 230TestEndpointAllocator.AllocateEndpoints(app.Resource); 233app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 255app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 272Assert.Empty(app.Resource.Annotations.OfType<HealthCheckAnnotation>()); 286new BeforeResourceStartedEvent(app.Resource, application.Services), 306TestEndpointAllocator.AllocateEndpoints(app.Resource); 309app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
AddSpringBootAppTests.cs (35)
22new BeforeResourceStartedEvent(app.Resource, application.Services), 25Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 26Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 39new BeforeResourceStartedEvent(app.Resource, application.Services), 42Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 43Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 56new BeforeResourceStartedEvent(app.Resource, application.Services), 59Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 76new BeforeResourceStartedEvent(runApp.Resource, application.Services), 78var runTool = Assert.Single(runApp.Resource.Annotations.OfType<JavaBuildToolAnnotation>()).Tool; 82var (publishTool, _) = JavaDockerfileGenerator.ResolveBuildTool(publishApp.Resource, tempDir.Path); 99Assert.Same(app.Resource, Assert.Single(builder.Resources)); 114new BeforeResourceStartedEvent(app.Resource, application.Services), 122await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 137new BeforeResourceStartedEvent(app.Resource, application.Services), 140Assert.Same(app.Resource, Assert.Single(builder.Resources)); 141Assert.Equal(["verify"], Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).Args); 142Assert.Equal(["spring-boot:run"], Assert.Single(app.Resource.Annotations.OfType<JavaBuildToolAnnotation>()).Args); 156var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 176Assert.Empty(app.Resource.Annotations.OfType<HealthCheckAnnotation>()); 190new BeforeResourceStartedEvent(app.Resource, application.Services), 211new BeforeResourceStartedEvent(runApp.Resource, application.Services), 217() => JavaDockerfileGenerator.ResolveBuildTool(publishApp.Resource, tempDir.Path)); 238new BeforeResourceStartedEvent(app.Resource, application.Services), 241TestEndpointAllocator.AllocateEndpoints(app.Resource); 244app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 272TestEndpointAllocator.AllocateEndpoints(app.Resource); 275app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 301app.Resource.Annotations.OfType<WaitAnnotation>(), 324Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 337TestEndpointAllocator.AllocateEndpoints(app.Resource); 341app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 359TestEndpointAllocator.AllocateEndpoints(app.Resource); 362app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 365Assert.True(Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()).IsExternal);
JavaBuildToolResolverTests.cs (1)
38var wrapperPath = JavaBuildToolResolver.ResolveWrapperPath(app.Resource, JavaBuildTool.Maven, isWindows);
Aspire.Hosting.JavaScript (66)
DenoHostingExtensions.cs (6)
30if (!builder.Resource.TryGetLastAnnotation<DenoCommandLineAnnotation>(out var annotation)) 384builder.Resource.Annotations.Remove(environmentCallback); 389builder.Resource.Annotations.Remove(endpoint); 422var existingEndpoint = builder.Resource.Annotations 431var serveEndpoint = builder.Resource.Annotations 435builder.Resource,
JavaScriptHostingExtensions.cs (60)
261if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 263var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 285if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 286resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 344var resource = builder.Resource; 666if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 668var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 692if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 693resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1026if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 1028var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 1053ThrowIfDenoOptionsConflictWithPackageManager(resourceBuilder.Resource); 1058if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 1059resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1129var exporter = builder.Resource.Annotations.OfType<OtlpExporterAnnotation>().Last(); 1130builder.Resource.Annotations.Remove(exporter); 1131builder.Resource.Annotations.Add(new DenoOtlpExporterAnnotation 1337? apiTarget.Resource.GetEndpoint(options.TargetEndpointName) 1338: (object)BuildServiceDiscoveryUrl(apiTarget.Resource); 1356if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1420if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1500if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1536if (!builder.Resource.Annotations.OfType<OtlpExporterAnnotation>().Any()) 1693if (c.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1713if (c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 1724if (c.Resource.TryGetLastAnnotation<JavaScriptBuildScriptAnnotation>(out var buildCommand)) 1833var installAnnotation = c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCmd) ? installCmd : null; 1908ValidateExistingDockerfileRunScript(resource, containerBuilder.Resource); 1909return context.WriteContainerAsync(containerBuilder.Resource); 1919Resource = containerBuilder.Resource, 1922ValidateExistingDockerfileRunScript(resource, containerBuilder.Resource); 1935if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 2250if (resourceBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 2267Resource = resourceBuilder.Resource, 2270if (!resourceBuilder.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out var suppress)) 2324builder.Resource.ViteConfigPath = configPath; 2392var workingDirectory = resource.Resource.WorkingDirectory; 2422if (!resource.Resource.TryGetLastAnnotation<DockerfileBaseImageAnnotation>(out _)) 2476var workingDirectory = resource.Resource.WorkingDirectory; 2514if (!resource.Resource.TryGetLastAnnotation<DockerfileBaseImageAnnotation>(out _)) 2547File.Exists(Path.Combine(resource.Resource.WorkingDirectory, "package-lock.json")) 2564var workingDirectory = resource.Resource.WorkingDirectory; 2643var workingDirectory = resource.Resource.WorkingDirectory; 2810var resource = builder.Resource; 2864var resource = builder.Resource; 2939var parentResource = builder.Resource; 3013var installerName = $"{resource.Resource.Name}-installer"; 3033var installer = new JavaScriptInstallerResource(installerName, resource.Resource.WorkingDirectory); 3036.WithParentRelationship(resource.Resource) 3044if (!resource.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager) || 3045!resource.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 3052.WithWorkingDirectory(resource.Resource.WorkingDirectory) 3081var installerName = $"{resource.Resource.Name}-installer"; 3091resource.Resource.Annotations.OfType<WaitAnnotation>() 3092.Where(w => w.Resource == installer.Resource) 3094.ForEach(w => resource.Resource.Annotations.Remove(w)); 3102installer.Resource.Annotations.OfType<ExplicitStartupAnnotation>() 3104.ForEach(a => installer.Resource.Annotations.Remove(a)); 3108if (!resource.Resource.Annotations.OfType<WaitAnnotation>().Any(w => w.Resource == installer.Resource))
Aspire.Hosting.JavaScript.Tests (214)
AddBunAppTests.cs (20)
21var manifest = await ManifestUtils.GetManifest(bunApp.Resource); 44await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 50var dockerBuildAnnotation = bunApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 53Assert.Empty(bunApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 71await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 88await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 102var dockerBuildAnnotation = bunApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 119await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 131await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 219Assert.Equal("bun", bunApp.Resource.Command); 249Assert.True(bunApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 257Resource = bunApp.Resource, 279Assert.True(bunApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 285Resource = bunApp.Resource, 311var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 324var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 337var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 354Assert.True(bunApp.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var pmAnnotation)); 366var launchConfig = await CreateLaunchConfigurationAsync(bunApp.Resource); 387var launchConfig = await CreateLaunchConfigurationAsync(bunApp.Resource);
AddDenoAppTests.cs (93)
26var manifest = await ManifestUtils.GetManifest(denoApp.Resource); 45var exporter = Assert.Single(denoApp.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 49var manifest = await ManifestUtils.GetManifest(denoApp.Resource); 72await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 78var dockerBuildAnnotation = denoApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 81Assert.Empty(denoApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 99await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 119await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 135var dockerBuildAnnotation = denoApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 150await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 187await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 210await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 236await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 254await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 279await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 303await ManifestUtils.GetManifest(app.Resource, workspace.Path); 331var exporter = Assert.Single(app.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 334await ManifestUtils.GetManifest(app.Resource, workspace.Path); 358() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 378() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 399await ManifestUtils.GetManifest(app.Resource, workspace.Path); 424await ManifestUtils.GetManifest(app.Resource, workspace.Path); 444await ManifestUtils.GetManifest(app.Resource, workspace.Path); 463await ManifestUtils.GetManifest(app.Resource, workspace.Path); 484await ManifestUtils.GetManifest(app.Resource, workspace.Path); 511() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 530await ManifestUtils.GetManifest(app.Resource, workspace.Path); 551await ManifestUtils.GetManifest(app.Resource, workspace.Path); 582await ManifestUtils.GetManifest(app.Resource, workspace.Path); 618await ManifestUtils.GetManifest(app.Resource, workspace.Path); 639await ManifestUtils.GetManifest(app.Resource, workspace.Path); 662await ManifestUtils.GetManifest(app.Resource, workspace.Path); 684await ManifestUtils.GetManifest(app.Resource, workspace.Path); 706await ManifestUtils.GetManifest(app.Resource, workspace.Path); 744await ManifestUtils.GetManifest(app.Resource, workspace.Path); 765await ManifestUtils.GetManifest(app.Resource, workspace.Path); 871await ManifestUtils.GetManifest(app.Resource, workspace.Path); 892await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 911await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 926var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => ManifestUtils.GetManifest(denoApp.Resource, workspace.Path)); 941var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => ManifestUtils.GetManifest(denoApp.Resource, workspace.Path)); 959await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 982await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1003await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1028await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1047await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1068await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1088var httpEndpoint = denoApp.Resource.GetEndpoint("http"); 1091var manifest = await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1112Assert.Null(denoApp.Resource.GetEndpoint("http").EndpointAnnotation.TargetPort); 1128var initialEnvironmentCallbackCount = denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count(); 1135Assert.Empty(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1136Assert.Equal(initialEnvironmentCallbackCount, denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count()); 1139.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run) 1159var endpoint = Assert.Single(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1163.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Publish) 1188var endpoint = Assert.Single(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1204var callerEndpoint = denoApp.Resource.GetEndpoint("http").EndpointAnnotation; 1205var initialEnvironmentCallbackCount = denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count(); 1209var endpoint = Assert.Single(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1212Assert.Equal(initialEnvironmentCallbackCount, denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count()); 1215.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run) 1238var httpEndpoint = denoApp2.Resource.GetEndpoint("http"); 1241await ManifestUtils.GetManifest(denoApp2.Resource, workspace.Path); 1515Assert.Contains(app.Resource.Annotations.OfType<WaitAnnotation>(), wait => wait.Resource == installer); 1532Assert.DoesNotContain(app.Resource.Annotations.OfType<WaitAnnotation>(), wait => wait.Resource == installer); 1550Assert.Single(app.Resource.Annotations.OfType<WaitAnnotation>(), wait => wait.Resource == installer); 1585await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1610await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1636await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1655await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1691() => ManifestUtils.GetManifest(denoApp.Resource, workspace.Path)); 2297Assert.Equal("deno", denoApp.Resource.Command); 2357await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 2396Assert.True(denoApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 2404Resource = denoApp.Resource, 2427Assert.True(denoApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 2433Resource = denoApp.Resource, 2455Assert.True(denoApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 2461Resource = denoApp.Resource, 2484var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run); 2501.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run); 2515.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Publish); 2531var annotation = denoApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 2544var annotation = denoApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 2557var annotation = denoApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 2570var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2591var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2610var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2629var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2645var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2662var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2680() => CreateLaunchConfigurationAsync(denoApp.Resource, cancellationTokenSource.Token));
AddJavaScriptAppTests.cs (21)
33await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 38var dockerBuildAnnotation = yarnApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 56await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 76await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 96await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 123await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 144await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 184await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 202var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 239var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 283var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 301var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 320var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 336var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 358await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 394await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 429await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 460await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 489await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 561await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 657await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
AddNodeAppTests.cs (14)
30var manifest = await ManifestUtils.GetManifest(nodeApp.Resource); 62manifest = await ManifestUtils.GetManifest(npmApp.Resource); 110await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 155var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 158Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 179await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 224await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 442var annotation = nodeApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 455var annotation = nodeApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 467var annotation = viteApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 491Assert.Same(viteApp.Resource, parentRelationship.Resource); 573var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 600var launchConfig = await CreateLaunchConfigurationAsync(nodeApp.Resource); 616var launchConfig = await CreateLaunchConfigurationAsync(viteApp.Resource);
AddViteAppTests.cs (29)
35var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 74var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 77var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 95await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 100var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 103var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 128await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 148var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish); 176var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish); 199await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 204var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 207var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 225await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 230var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 247await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 252Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 268await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 288await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 308await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 326var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 346var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 371var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 397var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 423var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 440var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 464var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 482var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 1054var stepAnnotations = nodeApp.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 1071Assert.True(nodeApp.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out _));
BunAppFixture.cs (2)
122App.ResourceNotifications.WaitForResourceHealthyAsync(BunAppBuilder!.Resource.Name, cancellationToken), 123App.ResourceNotifications.WaitForResourceHealthyAsync(BunScriptBuilder!.Resource.Name, cancellationToken));
BunFunctionalTests.cs (2)
24using var bunClient = _bunFixture.App.CreateHttpClient(_bunFixture.BunAppBuilder!.Resource.Name, "http"); 34using var bunClient = _bunFixture.App.CreateHttpClient(_bunFixture.BunScriptBuilder!.Resource.Name, "http");
DenoAppFixture.cs (2)
156App.ResourceNotifications.WaitForResourceHealthyAsync(DenoAppBuilder!.Resource.Name, cancellationToken) 168DenoScriptBuilder.Resource.Name,
DenoFunctionalTests.cs (3)
28using var denoClient = _denoFixture.App.CreateHttpClient(_denoFixture.DenoAppBuilder!.Resource.Name, "http"); 38using var denoClient = _denoFixture.App.CreateHttpClient(_denoFixture.DenoScriptBuilder!.Resource.Name, "http"); 54var resourceName = denoFixture.DenoAppBuilder!.Resource.Name;
NodeAppFixture.cs (1)
109using var client = App.CreateHttpClient(NodeAppBuilder!.Resource.Name, endpointName: "http");
NodeFunctionalTests.cs (2)
24using var nodeClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NodeAppBuilder!.Resource.Name, "http"); 34using var npmClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NpmAppBuilder!.Resource.Name, "http");
PackageInstallationTests.cs (8)
465Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 477Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 492Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 498Assert.True(app2.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out installCommand)); 514Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 530Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 545Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 560Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand));
RequiredCommandTests.cs (17)
32Assert.Equal(["node"], await GetRequiredCommandsAsync(builder, app.Resource)); 45Assert.Equal(["bun", "node"], await GetRequiredCommandsAsync(builder, app.Resource)); 57Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 71Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 81Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 92Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource)); 103Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 114Assert.Equal(["node", "yarn"], await GetRequiredCommandsAsync(builder, vite.Resource)); 125Assert.Equal(["node", "pnpm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 136Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 146Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 162Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 175Assert.Equal(["deno"], await GetRequiredCommandsAsync(builder, app.Resource)); 188Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 200Assert.Equal(["bun", "node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 212Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 224Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource));
Aspire.Hosting.Kafka (2)
KafkaBuilderExtensions.cs (2)
104builderForExistingResource.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 154kafkaUiBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages);
Aspire.Hosting.Kafka.Tests (22)
AddKafkaTests.cs (12)
31await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(kafka.Resource, app.Services)); 47await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(kafka1.Resource, app.Services)); 48await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(kafka2.Resource, app.Services)); 143var manifest = await ManifestUtils.GetManifest(kafka.Resource); 183var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 185var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 201var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 203var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 244Assert.Single(kafkaUiResource.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == kafka1.Resource); 245Assert.Single(kafkaUiResource.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == kafka2.Resource); 268var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 269var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource);
KafkaFunctionalTests.cs (10)
44await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 46await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 50await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 77hb.Configuration[$"ConnectionStrings:{kafka.Resource.Name}"] = await kafka.Resource.ConnectionStringExpression.GetValueAsync(default); 171hb.Configuration[$"ConnectionStrings:{kafka1.Resource.Name}"] = await kafka1.Resource.ConnectionStringExpression.GetValueAsync(default); 221hb.Configuration[$"ConnectionStrings:{kafka2.Resource.Name}"] = await kafka2.Resource.ConnectionStringExpression.GetValueAsync(default);
Aspire.Hosting.Keycloak (6)
KeycloakResourceBuilderExtensions.cs (6)
64var passwordParameter = adminPassword?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 66var resource = new KeycloakResource(name, adminUsername?.Resource, passwordParameter); 274builder.Resource.EnabledFeatures.Add(feature); 275builder.Resource.DisabledFeatures.Remove(feature); 296builder.Resource.DisabledFeatures.Add(feature); 297builder.Resource.EnabledFeatures.Remove(feature);
Aspire.Hosting.Keycloak.Tests (9)
KeycloakPublicApiTests.cs (2)
163var containerAnnotation = keycloak.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>().Single(); 188var containerAnnotation = keycloak.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>().Single();
KeycloakResourceBuilderTests.cs (7)
83var endpoints = keycloak.Resource.Annotations.OfType<EndpointAnnotation>().ToArray(); 92var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(keycloak.Resource, serviceProvider: app.Services); 105var volumeAnnotation = keycloak.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 120var volumeAnnotation = keycloak.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 135Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.AdminPasswordParameter.Default?.GetType().FullName); 145Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.AdminPasswordParameter.Default?.GetType().FullName); 154var manifest = await ManifestUtils.GetManifest(keycloak.Resource);
Aspire.Hosting.Kubernetes (104)
CertManagerExtensions.cs (14)
119var resource = new CertManagerResource(name, builder.Resource, chartBuilder.Resource); 160var issuer = new CertManagerIssuerResource(name, builder.Resource); 161builder.Resource.Issuers.Add(issuer); 254builder.Resource.Spec = new CertManagerAcmeIssuerSpec( 279builder.Resource.Spec = new CertManagerAcmeIssuerSpec( 281ReferenceExpression.Create($"{email.Resource}")); 306builder.Resource.Solvers.Add(new CertManagerHttp01SolverConfig()); 336var gatewayEnvironment = builder.Resource.Parent; 337var issuerEnvironment = issuer.Resource.Parent.Parent; 342$"Gateway '{builder.Resource.Name}' is in Kubernetes environment '{gatewayEnvironment.Name}' but issuer " + 343$"'{issuer.Resource.Name}' belongs to cert-manager installation '{issuer.Resource.Parent.Name}' in environment " + 350.WithGatewayAnnotation(ClusterIssuerAnnotationKey, issuer.Resource.Name);
Deployment\HelmDeploymentEngine.cs (3)
553if (environment.DashboardEnabled && environment.Dashboard?.Resource is KubernetesAspireDashboardResource) 555var dashboardServiceName = environment.Dashboard.Resource.Name.ToKubernetesResourceName() + "-service"; 560var dashboardDeploymentName = environment.Dashboard.Resource.Name.ToKubernetesResourceName();
HelmChartOptions.cs (5)
61var expression = ReferenceExpression.Create($"{@namespace.Resource}"); 108var expression = ReferenceExpression.Create($"{releaseName.Resource}"); 160var expression = ReferenceExpression.Create($"{version.Resource}"); 207var expression = ReferenceExpression.Create($"{name.Resource}"); 254var expression = ReferenceExpression.Create($"{description.Resource}");
KubernetesEnvironmentExtensions.cs (8)
378builder.Resource.DeploymentEngineStepsFactory = HelmDeploymentEngine.CreateStepsAsync; 402configure(builder.Resource); 424builder.Resource.DashboardEnabled = enabled; 446builder.Resource.DashboardEnabled = true; 448configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized")); 484var nodePool = new KubernetesNodePoolResource(name, builder.Resource); 525builder.WithAnnotation(new KubernetesNodePoolAnnotation(nodePool.Resource)); 531builder.Resource.DeploymentEngineStepsFactory ??= HelmDeploymentEngine.CreateStepsAsync;
KubernetesEnvironmentResource.cs (4)
332var resources = environment.DashboardEnabled && environment.Dashboard?.Resource is KubernetesAspireDashboardResource dashboard 369var resources = DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboardRes 445if (DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboard && 500if (DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboardResource)
KubernetesGatewayExtensions.cs (17)
41var gateway = new KubernetesGatewayResource(name, builder.Resource); 68builder.Resource.GatewayClassName = ReferenceExpression.Create($"{className}"); 87builder.Resource.GatewayClassName = ReferenceExpression.Create($"{className.Resource}"); 119builder.Resource.Routes.Add(new GatewayRouteConfig( 158builder.Resource.Routes.Add(new GatewayRouteConfig( 185builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname}")); 204builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname.Resource}")); 227builder.Resource.TlsConfigs.Add(new GatewayTlsConfig( 248builder.Resource.TlsConfigs.Add(new GatewayTlsConfig( 249SecretName: ReferenceExpression.Create($"{secretName.Resource}"))); 266var secretName = $"{builder.Resource.Name}-tls"; 268builder.Resource.TlsConfigs.Add(new GatewayTlsConfig( 303builder.Resource.GatewayAnnotations[key] = ReferenceExpression.Create($"{value}"); 325builder.Resource.GatewayAnnotations[key] = ReferenceExpression.Create($"{value.Resource}");
KubernetesHelmChartExtensions.cs (6)
70var environment = builder.Resource; 146builder.Resource.Values[key] = value; 167builder.Resource.Namespace = @namespace; 188builder.Resource.ReleaseName = releaseName; 218builder.Resource.DestroyOnUninstall = true; 274builder.Resource.ForceConflicts = true;
KubernetesIngressExtensions.cs (18)
49var ingress = new KubernetesIngressResource(name, builder.Resource); 78builder.Resource.IngressClassName = ReferenceExpression.Create($"{className}"); 97builder.Resource.IngressClassName = ReferenceExpression.Create($"{className.Resource}"); 134builder.Resource.Paths.Add(new IngressPathConfig( 178builder.Resource.Paths.Add(new IngressPathConfig( 210builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname}")); 229builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname.Resource}")); 250builder.Resource.TlsConfigs.Add(new IngressTlsConfig( 271builder.Resource.TlsConfigs.Add(new IngressTlsConfig( 272SecretName: ReferenceExpression.Create($"{secretName.Resource}"))); 289var secretName = $"{builder.Resource.Name}-tls"; 291builder.Resource.TlsConfigs.Add(new IngressTlsConfig( 317builder.Resource.DefaultBackend = new IngressDefaultBackendConfig(endpoint); 352builder.Resource.IngressAnnotations[key] = ReferenceExpression.Create($"{value}"); 374builder.Resource.IngressAnnotations[key] = ReferenceExpression.Create($"{value.Resource}");
KubernetesPersistentVolumeExtensions.cs (28)
54var volume = new KubernetesPersistentVolumeResource(name, builder.Resource); 88builder.Resource.ShouldRequestStorageClassName = true; 89builder.Resource.StorageClassName = ReferenceExpression.Create($"{storageClassName}"); 110builder.Resource.ShouldRequestStorageClassName = true; 111builder.Resource.StorageClassName = ReferenceExpression.Create($"{storageClassName.Resource}"); 128builder.Resource.ShouldRequestStorageClassName = false; 129builder.Resource.StorageClassName = null; 150builder.Resource.Capacity = ReferenceExpression.Create($"{capacity}"); 170builder.Resource.Capacity = ReferenceExpression.Create($"{capacity.Resource}"); 195builder.Resource.PersistentVolumeName = ReferenceExpression.Create($"{persistentVolumeName}"); 216if (!builder.Resource.AccessModes.Contains(accessMode)) 218builder.Resource.AccessModes.Add(accessMode); 247builder.Resource.VolumeAnnotations[key] = ReferenceExpression.Create($"{value}"); 270builder.Resource.VolumeAnnotations[key] = ReferenceExpression.Create($"{value.Resource}"); 352builder.WithAnnotation(new VolumeMountBindingAnnotation(volume.Resource.Name) 357return KubernetesPersistentVolumeLocalStorage.GetOrCreatePath(store, volume.Resource); 368volume.Resource, 501if (builder.Resource is not IResourceWithEnvironment) 504$"Resource '{builder.Resource.Name}' does not support environment variables and cannot use the '{env}' volume path variable."); 514var binding = new VolumeMountBindingAnnotation(volume.Resource.Name) 521return KubernetesPersistentVolumeLocalStorage.GetOrCreatePath(store, volume.Resource); 526volume.Resource.Name, 542volume.Resource, 559if (!builder.ApplicationBuilder.ExecutionContext.IsRunMode || builder.Resource is not ContainerResource) 566var environmentName = volume.Resource.Parent.Name.ToKubernetesResourceName();
KubernetesPublishingContext.cs (1)
73IEnumerable<IResource> resources = environment.DashboardEnabled && environment.Dashboard?.Resource is IResource dashboardResource
Aspire.Hosting.Kubernetes.Tests (159)
CertManagerTests.cs (20)
23Assert.Equal("cert-manager", certManager.Resource.Name); 24Assert.Same(k8s.Resource, certManager.Resource.Parent); 28Assert.Equal("cert-manager-chart", certManager.Resource.HelmChart.Name); 29Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", certManager.Resource.HelmChart.ChartReference); 30Assert.StartsWith("v", certManager.Resource.HelmChart.ChartVersion); 34Assert.Equal("true", certManager.Resource.HelmChart.Values["crds.enabled"]); 35Assert.Equal("true", certManager.Resource.HelmChart.Values["config.enableGatewayAPI"]); 54Assert.Equal("letsencrypt-prod", issuer.Resource.Name); 55Assert.Same(certManager.Resource, issuer.Resource.Parent); 56Assert.Contains(issuer.Resource, certManager.Resource.Issuers); 58var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 62var solver = Assert.Single(issuer.Resource.Solvers); 75var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 88var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 108Assert.Single(gateway.Resource.TlsConfigs); 109Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue( 271Assert.NotNull(certManager.Resource);
KubernetesDeployTests.cs (29)
926var container = containerBuilder.Resource; 1145var env = envBuilder.Resource; 1176var env = envBuilder.Resource; 1196var envResource = env.Resource; 1199var k8sResource = new KubernetesResource("api-k8s", project.Resource, envResource); 1200var imageName = k8sResource.GetContainerImageName(project.Resource); 1208Assert.Same(project.Resource, imageParam.ImageResource); 1219var envResource = env.Resource; 1222var k8sResource = new KubernetesResource("cache-k8s", container.Resource, envResource); 1223var imageName = k8sResource.GetContainerImageName(container.Resource); 1265"parameters", "api", "api_image", project.Resource)); 1330var env = envBuilder.Resource; 1402context.EnvironmentVariables["CACHE_PASSWORD"] = ReferenceExpression.Create($"{cachePassword.Resource}"); 1406var env = envBuilder.Resource; 1520var env = envBuilder.Resource; 1571var env = envBuilder.Resource; 1578captured.Parameter == host.Resource); 1583captured.Parameter == token.Resource); 1614enableTls.Resource, 1621var env = envBuilder.Resource; 1628captured.Parameter == enableTls.Resource); 1661var env = envBuilder.Resource; 1687var env = envBuilder.Resource; 1691Assert.IsType<KubernetesAspireDashboardResource>(env.Dashboard.Resource); 1701var env = envBuilder.Resource; 1713var env = envBuilder.Resource; 1719var httpEndpoint = env.Dashboard.Resource.PrimaryEndpoint; 1876var dashboard = envBuilder.Resource.Dashboard!.Resource;
KubernetesEnvironmentResourceTests.cs (15)
127var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 170var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 172Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 176var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 178Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 182var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 184Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 188var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 190Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 193Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 194Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 195Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 196Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 254Assert.Same(kubernetes.Resource, containerK8sResource.GetDeploymentTargetAnnotation()!.ComputeEnvironment); 255Assert.Same(dockerCompose.Resource, containerDockerResource.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
KubernetesGatewayTests.cs (11)
167var route = Assert.Single(gateway.Resource.GeneratedHttpRoutes); 231Assert.Equal(hostnames.Length, gateway.Resource.GeneratedHttpRoutes.Count); 232Assert.All(gateway.Resource.GeneratedHttpRoutes, route => Assert.Single(route.Spec.Hostnames)); 266var steps = await CreateStepsAsync(app.Services, k8s.Resource); 361var steps = await CreateStepsAsync(app.Services, k8s.Resource); 415Assert.Equal(k8s.Resource, gateway.Resource.Parent); 416Assert.IsType<KubernetesGatewayResource>(gateway.Resource); 484var steps = await CreateStepsAsync(app.Services, k8s.Resource); 626var steps = await CreateStepsAsync(app.Services, k8s.Resource); 632var gatewayResource = Assert.IsType<KubernetesGatewayResource>(gateway.Resource);
KubernetesHelmChartTests.cs (35)
22Assert.Equal("cert-manager", chart.Resource.Name); 23Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference); 24Assert.Equal("1.17.0", chart.Resource.ChartVersion); 25Assert.Equal("env", chart.Resource.Parent.Name); 38Assert.Equal(2, chart.Resource.Values.Count); 39Assert.Equal("true", chart.Resource.Values["crds.enabled"]); 40Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]); 52Assert.Equal("ingress-nginx", chart.Resource.Namespace); 64Assert.Equal("my-nginx", chart.Resource.ReleaseName); 75Assert.Null(chart.Resource.Namespace); 76Assert.Null(chart.Resource.ReleaseName); 88chart.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var annotations), 102Assert.NotEqual(chart1.Resource.Name, chart2.Resource.Name); 103Assert.Equal("env", chart1.Resource.Parent.Name); 104Assert.Equal("env", chart2.Resource.Parent.Name); 173Assert.Equal(chartReference, chart.Resource.ChartReference); 201Assert.Equal(chartVersion, chart.Resource.ChartVersion); 289Assert.Equal("hello world!", chart.Resource.Values["config.greeting"]); 290Assert.Equal("a,b,c", chart.Resource.Values["config.list"]); 302Assert.Equal("--foo", chart.Resource.Values["args[0]"]); 313Assert.False(chart.Resource.DestroyOnUninstall); 325Assert.True(chart.Resource.DestroyOnUninstall); 355Assert.False(chart.Resource.ForceConflicts); 367Assert.True(chart.Resource.ForceConflicts); 396var steps = await CreateStepsAsync(builder, chart.Resource); 410var steps = await CreateStepsAsync(builder, chart.Resource); 435var steps = await CreateStepsAsync(builder, chart.Resource); 452Assert.Null(chart.Resource.Namespace); 454var steps = await CreateStepsAsync(builder, chart.Resource); 469var steps = await CreateStepsAsync(builder, chart.Resource); 486var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateStepsAsync(builder, chart.Resource)); 502var steps = await CreateStepsAsync(builder, chart.Resource); 541Assert.Single(chart.Resource.Values); 542Assert.Equal("value2", chart.Resource.Values["key"]);
KubernetesIngressTests.cs (15)
396var steps = await PipelineStepTestHelpers.CreateStepsAsync(app.Services, k8s.Resource); 466var collected = KubernetesEnvironmentResource.CollectTlsSecrets(model, k8s.Resource); 468Assert.Same(ingress.Resource, request.Owner); 499var collected = KubernetesEnvironmentResource.CollectTlsSecrets(model, k8s.Resource); 501Assert.Same(ingress.Resource, request.Owner); 530Assert.Null(ingress.Resource.GeneratedIngress); 531var collectedBeforePublish = KubernetesEnvironmentResource.CollectTlsSecrets(model, k8s.Resource); 532Assert.Same(ingress.Resource, Assert.Single(collectedBeforePublish).Owner); 536Assert.NotNull(ingress.Resource.GeneratedIngress); 537Assert.True(KubernetesEnvironmentResource.OwnerWasMaterialized(ingress.Resource)); 714Assert.Single(ingress.Resource.TlsConfigs); 715Assert.Equal("public-tls", ingress.Resource.TlsConfigs[0].SecretName.Format); 725Assert.Equal(k8s.Resource, ingress.Resource.Parent); 726Assert.IsType<KubernetesIngressResource>(ingress.Resource);
KubernetesPersistentVolumeRunModeTests.cs (20)
30var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource); 35project.Resource, 42executable.Resource, 63firstProject.Resource, 66secondProject.Resource, 88firstProject.Resource, 91secondProject.Resource, 174var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 175var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 181firstContainer.Resource, 203var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 221var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 253var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 257container.Resource, 287project.Resource, 291KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource), 312var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 313var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 333var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 347var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
KubernetesPublisherTests.cs (14)
42.WithArgs("--cs", cs.Resource); 1333mode.Resource, 1383enableTls.Resource, 1394Assert.Contains(environment.Resource.CapturedHelmValues, captured => 1398captured.Parameter == enableTls.Resource); 1448enableTls.Resource, 1450ReferenceExpression.Create($"{tlsSuffix.Resource}"), 1768Assert.NotNull(data.Resource.GeneratedClaim); 1769var claim = data.Resource.GeneratedClaim!; 1831builder.AddContainer($"{volume.Resource.Name}-service", "nginx") 1841var name = volume.Resource.Name; 1869builder.AddContainer($"{volume.Resource.Name}-service", "nginx") 1879var name = volume.Resource.Name; 2002var localPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource);
Aspire.Hosting.Maui (20)
MauiAndroidExtensions.cs (4)
54var name = $"{builder.Resource.Name}-android-device"; 158var androidDeviceResource = new MauiAndroidDeviceResource(name, builder.Resource); 256var name = $"{builder.Resource.Name}-android-emulator"; 363var androidEmulatorResource = new MauiAndroidEmulatorResource(name, builder.Resource);
MauiiOSExtensions.cs (4)
58var name = $"{builder.Resource.Name}-ios-device"; 165var iOSDeviceResource = new MauiiOSDeviceResource(name, builder.Resource); 279var name = $"{builder.Resource.Name}-ios-simulator"; 376var iOSSimulatorResource = new MauiiOSSimulatorResource(name, builder.Resource);
MauiMacCatalystExtensions.cs (2)
47var name = $"{builder.Resource.Name}-maccatalyst"; 89var macCatalystResource = new MauiMacCatalystPlatformResource(name, builder.Resource);
MauiOtlpExtensions.cs (6)
70var platformResource = builder.Resource; 75if (!parentBuilder.Resource.TryGetLastAnnotation<OtlpDevTunnelConfigurationAnnotation>(out var tunnelConfig)) 79parentBuilder.Resource.Annotations.Add(tunnelConfig); 107var tunnelName = parentBuilder.Resource.Name; 142var exception = new DistributedApplicationException($"The MAUI OTLP dev tunnel for resource '{parentBuilder.Resource.Name}' requires the Aspire dashboard to be enabled or an explicit OTLP endpoint URL to be configured."); 179var exception = new DistributedApplicationException($"The Aspire dashboard resource '{KnownResourceNames.AspireDashboard}' terminated or does not have a concrete OTLP endpoint named '{KnownEndpointNames.OtlpHttpEndpointName}' or '{KnownEndpointNames.OtlpGrpcEndpointName}', so the MAUI OTLP dev tunnel for resource '{parentBuilder.Resource.Name}' cannot start. Ensure dashboard OTLP ingestion is enabled, or configure an explicit OTLP endpoint URL.");
MauiPlatformHelper.cs (2)
53var projectPath = builder.Resource.ProjectPath; 197var resource = resourceBuilder.Resource;
MauiWindowsExtensions.cs (2)
47var name = $"{builder.Resource.Name}-windows"; 89var windowsResource = new MauiWindowsPlatformResource(name, builder.Resource);
Aspire.Hosting.Maui.Tests (133)
MauiiOSValidationTests.cs (6)
36.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None) 62.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None) 87.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None) 108.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None) 127.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None) 146.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None)
MauiOtlpTemplateTests.cs (3)
34platformResource.Resource, 61platformResource.Resource, 84androidDevice.Resource,
MauiPlatformExtensionsTests.cs (104)
108Assert.Equal(config.ExpectedDefaultName, platform.Resource.Name); 109var resourceWithParent = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform.Resource); 110Assert.Same(maui.Resource, resourceWithParent.Parent); 111Assert.IsType(config.ExpectedResourceType, platform.Resource); 131Assert.Equal(customName, platform.Resource.Name); 167var debugSupport = Assert.Single(platform.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 170var launchConfiguration = await DeserializeLaunchConfigurationAsync(platform.Resource); 198var resource = platform.Resource; 246Assert.IsAssignableFrom<IMauiPlatformResource>(platform.Resource); 266Assert.NotEqual(platform1.Resource.Name, platform2.Resource.Name); 267var parent1 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform1.Resource); 268var parent2 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform2.Resource); 270Assert.Same(maui.Resource, parent1.Parent); 296.PublishAsync(new BeforeResourceStartedEvent(platform.Resource, app.Services), CancellationToken.None) 321androidEmulator.Resource, 347Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name); 348Assert.IsType<MauiAndroidDeviceResource>(androidDevice.Resource); 349Assert.IsType<MauiAndroidEmulatorResource>(androidEmulator.Resource); 368Assert.Equal("my-device", device.Resource.Name); 369Assert.IsType<MauiAndroidDeviceResource>(device.Resource); 370var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource); 391Assert.Equal("my-emulator", emulator.Resource.Name); 392Assert.IsType<MauiAndroidEmulatorResource>(emulator.Resource); 393var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(emulator.Resource); 414Assert.Equal("my-device", device.Resource.Name); 415Assert.IsType<MauiiOSDeviceResource>(device.Resource); 416var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource); 442Assert.Equal("my-simulator", simulator.Resource.Name); 443Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 444var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(simulator.Resource); 463var debugSupport = Assert.Single(simulator.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 467var argsContext = new CommandLineArgsCallbackContext(args, simulator.Resource); 468foreach (var argsAnnotation in simulator.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>()) 498Assert.NotEqual(device.Resource.Name, simulator.Resource.Name); 499Assert.IsType<MauiiOSDeviceResource>(device.Resource); 500Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 520resource = maui.AddiOSDevice().Resource; 524resource = maui.AddiOSSimulator().Resource; 550iosSimulator.Resource, 570? (IResource)maui.AddAndroidEmulator().Resource 571: maui.AddiOSSimulator().Resource; 641resource = maui.AddAndroidDevice().Resource; 645resource = maui.AddAndroidEmulator().Resource; 673var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().FirstOrDefault(); 698var annotations = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().ToList(); 726platform.Resource, 736var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 753dashboard.Resource.Annotations.Add(new EndpointAnnotation( 764var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 773var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 775await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None).DefaultTimeout(); 787iosSimulator.Resource, 806dashboard.Resource.Annotations.Add(new EndpointAnnotation( 812dashboard.Resource.Annotations.Add(new EndpointAnnotation( 820var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 824var httpEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>() 827var grpcEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>() 832new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 844new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 853iosSimulator.Resource, 878dashboard.Resource.Annotations.Add(dashboardEndpoint); 882var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 892new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 909dashboard.Resource.Annotations.Add(new EndpointAnnotation( 917var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 922.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 934var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 942new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 972dashboard.Resource.Annotations.Add(dashboardEndpoint); 974var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 999await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None).DefaultTimeout(); 1010androidEmulator.Resource, 1031var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1046iosSimulator.Resource, 1067var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1086iosSimulator.Resource, 1108var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1113androidEmulator.Resource, 1119appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None).DefaultTimeout()); 1140var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1145appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None).DefaultTimeout()); 1165var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1175new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), 1192dashboard.Resource.Annotations.Add(new EndpointAnnotation( 1200var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1205tunnelConfig.DevTunnel.Resource.Name, 1212var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 1219.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 1232iosSimulator.Resource, 1239.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 1257iosSimulator.Resource, 1274dashboard.Resource.Annotations.Add(new EndpointAnnotation( 1282var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1288iosSimulator.Resource, 1310dashboard.Resource.Annotations.Add(new EndpointAnnotation( 1318var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1322var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 1330await notificationService.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 1336iosSimulator.Resource, 1342new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), 1346await notificationService.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with
MauiProjectResourceValidationTests.cs (2)
52Assert.Equal(projectPath, maui.Resource.ProjectPath); 62Assert.Equal("my-maui-app", maui.Resource.Name);
MauiUnsupportedPlatformTests.cs (6)
24var annotation = windows.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 48var annotation = macCatalyst.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 72var annotation = iosDevice.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 96var annotation = iosSimulator.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 121var annotation = androidDevice.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 136var annotation = androidEmulator.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault();
MauiWithArgsTests.cs (12)
28var args = await ArgumentEvaluator.GetArgumentListAsync(windows.Resource).DefaultTimeout(); 46var args = await ArgumentEvaluator.GetArgumentListAsync(macCatalyst.Resource).DefaultTimeout(); 65var args = await ArgumentEvaluator.GetArgumentListAsync(androidDevice.Resource).DefaultTimeout(); 85var args = await ArgumentEvaluator.GetArgumentListAsync(androidDevice.Resource).DefaultTimeout(); 102var args = await ArgumentEvaluator.GetArgumentListAsync(emulator.Resource).DefaultTimeout(); 122var args = await ArgumentEvaluator.GetArgumentListAsync(emulator.Resource).DefaultTimeout(); 139var args = await ArgumentEvaluator.GetArgumentListAsync(device.Resource).DefaultTimeout(); 158var args = await ArgumentEvaluator.GetArgumentListAsync(device.Resource).DefaultTimeout(); 175var args = await ArgumentEvaluator.GetArgumentListAsync(simulator.Resource).DefaultTimeout(); 195var args = await ArgumentEvaluator.GetArgumentListAsync(simulator.Resource).DefaultTimeout(); 234var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource).DefaultTimeout(); 235Assert.True(args.Count > 0, $"Expected args for {builder.Resource.Name}");
Aspire.Hosting.Milvus (6)
MilvusBuilderExtensions.cs (6)
53var apiKeyParameter = apiKey?.Resource ?? 111builder.Resource.AddDatabase(name, databaseName); 112var milvusDatabaseResource = new MilvusDatabaseResource(name, databaseName, builder.Resource); 147containerName ??= $"{builder.Resource.Name}-attu"; 155.WithEnvironment(context => ConfigureAttuContainer(context, builder.Resource)) 157.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages)
Aspire.Hosting.Milvus.Tests (20)
AddMilvusTests.cs (7)
85var connectionStringResource = milvus.Resource as IResourceWithConnectionString; 109var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 121var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 138var serverManifest = await ManifestUtils.GetManifest(milvus.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 139var dbManifest = await ManifestUtils.GetManifest(db1.Resource); 215Assert.Single(attu.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Parent" && r.Resource == milvus.Resource); 216Assert.Single(attu.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == milvus.Resource);
MilvusFunctionalTests.cs (13)
32await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus.Resource.Name); 37hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 39hb.AddMilvusClient(db.Resource.Name); 83var password = milvus1.Resource.ApiKeyParameter.Value; 108await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus1.Resource.Name); 115hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 117hb.AddMilvusClient(db1.Resource.Name); 156await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus2.Resource.Name); 163hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 165hb.AddMilvusClient(db2.Resource.Name);
Aspire.Hosting.MongoDB (72)
MongoDBBuilderExtensions.cs (21)
68var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 70var mongoServerResource = new MongoDBServerResource(name, userName?.Resource, passwordParameter) 200return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 269builder.Resource.AddDatabase(name, databaseName); 270var mongoDBDatabase = new MongoDBDatabaseResource(name, databaseName, builder.Resource); 317containerName ??= $"{builder.Resource.Name}-mongoexpress"; 325.WithEnvironment(context => ConfigureMongoExpressContainer(context, builder.Resource)) 328.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages) 350.SingleOrDefault(r => r.Members.Contains(builder.Resource)); 469if (builder.Resource.HasAnnotationOfType<MongoDBServerBindAllIpAnnotation>()) 519name ??= builder.Resource.ReplicaSetName ?? builder.Resource.Name; 523if (builder.Resource.ReplicaSetName is { } existingName) 525if (!builder.Resource.HasAnnotationOfType<MongoDBSingleMemberReplicaSetAnnotation>()) 527throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' belongs to the advanced replica set '{existingName}'. Configure it with WithMember instead of WithReplicaSet."); 532: throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' is already configured as a member of the replica set '{existingName}' and cannot also be a member of '{name}'."); 535if (!builder.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()) 537builder.WithKeyFile(CreateReplicaSetKeyFile(builder.ApplicationBuilder, builder.Resource.Name)); 559builder.Resource.ReplicaSetName = name; 608if (builder.Resource.TryGetLastAnnotation<MongoDBServerKeyFileAnnotation>(out var existingKeyFile)) 612: throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' already has a key file configured at '{existingKeyFile.FilePath}'. A MongoDB server can only have one key file; note that adding a server to a replica set gives it the replica set's shared key file.");
ReplicaSet\MongoDBReplicaSetBuilderExtensions.cs (51)
79sharedUserName: userName?.Resource, 80sharedPassword: password?.Resource 404if (member.Resource.HasAnnotationOfType<MongoDBSingleMemberReplicaSetAnnotation>()) 406throw new InvalidOperationException($"The MongoDB server resource '{member.Resource.Name}' is configured as a single-member replica set. Remove WithReplicaSet before adding it to the advanced replica set '{builder.Resource.Name}'. Migrating existing single-member data to an advanced replica set is not supported."); 409if (builder.Resource.Members.Count() >= MaxMembers) 411throw new InvalidOperationException($"The MongoDB replica set '{builder.Resource.Name}' already has the maximum of {MaxMembers} members that MongoDB allows a replica set to hold."); 417if (member.Resource.ReplicaSetName is { } existingReplicaSetName) 420string.Equals(existingReplicaSetName, builder.Resource.Name, StringComparisons.ResourceName) 421? $"The MongoDB server resource '{member.Resource.Name}' has already been added as a member of the replica set '{builder.Resource.Name}'." 422: $"The MongoDB server resource '{member.Resource.Name}' is already a member of the replica set '{existingReplicaSetName}' and cannot also be a member of '{builder.Resource.Name}'."); 428var memberKeyFile = member.Resource.TryGetLastAnnotation<MongoDBServerKeyFileAnnotation>(out var existingKeyFile) ? existingKeyFile : null; 429if (memberKeyFile is not null && memberKeyFile.Value != builder.Resource.SharedKeyFileParameter) 432$"The MongoDB server resource '{member.Resource.Name}' was given a key file of its own, which conflicts with the one shared by the members of the replica set '{builder.Resource.Name}'. Members are given the replica set's key file automatically, so remove the '{nameof(MongoDBBuilderExtensions.WithKeyFile)}' call on the member."); 443if (member.Resource.UserNameParameter is { } memberUserName && memberUserName != builder.Resource.SharedUserNameParameter) 446$"The MongoDB server resource '{member.Resource.Name}' was given an explicit user name that differs from the one of the replica set '{builder.Resource.Name}'. Members of a replica set share a single set of credentials: pass the user name to '{nameof(AddMongoDBReplicaSet)}' instead of to the individual members."); 449if (!member.Resource.PasswordParameterWasGenerated && member.Resource.PasswordParameter != builder.Resource.SharedPasswordParameter) 452$"The MongoDB server resource '{member.Resource.Name}' was given an explicit password that differs from the one of the replica set '{builder.Resource.Name}'. Members of a replica set share a single set of credentials: pass the password to '{nameof(AddMongoDBReplicaSet)}' instead of to the individual members."); 455MongoDBBuilderExtensions.ConfigureReplicaSetMember(member, builder.Resource.Name); 462member.WithKeyFile(builder.Resource.SharedKeyFileParameter); 476if (!member.Resource.HasAnnotationOfType<HttpsCertificateAnnotation>()) 481member.Resource.UserNameParameter = builder.Resource.SharedUserNameParameter; 482member.Resource.PasswordParameter = builder.Resource.SharedPasswordParameter; 483member.Resource.PasswordParameterWasGenerated = false; 491.PublishUpdateAsync(builder.Resource, s => 493lock (builder.Resource.StoppedMembers) 495builder.Resource.StoppedMembers.Add(stopped.Name); 496return builder.Resource.StoppedMembers.Count >= builder.Resource.Members.Count() 507.PublishUpdateAsync(builder.Resource, s => 509lock (builder.Resource.StoppedMembers) 511var wasAllStopped = builder.Resource.StoppedMembers.Count >= builder.Resource.Members.Count() 512&& builder.Resource.StoppedMembers.Count > 0; 513builder.Resource.StoppedMembers.Remove(starting.Name); 518return wasAllStopped && builder.Resource.IsConfigured 529.PublishUpdateAsync(builder.Resource, s => 531lock (builder.Resource.StoppedMembers) 534&& builder.Resource.IsConfigured 535&& !builder.Resource.StoppedMembers.Contains(ready.Name) 544.WithAnnotation(new MongoReplicaSetMemberAnnotation(member.Resource))
Aspire.Hosting.MongoDB.Tests (217)
AddMongoDBTests.cs (44)
25Assert.Single(mongo.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mongodb_check"); 33Assert.Single(db.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mydb_check"); 144Assert.Same(mongo.Resource, wait.Resource); 176Assert.Same(mongo.Resource, wait.Resource); 181Assert.Same(replicaSet.Resource, wait.Resource); 184var memberWait = Assert.Single(replicaSet.Resource.Annotations.OfType<WaitAnnotation>()); 185Assert.Same(mongo.Resource, memberWait.Resource); 286Assert.Single(mongoExpress.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Parent" && r.Resource == mongo.Resource); 287Assert.Single(mongoExpress.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == mongo.Resource); 297var mongoManifest = await ManifestUtils.GetManifest(mongo.Resource); 298var dbManifest = await ManifestUtils.GetManifest(db.Resource); 363Assert.Equal("customers1", db1.Resource.DatabaseName); 364Assert.Equal("customers2", db2.Resource.DatabaseName); 366Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers1?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db1.Resource.ConnectionStringExpression.ValueExpression)); 367Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers2?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db2.Resource.ConnectionStringExpression.ValueExpression)); 381Assert.Equal("imports", db1.Resource.DatabaseName); 382Assert.Equal("imports", db2.Resource.DatabaseName); 384Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db1.Resource.ConnectionStringExpression.ValueExpression)); 385Assert.Equal("mongodb://admin:{mongo2-password.value}@{mongo2.bindings.tcp.host}:{mongo2.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db2.Resource.ConnectionStringExpression.ValueExpression)); 421Assert.True(mongo1.Resource.HasAnnotationOfType<MongoDBServerBindAllIpAnnotation>()); 422var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 433Assert.Equal("test", mongo1.Resource.ReplicaSetName); 434Assert.True(mongo1.Resource.HasAnnotationOfType<MongoDBServerReplicaSetAnnotation>()); 435var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 448Assert.True(mongo1.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()); 449var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 465Assert.False(mongo1.Resource.TlsEnabled); 471Assert.True(mongo1.Resource.TlsEnabled); 473var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 479var connectionString = await mongo1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 496Assert.False(mongo1.Resource.TlsEnabled); 498var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 501var connectionString = await mongo1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 522var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(mongoExpress.Resource); 543var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(mongoExpress.Resource); 581var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(mongoExpress.Resource); 622Assert.False(mongo1.Resource.TlsEnabled); 624var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 642var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 660var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 672var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 682var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 684Assert.Equal("rs0", mongo1.Resource.ReplicaSetName); 704var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource);
ConnectionPropertiesTests.cs (1)
105var manifest = await ManifestUtils.GetManifest(app.Resource);
MongoDbFunctionalTests.cs (27)
56await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 58await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 62await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 64await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 90hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 92hb.AddMongoDBClient(db.Resource.Name); 132await app.ResourceNotifications.WaitForResourceHealthyAsync(mongodb.Resource.Name, cts.Token); 133Assert.True(mongodb.Resource.TlsEnabled); 135await app.ResourceNotifications.WaitForResourceAsync(mongoExpress.Resource.Name, KnownResourceStates.Running, cts.Token); 137var endpoint = mongoExpress.Resource.GetEndpoint("http"); 175var connectionString = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 176hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = connectionString; 179hb.AddMongoDBClient(db.Resource.Name); 212var password = mongodb1.Resource.PasswordParameter!.Value; 240hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 242hb.AddMongoDBClient(db1.Resource.Name); 285hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 287hb.AddMongoDBClient(db2.Resource.Name); 406hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 408hb.AddMongoDBClient(db.Resource.Name); 496hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 498hb.AddMongoDBClient(db.Resource.Name);
MongoDBReplCommandTests.cs (8)
53var options = await MongoDBBuilderExtensions.CreateReplOptionsAsync(mongo.Resource, TestContext.Current.CancellationToken); 78var options = await MongoDBBuilderExtensions.CreateReplOptionsAsync(mongo.Resource, TestContext.Current.CancellationToken); 98MongoDBBuilderExtensions.CreateReplOptionsAsync(mongo.Resource, TestContext.Current.CancellationToken)); 116Resource = mongo.Resource, 125var callback = Assert.Single(mongo.Resource.Annotations.OfType<CertificateTrustConfigurationCallbackAnnotation>()); 169await VerifyReplAsync(app, mongo.Resource, "mongosh (mongo)", 190await VerifyReplAsync(app, mongo.Resource, "mongosh (mongo)", 193Assert.True(mongo.Resource.TlsEnabled);
ReplicaSet\AddMongoDBReplicaSetTests.cs (49)
26Assert.Single(rs.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "rs0_check"); 50var wait = Assert.Single(rs.Resource.Annotations.OfType<WaitAnnotation>(), 51a => a.Resource == mongo1.Resource); 67var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 173var rs = builder.AddResource(new MongoDBReplicaSetResource("rs0", keyFile.Resource, null, password.Resource)); 175var memberAnnotations = member.Resource.Annotations.ToArray(); 176var replicaSetAnnotations = rs.Resource.Annotations.ToArray(); 177var memberPassword = member.Resource.PasswordParameter; 182Assert.Null(member.Resource.ReplicaSetName); 183Assert.Equal(memberAnnotations, member.Resource.Annotations); 184Assert.Equal(replicaSetAnnotations, rs.Resource.Annotations); 185Assert.Null(member.Resource.UserNameParameter); 186Assert.Same(memberPassword, member.Resource.PasswordParameter); 187Assert.True(member.Resource.PasswordParameterWasGenerated); 198var annotation = Assert.Single(mongo1.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 210var annotation = Assert.Single(mongo1.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 211Assert.Equal(certificatePassword.Resource, annotation.Password); 226var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 242Assert.Equal(50, rs.Resource.Members.Count()); 249Assert.Null(tooMany.Resource.ReplicaSetName); 250Assert.False(tooMany.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()); 251Assert.Equal(50, rs.Resource.Members.Count()); 321Assert.Null(mongo1.Resource.ReplicaSetName); 335replicaSet.Resource.IsConfigured = true; 336await notifications.PublishUpdateAsync(replicaSet.Resource, snapshot => snapshot with 347var stoppedResourceEvent = new ResourceEvent(mongo1.Resource, mongo1.Resource.Name, stoppedSnapshot); 348await eventing.PublishAsync(new ResourceStoppedEvent(mongo1.Resource, app.Services, stoppedResourceEvent)); 352await eventing.PublishAsync(new BeforeResourceStartedEvent(mongo1.Resource, app.Services)); 358await eventing.PublishAsync(new ResourceReadyEvent(mongo1.Resource, app.Services), staleReadyCts.Token); 362await eventing.PublishAsync(new ResourceReadyEvent(mongo1.Resource, app.Services)); 368Assert.True(notifications.TryGetCurrentState(replicaSet.Resource.Name, out var resourceEvent)); 381var mongo1 = builder.AddMongoDB("mongo1").WithKeyFile(rs.Resource.SharedKeyFileParameter, "/custom/rs.key"); 384Assert.Equal("rs0", mongo1.Resource.ReplicaSetName); 385var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 401Assert.Null(mongo1.Resource.ReplicaSetName); 402Assert.False(mongo1.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()); 406Assert.Equal("rs1", mongo1.Resource.ReplicaSetName); 407Assert.Single(rs.Resource.Members); 420Assert.Same(userName.Resource, mongo1.Resource.UserNameParameter); 421Assert.Same(password.Resource, mongo1.Resource.PasswordParameter); 422Assert.Single(rs.Resource.Members); 432Assert.Same(rs.Resource.SharedPasswordParameter, mongo1.Resource.PasswordParameter); 443var properties = ((IResourceWithConnectionString)rs.Resource).GetConnectionProperties().ToArray(); 454Assert.Equal(await rs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None), uri);
ReplicaSet\MongoDbReplicaSetFunctionalTests.cs (23)
58await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo.Resource.Name, cts.Token); 59await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 61var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 95await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 97var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 142await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 144var endpoint = mongoExpress.Resource.GetEndpoint("http"); 179await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 181var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 221await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 223await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, cts.Token); 224await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo2.Resource.Name, cts.Token); 225await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo3.Resource.Name, cts.Token); 227Assert.True(mongo1.Resource.TlsEnabled); 228Assert.True(mongo2.Resource.TlsEnabled); 229Assert.True(mongo3.Resource.TlsEnabled); 231var mongoExpressEndpoint = mongoExpress.Resource.GetEndpoint("http"); 311password = await rs.Resource.SharedPasswordParameter.GetValueAsync(cts.Token); 315await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 317var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 383await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, secondPhaseCts.Token); 385var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(secondPhaseCts.Token); 454await app.ResourceNotifications.WaitForResourceAsync(rs.Resource.Name, KnownResourceStates.FailedToStart, cts.Token);
SingleMemberReplicaSetFunctionalTests.cs (24)
51await app.ResourceNotifications.WaitForResourceHealthyAsync(database.Resource.Name, ready.Token); 52Assert.Equal(useTls, mongo.Resource.TlsEnabled); 55using var serverClient = new MongoClient(await mongo.Resource.ConnectionStringExpression.GetValueAsync(operations.Token)); 56using var databaseClient = new MongoClient(await database.Resource.ConnectionStringExpression.GetValueAsync(operations.Token)); 93await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo.Resource.Name, cts.Token); 94Assert.Equal(useTls, mongo.Resource.TlsEnabled); 96using var client = new MongoClient(await mongo.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)); 100await app.ResourceNotifications.WaitForResourceAsync(mongoExpress.Resource.Name, KnownResourceStates.Running, cts.Token); 101using var httpClient = new HttpClient { BaseAddress = new Uri(mongoExpress.Resource.GetEndpoint("http").Url) }; 160await app.ResourceNotifications.WaitForResourceAsync(mongo.Resource.Name, 162await app.ResourceNotifications.WaitForResourceAsync(consumer.Resource.Name, KnownResourceStates.Waiting, ready.Token); 166var completed = await app.ResourceNotifications.WaitForResourceAsync(consumer.Resource.Name, 170using var client = new MongoClient(await database.Resource.ConnectionStringExpression.GetValueAsync(ready.Token)); 196var running = await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, ready.Token); 197password = (await mongo1.Resource.PasswordParameter!.GetValueAsync(ready.Token))!; 198originalPort = mongo1.Resource.PrimaryEndpoint.Port; 199using var client = new MongoClient(await mongo1.Resource.ConnectionStringExpression.GetValueAsync(ready.Token)); 207await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Exited, restart.Token); 209await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Running, restart.Token); 210await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, restart.Token); 217await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Exited, stop.Token); 226await app2.ResourceNotifications.WaitForResourceHealthyAsync(mongo2.Resource.Name, secondReady.Token); 227Assert.Equal(2, new[] { originalPort, mongo2.Resource.PrimaryEndpoint.Port }.Distinct().Count()); 229using var secondClient = new MongoClient(await mongo2.Resource.ConnectionStringExpression.GetValueAsync(secondReady.Token));
SingleMemberReplicaSetTests.cs (34)
24var password = mongo.Resource.PasswordParameter; 28Assert.Equal("mongo", mongo.Resource.ReplicaSetName); 29Assert.Same(password, mongo.Resource.PasswordParameter); 30Assert.Same(mongo.Resource, database.Resource.Parent); 33await ArgumentEvaluator.GetArgumentListAsync(mongo.Resource)); 34var endpoint = Assert.Single(mongo.Resource.Annotations.OfType<EndpointAnnotation>()); 38Assert.Single(mongo.Resource.Annotations.OfType<MongoDBSingleMemberReplicaSetAnnotation>()); 40Assert.Single(mongo.Resource.Annotations.OfType<MongoDBServerKeyFileAnnotation>()).Value).Secret); 48var mongo = builder.AddMongoDB("mongo").WithKeyFile(key.Resource, "/etc/custom.key").WithReplicaSet("rs0").WithReplicaSet(); 50Assert.Equal("rs0", mongo.Resource.ReplicaSetName); 51Assert.Same(key.Resource, Assert.Single(mongo.Resource.Annotations.OfType<MongoDBServerKeyFileAnnotation>()).Value); 53await ArgumentEvaluator.GetArgumentListAsync(mongo.Resource)); 62var annotations = mongo.Resource.Annotations.ToArray(); 65Assert.Equal(annotations, mongo.Resource.Annotations); 66Assert.Equal("rs0", mongo.Resource.ReplicaSetName); 77var annotations = mongo.Resource.Annotations.ToArray(); 78var password = mongo.Resource.PasswordParameter; 82Assert.Equal(annotations, mongo.Resource.Annotations); 83Assert.Same(password, mongo.Resource.PasswordParameter); 84Assert.Empty(advanced.Resource.Members); 93var annotations = mongo.Resource.Annotations.ToArray(); 96Assert.Equal(annotations, mongo.Resource.Annotations); 97Assert.Same(mongo.Resource, Assert.Single(advanced.Resource.Members)); 105var annotations = mongo.Resource.Annotations.ToArray(); 109Assert.Equal(annotations, mongo.Resource.Annotations); 127Assert.False(mongo.Resource.TlsEnabled); 128Assert.False(mongo.Resource.TlsAllowInvalidCertificates); 130await ArgumentEvaluator.GetArgumentListAsync(mongo.Resource)); 132foreach (IResourceWithConnectionString resource in new IResourceWithConnectionString[] { mongo.Resource, database.Resource }) 141Assert.Equal(resource == database.Resource ? "orders" : null, url.DatabaseName);
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.MySql (9)
MySqlBuilderExtensions.cs (9)
43var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 116return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 173var mySqlDatabase = new MySqlDatabaseResource(name, databaseName, builder.Resource); 175builder.Resource.AddDatabase(mySqlDatabase); 275builder.Resource.PasswordParameter = password.Resource; 299builderForExistingResource.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 362var configStoreFilename = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-config.user.inc.php", tempConfigFile); 387phpMyAdminContainerBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages);
Aspire.Hosting.MySql.Tests (75)
AddMySqlTests.cs (23)
23Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName); 33Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName); 160var mySqlManifest = await ManifestUtils.GetManifest(mysql.Resource); 161var dbManifest = await ManifestUtils.GetManifest(db.Resource); 199var serverManifest = await ManifestUtils.GetManifest(mysql.Resource); 233Assert.Single(phpMyAdmin.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == mySql1.Resource); 234Assert.Single(phpMyAdmin.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == mySql2.Resource); 267Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]); 299string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';"; 300string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';"; 340Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys); 341Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values); 343Assert.Equal("customers1", db1.Resource.DatabaseName); 344Assert.Equal("customers2", db2.Resource.DatabaseName); 346Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 347Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 361Assert.Equal("imports", db1.Resource.DatabaseName); 362Assert.Equal("imports", db2.Resource.DatabaseName); 364Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 365Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
ConnectionPropertiesTests.cs (1)
92var manifest = await ManifestUtils.GetManifest(app.Resource);
MySqlFunctionalTests.cs (41)
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); 136var password = mysql1.Resource.PasswordParameter.Value; 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);
MySqlReplCommandTests.cs (3)
47var options = await MySqlBuilderExtensions.CreateReplOptionsAsync(mysql.Resource, TestContext.Current.CancellationToken); 69MySqlBuilderExtensions.CreateReplOptionsAsync(mysql.Resource, TestContext.Current.CancellationToken)); 91await VerifyReplAsync(app, mysql.Resource, "mysql (mysql)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.Nats (2)
NatsBuilderExtensions.cs (2)
58var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 60var nats = new NatsServerResource(name, userName?.Resource, passwordParameter);
Aspire.Hosting.Nats.Tests (34)
AddNatsTests.cs (12)
20Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", nats.Resource.PasswordParameter!.Default?.GetType().FullName); 30Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", nats.Resource.PasswordParameter!.Default?.GetType().FullName); 41Assert.NotNull(nats.Resource.PasswordParameter); 43Assert.False(string.IsNullOrEmpty(nats.Resource.PasswordParameter!.Value)); 71Assert.NotNull(nats.Resource.UserNameParameter); 72Assert.NotNull(nats.Resource.PasswordParameter); 75Assert.Equal("usr", nats.Resource.UserNameParameter!.Value); 76Assert.Equal("password", nats.Resource.PasswordParameter!.Value); 193var manifest = await ManifestUtils.GetManifest(nats.Resource); 230var manifest = await ManifestUtils.GetManifest(nats.Resource); 258manifest = await ManifestUtils.GetManifest(nats.Resource); 285manifest = await ManifestUtils.GetManifest(nats.Resource);
ConnectionPropertiesTests.cs (1)
66var manifest = await ManifestUtils.GetManifest(app.Resource);
NatsFunctionalTests.cs (19)
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); 88var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 89hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString; 126await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 131var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 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);
NatsPublicApiTests.cs (2)
178var action = () => new NatsServerResource(name, user?.Resource, password?.Resource);
Aspire.Hosting.OpenAI (13)
OpenAIExtensions.cs (13)
38defaultApiKeyParameter.Resource.Description = """ 42defaultApiKeyParameter.Resource.EnableDescriptionMarkdown = true; 44var resource = new OpenAIResource(name, defaultApiKeyParameter.Resource); 111var resource = new OpenAIModelResource(name, model, builder.Resource); 152builder.Resource.Endpoint = endpoint; 165if (!apiKey.Resource.Secret) 171if (builder.Resource.DefaultKeyParameter == builder.Resource.Key) 173builder.ApplicationBuilder.Resources.Remove(builder.Resource.Key); 176builder.Resource.Key = apiKey.Resource; 207var healthCheckKey = $"{builder.Resource.Name}_check"; 229var resource = builder.Resource;
Aspire.Hosting.OpenAI.Tests (43)
OpenAIExtensionTests.cs (32)
21var parentCs = await parent.Resource.ConnectionStringExpression.GetValueAsync(default); 22var modelCs = await model.Resource.ConnectionStringExpression.GetValueAsync(default); 41var parentCs = await parent.Resource.ConnectionStringExpression.GetValueAsync(default); 42var modelCs = await model.Resource.ConnectionStringExpression.GetValueAsync(default); 61Assert.Equal("chat", model.Resource.Name); 62Assert.Equal("gpt-4o-mini", model.Resource.Model); 73Assert.NotNull(parent.Resource.Key); 74Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name); 75Assert.True(parent.Resource.Key.Secret); 77Assert.NotNull(parent.Resource.Key); 90var expression = openai.Resource.ConnectionStringExpression.ValueExpression; 95var resolved = await openai.Resource.ConnectionStringExpression.GetValueAsync(default); 108var expression = openai.Resource.ConnectionStringExpression.ValueExpression; 114var resolved = await openai.Resource.ConnectionStringExpression.GetValueAsync(default); 134var connectionString = await openai.Resource.ConnectionStringExpression.GetValueAsync(default); 136Assert.Equal(apiKeyParameter.Resource, parent.Resource.Key); 148Assert.NotNull(parent.Resource.Key); 149Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name); 150Assert.True(parent.Resource.Key.Secret); 151Assert.Equal(parent.Resource.Key, parent.Resource.Key); 163var resource = new OpenAIModelResource("test", "gpt-4o-mini", parent.Resource); 168Assert.Equal(parent.Resource.Key, parent.Resource.Key); 198Assert.Equal(apiKey.Resource, parent.Resource.Key); 232var healthCheckAnnotations = openai.Resource.Annotations.OfType<HealthCheckAnnotation>().ToList(); 282var connectionString = await openai.Resource.ConnectionStringExpression.GetValueAsync(default); 363Assert.Equal("chat", openai.Resource.Name); 364Assert.Equal(modelName, openai.Resource.Model); 366var connectionString = openai.Resource.ConnectionStringExpression.ValueExpression;
OpenAIFunctionalTests.cs (11)
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); 77Assert.Single(resource.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "resource_check"); 80var statusPageHealthCheck = Enumerable.Single(resource.Resource.Annotations, x => x is HealthCheckAnnotation hca && hca.Key == "resource_check"); 81resource.Resource.Annotations.Remove(statusPageHealthCheck); 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 (3)
OracleDatabaseBuilderExtensions.cs (3)
39var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 91builder.Resource.AddDatabase(name, databaseName); 92var oracleDatabase = new OracleDatabaseResource(name, databaseName, builder.Resource);
Aspire.Hosting.Oracle.Tests (36)
AddOracleTests.cs (13)
21Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName); 31Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName); 199var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource); 200var dbManifest = await ManifestUtils.GetManifest(db.Resource); 238var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource); 294Assert.Equal("customers1", db1.Resource.DatabaseName); 295Assert.Equal("customers2", db2.Resource.DatabaseName); 297Assert.Equal("{oracle1.connectionString}/customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 298Assert.Equal("{oracle1.connectionString}/customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 312Assert.Equal("imports", db1.Resource.DatabaseName); 313Assert.Equal("imports", db2.Resource.DatabaseName); 315Assert.Equal("{oracle1.connectionString}/imports", db1.Resource.ConnectionStringExpression.ValueExpression); 316Assert.Equal("{oracle2.connectionString}/imports", db2.Resource.ConnectionStringExpression.ValueExpression);
ConnectionPropertiesTests.cs (1)
88var oracleManifest = await ManifestUtils.GetManifest(app.Resource);
OracleFunctionalTests.cs (20)
53hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 55hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 101var password = oracle1.Resource.PasswordParameter.Value; 139hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 141hb.AddOracleDatabaseDbContext<TestDbContext>(db1.Resource.Name); 200hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 202hb.AddOracleDatabaseDbContext<TestDbContext>(db2.Resource.Name); 307hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 309hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 404hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 406hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 467await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 469await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 473await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 475await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
OraclePublicApiTests.cs (2)
208var parent = builder.Resource; 227var parent = builder.Resource;
Aspire.Hosting.Orleans (8)
OrleansServiceExtensions.cs (5)
59orleansServiceBuilder.ClusterId = clusterId.Resource; 90orleansServiceBuilder.ServiceId = serviceId.Resource; 143=> WithGrainStorage(orleansServiceBuilder, provider.Resource.Name, provider); 200=> WithStreaming(orleansServiceBuilder, provider.Resource.Name, provider); 328=> WithGrainDirectory(orleansServiceBuilder, provider.Resource.Name, provider);
ProviderConfiguration.cs (3)
19if (resourceBuilder.Resource.TryGetAnnotationsOfType<OrleansProviderTypeAnnotation>(out var annotations) && annotations.FirstOrDefault() is OrleansProviderTypeAnnotation annotation) 26var resourceType = resourceBuilder.Resource.GetType().Name; 49var serviceKey = resourceBuilder.Resource.Name;
Aspire.Hosting.Orleans.Tests (3)
OrleansProviderTypeTests.cs (3)
27var config = await GetEnvironmentVariablesAsync(silo.Resource, builder); 49var config = await GetEnvironmentVariablesAsync(silo.Resource, builder); 73var config = await GetEnvironmentVariablesAsync(silo.Resource, builder);
Aspire.Hosting.PostgreSQL (15)
PostgresBuilderExtensions.cs (15)
60var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 62var postgresServer = new PostgresServerResource(name, userName?.Resource, passwordParameter); 150return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 202var postgresDatabase = new PostgresDatabaseResource(name, databaseName, builder.Resource); 204builder.Resource.AddDatabase(postgresDatabase.Name, postgresDatabase.DatabaseName); 284pgAdminContainerBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 381pgwebContainerBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 433containerName ??= $"{builder.Resource.Name}-mcp"; 451context.EnvironmentVariables[PostgresMcpDatabaseUriEnvVarName] = builder.Resource.UriExpression; 459mcpContainerBuilder.WithParentRelationship(builder.Resource); 647builder.Resource.PasswordParameter = password.Resource; 664builder.Resource.UserNameParameter = userName.Resource; 769if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation)
Aspire.Hosting.PostgreSQL.Tests (96)
AddPostgresTests.cs (37)
22Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check"); 32Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 42Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 158var connectionStringResource = postgres.Resource as IResourceWithConnectionString; 163Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 208Assert.Equal($"Host=postgres.dev.internal;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value};Database=db", config["ConnectionStrings__db"]); 274var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 275var dbManifest = await ManifestUtils.GetManifest(db.Resource); 318var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 344serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 370serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 535Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString()); 543Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString()); 547Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString()); 555Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString()); 603Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents); 610Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents); 647Assert.Equal("customers1", db1.Resource.DatabaseName); 648Assert.Equal("customers2", db2.Resource.DatabaseName); 650Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 651Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 665Assert.Equal("imports", db1.Resource.DatabaseName); 666Assert.Equal("imports", db2.Resource.DatabaseName); 668Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 669Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression); 714var connectionString = await postgres.Resource.GetConnectionStringAsync(); 728var connectionString = await postgres.Resource.GetConnectionStringAsync(); 730Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 743var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 744var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 825var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 852var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 868var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 881var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 906var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 933var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
PostgrePublicApiTests.cs (3)
257var postgresParentResource = new PostgresServerResource("postgresServer", userName, builder.Resource); 277var postgresParentResource = new PostgresServerResource("postgresServer", userName, builder.Resource); 310var action = () => new PostgresServerResource(name, userName, builder.Resource);
PostgresFunctionalTests.cs (46)
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);
PostgresReplCommandTests.cs (3)
48var options = await PostgresBuilderExtensions.CreateReplOptionsAsync(postgres.Resource, TestContext.Current.CancellationToken); 70PostgresBuilderExtensions.CreateReplOptionsAsync(postgres.Resource, TestContext.Current.CancellationToken)); 93await VerifyReplAsync(app, postgres.Resource, "psql (postgres)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.Python (31)
PythonAppResourceBuilderExtensions.cs (31)
480if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 482var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 497var resourceToSetup = resourceBuilder.Resource; 870: Path.GetFullPath(virtualEnvironmentPath, builder.Resource.WorkingDirectory); 875if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 931if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 943var workingDirectory = builder.Resource.WorkingDirectory; 965if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var annotation) || annotation.VirtualEnvironment is null) 1041if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1140if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1145pythonEnv = builder.Resource.Annotations.OfType<PythonEnvironmentAnnotation>().Last(); 1152var workingDirectory = builder.Resource.WorkingDirectory; 1298var installerName = $"{builder.Resource.Name}-installer"; 1315var installer = new PythonInstallerResource(installerName, builder.Resource); 1318.WithParentRelationship(builder.Resource) 1333if (!builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager) || 1334!builder.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installCommand)) 1343.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1368if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1376: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1379var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1389var venvCreator = new PythonVenvCreatorResource(venvCreatorName, builder.Resource, venvPath); 1408.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1409.WithParentRelationship(builder.Resource) 1418var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1423builder.ApplicationBuilder.Resources.Remove(venvCreatorBuilder.Resource); 1449var shouldSkipInstallerWait = installerBuilder?.Resource.TryGetLastAnnotation<ExplicitStartupAnnotation>(out _) ?? false; 1488var isUsingUv = builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var pkgMgr) && 1498if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1512: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1528if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var existing))
Aspire.Hosting.Python.Tests (41)
AddPythonAppTests.cs (39)
38var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 76var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 136var environmentVariables = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyproj.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 745Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 749Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 769Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 876Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 880Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 907Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 911Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1183var initialCommand = pythonBuilder.Resource.Command; 1188var newCommand = pythonBuilder.Resource.Command; 1408var resource = pythonApp.Resource; 1452var resource = pythonApp.Resource; 1492var resource = pythonApp.Resource; 1523var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1544var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1569var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1596var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1622var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1664var resource = pythonApp.Resource; 1695var resource = pythonApp.Resource; 1718pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1740pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1758pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 2019Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2023Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2053Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2057Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2090Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2094Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2114Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _)); 2220Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2255Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2259Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2295Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2325Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2426Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2458Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
AddUvicornAppTests.cs (2)
22Assert.IsType<UvicornAppResource>(uvicornApp.Resource); 23Assert.Equal("uvicorn-app", uvicornApp.Resource.Name);
Aspire.Hosting.Qdrant (4)
QdrantBuilderExtensions.cs (4)
50var apiKeyParameter = apiKey?.Resource ?? 176var resource = (IResourceWithConnectionString)qdrantResource.Resource; 188var httpConnectionStringExpression = qdrantResource.Resource.HttpConnectionStringExpression; 197var injectionAnnotation = builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var annotation) ? annotation : null;
Aspire.Hosting.Qdrant.Tests (30)
AddQdrantTests.cs (16)
31Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", qd.Resource.ApiKeyParameter.Default?.GetType().FullName); 41Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", qd.Resource.ApiKeyParameter.Default?.GetType().FullName); 165var connectionStringResource = qdrant.Resource as IResourceWithConnectionString; 193var context = new EnvironmentCallbackContext(appBuilder.ExecutionContext, projectA.Resource); 194foreach (var callback in projectA.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 204Assert.Same(qdrant.Resource, reference.Resource); 216Assert.Same(qdrant.Resource, reference.Resource); 233Assert.Same(qdrant.Resource, ((IValueWithReferences)httpReference).References.First()); 236var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 250var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 283var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 300var context = new EnvironmentCallbackContext(appBuilder.ExecutionContext, consumer.Resource); 303foreach (var callback in consumer.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 325consumer.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 340var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 378var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes
QdrantFunctionalTests.cs (14)
47[$"ConnectionStrings:{qdrant.Resource.Name}"] = await qdrant.Resource.ConnectionStringExpression.GetValueAsync(default) 50hb.AddQdrantClient(qdrant.Resource.Name); 133[$"ConnectionStrings:{qdrant1.Resource.Name}"] = await qdrant1.Resource.ConnectionStringExpression.GetValueAsync(default) 136hb.AddQdrantClient(qdrant1.Resource.Name); 179[$"ConnectionStrings:{qdrant2.Resource.Name}"] = await qdrant2.Resource.ConnectionStringExpression.GetValueAsync(default) 182hb.AddQdrantClient(qdrant2.Resource.Name); 247var urls = qdrant.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 278await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 280await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 284await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, (re => re.Snapshot.HealthStatus == HealthStatus.Healthy), cts.Token); 286await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.RabbitMQ (5)
RabbitMQBuilderExtensions.cs (5)
41var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 43var rabbitMq = new RabbitMQServerResource(name, userName?.Resource, passwordParameter); 177var containerAnnotations = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().ToList(); 238throw new DistributedApplicationException($"Cannot configure the RabbitMQ resource '{builder.Resource.Name}' to enable the management plugin as it uses an unrecognized container image registry, name, or tag."); 292var nodeName = $"{builder.Resource.Name}@localhost";
Aspire.Hosting.RabbitMQ.Tests (21)
AddRabbitMQTests.cs (6)
20Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.PasswordParameter.Default?.GetType().FullName); 30Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.PasswordParameter.Default?.GetType().FullName); 207var manifest = await ManifestUtils.GetManifest(rabbit.Resource); 252var manifest = await ManifestUtils.GetManifest(rabbit.Resource); 276manifest = await ManifestUtils.GetManifest(rabbit.Resource); 300manifest = await ManifestUtils.GetManifest(rabbit.Resource);
ConnectionPropertiesTests.cs (1)
66var manifest = await ManifestUtils.GetManifest(app.Resource);
RabbitMQFunctionalTests.cs (14)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 72hb.Configuration[$"ConnectionStrings:{rabbitMQ.Resource.Name}"] = await rabbitMQ.Resource.ConnectionStringExpression.GetValueAsync(default); 73hb.AddRabbitMQClient(rabbitMQ.Resource.Name); 110var password = rabbitMQ1.Resource.PasswordParameter.Value; 136hb.Configuration[$"ConnectionStrings:{rabbitMQ1.Resource.Name}"] = await rabbitMQ1.Resource.ConnectionStringExpression.GetValueAsync(default); 137hb.AddRabbitMQClient(rabbitMQ1.Resource.Name); 193hb.Configuration[$"ConnectionStrings:{rabbitMQ2.Resource.Name}"] = await rabbitMQ2.Resource.ConnectionStringExpression.GetValueAsync(default); 194hb.AddRabbitMQClient(rabbitMQ2.Resource.Name);
Aspire.Hosting.Radius (25)
CloudProviders\RadiusCloudProviderExtensions.cs (2)
64RadiusCloudProvidersAnnotation.GetOrAdd(builder.Resource).Azure = config; 105RadiusCloudProvidersAnnotation.GetOrAdd(builder.Resource).Aws = config;
Publishing\RadCredentialRegisterStep.cs (2)
229AwsRadiusCredential.AccessKey ak => $"access-key|{ak.AccessKeyId.Resource.Name}", 243return await parameter.Resource.GetValueAsync(cancellationToken).ConfigureAwait(false) ?? string.Empty;
Publishing\RadiusInfrastructureBuilder.cs (2)
4141parts.Add(ResolveParameterPart(paramBuilder.Resource, referencedResource, allowRecipeSubstitutions)); 5324return ParameterReference(GetOrAddRecipeParameter(parameterBuilder.Resource));
RadiusExtensions.cs (5)
80builder.Resource.Namespace = kubernetesNamespace; 99builder.Resource.Annotations.Add(new RadiusInfrastructureConfigureAnnotation(configure)); 174var existing = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault(); 177builder.Resource.Annotations.Remove(existing); 180builder.Resource.Annotations.Add(new ContainerImageAnnotation
Recipes\RadiusRecipeParameterExtensions.cs (2)
75var annotation = RadiusRecipeParametersAnnotation.GetOrAdd(builder.Resource); 109var annotation = RadiusRecipeParametersAnnotation.GetOrAdd(builder.Resource);
Secrets\RadiusSecretStoreConsumerExtensions.cs (2)
79RadiusSecretStoresAnnotation.GetOrAdd(radius.Resource).Consumers.Add( 80new RadiusSecretStoreConsumer(kind, store.Resource, selector, key));
Secrets\RadiusSecretStoreExtensions.cs (10)
113OwningEnvironment = radius.Resource, 141EnsureNotAlreadyPopulated(store.Resource); 149var population = store.Resource.Population; 211EnsureNotAlreadyPopulated(store.Resource); 213var population = store.Resource.Population; 241EnsureNotAlreadyPopulated(store.Resource); 243var population = store.Resource.Population; 290store.Resource.MaterializationTimeout = timeout; 291store.Resource.MaterializationTimeoutWasSet = true; 438if (!_population.Data.TryAdd(key, new RadiusSecretKeyBinding(parameter.Resource, encoding?.ToRadiusEncodingString())))
Aspire.Hosting.Radius.Tests (96)
CloudProviders\AdditiveCompatibilityTests.cs (5)
16Assert.Empty(env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>()); 32var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 43var first = RadiusCloudProvidersAnnotation.GetOrAdd(env.Resource); 44var second = RadiusCloudProvidersAnnotation.GetOrAdd(env.Resource); 47Assert.Single(env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>());
CloudProviders\CredentialModeOverrideTests.cs (3)
32var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 50var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 65var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
CloudProviders\MultiEnvironmentProvidersTests.cs (3)
29var annA = envA.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 33var annB = envB.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().FirstOrDefault(); 49var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
CloudProviders\WithAwsProviderTests.cs (4)
27var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 44var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 134var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 147var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
CloudProviders\WithAzureProviderTests.cs (2)
30var annotation = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 123var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
Deployment\ControlPlaneVersionGateTests.cs (2)
374var annotation = Assert.Single(environment.Resource.Annotations.OfType<PipelineStepAnnotation>()); 378Resource = environment.Resource,
InnerLoop\MultiEnvironmentTests.cs (2)
71Assert.Same(env1.Resource, annotations[0].ComputeEnvironment); 99Assert.Same(env1.Resource, annotations[0].ComputeEnvironment);
InnerLoop\RadiusInfrastructureInitializationTests.cs (1)
89Assert.Same(env.Resource, annotation.ComputeEnvironment);
Publishing\BackingResourceContractTests.cs (4)
139Assert.Same(cache.Resource, ex.Resource); 171var environment = builder.AddRadiusEnvironment("myenv").Resource; 189var environment = builder.AddRadiusEnvironment("myenv").Resource; 225var environment = builder.AddRadiusEnvironment("myenv").Resource;
Publishing\BackingResourceValueResolutionTests.cs (10)
340context.EnvironmentVariables["DB"] = second.Resource.ConnectionStringExpression; 369context.EnvironmentVariables["DB"] = second.Resource.ConnectionStringExpression; 456mode.Resource, 530mode.Resource, 552ReferenceExpression.Create($"{mode.Resource}"), 598new ContainerImageReference(target.Resource), 621var cyclic = new SelfReferentialConnectionStringResource("cyclic", mode.Resource); 1215mode.Resource, 1297.WithEnvironment(ctx => ctx.EnvironmentVariables["CS"] = db.Resource); 1316.WithEnvironment(ctx => ctx.EnvironmentVariables["CS"] = db.Resource.ConnectionStringExpression);
Publishing\BicepGenerationSimpleTests.cs (5)
168RadiusTestHelper.AttachDeploymentTargets(env.Resource, model); 169var context = new RadiusBicepPublishingContext(env.Resource); 184RadiusTestHelper.AttachDeploymentTargets(environment.Resource, model); 185var context = new RadiusBicepPublishingContext(environment.Resource); 199var annotations = env.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
Publishing\BicepIdentifierTests.cs (2)
106RadiusTestHelper.AttachDeploymentTargets(env.Resource, model); 107var context = new RadiusBicepPublishingContext(env.Resource);
Publishing\RadCredentialArgumentTests.cs (4)
29var args = await ResolveSingleAsync(env.Resource); 51var args = await ResolveSingleAsync(env.Resource); 73var args = await ResolveSingleAsync(env.Resource); 93var args = await ResolveSingleAsync(env.Resource);
Publishing\RadiusDeployParametersTests.cs (11)
42Assert.Same(secret.Resource, binding.Value); 133radius.Resource.Annotations.Add(new RadiusDeployParametersAnnotation( 134new Dictionary<string, ParameterResource> { ["rabbituser"] = userName.Resource }, 135new Dictionary<ParameterResource, IReadOnlyList<IResource>> { [userName.Resource] = new[] { (IResource)rabbit.Resource } })); 137var step = new RadiusDeploymentPipelineStep(radius.Resource); 159Assert.Same(rabbit.Resource, Assert.Single(annotation.RabbitMqUserNames[userName.Resource])); 211Assert.Same(surviving.Resource, Assert.Single(annotation.RabbitMqUserNames[userName.Resource])); 307Assert.Same(reserved.Resource, binding.Value);
Publishing\SealedSecretPublishTests.cs (1)
76var resolved = store.Resource.Population.SealedManifestPath;
RadiusExtensionsTests.cs (13)
22Assert.Equal("radius", resourceBuilder.Resource.Name); 23Assert.Equal("default", resourceBuilder.Resource.Namespace); 33Assert.Equal("staging", resourceBuilder.Resource.Name); 60Assert.Equal("staging-ns", resourceBuilder.Resource.Namespace); 117Assert.Equal("a", resourceBuilder.Resource.Namespace); 121Assert.Equal("my-ns", resourceBuilder.Resource.Namespace); 125Assert.Equal("123", resourceBuilder.Resource.Namespace); 130Assert.Equal(maxName, resourceBuilder.Resource.Namespace); 169var annotation = project.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 186var annotation = project.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 200var annotation = Assert.Single(project.Resource.Annotations.OfType<ContainerImageAnnotation>()); 204Assert.True(project.Resource.SupportsDotnetProgramPublishing()); 205Assert.False(project.Resource.RequiresImageBuild());
Recipes\RecipeParameterIsolationAndFidelityTests.cs (2)
18var devAnn = dev.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 19var prodAnn = prod.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single();
Recipes\WithRecipeParametersTests.cs (4)
19var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 33var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 47var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 76var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().SingleOrDefault();
Secrets\AddRadiusSecretStoreTests.cs (13)
23Assert.Equal("db-creds", store.Resource.Name); 24Assert.Equal(RadiusSecretStoreType.BasicAuthentication, store.Resource.Type); 47Assert.Same(env.Resource, store.OwningEnvironment); 111Assert.Equal(valid, store.Resource.Name); 123Assert.True(store.Resource.Population.HasInlineData); 124Assert.True(store.Resource.Population.Data.ContainsKey("password")); 187Assert.Equal(reference, store.Resource.Population.ResourceReference); 231Assert.Equal(["k1", "k2", "k3"], store.Resource.Population.Keys); 245Assert.Equal(["ok"], store.Resource.Population.Keys); 259Assert.Equal("app/s", store.Resource.Population.ResourceReference); 260Assert.Equal(["ok"], store.Resource.Population.Keys); 314Assert.Equal([key], store.Resource.Population.Keys); 362Assert.Equal(max, store.Resource.MaterializationTimeout);
Secrets\SecretStoreConsumerTests.cs (2)
28var annotation = env.Resource.Annotations.OfType<RadiusSecretStoresAnnotation>().Single(); 33Assert.Same(store.Resource, registry.Store);
Secrets\SecretStoreDefaultPathTests.cs (1)
56Assert.True(pass.Resource.Secret);
Secrets\SecretStoreValidationTests.cs (2)
124var annotation = Assert.Single(store.Resource.Annotations.OfType<PipelineStepAnnotation>()); 128Resource = store.Resource,
Aspire.Hosting.Redis (6)
RedisBuilderExtensions.cs (6)
77var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 236return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 342resourceBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 410.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages) 701builder.Resource.SetPassword(password?.Resource);
Aspire.Hosting.Redis.Tests (113)
AddRedisTests.cs (46)
28Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check"); 306foreach (var redis in new[] { redis1.Resource, redis2.Resource }) 332foreach (var redis in new[] { redis1.Resource, redis2.Resource, redis3.Resource }) 375Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value); 380Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 385Assert.Equal(redis1.Resource.Name, item.Value); 391Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value); 397Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value); 402Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 407Assert.Equal(redis2.Resource.Name, item.Value); 413Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value); 419Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value); 424Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 429Assert.Equal(redis3.Resource.Name, item.Value); 571Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 593Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]); 618Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 639var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 664var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 777var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource); 785var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 796Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 861var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 874var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 888var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 891Assert.Equal(password.Resource, annotation.Password); 903var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 919var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 922Assert.Equal(password.Resource, annotation.Password); 940Assert.True(redis.Resource.TlsEnabled); 943var connectionStringExpression = redis.Resource.ConnectionStringExpression; 953var endpoint = Assert.Single(redis.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "tcp"); 958var uriExpression = redis.Resource.UriExpression; 977var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource, app.Services).AsTask().WaitAsync(TimeSpan.FromSeconds(60)); 994Assert.False(redis.Resource.TlsEnabled); 997var expressionBeforeTls = redis.Resource.ConnectionStringExpression; 1014Assert.True(redis.Resource.TlsEnabled); 1023var expressionAfterTls = redis.Resource.ConnectionStringExpression; 1039Assert.False(redis.Resource.TlsEnabled); 1042var connectionStringExpression = redis.Resource.ConnectionStringExpression;
RedisFunctionalTests.cs (57)
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"); 87if (redis.Resource.TlsEnabled) 93var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info"; 121commanderBuilder.Resource.Name, 129redis.Resource.Name, 167redis.Resource.Name, 175var startResult = await app.ResourceCommands.ExecuteCommandAsync(commanderBuilder.Resource, KnownResourceCommands.StartCommand); 179commanderBuilder.Resource.Name, 185redis.Resource.Name, 194var stopResult = await app.ResourceCommands.ExecuteCommandAsync(commanderBuilder.Resource, KnownResourceCommands.StopCommand); 198redis.Resource.Name, 222[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync() 225hb.AddRedisClient(redis.Resource.Name); 255await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token); 262[$"ConnectionStrings:{redis.Resource.Name}"] = $"{await redis.Resource.GetConnectionStringAsync()},allowAdmin=true" 265hb.AddRedisClient(redis.Resource.Name); 296await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 298var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http"); 314Assert.Equal(redis1.Resource.Name, db.Name); 315Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host); 316Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port); 320Assert.Equal(redis2.Resource.Name, db.Name); 321Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host); 322Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port); 326Assert.Equal(redis3.Resource.Name, db.Name); 327Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host); 328Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port); 364[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 367hb.AddRedisClient(redis1.Resource.Name); 401[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 404hb.AddRedisClient(redis2.Resource.Name); 447[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 450hb.AddRedisClient(redis1.Resource.Name); 482[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 485hb.AddRedisClient(redis2.Resource.Name); 532[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 535hb.AddRedisClient(redis1.Resource.Name); 563[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 566hb.AddRedisClient(redis2.Resource.Name); 631await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 635var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http"); 666await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 670var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http"); 787await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
RedisReplCommandTests.cs (3)
48var options = await RedisBuilderExtensions.CreateReplOptionsAsync(redis.Resource, TestContext.Current.CancellationToken); 67var options = await RedisBuilderExtensions.CreateReplOptionsAsync(redis.Resource, TestContext.Current.CancellationToken); 83await VerifyReplAsync(app, redis.Resource, "redis-cli (redis)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.RemoteHost.Tests (1)
CapabilityDispatcherTests.cs (1)
2251$"Endpoint with name 'http' already exists on resource '{builder.Resource.Name}'. Endpoint name may not have been explicitly specified and was derived automatically from scheme argument (e.g. 'http', 'https', or 'tcp'). Multiple calls to WithEndpoint (and related methods) may result in a conflict if name argument is not specified. Each endpoint must have a unique name. For more information on networking in Aspire see: https://aka.ms/aspire/networking");
Aspire.Hosting.Rust (5)
RustHostingExtensions.cs (5)
148|| !containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var provisionalDockerfile)) 483if (!builder.Resource.TryGetLastAnnotation<RustCargoOptionsAnnotation>(out var options)) 729var annotations = containerBuilder.Resource.Annotations; 730if (!containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var activeDockerfile) 759targetPlatform = ResolveContainerTargetPlatform(resource, containerBuilder.Resource);
Aspire.Hosting.Rust.Tests (44)
AddRustAppPublishTests.cs (4)
316var rustBuildStep = CreateBuildComputeStep("build-api", rust.Resource); 317var frontendBuildStep = CreateBuildComputeStep("build-frontend", frontend.Resource); 318var assetsBuildStep = CreateBuildComputeStep("build-assets", assets.Resource); 1108configuredResource = app.Resource;
RustDebugArgsTests.cs (2)
39var args = await ArgumentEvaluator.GetArgumentListAsync(rust.Resource, app.Services); 41return (args, rust.Resource);
RustPublicApiTests.cs (38)
42var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 55var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 68var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 81var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 98var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 114var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 128var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 140var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 153var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 166await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 169Assert.All(observed, resource => Assert.Same(app.Resource, resource)); 184await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 187Assert.All(observed, resource => Assert.Same(app.Resource, resource)); 228Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out _)); 239var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 257var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 278var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 293var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 319app.Resource, 343var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(app.Resource); 346() => LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, callbackContext)); 366await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 369await app.Resource.CreateLaunchConfigurationAsync( 376await app.Resource.CreateLaunchConfigurationAsync( 405await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 408app.Resource, 411app.Resource, 415await LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, firstContext)); 417await LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, secondContext)); 437await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 440await app.Resource.CreateLaunchConfigurationAsync( 444await app.Resource.CreateLaunchConfigurationAsync( 476await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 479() => app.Resource.CreateLaunchConfigurationAsync( 483await app.Resource.CreateLaunchConfigurationAsync( 511await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 514var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(app.Resource, cancellationToken: cts.Token); 515var launchTask = LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, callbackContext);
Aspire.Hosting.Seq.Tests (14)
AddSeqTests.cs (5)
92var manifest = await ManifestUtils.GetManifest(seq.Resource); 133var volumeAnnotation = seq.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 158var volumeAnnotation = seq.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 253var manifest = await ManifestUtils.GetManifest(seq.Resource); 283var manifest = await ManifestUtils.GetManifest(seq.Resource);
SeqFunctionalTests.cs (9)
28await app.WaitForTextAsync("Seq listening on", seq.Resource.Name); 30var seqUrl = await seq.Resource.ConnectionStringExpression.GetValueAsync(default); 37await app.ResourceNotifications.WaitForResourceHealthyAsync(seq.Resource.Name, default); 106await app.WaitForTextAsync("Seq listening on", seq1.Resource.Name); 110var seqUrl = await seq1.Resource.ConnectionStringExpression.GetValueAsync(default); 117await app.ResourceNotifications.WaitForResourceHealthyAsync(seq1.Resource.Name, default); 145await app.WaitForTextAsync("Seq listening on", seq2.Resource.Name); 149var seqUrl = await seq2.Resource.ConnectionStringExpression.GetValueAsync(default); 156await app.ResourceNotifications.WaitForResourceHealthyAsync(seq2.Resource.Name, default);
Aspire.Hosting.SqlServer (6)
SqlServerBuilderExtensions.cs (6)
46var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", minLower: 1, minUpper: 1, minNumeric: 1); 174return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, executablePath, ct)); 235var sqlServerDatabase = new SqlServerDatabaseResource(name, databaseName, builder.Resource); 237builder.Resource.AddDatabase(sqlServerDatabase); 350builder.Resource.SetPassword(password.Resource);
Aspire.Hosting.SqlServer.Tests (61)
AddSqlServerTests.cs (15)
25Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 35Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 133var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 134var dbManifest = await ManifestUtils.GetManifest(db.Resource); 174var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 231Assert.Equal("customers1", db1.Resource.DatabaseName); 232Assert.Equal("customers2", db2.Resource.DatabaseName); 234Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 235Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 249Assert.Equal("imports", db1.Resource.DatabaseName); 250Assert.Equal("imports", db2.Resource.DatabaseName); 252Assert.Equal("{sqlserver1.connectionString};Initial Catalog=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 253Assert.Equal("{sqlserver2.connectionString};Initial Catalog=imports", db2.Resource.ConnectionStringExpression.ValueExpression); 321await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(sqlServer.Resource, app.Services)); 322await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(db.Resource, app.Services));
SqlServerFunctionalTests.cs (35)
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); 146var password = sqlserver1.Resource.PasswordParameter.Value; 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);
SqlServerReplCommandTests.cs (4)
67Assert.Equal(expectedCalls, sqlServer.Resource.Annotations.OfType<ResourceCommandAnnotation>().Count()); 83Assert.Empty(sqlServer.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 105var options = await SqlServerBuilderExtensions.CreateReplOptionsAsync(sqlServer.Resource, replOptions.Command, TestContext.Current.CancellationToken); 145await VerifyReplAsync(app, sqlServer.Resource, "sqlcmd (sqlserver)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.Testing.Tests (2)
TestingBuilderTests.cs (1)
535redis1.Resource.ShellExecution = false;
tests\Aspire.Hosting.TestUtilities\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Aspire.Hosting.Tests (1642)
AddConnectionStringTests.cs (3)
82cs.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations); 89Assert.Same(redis.Resource, wa.Resource); 94Assert.Same(key.Resource, wa.Resource);
AddParameterTests.cs (23)
55parameter.Resource.Default = new TestParameterDefault("DefaultValue"); 275Assert.IsType<UserSecretsParameterDefault>(parameter1.Resource.Default); 279Assert.IsType<GenerateParameterDefault>(parameter2.Resource.Default); 375Assert.Equal("This is a test parameter", parameter.Resource.Description); 376Assert.False(parameter.Resource.EnableDescriptionMarkdown); 390Assert.Equal("This is a **markdown** description", parameter.Resource.Description); 391Assert.True(parameter.Resource.EnableDescriptionMarkdown); 413Assert.Equal("Custom input parameter", parameter.Resource.Description); 414Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 426var input = parameter.Resource.CreateInput(); 445var input = parameter.Resource.CreateInput("value"); 465var input = parameter.Resource.CreateInput(dynamicLoading: dynamicLoading); 479var input = parameter.Resource.CreateInput(); 507var input = parameter.Resource.CreateInput(); 534var input = parameter.Resource.CreateInput("value"); 562var input = parameter.Resource.CreateInput(dynamicLoading: dynamicLoading); 576var input = parameter.Resource.CreateInput(); 601Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 603var input = parameter.Resource.CreateInput(); 632Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 634var input = parameter.Resource.CreateInput("value", required: true); 665var input = parameter.Resource.CreateInput(); 688var input = parameter.Resource.CreateInput();
ApplicationModel\Docker\WithDockerfileBuilderTests.cs (26)
25var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 49var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 68var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 89var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 96Resource = container.Resource, 141var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 147Resource = container.Resource, 177var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 183Resource = container.Resource, 211var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 217Resource = container.Resource, 252var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 258Resource = container.Resource, 287Assert.Equal("mycontainer", container.Resource.Name); 288var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 308Assert.Equal("mycontainer", container.Resource.Name); 309var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 331var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 338Resource = container.Resource, 367var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 374Resource = container.Resource, 399var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 433var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 439Resource = container.Resource, 469var envAnnotation = container.Resource.Annotations.OfType<EnvironmentAnnotation>().FirstOrDefault(); 471var endpointAnnotation = container.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
ApplicationModel\EndpointHostHelpersTests.cs (1)
254container.Resource,
AsHttp2ServiceTests.cs (2)
37var httpEndpoints = testProgram.ServiceABuilder.Resource.Annotations.OfType<EndpointAnnotation>().Where(sb => sb.UriScheme == "http" || sb.UriScheme == "https"); 52var endpoints = testProgram.ServiceABuilder.Resource.Annotations.OfType<EndpointAnnotation>();
AtsAnnotationTests.cs (11)
20Assert.Equal("{\"value\":1}", container.Resource.GetSerializedAnnotation("my.id")); 32Assert.Single(container.Resource.Annotations.OfType<AtsAnnotation>()); 33Assert.Equal("second", container.Resource.GetSerializedAnnotation("my.id")); 42Assert.Throws<InvalidOperationException>(() => container.Resource.GetSerializedAnnotation("missing")); 52Assert.False(container.Resource.HasSerializedAnnotation("my.id")); 57Assert.True(container.Resource.HasSerializedAnnotation("my.id")); 69var roundTripped = container.Resource.GetAnnotation(s_stateAnnotation); 89var json = container.Resource.GetSerializedAnnotation(s_stateAnnotation.Id); 127Assert.True(container.Resource.TryGetAnnotation(definition, out var readByTryGet)); 137Assert.False(container.Resource.TryGetAnnotation(s_stateAnnotation, out var missing)); 142Assert.True(container.Resource.TryGetAnnotation(s_stateAnnotation, out var present));
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (54)
134await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 138await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-def456", s => s with 181await notificationService.PublishUpdateAsync(custom.Resource, s => s with 346await notificationService.PublishUpdateAsync(custom.Resource, s => s with 400await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 403await notificationService.PublishUpdateAsync(owner.Resource, s => s with 443topLevelParameter.Resource.WaitForValueTcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); 444topLevelParameter.Resource.WaitForValueTcs.SetResult("top-level-secret"); 449await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 452await notificationService.PublishUpdateAsync(owner.Resource, s => s with 511await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 514await notificationService.PublishUpdateAsync(owner.Resource, s => s with 539var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 541await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 543await notificationService.PublishUpdateAsync(owner.Resource, s => s with 587await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 590await notificationService.PublishUpdateAsync(owner.Resource, s => s with 613var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 615await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 617await notificationService.PublishUpdateAsync(owner.Resource, s => s with 657await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 660await notificationService.PublishUpdateAsync(owner.Resource, s => s with 688await notificationService.PublishUpdateAsync(owner.Resource, s => s with 728await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 731await notificationService.PublishUpdateAsync(owner.Resource, s => s with 756await notificationService.PublishUpdateAsync(owner.Resource, s => s with 817await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 820await notificationService.PublishUpdateAsync(mcpResource.Resource, s => s with 824await notificationService.PublishUpdateAsync(owner.Resource, s => s with 863.WithEnvironment(context => context.EnvironmentVariables["SECRET"] = coldSecret.Resource); 871await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 876coldSecret.Resource.WaitForValueTcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); 877coldSecret.Resource.WaitForValueTcs.SetResult("value-b"); 880await notificationService.PublishUpdateAsync(owner.Resource, s => s with 937var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 944.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>())) 992var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 1001.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>())) 1030await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 1033await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1081await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 1096await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1112await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1149await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1221await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1234ResourceName = custom.Resource.Name, 1257await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1297await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1350AddSyntheticTerminalAnnotation(custom.Resource, replicaCount: 1); 1356await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1392await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1438await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 1477await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 1945await notificationService.PublishUpdateAsync(hidden.Resource, snapshot => snapshot with
Codespaces\CodespacesUrlRewriterTests.cs (2)
73await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 81resource.Resource.Name,
ComputeEnvironmentEndpointResolverTests.cs (35)
20var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 21agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(owningEnv.Resource) { ComputeEnvironment = owningEnv.Resource }); 24endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 40var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 41agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(owningEnv.Resource) { ComputeEnvironment = owningEnv.Resource }); 45endpoint, [currentEnv.Resource], out var expression); 59var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 60agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource }); 63endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 79var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 82endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 96var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 99endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 117agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource }); 118agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(otherEnv.Resource) { ComputeEnvironment = otherEnv.Resource }); 119var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 122endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 140agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource }); 141agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(otherEnv.Resource) { ComputeEnvironment = otherEnv.Resource }); 142var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 146endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out _));
ComputeEnvironmentValidationTests.cs (2)
60Assert.Same(env.Resource, api.Resource.GetComputeEnvironment());
ContainerRegistryResourceTests.cs (66)
22Assert.Equal("docker-hub", registry.Resource.Name); 24var containerRegistry = registry.Resource as IContainerRegistry; 38Assert.Equal("acr", registry.Resource.Name); 40var containerRegistry = registry.Resource as IContainerRegistry; 56Assert.Equal("my-registry", registry.Resource.Name); 58var containerRegistry = registry.Resource as IContainerRegistry; 73Assert.Equal("my-registry", registry.Resource.Name); 75var containerRegistry = registry.Resource as IContainerRegistry; 199var containerRegistry = registry.Resource as IContainerRegistry; 213var containerRegistry = registry.Resource as IContainerRegistry; 228var containerRegistry = registry.Resource as IContainerRegistry; 244var containerRegistry = registry.Resource as IContainerRegistry; 262var containerRegistry = registry.Resource as IContainerRegistry; 277Assert.IsAssignableFrom<IContainerRegistry>(registry.Resource); 308var annotation = container.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().SingleOrDefault(); 310Assert.Same(registry.Resource, annotation.Registry); 343var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 344var pipelineConfigAnnotations = container.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 358var pipelineStepAnnotations = project.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 359var pipelineConfigAnnotations = project.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 373var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>()); 378Resource = project.Resource 397var pipelineStepAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 402Resource = container.Resource 421var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 428Resource = container.Resource 445var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>()); 450Resource = project.Resource 473var annotation = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().FirstOrDefault(); 475Assert.Same(registry.Resource, annotation.Registry); 489var annotations = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().ToList(); 491Assert.Same(registry1.Resource, annotations[0].Registry); 501var annotation = new ContainerRegistryReferenceAnnotation(registry.Resource); 503Assert.Same(registry.Resource, annotation.Registry); 518Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 525var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 526Assert.Same(registry.Resource, registryTargetAnnotation.Registry); 546var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 550Assert.Contains(registry1.Resource, registryResources); 551Assert.Contains(registry2.Resource, registryResources); 570var containerRegistry = project.Resource.GetContainerRegistry(); 571Assert.Same(registry.Resource, containerRegistry); 593var containerRegistry = project.Resource.GetContainerRegistry(); 594Assert.Same(registry2.Resource, containerRegistry); 615var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry); 629var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry); 651Assert.Single(project1.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 652Assert.Single(project2.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 653Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 675var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 678var containerRegistryRefAnnotation = Assert.Single(project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>()); 679Assert.Same(specificRegistry.Resource, containerRegistryRefAnnotation.Registry); 682var containerRegistry = project.Resource.GetContainerRegistry(); 683Assert.Same(specificRegistry.Resource, containerRegistry); 698Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 705var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 706Assert.Same(acr.Resource, registryTargetAnnotation.Registry); 726Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 727Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 746var containerRegistry = project.Resource.GetContainerRegistry(); 747Assert.Same(acr.Resource, containerRegistry); 767var containerRegistry = env.Resource.GetContainerRegistry(); 768Assert.Same(acr.Resource, containerRegistry); 788var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 792Assert.Contains(acr.Resource, registryResources); 793Assert.Contains(dockerHub.Resource, registryResources);
ContainerTunnelTests.cs (8)
39await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 41using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 82await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 84using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 122await app.ResourceNotifications.WaitForResourceAsync(c.Resource.Name, KnownResourceStates.Running) 154foreach (var resourceName in new[] { upstreamService.Resource.Name, tunnelDependentContainer.Resource.Name, downstreamService.Resource.Name })
Dashboard\DashboardResourceTests.cs (1)
129Assert.Same(container.Resource, dashboard);
Dcp\DcpExecutorTests.cs (166)
303Assert.Same(resource.Resource, Assert.Single(startingEvents).Resource); 345Assert.True(resource.Resource.TryGetInstances(out var instances)); 391Assert.True(resource.Resource.TryGetInstances(out var instances)); 476.WithReplicas(2).Resource; 910}).Resource; 1532Assert.IsNotAssignableFrom<IComputeResource>(emulator.Resource); 1533Assert.True(emulator.Resource.IsContainer()); 1537Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == emulator.Resource.Name); 4333var allocatedEndpoint = database.Resource.GetEndpoint("tcp").AllocatedEndpoint; 4519Assert.Same(database.Resource, connectionStringAvailableResource); 4567Assert.Same(database.Resource, connectionStringAvailableResource); 4627if (ReferenceEquals(context.Resource, client.Resource)) 4673if (ReferenceEquals(context.Resource, client.Resource)) 4884HasKnownCommandAnnotations(exe.Resource); 4885HasKnownCommandAnnotations(container.Resource); 4886HasKnownProjectCommandAnnotations(project.Resource); 5040var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5043projectBuilder.Resource.Annotations.Remove(annotationToRemove); 5562var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5565projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5601var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5604projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5642var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5645projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5686var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5689projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5733var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5736projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5772Assert.Same(projectBuilder.Resource, Assert.Single(failedResources)); 6238var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 6251resource.Resource.Annotations.Add( 6272var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 6285Assert.Same(resource.Resource, failure.Resource); 6802var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6805projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6842var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6845projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6892var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6895projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6952var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6955projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7004var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7007projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7048var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7051projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7130var projectResource = projectBuilder.Resource; 7131var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7134projectBuilder.Resource.Annotations.Remove(defaultDebugSupport); 7138projectBuilder.Resource.Annotations.Add( 7265var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7268projectBuilder.Resource.Annotations.Remove(defaultDebugSupport); 7272projectBuilder.Resource.Annotations.Add( 7375await foreach (var lines in resourceLoggerService.GetAllAsync(projectBuilder.Resource).DefaultTimeout()) 7393var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7396projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7480var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7483projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7588var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7591projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7655var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7658projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7699var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7702projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7765var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7768projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7792var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7795projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7839var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7842customProject.Resource.Annotations.Remove(annotationToRemove); 7889var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7892customProject.Resource.Annotations.Remove(annotationToRemove); 7935var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7938projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8017var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8020projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8280projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 8327projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 8364projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 8400projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 8435projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 8480projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 8521var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8524projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8549var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8552projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8588var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8591projectBuilder.Resource.Annotations.Remove(annotationToRemove); 9637await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 9638await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 9642await AssertTunneledPort(executable.Resource, "proxied", 5678); 9643await AssertTunneledPort(executable.Resource, "notProxied", 8765); 9657await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, port); 9659await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, hostPort); 9663.Where(c => c.AppModelResourceName == container.Resource.Name) 9671await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 9672await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 9673await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 5678); 9674await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 8765); 9677await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 15678); 9678await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 18765); 9680await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234); 9681await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765); 9683await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 25678); 9684await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 28765); 9686await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234); 9687await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765); 9771s => s.AppModelResourceName == executable.Resource.Name 9923var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 9968var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 10025var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 10078var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 10224Assert.Equal(executable.Resource.Name, tunnelService.AppModelResourceName); 10229resource => resource.AppModelResourceName == executable.Resource.Name); 10258target.Resource.Name, 10259target.Resource.Command, 10260target.Resource.WorkingDirectory); 10262distributedAppModel.Resources[distributedAppModel.Resources.IndexOf(target.Resource)] = replacement; 10275Assert.Equal(target.Resource.Name, tunnelService.AppModelResourceName); 10279resource => resource.AppModelResourceName == source.Resource.Name); 10312Assert.Equal(project.Resource.Name, tunnelService.AppModelResourceName); 10316resource => resource.AppModelResourceName == project.Resource.Name); 10351Assert.Equal(target.Resource.Name, tunnelService.AppModelResourceName); 10356resource => resource.AppModelResourceName == source.Resource.Name); 10401Assert.Equal(executable.Resource, failure.Resource); 10408resource => resource.AppModelResourceName == executable.Resource.Name); 10416await foreach (var lines in resourceLoggerService.GetAllAsync(executable.Resource).DefaultTimeout()) 10468Assert.Equal(executable.Resource, failure.Resource); 10475resource => resource.AppModelResourceName == executable.Resource.Name); 10516resource => resource.AppModelResourceName == source.Resource.Name); 10555var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(executable.Resource, instanceIndex: 0).Name); 10565resource => resource.AppModelResourceName == executable.Resource.Name); 10608var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(executable.Resource, instanceIndex: 0).Name); 10664[containerSource.Resource, executableSource.Resource], 10667.Where(resource => ReferenceEquals(resource, containerSource.Resource) || ReferenceEquals(resource, executableSource.Resource)) 10700if (context.Resource == waiting.Resource || context.Resource == waitingConsumingEndpoint.Resource) 10702while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == container.Resource.Name)) 10718Assert.Single(createdContainers, c => c.AppModelResourceName == container.Resource.Name); 10719Assert.Single(createdContainers, c => c.AppModelResourceName == waiting.Resource.Name); 10720var waitingConsumingContainer = Assert.Single(createdContainers, c => c.AppModelResourceName == waitingConsumingEndpoint.Resource.Name); 10727Assert.Single(tunnelServices, s => s.AppModelResourceName == executableA.Resource.Name); 10728var executableBTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == executableB.Resource.Name); 10761if (context.Resource == tunnelDependentContainer.Resource) 10763while (!kubernetesService.CreatedResources.OfType<Executable>().Any(e => e.AppModelResourceName == upstreamExecutable.Resource.Name)) 10769if (context.Resource == downstreamExecutable.Resource) 10771while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name)) 10787var upstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == upstreamExecutable.Resource.Name); 10788var downstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == downstreamExecutable.Resource.Name); 10789var tunnelDependentDcpContainer = Assert.Single(createdResources.OfType<Container>(), c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name); 10800var upstreamTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == upstreamExecutable.Resource.Name); 10976var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 10979projectBuilder.Resource.Annotations.Remove(annotationToRemove); 11018var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 11021projectBuilder.Resource.Annotations.Remove(annotationToRemove); 11056Assert.Same(projectBuilder.Resource, Assert.Single(failedResources)); 11068var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 11071projectBuilder.Resource.Annotations.Remove(annotationToRemove); 11143.Resource; 11217.Resource; 11263.Resource;
DebugSupportExtensionsTests.cs (31)
88await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token)); 91Assert.Same(executable.Resource, observedContext.Resource); 104var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug)); 107Assert.Equal(GetProjectPath(project.Resource), launchConfiguration.ProjectPath); 125var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug)); 137var debugSupport = Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 156var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.NoDebug)); 170var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.NoDebug)); 190var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 210await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug, cts.Token); 234await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token)); 240Assert.Same(executable.Resource, actualContext.Resource); 253() => executable.Resource.CreateLaunchConfigurationAsync(null!, CancellationToken.None)); 274executable.Resource, 280await executable.Resource.CreateLaunchConfigurationAsync(callbackContext)); 295var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 308mode => ProjectLaunchConfigurationFactory.Create(executable.Resource, mode), 311var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 323var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 336Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out var annotation)); 347Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(debugSessionPort: null), out _)); 358Assert.True(project.Resource.SupportsDebugging(CreateConfiguration(), out var annotation)); 377Assert.False(fileApp.Resource.SupportsDebugging(configuration, out _)); 394Assert.True(fileApp.Resource.SupportsDebugging(configuration, out var annotation)); 407Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out _)); 423Assert.Equal(expected, executable.Resource.SupportsDebugging(configuration, out _)); 437Assert.False(project.Resource.SupportsDebugging(configuration, out _)); 447Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _)); 457Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _)); 472Assert.True(project.Resource.SupportsDebugging(configuration, out _)); 473Assert.False(executable.Resource.SupportsDebugging(configuration, out _));
DistributedApplicationBuilderExtensionsTests.cs (8)
34Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 43Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 75Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 86Assert.Same(originalRedis.Resource, newRedisBuilder.Resource);
DistributedApplicationModelExtensionsTests.cs (8)
32item => Assert.Equal(container1.Resource, item), 33item => Assert.Equal(container2.Resource, item), 34item => Assert.Equal(project.Resource, item), 35item => Assert.Equal(emulator.Resource, item)); 51containerWithDockerfile.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null)); 55buildOnlyContainer.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null) { HasEntrypoint = false }); 67item => Assert.Equal(project.Resource, item), 68item => Assert.Equal(containerWithDockerfile.Resource, item));
DistributedApplicationTests.cs (31)
784using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http"); 785using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http"); 792var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http"); 1110var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 1271using var serviceAClient = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 1711var endpoint = testProgram.ServiceABuilder.Resource.GetEndpoint("http"); 1783await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration); 1786var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http"); 1804var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https"); 1854using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1862var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1864Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter?.Value}{sslVal}", env.Value); 1869if (redis.Resource.TlsEnabled) 1879var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint) 1883sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1885Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter?.Value}{sslVal}", otherRedisEnv.Value); 1888if (redisNoPort.Resource.TlsEnabled) 1928using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1940var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1942Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter!.Value}{sslVal}", env.Value); 1947if (redis.Resource.TlsEnabled) 1957var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint) 1961sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1963Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter!.Value}{sslVal}", otherRedisEnv.Value); 1967if (redisNoPort.Resource.TlsEnabled) 2057await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.NotStarted, token) 2059await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.NotStarted, token) 2065var dcpContainer = Assert.Single(containers, c => c.AppModelResourceName == container.Resource.Name); 2074var dcpExecutable = Assert.Single(executables, e => e.AppModelResourceName == executable.Resource.Name);
DotnetProgramPublishingTests.cs (29)
53resource.Resource.Annotations.OfType<DotnetProgramBuildEnvironmentCallbackAnnotation>(), 69Assert.Empty(resource.Resource.Annotations.OfType<DotnetProgramBuildEnvironmentCallbackAnnotation>()); 86Assert.False(resource.Resource.SupportsDotnetProgramPublishing()); 104Assert.False(resource.Resource.SupportsDotnetProgramPublishing()); 117Assert.True(resource.Resource.SupportsDotnetProgramPublishing()); 118Assert.Single(resource.Resource.Annotations.OfType<DotnetProgramPublishingAnnotation>()); 119Assert.Single(resource.Resource.Annotations.OfType<PipelineStepAnnotation>()); 120Assert.Single(resource.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 121Assert.Single(resource.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>()); 161resource.Resource, 182Assert.Contains(resource.Resource, model.GetComputeResources()); 183Assert.Contains(resource.Resource, model.GetBuildResources()); 184Assert.True(resource.Resource.RequiresImageBuild()); 210Assert.Contains(resource.Resource, model.GetComputeResources()); 211Assert.DoesNotContain(resource.Resource, model.GetBuildResources()); 212Assert.DoesNotContain(resource.Resource, model.GetBuildAndPushResources()); 213Assert.False(resource.Resource.RequiresImageBuild()); 214Assert.True(resource.Resource.SupportsDotnetProgramPublishing()); 222var annotation = Assert.Single(resource.Resource.Annotations.OfType<PipelineStepAnnotation>()); 226Resource = resource.Resource 232await imageManager.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 233await imageManager.BuildImagesAsync([resource.Resource], TestContext.Current.CancellationToken); 262Source = source.Resource, 276() => imageManager.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)); 278() => imageManager.BuildImagesAsync([resource.Resource], TestContext.Current.CancellationToken)); 336Source = source.Resource, 416manager.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)).DefaultTimeout(); 445Source = source.Resource, 459resource.Resource, metadata, buildResult, app.Services, logger, TestContext.Current.CancellationToken));
Eventing\DistributedApplicationBuilderEventingTests.cs (4)
330var testResourceEvent = new ResourceEvent(resource.Resource, "test-resource", testSnapshot); 331var testEvent = new ResourceStoppedEvent(resource.Resource, app.Services, testResourceEvent); 335Assert.Equal(resource.Resource, resourceStopped); 517builder.Eventing.Subscribe<IDistributedApplicationResourceEvent>(resource.Resource, (_, _) => Task.CompletedTask));
ExecutableResourceBuilderExtensionTests.cs (25)
30var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 42var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 57var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 79var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 101var annotation = executable.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 113var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 117executable.Resource, 119executable.Resource, 134var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 153syncExecutable.Resource, 154LaunchConfigurationTestHelpers.CreateCallbackContext(syncExecutable.Resource))); 157asyncExecutable.Resource, 158LaunchConfigurationTestHelpers.CreateCallbackContext(asyncExecutable.Resource))); 205var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 223await executable.Resource.ProcessArgumentValuesAsync( 270var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 294var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 320var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 339var annotations = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().ToList(); 341annotation => Assert.True(executable.Resource.HasLaunchToolArgsOwnedBy(annotation)), 342annotation => Assert.False(executable.Resource.HasLaunchToolArgsOwnedBy(annotation))); 360var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Single(); 361Assert.False(executable.Resource.HasLaunchToolArgsOwnedBy(annotation)); 376Assert.Empty(executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 378var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource);
ExecutableResourceTests.cs (3)
45var args = await ArgumentEvaluator.GetArgumentListAsync(exe2.Resource).DefaultTimeout(); 58Assert.True(exe2.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 68var manifest = await ManifestUtils.GetManifest(exe2.Resource).DefaultTimeout();
ExecutionConfigurationGathererTests.cs (31)
31.Resource; 54.Resource; 74var resource = builder.AddExecutable("test", "test.exe", ".").Resource; 98.Resource; 129.Resource; 159.Resource; 182.Resource; 202var resource = builder.AddContainer("test", "image").Resource; 226.Resource; 247.Resource; 251.Resource; 282.Resource; 286.Resource; 322.Resource; 350.Resource; 380.Resource; 408.Resource; 430var resource = builder.AddContainer("test", "image").Resource; 456.Resource; 491.Resource; 521.Resource; 557.Resource; 617.Resource; 679.Resource; 713.Resource; 745Password = password.Resource 747.Resource; 777.Resource; 797var resource = builder.AddContainer("test", "image").Resource; 820.Resource; 864.Resource;
ExpressionResolverTests.cs (9)
128var csRef = new ConnectionStringReference(target.Resource, false); 144var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 182var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 219var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 270var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 289var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 307var endpointAnnotation = dependency.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 312_ = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).AsTask().TimeoutAfter(TimeSpan.FromSeconds(2));
ExternalServiceTests.cs (42)
22Assert.Equal("nuget", externalService.Resource.Name); 23Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString()); 24Assert.Null(externalService.Resource.UrlParameter); 35Assert.Equal("nuget", externalService.Resource.Name); 36Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString()); 37Assert.Null(externalService.Resource.UrlParameter); 48Assert.Equal("nuget", externalService.Resource.Name); 49Assert.Null(externalService.Resource.Uri); 50Assert.NotNull(externalService.Resource.UrlParameter); 51Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name); 86Assert.Equal("nuget", externalService.Resource.Name); 87Assert.Equal(uriWithPath, externalService.Resource.Uri); 102Assert.Equal("nuget", externalService.Resource.Name); 103Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 116var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 133var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 152var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 172var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Publish, app.Services).DefaultTimeout(); 177Assert.Equal(urlParam.Resource.ValueExpression, urlValue); 195await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 214await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 232Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 233Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 248Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 249Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 271Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations)); 285Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 341externalService.Resource.Name, 368externalService.Resource.Name, 395externalService.Resource.Name, 419Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 420var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 440Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 441var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 465Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 466var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 490var manifest = await ManifestUtils.GetManifest(project.Resource); 507Assert.Equal("service", externalService.Resource.Name); 508Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 522Assert.Equal("service", externalService.Resource.Name); 523Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 560var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Health\FriendlyHealthCheckErrorMessagesTests.cs (8)
32Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 33var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 72Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 73var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 112Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 113var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 149Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 150var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
Health\ResourceHealthCheckServiceTests.cs (30)
33await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 41await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 73await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 81await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 116await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 124await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 163await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 172Assert.Equal(resource.Resource, e1.Resource); 178await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 186await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 200Assert.Equal(resource.Resource, e2.Resource); 229await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 233await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, abortTokenSource.Token).DefaultTimeout(); 270await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 313await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 317await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, abortTokenSource.Token).DefaultTimeout(); 349await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 355Assert.Equal(resource.Resource, @event.Resource); 380await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 442await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with 487await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with 527var child = builder.AddResource(new ChildResource("child", parent.Resource)) 538await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with 546await app.ResourceNotifications.PublishUpdateAsync(child.Resource, s => s with 552Assert.Equal(parentReadyEvent.Resource, parent.Resource); 555Assert.Equal(childReadyEvent.Resource, child.Resource); 582await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 590await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 628await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 636await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
HealthCheckTests.cs (5)
97await eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(resource.Resource, app.Services)); 137await rns.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 139await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 143await rns.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 145await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
ManifestGenerationTests.cs (10)
102var redisManifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout(); 507param.Resource.Default = new GenerateParameterDefault() 545var manifest = await ManifestUtils.GetManifest(param.Resource).DefaultTimeout(); 565Source = sourceContainer.Resource, 571var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout(); 608Source = sourceContainer.Resource, 614var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout(); 654Source = source1.Resource, 659Source = source2.Resource, 665var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout();
Orchestrator\ApplicationOrchestratorTests.cs (103)
41await notifications.PublishUpdateAsync(resource.Resource, resource.Resource.Name, 67CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, resource.Resource.Name, 79var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 96if (item.Resource == parentResource.Resource) 100else if (item.Resource == childResource.Resource) 144if (item.Resource == parentResource.Resource) 148else if (item.Resource == childResource.Resource) 191applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) => 209Assert.Equal(resource.Resource, initEvent.Resource); 244if (item.Resource == parent.Resource) 248else if (item.Resource == child.Resource) 253else if (item.Resource == nestedChild.Resource) 257else if (item.Resource == child2.Resource) 310if (item.Resource == firstParent.Resource) 314else if (item.Resource == secondParent.Resource) 318else if (item.Resource == child.Resource) 362if (item.Resource == projectA.Resource) 366else if (item.Resource == projectB.Resource) 412new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource) 415new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource) 432applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) => 437applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) => 442applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) => 448await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, parentResource.Resource)); 471applicationEventing.Subscribe<ConnectionStringAvailableEvent>(resource.Resource, (_, _) => 476applicationEventing.Subscribe<BeforeResourceStartedEvent>(resource.Resource, (_, _) => 485await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, resource.Resource)); 486await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, "test-resource-dcp")); 513await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 514await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 516Assert.True(resourceNotificationService.TryGetCurrentState(resource.Resource.Name, out var currentState)); 559container.Resource, 588container.Resource, 613await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Tool, resource.Resource, "tool-dcp")); 644await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 647Assert.True(resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waitingEvent)); 652await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 653await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 684CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, waiter.Resource.Name)); 686await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 688Assert.True(resourceNotificationService.TryGetCurrentState(dependency.Resource.Name, out var dependencyEvent)); 693await resourceNotificationService.WaitForResourceAsync(dependency.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 710waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 727await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with 733CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 736waiter.Resource.Name, 742await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with 770waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 787await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 791CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 794waiter.Resource.Name, 819waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 831dcpExecutor.AddResource(waiter.Resource, "waiter-abc123"); 832dcpExecutor.AddResource(waiter.Resource, "waiter-def456"); 839await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 842CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 845waiter.Resource.Name, 872waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 884dcpExecutor.AddResource(waiter.Resource, "waiter-abc123"); 885dcpExecutor.AddResource(waiter.Resource, "waiter-def456"); 892await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 896CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 899waiter.Resource.Name, 904CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-def456")); 907waiter.Resource.Name, 954await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 957await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }).DefaultTimeout(); 959await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 961Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1006waiter.Resource.Name, 1010while (!resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waiterEvent) 1017await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }); 1025await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, cancellationToken).DefaultTimeout(); 1027Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1045var connectionString = builder.AddConnectionString("cs", ReferenceExpression.Create($"Endpoint={referenced.Resource}")); 1058await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 1062await resourceNotificationService.WaitForResourceAsync(referenced.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1063await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1094waiter.Resource.Name, 1099Assert.Equal(new[] { blocker.Resource.Name }, Assert.IsAssignableFrom<IEnumerable<string>>(waitingFor)); 1105await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1106await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1338var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 1356parentContainer.Resource, 1364var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null; 1365var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1386var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 1404parentContainer.Resource, 1412var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null; 1413var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1454if (item.Resource == parent.Resource) 1458else if (item.Resource == child.Resource) 1462else if (item.Resource == child2.Resource) 1492parent.WithChildRelationship(child.Resource) 1493.WithChildRelationship(child2.Resource); 1511if (item.Resource == parent.Resource) 1515else if (item.Resource == child.Resource) 1519else if (item.Resource == child2.Resource) 1565if (item.Resource == parentProject.Resource) 1569else if (item.Resource == childProject.Resource)
Orchestrator\RelationshipEvaluatorTests.cs (37)
21manager.WithRelationship(first.Resource, "Manages") 22.WithRelationship(first.Resource, "Manages") 23.WithRelationship(first.Resource, "Observes") 24.WithRelationship(second.Resource, "Manages"); 26Assert.Collection(manager.Resource.Annotations.OfType<ResourceRelationshipAnnotation>(), 27relationship => { Assert.Same(first.Resource, relationship.Resource); Assert.Equal("Manages", relationship.Type); }, 28relationship => { Assert.Same(first.Resource, relationship.Resource); Assert.Equal("Observes", relationship.Type); }, 29relationship => { Assert.Same(second.Resource, relationship.Resource); Assert.Equal("Manages", relationship.Type); }); 38var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 39var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource)); 40var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource)); 54Assert.Collection(parentChildLookup[parentResource.Resource], 55x => Assert.Equal(childResource.Resource, x), 56x => Assert.Equal(childWithAnnotationsResource.Resource, x)); 58Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource); 59Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource); 61Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]); 63Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource); 65Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]); 86Assert.Collection(parentChildLookup[parentResource.Resource], 87x => Assert.Equal(child1Resource.Resource, x), 88x => Assert.Equal(child2Resource.Resource, x)); 100parentResource.WithChildRelationship(child1Resource.Resource) 101.WithChildRelationship(child2Resource.Resource); 109Assert.Collection(parentChildLookup[parentResource.Resource], 110x => Assert.Equal(child1Resource.Resource, x), 111x => Assert.Equal(child2Resource.Resource, x)); 132Assert.Collection(parentChildLookup[parentResource.Resource], 133x => Assert.Equal(child1Resource.Resource, x), 134x => Assert.Equal(child2Resource.Resource, x)); 155Assert.Single(parentChildLookup[grandParentResource.Resource], parentResource.Resource); 156Assert.Single(parentChildLookup[parentResource.Resource], childResource.Resource);
ProjectRebuilderResourceTests.cs (4)
22var launchDefaults = Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 42project.Resource.GetProjectMetadata().ProjectPath, 58var launchDefaults = Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 74project.Resource.GetProjectMetadata().ProjectPath
ProjectResourceBuilderExtensionTests.cs (19)
52var annotation = project.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 72Assert.Contains(executable.Resource.Name, exception.Message); 92Assert.Contains(project.Resource.Name, exception.Message); 106Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 121Assert.Contains(project.Resource.Name, exception.Message); 136var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetProjectMetadata); 138Assert.Contains(project.Resource.Name, exception.Message); 153.Resource; 163Assert.Same(password.Resource, context.EnvironmentVariables[KnownAspNetCoreConfigNames.KestrelCertificatesDefaultPassword]); 181.Resource; 204.Resource; 252.GatherAsync(context, project.Resource, NullLogger.Instance, builder.ExecutionContext); 340.GatherAsync(context, project.Resource, NullLogger.Instance, builder.ExecutionContext); 344.GatherAsync(context, project.Resource, NullLogger.Instance, builder.ExecutionContext); 379.Resource; 417.Resource; 454.Resource; 491.Resource; 503Assert.Same(password.Resource, context.EnvironmentVariables[KnownAspNetCoreConfigNames.KestrelCertificatesDefaultPassword]);
ProjectResourceTests.cs (7)
710var args = await ArgumentEvaluator.GetArgumentListAsync(project.Resource).DefaultTimeout(); 718Assert.False(project.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 900Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 1004var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1015var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1050var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1071new BeforeResourceStartedEvent(appResource.Resource, app.Services),
PublishAsConnectionStringTests.cs (2)
22Assert.True(redis.Resource.TryGetLastAnnotation<ManifestPublishingCallbackAnnotation>(out _)); 24var manifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout();
PublishAsDockerfileTests.cs (5)
29var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 75var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 124var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 173var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 233var manifest = await ManifestUtils.GetManifest(project.Resource, manifestDirectory: path).DefaultTimeout();
Publishing\DotnetProgramArchiveTests.cs (13)
44await BuildAsync(app, resource.Resource, usePipeline, TestContext.Current.CancellationToken).DefaultTimeout(); 97var firstBuild = BuildAsync(firstApp, firstResource.Resource, false, TestContext.Current.CancellationToken); 98var secondBuild = BuildAsync(secondApp, secondResource.Resource, false, TestContext.Current.CancellationToken); 139() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 185() => BuildAsync(app, resource.Resource, false, cancellation.Token)).DefaultTimeout(); 227() => BuildAsync(app, resource.Resource, false, cancellation.Token)).DefaultTimeout(); 232() => BuildAsync(app, resource.Resource, false, cancellation.Token)); 267() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 293() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 321() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 359await BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken); 361IValueProvider imageReference = new ContainerImageReference(resource.Resource); 384Source = assets.Resource,
Publishing\PodmanSaveArgumentsTests.cs (1)
113IValueProvider imageReference = new ContainerImageReference(container.Resource);
Publishing\ResourceContainerImageManagerTests.cs (62)
42await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 79await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 104await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 137await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 174await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 208await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 238await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 276await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 288AssertImageArchiveWasWritten(container.Resource, tempOutputPath); 320await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 333AssertImageArchiveWasWritten(container.Resource, tempOutputPath); 357await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 389await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 420await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 471await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 500await imageBuilder.PushImageAsync(testResource.Resource, cts.Token); 505resource => Assert.Equal(testResource.Resource, resource)); 525imageBuilder.PushImageAsync(testResource.Resource, cts.Token)); 560await imageBuilder.BuildImagesAsync([servicea.Resource], cts.Token); 591await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 624await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 663imageBuilder.BuildImagesAsync([container.Resource], cts.Token)); 702imageBuilder.BuildImageAsync(project.Resource, cts.Token)); 725() => imageBuilder.BuildImageAsync(project.Resource)); 766imageBuilder.BuildImageAsync(project.Resource, cts.Token)); 815() => imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)); 855await imageBuilder.BuildImageAsync(resource.Resource); 856await imageBuilder.BuildImageAsync(resource.Resource); 898Source = source.Resource, 932await imageBuilder.BuildImageAsync(resource.Resource); 938IValueProvider imageReference = new ContainerImageReference(resource.Resource); 986Source = source.Resource, 1000() => imageBuilder.BuildImageAsync(resource.Resource)); 1043() => imageBuilder.BuildImageAsync(resource.Resource)); 1085() => imageBuilder.BuildImageAsync(resource.Resource)); 1117Source = source.Resource, 1128await imageBuilder.BuildImageAsync(resource.Resource); 1178Source = source.Resource, 1185await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 1269await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 1347await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1421await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1517await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1563var annotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 1570await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1664var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1703var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1730var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1761var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1767var dockerfileBuildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 1793var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1841var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1872var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1905await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1911Assert.Equal(servicea.Resource, capturedResource); 1952await imageManager.BuildImagesAsync([servicea.Resource], cts.Token); 1996() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 2031() => imageManager.BuildImageAsync(container.Resource, cts.Token)); 2074() => imageManager.BuildImagesAsync([servicea.Resource, serviceb.Resource], cts.Token)); 2107() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 2142() => imageBuilder.BuildImageAsync(container.Resource, cts.Token));
RequiredCommandAnnotationTests.cs (4)
63var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 77var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 93var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 109var annotations = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().ToList();
ResourceBuilderLifetimeTests.cs (12)
23var annotation = container.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 49var annotation = container.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 65var annotation = Assert.Single(container.Resource.Annotations.OfType<PersistenceAnnotation>()); 82Assert.Equal(Lifetime.Persistent, container.Resource.GetLifetimeType()); 83var annotation = Assert.Single(container.Resource.Annotations.OfType<PersistenceAnnotation>()); 85Assert.Same(source.Resource, annotation.SourceResource); 89Assert.Equal(Lifetime.Session, container.Resource.GetLifetimeType()); 104Assert.True(container.Resource.TryGetParentProcessLifetime(out var parentProcessId, out var parentProcessTimestamp)); 110Assert.False(container.Resource.TryGetParentProcessLifetime(out _, out _)); 126Assert.Equal(Lifetime.Persistent, container.Resource.GetLifetimeType()); 153var exception = Assert.Throws<InvalidOperationException>(() => containerA.Resource.GetLifetimeType()); 166var annotation = container.Resource.Annotations.OfType<PersistenceAnnotation>().Single();
ResourceCommandAnnotationTests.cs (6)
60resourceBuilder.Resource.AddLifeCycleCommands(); 62var startCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == commandName); 86resourceBuilder.Resource.AddLifeCycleCommands(); 89var restartCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == KnownResourceCommands.RestartCommand); 165containerResource.Resource.AddLifeCycleCommands(); 170Assert.DoesNotContain(containerResource.Resource.Annotations.OfType<ResourceCommandAnnotation>(), a => a.Name == KnownResourceCommands.RebuildCommand);
ResourceCommandServiceTests.cs (24)
83var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 103var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 124var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 161var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 193var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 199var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 232var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 237var resourceNames = custom.Resource.GetResolvedResourceNames(); 267var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 297var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 335var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 341var resourceNames = custom.Resource.GetResolvedResourceNames(); 378var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 401var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 423var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "resource-start"); 465var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, legacyCommandName); 483var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token"); 504var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 599custom.Resource, 639custom.Resource, 1729var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token"); 1753await resourceNotificationService.WaitForResourceAsync(project.Resource.Name, e => KnownResourceStates.BuildableStates.Contains(e.Snapshot.State?.Text), cts.Token).DefaultTimeout(TimeSpan.FromMinutes(2)); 1756var result = await app.ResourceCommands.ExecuteCommandAsync(project.Resource, KnownResourceCommands.RebuildCommand).DefaultTimeout(TimeSpan.FromMinutes(2)); 1765var secondResult = await app.ResourceCommands.ExecuteCommandAsync(project.Resource, KnownResourceCommands.RebuildCommand).DefaultTimeout(TimeSpan.FromMinutes(2));
ResourceDependencyTests.cs (172)
24var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 26Assert.Contains(redis.Resource, dependencies); 41var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 43Assert.Contains(api.Resource, dependencies); 58var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 60Assert.Contains(api.Resource, dependencies); 97var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 99Assert.Contains(host.Resource, dependencies); 100Assert.DoesNotContain(nonHost.Resource, dependencies); 115var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 117Assert.Contains(db.Resource, dependencies); 118Assert.Contains(postgres.Resource, dependencies); // Parent of db 128.WithConnectionStringRedirection(redis.Resource); 134var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 136Assert.Contains(redirect.Resource, dependencies); 137Assert.Contains(redis.Resource, dependencies); // The redirect target 149var dependencies = await db.Resource.GetResourceDependenciesAsync(executionContext); 151Assert.Contains(postgres.Resource, dependencies); 164var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 166Assert.Contains(redis.Resource, dependencies); 179var dependencies = await mainContainer.Resource.GetResourceDependenciesAsync(executionContext); 181Assert.Contains(initContainer.Resource, dependencies); 194var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 196Assert.Contains(param.Resource, dependencies); 209var dependencies = await exe.Resource.GetResourceDependenciesAsync(executionContext); 211Assert.Contains(param.Resource, dependencies); 226var dependencies = await executable.Resource.GetResourceDependenciesAsync( 234Assert.Collection(dependencies, dependency => Assert.Same(param.Resource, dependency)); 248context.EnvironmentVariables["CONFIG"] = param.Resource; 260var beforePriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions); 265var annotation = executable.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 267new EnvironmentCallbackContext(executionContext, executable.Resource, new Dictionary<string, object>())); 271var afterPriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions); 273Assert.Contains(param.Resource, afterPriming); 288var dependencies = await executable.Resource.GetResourceDependenciesAsync( 292Assert.Collection(dependencies, dependency => Assert.Same(active.Resource, dependency)); 305var dependencies = await container.Resource.GetResourceDependenciesAsync( 325var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 327Assert.Contains(host.Resource, dependencies); 328Assert.Contains(port.Resource, dependencies); 329Assert.Contains(password.Resource, dependencies); 345var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 347Assert.Contains(b.Resource, dependencies); 348Assert.Contains(c.Resource, dependencies); 364var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 366Assert.Contains(b.Resource, dependencies); 367Assert.Contains(c.Resource, dependencies); 385var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 387Assert.Contains(b.Resource, dependencies); 388Assert.Contains(c.Resource, dependencies); 405var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 407Assert.Contains(b.Resource, dependencies); 408Assert.Contains(c.Resource, dependencies); 409Assert.Contains(d.Resource, dependencies); 426var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 428Assert.Contains(b.Resource, dependencies); 429Assert.Contains(c.Resource, dependencies); 430Assert.Contains(d.Resource, dependencies); 431Assert.Contains(e.Resource, dependencies); 449var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 450Assert.Contains(b.Resource, dependencies); 451Assert.Contains(c.Resource, dependencies); 452Assert.Contains(d.Resource, dependencies); 470var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 472Assert.Contains(backend.Resource, dependencies); 488var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 490Assert.Contains(db.Resource, dependencies); 491Assert.Contains(postgres.Resource, dependencies); // Parent included due to transitive dependency 505var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 507Assert.DoesNotContain(unrelatedResource.Resource, dependencies); 518var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 520Assert.DoesNotContain(container.Resource, dependencies); 534var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 536Assert.DoesNotContain(dependentContainer.Resource, dependencies); 549var dependencies = await db1.Resource.GetResourceDependenciesAsync(executionContext); 551Assert.DoesNotContain(db2.Resource, dependencies); 552Assert.Contains(postgres.Resource, dependencies); // Parent IS included 567var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 569Assert.Contains(b.Resource, dependencies); 570Assert.DoesNotContain(c.Resource, dependencies); 571Assert.DoesNotContain(d.Resource, dependencies); 582var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 598var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 600Assert.Contains(redis.Resource, dependencies); 618var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 620Assert.Contains(b.Resource, dependencies); 621Assert.DoesNotContain(c.Resource, dependencies); 638var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.Recursive); 640Assert.Contains(b.Resource, dependencies); 641Assert.Contains(c.Resource, dependencies); 664var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 667Assert.Contains(b.Resource, dependencies); 682var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 686Assert.Contains(db.Resource, dependencies); 687Assert.Contains(postgres.Resource, dependencies); 707var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 710Assert.Contains(b.Resource, dependencies); 712Assert.DoesNotContain(c.Resource, dependencies); 731var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 733Assert.Contains(b.Resource, dependencies); 734Assert.Contains(c.Resource, dependencies); 754[a.Resource, b.Resource], executionContext); 756Assert.Contains(x.Resource, dependencies); 757Assert.Contains(y.Resource, dependencies); 774[a.Resource, b.Resource], executionContext); 776Assert.Contains(x.Resource, dependencies); 793[a.Resource, b.Resource], executionContext); 796Assert.DoesNotContain(a.Resource, dependencies); 797Assert.DoesNotContain(b.Resource, dependencies); 816[a.Resource, b.Resource], executionContext); 819Assert.Contains(c.Resource, dependencies); 821Assert.DoesNotContain(a.Resource, dependencies); 822Assert.DoesNotContain(b.Resource, dependencies); 846[a.Resource, b.Resource, c.Resource], executionContext); 872[a.Resource, c.Resource], executionContext); 874Assert.Contains(b.Resource, dependencies); 875Assert.Contains(d.Resource, dependencies); 876Assert.DoesNotContain(a.Resource, dependencies); 877Assert.DoesNotContain(c.Resource, dependencies); 903[a.Resource, d.Resource], executionContext, new ResourceDependencyDiscoveryOptions 909Assert.Contains(b.Resource, dependencies); 910Assert.Contains(e.Resource, dependencies); 911Assert.DoesNotContain(c.Resource, dependencies); 912Assert.DoesNotContain(f.Resource, dependencies); 938[a.Resource, b.Resource, c.Resource], executionContext); 941Assert.Contains(d.Resource, dependencies); 942Assert.DoesNotContain(a.Resource, dependencies); 943Assert.DoesNotContain(b.Resource, dependencies); 944Assert.DoesNotContain(c.Resource, dependencies); 961[parent.Resource, child.Resource], executionContext); 964Assert.DoesNotContain(parent.Resource, dependencies); 965Assert.DoesNotContain(child.Resource, dependencies); 989[a.Resource, b.Resource, c.Resource], executionContext); 991Assert.Contains(x.Resource, dependencies); 992Assert.Contains(y.Resource, dependencies); 993Assert.Contains(z.Resource, dependencies); 1013var singleDeps = await a.Resource.GetResourceDependenciesAsync(executionContext); 1014var multiDeps = await ResourceExtensions.GetDependenciesAsync([a.Resource], executionContext); 1034enableTls.Resource, 1043var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1045Assert.Contains(enableTls.Resource, dependencies); 1046Assert.Contains(tlsSuffix.Resource, dependencies); 1061flag.Resource, 1070var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1072Assert.Contains(flag.Resource, dependencies); 1073Assert.Contains(primary.Resource, dependencies); 1074Assert.Contains(secondary.Resource, dependencies); 1089innerFlag.Resource, 1095outerFlag.Resource, 1104var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1106Assert.Contains(outerFlag.Resource, dependencies); 1107Assert.Contains(innerFlag.Resource, dependencies); 1108Assert.Contains(paramA.Resource, dependencies); 1109Assert.Contains(paramB.Resource, dependencies); 1110Assert.Contains(paramC.Resource, dependencies); 1122flag.Resource, 1132var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1135Assert.Contains(flag.Resource, dependencies); 1136Assert.Contains(param.Resource, dependencies);
ResourceExtensionsTests.cs (56)
43Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 44Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 55Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 56Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 67Assert.True(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 68Assert.True(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 79Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 80Assert.True(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 90Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 91Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 102Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 103Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 114var child = builder.AddResource(new ChildResource("child", parent.Resource)) 117Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 118Assert.False(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 129var child = builder.AddResource(new ChildResource("child", parent.Resource)); 131Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 132Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 143var child = builder.AddResource(new ChildResource("child", parent.Resource)) 146Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 147Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 158var child = builder.AddResource(new ChildResource("child", parent: parent.Resource)) 161var grandchild = builder.AddResource(new ChildResource("grandchild", parent: child.Resource)) 164Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 165Assert.True(grandchild.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 178.WithAnnotation(new DeploymentTargetAnnotation(deploymentTarget.Resource) 180ComputeEnvironment = annotationEnvironment.Resource 183var annotation = resource.Resource.GetDeploymentTargetAnnotation(requestedEnvironment.Resource); 194Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 204Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 223var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 258var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 293var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout(); 327.Resource.GetArgumentValuesAsync().DefaultTimeout(); 339.Resource.GetArgumentValuesAsync().DefaultTimeout(); 357var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 366Resource = containerResource.Resource, 404var annotations = containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>().ToList(); 414Resource = containerResource.Resource, 434Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 438Assert.Single(projectResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 442Assert.Single(executableResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 459var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 469Resource = containerResource.Resource, 486var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 498var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 510Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 518var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 522Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 540var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>()); 616var result = resource.Resource.TryGetInstances(out var instances); 632var result = resource.Resource.TryGetInstances(out var instances); 653var result = resource.Resource.GetResolvedResourceNames(); 668var result = resource.Resource.GetResolvedResourceNames(); 682var endpoint = Assert.Single(resource.Resource.ResolveEndpoints());
ResourceFailureLoggingTests.cs (6)
36await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.Finished, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 59await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 85Assert.False(Directory.Exists(executable.Resource.WorkingDirectory)); 90await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 96&& line.Contains($"WorkingDirectory = {executable.Resource.WorkingDirectory}") 104var category = $"{builder.ApplicationBuilder.Environment.ApplicationName}.Resources.{builder.Resource.Name}";
ResourceNotificationTests.cs (3)
37var annotation = custom.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().SingleOrDefault(); 1705await notificationService.PublishUpdateAsync(resourceBuilder.Resource, snapshot => snapshot with { State = state, ExitCode = exitCode }).DefaultTimeout(); 1706Assert.True(notificationService.TryGetCurrentState(resourceBuilder.Resource.Name, out var resourceEvent));
ResourceWithProbeTests.cs (3)
17var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 31var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 51var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray();
SlimTestProgramTests.cs (5)
36using var clientA = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 39using var clientB = app.CreateHttpClientWithResilience(testProgram.ServiceBBuilder.Resource.Name, "http"); 42using var clientC = app.CreateHttpClientWithResilience(testProgram.ServiceCBuilder.Resource.Name, "http"); 59var endpoint = projectBuilders.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 78var endpoint = projectBuilders.Resource.Annotations.OfType<EndpointAnnotation>().Single();
TestProgramFixture.cs (3)
68using var clientA = App.CreateHttpClientWithResilience(TestProgram.ServiceABuilder.Resource.Name, "http"); 72using var clientB = App.CreateHttpClientWithResilience(TestProgram.ServiceBBuilder.Resource.Name, "http"); 76using var clientC = App.CreateHttpClientWithResilience(TestProgram.ServiceCBuilder.Resource.Name, "http");
Utils\VolumeNameGeneratorTests.cs (3)
25Assert.Equal($"{volumePrefix}-{resource.Resource.Name}-data", volumeName); 69Assert.Equal($"{runVolumePrefix}-{runResource.Resource.Name}-data", runVolumeName); 70Assert.Equal($"{publishVolumePrefix}-{publishResource.Resource.Name}-data", publishVolumeName);
Utils\WithAnnotationTests.cs (4)
17var dummyAnnotations = redis.Resource.Annotations.OfType<DummyAnnotation>(); 31var dummyAnnotations = redis.Resource.Annotations.OfType<DummyAnnotation>(); 43var firstAnnotation = redis.Resource.Annotations.OfType<DummyAnnotation>().Single(); 47var secondAnnotation = redis.Resource.Annotations.OfType<DummyAnnotation>().Single();
WaitForTests.cs (67)
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); 66var childResourceBuilder = builder.AddResource(new CustomChildResource("child", parentResourceBuilder.Resource)); 108await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 110await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 139await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 141await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 181await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 217await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 219await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 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); 330await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 335await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token); 362await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 364await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 369await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 372await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 377await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 409await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 411await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 416await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 419await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 424await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 454await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 459await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 469await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token); 501await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token); 506await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 516await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token); 556await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token); 561await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 572await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token); 610await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 615await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 624await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token); 661await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 664await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test0", s => s with 669await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 672await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test1", s => s with 677await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 714await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 717await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test0", s => s with 722await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 725await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test1", s => s with 730await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 763await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 766await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 771await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 783var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 787Assert.True(containerResource.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations)); 790a => Assert.Equal(a.Resource, parentResource.Resource), 791a => Assert.Equal(a.Resource, childResource.Resource) 794Assert.True(containerResource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationshipAnnotations)); 797Assert.Equal(childResource.Resource, relationshipAnnotation.Resource); 809Assert.True(resource.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations)); 812Assert.Equal(dependency.Resource, waitAnnotation.Resource); 825Assert.True(resource.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations)); 828Assert.Equal(dependency.Resource, waitAnnotation.Resource); 875await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 878await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with 885await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
WithCertificateAuthorityCollection.cs (3)
31Assert.True(container.Resource.TryGetAnnotationsOfType<CertificateAuthorityCollectionAnnotation>(out var annotations)); 34Assert.Contains(bundle1.Resource, annotation.CertificateAuthorityCollections); 35Assert.Contains(bundle2.Resource, annotation.CertificateAuthorityCollections);
WithEndpointTests.cs (27)
142var endpoint = Assert.Single(container.Resource.Annotations.OfType<EndpointAnnotation>()); 155var endpoint = Assert.Single(container.Resource.Annotations.OfType<EndpointAnnotation>()); 172var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 211var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 246var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 284Assert.False(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var annotations)); 301Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 318Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 329var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>() 345var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>() 450var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 478var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 505var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 532var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 559var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 586var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 613var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 644var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 712var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 737var manifests = await ManifestUtils.GetManifests([container0.Resource, container1.Resource]).DefaultTimeout(); 782var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 813var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 818EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 847var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 852EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 867var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout();
WithEnvironmentTests.cs (37)
33container.Resource, 55var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 59Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 64Assert.Same(projectA.Resource, r.Resource); 76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 92var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 108var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 125var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 129Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 134Assert.Same(parameter.Resource, r.Resource); 148var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, 165projectA.Resource, 191var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 215var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 242.WithEnvironment("HOST", $"{test.Resource};name=1"); 244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout(); 245var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 259Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 264Assert.Same(container.Resource, r.Resource); 269Assert.Same(test.Resource, r.Resource); 290Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 295Assert.Same(container.Resource, r.Resource); 323var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout(); 347var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout(); 353var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 358Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 363Assert.Same(sourceBuilder.Resource, r.Resource); 378projectA.Resource, 386projectA.Resource, 399var testValue = new TestValueWithReferences("test-value", resourceA.Resource); 405Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 408Assert.Same(resourceA.Resource, relationship.Resource); 412projectA.Resource, 459projectA.Resource, 467projectA.Resource, 474Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 477Assert.Same(container.Resource, relationship.Resource);
WithHttpCommandTests.cs (49)
143await MoveResourceToRunningStateAsync(app, service.Resource); 145var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 205var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault(); 211Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name); 238var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault(); 279var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 315var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 375await MoveResourceToRunningStateAsync(app, service.Resource); 387var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", arguments).DefaultTimeout(); 414var commands = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 455await MoveResourceToRunningStateAsync(app, service.Resource); 457var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 480await MoveResourceToRunningStateAsync(app, service.Resource); 482var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", cts.Token).DefaultTimeout(); 512await MoveResourceToRunningStateAsync(app, service.Resource); 514var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 547await MoveResourceToRunningStateAsync(app, service.Resource); 549var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 627await app.ResourceNotifications.PublishUpdateAsync(serviceA.Resource, s => s with 631await app.ResourceNotifications.WaitForResourceAsync(serviceA.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 634await MoveResourceToRunningStateAsync(app, serviceB.Resource); 636var result = await app.ResourceCommands.ExecuteCommandAsync(serviceB.Resource, "mycommand").DefaultTimeout(); 664Assert.Equal(service.Resource.Name, requestContext.ResourceName); 678await MoveResourceToRunningStateAsync(app, service.Resource); 680var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 708Assert.Equal(service.Resource.Name, resultContext.ResourceName); 722await MoveResourceToRunningStateAsync(app, service.Resource); 724var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 776await MoveResourceToRunningStateAsync(app, service.Resource); 788var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", arguments).DefaultTimeout(); 815await MoveResourceToRunningStateAsync(app, service.Resource); 817var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 841await MoveResourceToRunningStateAsync(app, service.Resource); 843var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 868await MoveResourceToRunningStateAsync(app, service.Resource); 870var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 896await MoveResourceToRunningStateAsync(app, service.Resource); 898var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 923await MoveResourceToRunningStateAsync(app, service.Resource); 925var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 950await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 956service.Resource.Name, 962await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 969service.Resource.Name, 1005await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 1012service.Resource.Name, 1020await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 1027service.Resource.Name, 1082var endpointAnnotation = service.Resource.Annotations.OfType<EndpointAnnotation>().Single();
WithIconNameTests.cs (7)
20var iconAnnotation = container.Resource.Annotations.OfType<ResourceIconAnnotation>().Single(); 34var iconAnnotation = container.Resource.Annotations.OfType<ResourceIconAnnotation>().Single(); 76Assert.Single(container.Resource.Annotations.OfType<ResourceIconAnnotation>()); 77Assert.Single(parameter.Resource.Annotations.OfType<ResourceIconAnnotation>()); 78Assert.Single(project.Resource.Annotations.OfType<ResourceIconAnnotation>()); 91var iconAnnotations = container.Resource.Annotations.OfType<ResourceIconAnnotation>().ToList(); 99Assert.True(container.Resource.TryGetLastAnnotation<ResourceIconAnnotation>(out var lastAnnotation));
WithOtlpExporterTests.cs (23)
46container.Resource, 72container.Resource, 92container.Resource, 97var annotation = Assert.Single(container.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 114container.Resource, 137container.Resource, 158dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: endpointName, uriScheme: "http", port: 18889, isProxied: true, transport: transport)); 174var annotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == endpointName); 178container.Resource, 195dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 196dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpHttpEndpointName, uriScheme: "http", port: 18890, isProxied: true)); 204var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 207var httpAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpHttpEndpointName); 211container.Resource, 234container.Resource, 250dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 259var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 263executable.Resource, 280dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 294var collectorEndpoint = collector.Resource.GetEndpoint("otlp-grpc"); 316var dashboardAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 319var collectorAnnotation = collector.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == "otlp-grpc"); 327container.Resource,
WithProcessCommandTests.cs (47)
71var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 111var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 124var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-command").DefaultTimeout(); 190var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "options-callback-command", arguments).DefaultTimeout(); 251var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 269var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-command", arguments).DefaultTimeout(); 276Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 313var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-accepted-exit-code").DefaultTimeout(); 334var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout(); 384var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "echo-argument", arguments).DefaultTimeout(); 390Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 444ResourceName = resource.Resource.Name, 488var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "async-factory").DefaultTimeout(); 522var firstResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout(); 523var secondResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout(); 566var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "many-lines").DefaultTimeout(); 599var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "display-immediately").DefaultTimeout(); 623var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "no-output").DefaultTimeout(); 645var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail-no-output").DefaultTimeout(); 673var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "accepted-exit-code").DefaultTimeout(); 711var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "failure-display-immediately").DefaultTimeout(); 735var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "log-output").DefaultTimeout(); 742var logs = await ConsoleLoggingTestHelpers.WatchForLogsAsync(loggerService, 4, resource.Resource).DefaultTimeout(); 791var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "custom-result").DefaultTimeout(); 800Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 833var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "ordered-output").DefaultTimeout(); 862var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail").DefaultTimeout(); 898var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "argument-fidelity").DefaultTimeout(); 922var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "stdin").DefaultTimeout(); 945var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "path-executable").DefaultTimeout(); 969var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "working-directory").DefaultTimeout(); 997var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment").DefaultTimeout(); 1023var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "invalid-environment-name").DefaultTimeout(); 1049var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-environment-value").DefaultTimeout(); 1087var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-options").DefaultTimeout(); 1125var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-accepted-exit-code").DefaultTimeout(); 1150var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-default-options").DefaultTimeout(); 1213var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, $"invalid-export-{i}").DefaultTimeout(); 1260var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "default-success-exit-codes").DefaultTimeout(); 1284var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment-inheritance").DefaultTimeout(); 1307var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "missing").DefaultTimeout(); 1331var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "process-task-failure").DefaultTimeout(); 1354var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout(); 1380var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-exception").DefaultTimeout(); 1404var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-argument").DefaultTimeout(); 1442var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "validation-failure").DefaultTimeout(); 1472var commandTask = app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "wait", cts.Token);
WithReferenceTests.cs (68)
29var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 34Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 37Assert.Same(projectA.Resource, r.Resource); 52var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 72var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 102var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 151var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 179var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 213Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 216Assert.Same(projectA.Resource, r.Resource); 234var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 242Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 245Assert.Same(projectA.Resource, r.Resource); 264var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 286var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 305await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 322var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 341await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 361var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 377var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 393var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 412var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 442var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 448Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 451Assert.Same(resource.Resource, r.Resource); 452Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships)); 457Assert.Same(endpoint.Resource, r.Resource); 462Assert.Same(key.Resource, r.Resource); 467Assert.Same(endpoint.Resource, r.Resource); 472Assert.Same(key.Resource, r.Resource); 494var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 516var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 540var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 557var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 580var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 605var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 630var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 657var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 682var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 709var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 738var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 761var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 783var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 806var context = new EnvironmentCallbackContext(builder.ExecutionContext, project.Resource); 807foreach (var callback in project.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 813Assert.Same(resource.Resource, reference.Resource); 817project.Resource, 883.WithEnvironment("ConnectionStrings__my-db", new ConnectionStringReference(standalone.Resource, optional: false)) 887project.Resource, 927var context = new EnvironmentCallbackContext(builder.ExecutionContext, project.Resource); 930foreach (var callback in project.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 953var context = new EnvironmentCallbackContext(builder.ExecutionContext, project.Resource); 956foreach (var callback in project.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 983project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1006consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1027project.Resource, 1050project.Resource, 1079resource.Resource.ConnectionString = "Host=after"; 1083project.Resource, 1131var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1161var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1191var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1208var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 1221var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 1254var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1274var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1294var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
WithTerminalTests.cs (24)
73var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 107var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 175Assert.Same(resource.Resource, single.Parent); 189var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single(); 204var waitAnnotations = resource.Resource.Annotations.OfType<WaitAnnotation>() 230var annotation = container.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 304var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 322var parentEnvironment = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(resource.Resource, serviceProvider: app.Services); 359var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 396.Select(resource => resource.Resource.Annotations.OfType<TerminalAnnotation>().Single()) 473var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single(); 1029Assert.False(resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().IsInitialized); 1104var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().FirstOrDefault(); 1163var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1182var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1212var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1233var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1262firstResource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts).Layout.ReplicaId; 1268secondResource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts).Layout.ReplicaId; 1280resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts); 1310var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1350foreach (var host in resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts) 1407Assert.True(resource.Resource.HasAnnotationOfType<ForceProcessExecutionAnnotation>()); 1422var host = Assert.Single(resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts);
WithUrlsTests.cs (46)
49var urlsCallback = projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>() 62Assert.Empty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 66Assert.NotEmpty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 174var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 198var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 213projectA.WithUrl($"{projectA.Resource.GetEndpoint("https")}/test", "Example") 224var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 252var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 285var urls = projectB.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 289Assert.StartsWith($"http://{projectB.Resource.Name.ToLowerInvariant()}{expectedHostSuffix}", u.Url); 328var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 351var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 381var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 399var httpEndpoint = servicea.Resource.GetEndpoint("http"); 408servicea.Resource.Name, 422var httpEndpoint = servicea.Resource.GetEndpoint("http"); 433servicea.Resource.Name, 466servicea.Resource.Name, 500if (notification.Resource == servicea.Resource && notification.Snapshot.Urls.Length > 0) 516await rns.WaitForResourceAsync(servicea.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 616if (notification.Resource == custom.Resource && notification.Snapshot.Urls.Length > 0) 632await rns.WaitForResourceAsync(custom.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 785var allUrls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 846var endpointUrl = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test"); 885var launchProfileUrls = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().Where(u => u.Endpoint?.EndpointName == "http"); 926var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 943Assert.Same(manager.Resource, url.Endpoint?.Resource); 959var url = Assert.Single(managed.Resource.Annotations.OfType<ResourceUrlAnnotation>(), u => u.DisplayText == "Manage"); 960Assert.Same(manager.Resource, url.Endpoint?.Resource); 986var callback = Assert.Single(surrogateBuilder.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 1011managed.Resource, 1014var callback = Assert.Single(managed.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 1019Assert.Same(manager.Resource, managementUrl.Endpoint?.Resource); 1044var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 1070Endpoint = resourceA.Resource.GetEndpoint("api") 1081resourceB.Resource.Name, 1083&& e.Snapshot.Urls.Length == resourceB.Resource.GetEndpoints().ToArray().Length + 1 1086using var resourceAClient = app.CreateHttpClientWithResilience(resourceA.Resource.Name, "api"); 1087using var resourceBClient = app.CreateHttpClientWithResilience(resourceB.Resource.Name, "http"); 1122Endpoint = resourceA.Resource.GetEndpoint("api") 1133resourceB.Resource.Name, 1142var startResult = await app.ResourceCommands.ExecuteCommandAsync(resourceA.Resource, KnownResourceCommands.StartCommand).DefaultTimeout(TestConstants.DefaultOrchestratorTestTimeout); 1144using var resourceAClient = app.CreateHttpClientWithResilience(resourceA.Resource.Name, "api"); 1148resourceB.Resource.Name, 1153var stopResult = await app.ResourceCommands.ExecuteCommandAsync(resourceA.Resource, KnownResourceCommands.StopCommand).DefaultTimeout(TestConstants.DefaultOrchestratorTestTimeout); 1157resourceB.Resource.Name,
WithVolumeTests.cs (16)
27container.Resource, 33var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 50var expectedProjectPath = VolumeMountPathResolver.GetLocalPath(store, project.Resource, "data"); 51var expectedExecutablePath = VolumeMountPathResolver.GetLocalPath(store, executable.Resource, "data"); 57project.Resource, 60executable.Resource, 80project.Resource, 84executable.Resource, 127var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 142executable.Resource, 186executable.Resource, 225var expectedPath = VolumeMountPathResolver.GetLocalPath(store, custom.Resource, "data"); 228custom.Resource, 261project.Resource, 282project.Resource, 300project.Resource,
Aspire.Hosting.TestUtilities (5)
Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Utils\OtlpExporterActivationTestExtensions.cs (4)
14if (!builder.Resource.TryGetLastAnnotation<OtlpExporterAnnotation>(out var exporter)) 16throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not have an OTLP exporter annotation."); 24builder.Resource.Annotations.Remove(exporter); 25builder.Resource.Annotations.Add(new TestOtlpExporterAnnotation(activationEnvironmentVariables)
Aspire.Hosting.Valkey (2)
ValkeyBuilderExtensions.cs (2)
126var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 211return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct));
Aspire.Hosting.Valkey.Tests (32)
AddValkeyTests.cs (9)
127var manifest = await ManifestUtils.GetManifest(valkey.Resource); 165var manifest = await ManifestUtils.GetManifest(valkey.Resource); 210var volumeAnnotation = valkey.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 235var volumeAnnotation = valkey.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 250Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 274Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 299Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 316Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 345var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
ValkeyFunctionalTests.cs (13)
39[$"ConnectionStrings:{valkey.Resource.Name}"] = await valkey.Resource.ConnectionStringExpression.GetValueAsync(default) 42hb.AddRedisClient(valkey.Resource.Name); 103[$"ConnectionStrings:{valkey1.Resource.Name}"] = $"{await valkey1.Resource.ConnectionStringExpression.GetValueAsync(default)},allowAdmin=true" 106hb.AddRedisClient(valkey1.Resource.Name); 155[$"ConnectionStrings:{valkey2.Resource.Name}"] = await valkey2.Resource.ConnectionStringExpression.GetValueAsync(default) 158hb.AddRedisClient(valkey2.Resource.Name); 227await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 229await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 233await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 235await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
ValkeyReplCommandTests.cs (3)
45var options = await ValkeyBuilderExtensions.CreateReplOptionsAsync(valkey.Resource, TestContext.Current.CancellationToken); 65var options = await ValkeyBuilderExtensions.CreateReplOptionsAsync(valkey.Resource, TestContext.Current.CancellationToken); 81await VerifyReplAsync(app, valkey.Resource, "valkey-cli (valkey)", "127.0.0.1:", "PING\r", "PONG");
Aspire.Hosting.Yarp (12)
ConfigurationBuilder\YarpConfigurationBuilder.cs (8)
16var routeId = $"route{_parent.Resource.Routes.Count}"; 22_parent.Resource.Routes.Add(route); 30_parent.Resource.Clusters.Add(destination); 38var destination = new YarpCluster(resource.Resource); 39_parent.Resource.Clusters.Add(destination); 47var destination = new YarpCluster(externalService.Resource); 48_parent.Resource.Clusters.Add(destination); 76_parent.Resource.Clusters.Add(destination);
YarpResourceExtensions.cs (4)
96YarpEnvConfigGenerator.PopulateEnvVariables(ctx.EnvironmentVariables, yarpBuilder.Resource.Routes, yarpBuilder.Resource.Clusters); 143builder.Resource.HostHttpsPort = port; 242if (builder.Resource.HasAnnotationOfType<DockerfileBuilderCallbackAnnotation>())
Aspire.Hosting.Yarp.Tests (39)
AddYarpTests.cs (28)
54var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 77var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 103YarpEnvConfigGenerator.PopulateEnvVariables(env, yarp.Resource.Routes, yarp.Resource.Clusters); 126var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 148var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, testProvider); 173var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 188var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 202var annotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>()); 214var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 227var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 232Resource = yarp.Resource, 260Assert.Empty(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()); 261Assert.Empty(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 278var containerFilesAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()); 279Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 283var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 288Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 305var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 312Resource = yarp.Resource, 335var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 343Resource = yarp.Resource, 368var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 375Resource = yarp.Resource, 406var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 413Resource = yarp.Resource, 446var httpsEndpoint = Assert.Single(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https"); 471Assert.DoesNotContain(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https");
YarpClusterTests.cs (8)
82var httpCluster = new YarpCluster(httpService.Resource); 89var httpsCluster = new YarpCluster(httpsService.Resource); 100var cluster = new YarpCluster(service.Resource); 113var clusterA = new YarpCluster(serviceA.Resource); 259var cluster = Assert.Single(yarp.Resource.Clusters); 260var storedRoute = Assert.Single(yarp.Resource.Routes); 280var cluster = Assert.Single(yarp.Resource.Clusters); 281var storedRoute = Assert.Single(yarp.Resource.Routes);
YarpFunctionalTests.cs (3)
54await app.ResourceNotifications.WaitForResourceHealthyAsync(backend.Resource.Name, cts.Token); 55await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name, cts.Token); 57using var httpClient = app.CreateHttpClient(yarp.Resource.Name);
Aspire.Playground.Tests (1)
tests\Aspire.Hosting.TestUtilities\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
AzureKusto.AppHost (2)
AzureKustoReadWriteDatabaseResourceBuilderExtensions.cs (2)
30if (!dbBuilder.Resource.Parent.IsEmulator) 32var logger = evt.Services.GetRequiredService<ResourceLoggerService>().GetLogger(dbBuilder.Resource);
BicepSample.AppHost (1)
AppHost.cs (1)
28temp00 = bicep0.Resource;
DotnetTool.AppHost (2)
AppHost.cs (2)
49foreach(var toolAnnotation in substituted.Resource.Annotations.OfType<DotnetToolAnnotation>().ToList()) 51substituted.Resource.Annotations.Remove(toolAnnotation);
FoundryEndToEnd.AppHost (1)
AppHost.cs (1)
11var model = foundry.Resource.IsEmulator
KafkaBasic.AppHost (2)
AppHost.cs (2)
11.WithArgs(kafka.Resource.Name); 15.WithArgs(kafka.Resource.Name);
ParameterEndToEnd.AppHost (1)
AppHost.cs (1)
27var cs = builder.AddConnectionString("cs", ReferenceExpression.Create($"sql={db.Resource.Parent.PrimaryEndpoint};rows={insertionrows}"));
Pipelines.AppHost (1)
AppHost.cs (1)
241var resource = withBindMount.Resource;
Stress.AppHost (9)
AppHost.cs (2)
44IResource parent = rb.Resource; 50parent = nestedRb.Resource;
CommandResources.cs (7)
37var iconCommands = builder.AddCommandGroup("icon-commands", serviceBuilder.Resource); 117var argumentCommands = builder.AddCommandGroup("argument-commands", serviceBuilder.Resource); 499var processCommands = builder.AddCommandGroup("process-commands", serviceBuilder.Resource); 920var largeTelemetryCommands = builder.AddHttpCommandGroup("large-telemetry-commands", serviceBuilder.Resource); 1092var interactionCommands = builder.AddCommandGroup("interaction-commands", telemetryBuilder.Resource); 1095var lifecycleCommands = builder.AddCommandGroup("lifecycle-commands", telemetryBuilder.Resource); 1124var resultCommands = builder.AddCommandGroup("result-commands", telemetryBuilder.Resource);
Terminals.AppHost (7)
TerminalInteractionCommands.cs (7)
86ResolveContainerName(container.Resource), 88title: $"Shell into '{container.Resource.Name}'", 89message: $"Runs `docker exec -it {ResolveContainerName(container.Resource)} /bin/sh` from the AppHost process.")); 107ResolveContainerName(container.Resource), 110message: $"Runs `docker exec -it {ResolveContainerName(container.Resource)} node` from the AppHost process.")); 170var containerName = ResolveContainerName(container.Resource); 177Title = container.Resource.Name,
Testing.Tests (17)
WaitFailures.cs (17)
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); 206await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cts.Token); 228await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token); 232await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cts.Token); 252await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token); 256await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cancellationToken: cts.Token);