1342 references to Resource
Aspire.Hosting (87)
ApplicationModel\ResourceExtensions.cs (4)
291(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await GetValue(key: null, provider, logger, resource.IsContainer(), containerHostName, cancellationToken).ConfigureAwait(false),
293(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false),
340(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await GetValue(key, provider, logger, resource.IsContainer(), containerHostName, cancellationToken).ConfigureAwait(false),
342(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false),
ResourceBuilderExtensions.cs (41)
164context.EnvironmentVariables[name] = parameter.Resource;
188context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false);
350var resource = source.Resource;
377ApplyEndpoints(builder, source.Resource);
435var endpointReferenceAnnotation = builder.Resource.Annotations
499var endpoint = builder.Resource.Annotations
513builder.Resource.Annotations.Add(endpoint);
553if (builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(sb => string.Equals(sb.Name, annotation.Name, StringComparisons.EndpointAnnotationName)))
559if (env is not null && builder.Resource is IResourceWithEndpoints resourceWithEndpoints and IResourceWithEnvironment)
644if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints))
672return builder.Resource.GetEndpoint(name);
780if (builder.Resource as IResource == dependency.Resource)
782throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
785if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
787throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
790if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
802if (dependency.Resource is ConnectionStringResource cs)
813builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
816return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior });
876if (builder.Resource as IResource == dependency.Resource)
878throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
881if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
883throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
886builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
888return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode));
932if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key))
934throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'.");
989var endpoint = builder.Resource.GetEndpoint(endpointName);
995throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'.");
1000throw new DistributedApplicationException($"The endpoint '{endpointName}' on resource '{builder.Resource.Name}' was not using the '{desiredScheme}' scheme.");
1007builder.ApplicationBuilder.Eventing.Subscribe<BeforeResourceStartedEvent>(builder.Resource, (@event, ct) =>
1014var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check";
1133var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
1136builder.Resource.Annotations.Remove(existingAnnotation);
1204return builder.WithParentRelationship(parent.Resource);
Aspire.Hosting.Azure (22)
Aspire.Hosting.Azure.ApplicationInsights (1)
Aspire.Hosting.Azure.CognitiveServices (1)
Aspire.Hosting.Azure.CosmosDB (15)
Aspire.Hosting.Azure.EventHubs (23)
Aspire.Hosting.Azure.Functions (8)
Aspire.Hosting.Azure.PostgreSQL (14)
Aspire.Hosting.Azure.Redis (6)
Aspire.Hosting.Azure.ServiceBus (27)
AzureServiceBusExtensions.cs (27)
142var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource);
143builder.Resource.Queues.Add(queue);
159configure(builder.Resource);
219var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource);
220builder.Resource.Topics.Add(topic);
236configure(builder.Resource);
256if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource)
285var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource);
286builder.Resource.Subscriptions.Add(subscription);
302configure(builder.Resource);
336if (builder.Resource.IsEmulator)
349var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1);
361.AddContainer($"{builder.Resource.Name}-sqledge",
375var sqlEndpoint = sqlEdgeResource.Resource.GetEndpoint("tcp");
386var surrogate = new AzureServiceBusEmulatorResource(builder.Resource);
405var hasCustomConfigJson = builder.Resource.Annotations.OfType<ContainerMountAnnotation>().Any(v => v.Target == AzureServiceBusEmulatorResource.EmulatorConfigJsonPath);
413var tempConfigFile = WriteEmulatorConfigJson(builder.Resource);
418var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>();
445var configJsonPath = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-Config.json", tempConfigFile);
476builder.ApplicationBuilder.Eventing.Subscribe<BeforeResourceStartedEvent>(builder.Resource, async (@event, ct) =>
478var connectionString = await builder.Resource.ConnectionStringExpression.GetValueAsync(ct).ConfigureAwait(false);
482throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{builder.Resource.Name}' resource but the connection string was null.");
491builder.Resource.Queues.Select(x => x.Name).FirstOrDefault()
492?? builder.Resource.Topics.Select(x => x.Name).FirstOrDefault();
495var healthCheckKey = $"{builder.Resource.Name}_check";
528var configFileMount = builder.Resource.Annotations.OfType<ContainerMountAnnotation>().LastOrDefault(v => v.Target == AzureServiceBusEmulatorResource.EmulatorConfigJsonPath);
531builder.Resource.Annotations.Remove(configFileMount);
Aspire.Hosting.Azure.SignalR (1)
Aspire.Hosting.Azure.Sql (10)
Aspire.Hosting.Azure.Storage (9)
Aspire.Hosting.Azure.Tests (357)
AzureBicepProvisionerTests.cs (21)
24await BicepProvisioner.SetParametersAsync(parameters, bicep0.Resource);
56.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1"))
176await BicepProvisioner.SetParametersAsync(parameters0, bicep0.Resource);
177var checkSum0 = BicepProvisioner.GetChecksum(bicep0.Resource, parameters0, null);
183var checkSum1 = await BicepProvisioner.GetCurrentChecksumAsync(bicep1.Resource, config);
195bicep0.Resource.Scope = new("rg0");
199bicep1.Resource.Scope = new("rg1");
203await BicepProvisioner.SetParametersAsync(parameters0, bicep0.Resource);
204await BicepProvisioner.SetScopeAsync(scope0, bicep0.Resource);
205var checkSum0 = BicepProvisioner.GetChecksum(bicep0.Resource, parameters0, scope0);
209await BicepProvisioner.SetParametersAsync(parameters1, bicep1.Resource);
210await BicepProvisioner.SetScopeAsync(scope1, bicep1.Resource);
211var checkSum1 = BicepProvisioner.GetChecksum(bicep1.Resource, parameters1, scope1);
223bicep0.Resource.Scope = new("rg0");
227bicep1.Resource.Scope = new("rg0");
231await BicepProvisioner.SetParametersAsync(parameters0, bicep0.Resource);
232await BicepProvisioner.SetScopeAsync(scope0, bicep0.Resource);
233var checkSum0 = BicepProvisioner.GetChecksum(bicep0.Resource, parameters0, scope0);
237await BicepProvisioner.SetParametersAsync(parameters1, bicep1.Resource);
238await BicepProvisioner.SetScopeAsync(scope1, bicep1.Resource);
239var checkSum1 = BicepProvisioner.GetChecksum(bicep1.Resource, parameters1, scope1);
AzureBicepResourceTests.cs (151)
35Assert.Equal("content", bicepResource.Resource.TemplateString);
36Assert.Equal("value1", bicepResource.Resource.Parameters["param1"]);
37Assert.Equal("value2", bicepResource.Resource.Parameters["param2"]);
99if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource)
120if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource)
138bicepResource.Resource.Outputs["resourceEndpoint"] = "https://myendpoint";
150bicepResource.Resource.SecretOutputs["connectionString"] = "https://myendpoint;Key=43";
229Assert.True(cosmos.Resource.IsContainer());
231var csExpr = cosmos.Resource.ConnectionStringExpression;
237Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync());
254cosmos.Resource.SecretOutputs["connectionString"] = "mycosmosconnectionstring";
256var manifest = await ManifestUtils.GetManifestWithBicep(cosmos.Resource);
346var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
348Assert.Equal("cosmos", cosmos.Resource.Name);
366cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
368var manifest = await ManifestUtils.GetManifestWithBicep(cosmos.Resource);
468var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
470Assert.Equal("cosmos", cosmos.Resource.Name);
488cosmos.Resource.SecretOutputs["connectionString"] = "mycosmosconnectionstring";
490var manifest = await ManifestUtils.GetManifestWithBicep(cosmos.Resource);
580var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
582Assert.Equal("cosmos", cosmos.Resource.Name);
600cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
602var manifest = await ManifestUtils.GetManifestWithBicep(cosmos.Resource);
700var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
702Assert.Equal("cosmos", cosmos.Resource.Name);
712appConfig.Resource.Outputs["appConfigEndpoint"] = "https://myendpoint";
713Assert.Equal("https://myendpoint", await appConfig.Resource.ConnectionStringExpression.GetValueAsync(default));
715var manifest = await ManifestUtils.GetManifestWithBicep(appConfig.Resource);
717var connectionStringResource = (IResourceWithConnectionString)appConfig.Resource;
779appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
781var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
783Assert.Equal("appInsights", appInsights.Resource.Name);
785Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
787var appInsightsManifest = await ManifestUtils.GetManifestWithBicep(appInsights.Resource);
836appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
838var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
840Assert.Equal("appInsights", appInsights.Resource.Name);
842Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
844var appInsightsManifest = await ManifestUtils.GetManifestWithBicep(appInsights.Resource);
902appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
904var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
906Assert.Equal("appInsights", appInsights.Resource.Name);
908Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
910var appInsightsManifest = await ManifestUtils.GetManifestWithBicep(appInsights.Resource);
959Assert.Equal("logAnalyticsWorkspace", logAnalyticsWorkspace.Resource.Name);
960Assert.Equal("{logAnalyticsWorkspace.outputs.logAnalyticsWorkspaceId}", logAnalyticsWorkspace.Resource.WorkspaceId.ValueExpression);
962var appInsightsManifest = await ManifestUtils.GetManifestWithBicep(logAnalyticsWorkspace.Resource);
1001appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
1006var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1027var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
1052var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
1091var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
1121Assert.True(redis.Resource.IsContainer());
1122Assert.NotNull(redis.Resource.PasswordParameter);
1124Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync());
1126var manifest = await ManifestUtils.GetManifestWithBicep(redis.Resource);
1186var manifest = await ManifestUtils.GetManifestWithBicep(mykv.Resource);
1248var manifest = await ManifestUtils.GetManifestWithBicep(mykv.Resource);
1313var manifest = await ManifestUtils.GetManifestWithBicep(sql.Resource);
1315Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
1319Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default));
1320Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression);
1407var manifest = await ManifestUtils.GetManifestWithBicep(sql.Resource);
1409Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
1413Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default));
1414Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression);
1493Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
1497var manifest = await ManifestUtils.GetManifestWithBicep(postgres.Resource);
1502Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
1611Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
1615var manifest = await ManifestUtils.GetManifestWithBicep(postgres.Resource);
1620Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
1721var manifest = await ManifestUtils.GetManifestWithBicep(postgres.Resource);
1727Assert.Equal(expectedConnectionString, await postgres.Resource.GetConnectionStringAsync());
1753var manifest = await ManifestUtils.GetManifest(postgres.Resource);
1773manifest = await ManifestUtils.GetManifest(postgres.Resource);
1792manifest = await ManifestUtils.GetManifest(postgres.Resource);
1836serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint";
1838var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource;
1840Assert.Equal("sb", serviceBus.Resource.Name);
1844var manifest = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
1929wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
1943var connectionStringResource = (IResourceWithConnectionString)wps.Resource;
1946var manifest = await ManifestUtils.GetManifestWithBicep(wps.Resource);
1949Assert.Equal("wps1", wps.Resource.Name);
1998wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
2013var manifest = await ManifestUtils.GetManifestWithBicep(wps.Resource);
2016Assert.Equal("wps1", wps.Resource.Name);
2069Assert.True(storage.Resource.IsContainer());
2076=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port));
2082Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression);
2083Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression);
2084Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression);
2090Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync());
2091Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
2092Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync());
2111storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
2112storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
2113storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
2116Assert.Equal("storage", storage.Resource.Name);
2118var storageManifest = await ManifestUtils.GetManifestWithBicep(storage.Resource);
2210var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
2219var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
2225var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
2234var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
2240var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
2249var tableManifest = await ManifestUtils.GetManifest(table.Resource);
2270storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
2271storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
2272storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
2275Assert.Equal("storage", storage.Resource.Name);
2277var storageManifest = await ManifestUtils.GetManifestWithBicep(storage.Resource);
2369var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
2378var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
2384var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
2393var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
2399var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
2408var tableManifest = await ManifestUtils.GetManifest(table.Resource);
2428storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
2429storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
2430storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
2433Assert.Equal("storage", storage.Resource.Name);
2435var storageManifest = await ManifestUtils.GetManifestWithBicep(storage.Resource);
2527var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
2536var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
2542var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
2551var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
2557var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
2566var tableManifest = await ManifestUtils.GetManifest(table.Resource);
2587storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
2588storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
2589storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
2592Assert.Equal("storage", storage.Resource.Name);
2594var storageManifest = await ManifestUtils.GetManifestWithBicep(storage.Resource);
2686var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
2695var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
2701var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
2710var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
2716var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
2725var tableManifest = await ManifestUtils.GetManifest(table.Resource);
2745search.Resource.Outputs["connectionString"] = fakeConnectionString;
2747var connectionStringResource = (IResourceWithConnectionString)search.Resource;
2750Assert.Equal("search", search.Resource.Name);
2754var manifest = await ManifestUtils.GetManifestWithBicep(search.Resource);
2837var aiManifest = await ManifestUtils.GetManifest(ai.Resource);
2841var serviceBusManifest = await ManifestUtils.GetManifest(serviceBus.Resource);
2845var serviceManifest = await ManifestUtils.GetManifest(serviceA.Resource);
2872var manifest = await ManifestUtils.GetManifestWithBicep(openai.Resource);
3027var (manifest, bicep) = await ManifestUtils.GetManifestWithBicep(provisioningResource.Resource);
AzureEventHubsExtensionsTests.cs (23)
51await rns.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
53await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
57await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
59await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
85hb.Configuration["ConnectionStrings:hub"] = await eventHub.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
91hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
129hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
137await rns.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
163var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
180var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
197var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
214var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
234eventHubs.Resource.Annotations.OfType<EndpointAnnotation>(),
256var containerImageAnnotation = eventHubs.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
274var manifest = await ManifestUtils.GetManifestWithBicep(eventHubs.Resource);
347var manifest = await ManifestUtils.GetManifestWithBicep(eventHubs.Resource);
549serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation);
574Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression);
575Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression);
576Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression);
589((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh");
599((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1");
615((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1");
AzureServiceBusExtensionsTests.cs (21)
39var manifest = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
129var manifest = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
202await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
204await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
208await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
210await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
234hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
241await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
242await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
269serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(),
291var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
369var manifest = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
730serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation);
758Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression);
759Assert.Equal("{sb.outputs.serviceBusEndpoint}", queue.Resource.ConnectionStringExpression.ValueExpression);
760Assert.Equal("{sb.outputs.serviceBusEndpoint}", topic.Resource.ConnectionStringExpression.ValueExpression);
761Assert.Equal("{sb.outputs.serviceBusEndpoint}", subscription.Resource.ConnectionStringExpression.ValueExpression);
775((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb");
781((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue");
787((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic");
793((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub");
ExistingAzureResourceTests.cs (24)
23var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
85var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
156var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
219var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
283var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(serviceBus.Resource);
346var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(storageAccount.Resource);
433var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(storageAccount.Resource);
519var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(appConfiguration.Resource);
580var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(eventHubs.Resource);
641var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(keyVault.Resource);
702var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(logAnalytics.Resource);
746var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(postgresSql.Resource);
826var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(postgresSql.Resource);
900var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(search.Resource);
971var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(signalR.Resource);
1032var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(webPubSub.Resource);
1093var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(sqlServer.Resource);
1161var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(sqlServer.Resource);
1236var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(redis.Resource);
1296var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(redis.Resource);
1351var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(appInsights.Resource);
1396var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(openAI.Resource);
1475var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(cosmos.Resource);
1571var (ManifestNode, BicepText) = await ManifestUtils.GetManifestWithBicep(cosmos.Resource);
PublicApiTests\CosmosDBPublicApiTests.cs (5)
23var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
43var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
63var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
97var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
115var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
Aspire.Hosting.Azure.WebPubSub (4)
Aspire.Hosting.Containers.Tests (37)
ContainerResourceBuilderTests.cs (17)
17Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
25Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
26Assert.Equal("1.0.0", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
34container.Resource.Annotations.RemoveAt(0);
37Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
38Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
46container.Resource.Annotations.Add(new ContainerImageAnnotation { Image = "another-image" });
49Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Image);
50Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Tag);
58Assert.Equal("7.1", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
66Assert.Equal("myregistry.azurecr.io", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Registry);
74Assert.Equal("42b5c726e719639fcc1e9dbc13dd843f567dcd37911d0e1abb9f47f2cc1c95cd", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().SHA256);
152var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
164var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
177var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
213var annotation = redis.Resource.Annotations.OfType<ContainerImagePullPolicyAnnotation>().Single();
221var containerImage = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
Aspire.Hosting.Elasticsearch (1)
Aspire.Hosting.Elasticsearch.Tests (21)
ElasticsearchFunctionalTests.cs (17)
46await rns.WaitForResourceHealthyAsync(elasticsearch.Resource.Name, cts.Token);
50hb.Configuration[$"ConnectionStrings:{elasticsearch.Resource.Name}"] = await elasticsearch.Resource.ConnectionStringExpression.GetValueAsync(default);
52hb.AddElasticsearchClient(elasticsearch.Resource.Name);
89var password = elasticsearch1.Resource.PasswordParameter.Value;
110await app.ResourceNotifications.WaitForResourceHealthyAsync(elasticsearch1.Resource.Name, cts.Token);
116hb.Configuration[$"ConnectionStrings:{elasticsearch1.Resource.Name}"] = await elasticsearch1.Resource.ConnectionStringExpression.GetValueAsync(default);
118hb.AddElasticsearchClient(elasticsearch1.Resource.Name);
167await app.ResourceNotifications.WaitForResourceHealthyAsync(elasticsearch2.Resource.Name, cts.Token);
173hb.Configuration[$"ConnectionStrings:{elasticsearch2.Resource.Name}"] = await elasticsearch2.Resource.ConnectionStringExpression.GetValueAsync(default);
175hb.AddElasticsearchClient(elasticsearch2.Resource.Name);
257await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
259await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
263await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
265await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Garnet (1)
Aspire.Hosting.Garnet.Tests (21)
Aspire.Hosting.Kafka (1)
Aspire.Hosting.Kafka.Tests (15)
Aspire.Hosting.Keycloak (2)
Aspire.Hosting.Keycloak.Tests (7)
Aspire.Hosting.Milvus (5)
Aspire.Hosting.Milvus.Tests (18)
Aspire.Hosting.MongoDB (6)
Aspire.Hosting.MongoDB.Tests (27)
Aspire.Hosting.MySql (5)
Aspire.Hosting.MySql.Tests (41)
AddMySqlTests.cs (21)
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);
251Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]);
283string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';";
284string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';";
333Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys);
334Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values);
336Assert.Equal("customers1", db1.Resource.DatabaseName);
337Assert.Equal("customers2", db2.Resource.DatabaseName);
339Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
340Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
354Assert.Equal("imports", db1.Resource.DatabaseName);
355Assert.Equal("imports", db2.Resource.DatabaseName);
357Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
358Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.Nats (2)
Aspire.Hosting.Nats.Tests (33)
NatsFunctionalTests.cs (19)
37await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
41hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
82await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
86var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
87hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString;
124await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
128var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
133hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString;
186await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name);
191hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default);
234await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name);
239hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default);
344await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
346await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
350await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
352await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.NodeJs.Tests (2)
Aspire.Hosting.Oracle (3)
Aspire.Hosting.Oracle.Tests (32)
AddOracleTests.cs (13)
22Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
32Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
200var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
201var dbManifest = await ManifestUtils.GetManifest(db.Resource);
239var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
295Assert.Equal("customers1", db1.Resource.DatabaseName);
296Assert.Equal("customers2", db2.Resource.DatabaseName);
298Assert.Equal("{oracle1.connectionString}/customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
299Assert.Equal("{oracle1.connectionString}/customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
313Assert.Equal("imports", db1.Resource.DatabaseName);
314Assert.Equal("imports", db2.Resource.DatabaseName);
316Assert.Equal("{oracle1.connectionString}/imports", db1.Resource.ConnectionStringExpression.ValueExpression);
317Assert.Equal("{oracle2.connectionString}/imports", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.Orleans (7)
Aspire.Hosting.PostgreSQL (9)
Aspire.Hosting.PostgreSQL.Tests (49)
AddPostgresTests.cs (24)
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;
162Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
249var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
250var dbManifest = await ManifestUtils.GetManifest(db.Resource);
293var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
319serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
345serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
483Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString());
490Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString());
493Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString());
500Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString());
561Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), content);
565Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), content);
611Assert.Equal("customers1", db1.Resource.DatabaseName);
612Assert.Equal("customers2", db2.Resource.DatabaseName);
614Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
615Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
629Assert.Equal("imports", db1.Resource.DatabaseName);
630Assert.Equal("imports", db2.Resource.DatabaseName);
632Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
633Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.Python.Tests (3)
Aspire.Hosting.Qdrant (5)
Aspire.Hosting.Qdrant.Tests (20)
Aspire.Hosting.RabbitMQ (5)
Aspire.Hosting.RabbitMQ.Tests (20)
Aspire.Hosting.Redis (5)
Aspire.Hosting.Redis.Tests (62)
RedisFunctionalTests.cs (48)
50await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
56await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
58await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
79await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name);
81var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http");
84var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info";
105[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync()
108hb.AddRedisClient(redis.Resource.Name);
158builder1.Eventing.Subscribe<ResourceReadyEvent>(redisInsightBuilder.Resource, (evt, ct) =>
170using var client1 = app1.CreateHttpClient($"{redis1.Resource.Name}-insight", "http");
175Assert.Equal($"{redis1.Resource.Name}", firstRunDatabases[0].Name);
196builder2.Eventing.Subscribe<ResourceReadyEvent>(redisInsightBuilder.Resource, (evt, ct) =>
207using var client2 = app2.CreateHttpClient($"{redisInsightBuilder.Resource.Name}", "http");
212Assert.Equal($"{redis2.Resource.Name}", secondRunDatabases[0].Name);
223var latestEvent = await app2.ResourceNotifications.WaitForResourceHealthyAsync(redisInsightBuilder.Resource.Name, cts.Token);
247builder.Eventing.Subscribe<ResourceReadyEvent>(redisInsightBuilder.Resource, (evt, ct) =>
259var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http");
270Assert.Equal(redis1.Resource.Name, db.Name);
271Assert.Equal(redis1.Resource.Name, db.Host);
272Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port);
278Assert.Equal(redis2.Resource.Name, db.Name);
279Assert.Equal(redis2.Resource.Name, db.Host);
280Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port);
317[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
320hb.AddRedisClient(redis1.Resource.Name);
353[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
356hb.AddRedisClient(redis2.Resource.Name);
400[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
403hb.AddRedisClient(redis1.Resource.Name);
435[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
438hb.AddRedisClient(redis2.Resource.Name);
484[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
487hb.AddRedisClient(redis1.Resource.Name);
514[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
517hb.AddRedisClient(redis2.Resource.Name);
579builder1.Eventing.Subscribe<ResourceReadyEvent>(redisInsightBuilder1.Resource, (evt, ct) =>
589var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http");
622builder2.Eventing.Subscribe<ResourceReadyEvent>(redisInsightBuilder2.Resource, (evt, ct) =>
632var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http");
734await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
Aspire.Hosting.Seq.Tests (9)
Aspire.Hosting.SqlServer (3)
Aspire.Hosting.SqlServer.Tests (30)
AddSqlServerTests.cs (13)
22Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
32Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
130var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource);
131var dbManifest = await ManifestUtils.GetManifest(db.Resource);
171var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource);
228Assert.Equal("customers1", db1.Resource.DatabaseName);
229Assert.Equal("customers2", db2.Resource.DatabaseName);
231Assert.Equal("{sqlserver1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
232Assert.Equal("{sqlserver1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
246Assert.Equal("imports", db1.Resource.DatabaseName);
247Assert.Equal("imports", db2.Resource.DatabaseName);
249Assert.Equal("{sqlserver1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
250Assert.Equal("{sqlserver2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
SqlServerFunctionalTests.cs (17)
44await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
46await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
50await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
79hb.Configuration[$"ConnectionStrings:{tempDb.Resource.Name}"] = await tempDb.Resource.ConnectionStringExpression.GetValueAsync(default);
81hb.AddSqlServerDbContext<TestDbContext>(tempDb.Resource.Name);
82hb.AddSqlServerClient(tempDb.Resource.Name);
137var password = sqlserver1.Resource.PasswordParameter.Value;
174await app1.ResourceNotifications.WaitForResourceHealthyAsync(masterdb1.Resource.Name, cts.Token);
182[$"ConnectionStrings:{masterdb1.Resource.Name}"] = await masterdb1.Resource.ConnectionStringExpression.GetValueAsync(default),
185hb1.AddSqlServerClient(masterdb1.Resource.Name);
257await app2.ResourceNotifications.WaitForResourceHealthyAsync(masterdb2.Resource.Name, cts.Token);
265[$"ConnectionStrings:{masterdb2.Resource.Name}"] = await masterdb2.Resource.ConnectionStringExpression.GetValueAsync(default),
268hb2.AddSqlServerClient(masterdb2.Resource.Name);
Aspire.Hosting.Testing.Tests (1)
Aspire.Hosting.Tests (215)
DistributedApplicationTests.cs (11)
362using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http");
363using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http");
370var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http");
938var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http");
956var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https");
1004using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1012Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter?.Value}", env.Value);
1019Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter?.Value}", otherRedisEnv.Value);
1054using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1066Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter!.Value}", env.Value);
1073Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter!.Value}", otherRedisEnv.Value);
ExpressionResolverTests.cs (4)
98var csRef = new ConnectionStringReference(target.Resource, false);
110var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
142var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
161var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
Health\ResourceHealthCheckServiceTests.cs (24)
74await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
82await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
117await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
125await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
153builder.Eventing.Subscribe<ResourceReadyEvent>(resource.Resource, (@event, ct) =>
165await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
174Assert.Equal(resource.Resource, e1.Resource);
180await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
188await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
202Assert.Equal(resource.Resource, e2.Resource);
231await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
235await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, abortTokenSource.Token).DefaultTimeout();
272await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
315await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
319await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, abortTokenSource.Token).DefaultTimeout();
382await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
420builder.Eventing.Subscribe<ResourceReadyEvent>(parent.Resource, (@event, ct) =>
445await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
479builder.Eventing.Subscribe<ResourceReadyEvent>(parent.Resource, (@event, ct) =>
491await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
524builder.Eventing.Subscribe<ResourceReadyEvent>(parent.Resource, (@event, ct) =>
530var child = builder.AddResource(new ChildResource("child", parent.Resource));
543await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
557Assert.Equal(parentReadyEvent.Resource, parent.Resource);
Orchestrator\ApplicationOrchestratorTests.cs (24)
25var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
42if (item.Resource == parentResource.Resource)
46else if (item.Resource == childResource.Resource)
58await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, parentResource.Resource, parentResource.Resource.Name));
94if (item.Resource == parent.Resource)
98else if (item.Resource == child.Resource)
103else if (item.Resource == nestedChild.Resource)
107else if (item.Resource == child2.Resource)
119await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, parent.Resource, parent.Resource.Name));
159if (item.Resource == firstParent.Resource)
163else if (item.Resource == secondParent.Resource)
167else if (item.Resource == child.Resource)
179await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, firstParent.Resource, firstParent.Resource.Name));
180await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, secondParent.Resource, secondParent.Resource.Name));
211if (item.Resource == projectA.Resource)
215else if (item.Resource == projectB.Resource)
227await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, projectA.Resource, projectA.Resource.Name));
228await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, projectB.Resource, projectB.Resource.Name));
Orchestrator\RelationshipEvaluatorTests.cs (14)
18var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
19var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource));
20var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource));
34Assert.Collection(parentChildLookup[parentResource.Resource],
35x => Assert.Equal(childResource.Resource, x),
36x => Assert.Equal(childWithAnnotationsResource.Resource, x));
38Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource);
39Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource);
41Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]);
43Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource);
45Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]);
WaitForTests.cs (16)
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);
139await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
245dependency.Resource.Name,
269dependency.Resource.Name,
299await app.ResourceNotifications.WaitForResourceHealthyAsync(dependency.Resource.Name)
454await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
469await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
610await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
624await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
714await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
722await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
730await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
763await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
771await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
WithEnvironmentTests.cs (15)
31container.Resource,
53var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
66var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
82var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
98var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
115var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
130var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource,
147projectA.Resource,
170var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
195.WithEnvironment("HOST", $"{test.Resource};name=1");
197var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
198var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
230var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
254var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout();
260var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
WithReferenceTests.cs (11)
29var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
52var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
77var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
100var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
121var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
172var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
191var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
207var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
223var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
266var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
320var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Aspire.Hosting.Valkey (1)
Aspire.Hosting.Valkey.Tests (22)
Aspire.Playground.Tests (1)
BicepSample.AppHost (1)
KafkaBasic.AppHost (2)
Mongo.AppHost (2)
Stress.AppHost (5)