1 write to Spec
Aspire.Hosting (1)
Dcp\Model\ModelCommon.cs (1)
150
Spec
= spec;
248 references to Spec
Aspire.Hosting (71)
Dcp\DcpExecutor.cs (46)
191
.Where(sr => !sr.HasCompleteAddress && sr.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless);
623
if (container.
Spec
.Start == false && (container.Status?.State == null || container.Status?.State == ContainerState.Pending))
921
var containerNetworkName = (ctp.DcpResource as ContainerNetworkTunnelProxy)?.
Spec
.ContainerNetworkName;
1044
if (appResource.DcpResource is Container ctr && ctr.
Spec
.Networks is not null)
1047
var containerNetwork = ctr.
Spec
.Networks.FirstOrDefault(n => n.Name == KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value);
1153
network.
Spec
.Persistent = true;
1156
network.
Spec
.NetworkName = $"{DefaultAspirePersistentNetworkName}-{_nameGenerator.GetProjectHashSuffix()}";
1160
network.
Spec
.NetworkName = $"{DefaultAspireNetworkName}-{DcpNameGenerator.GetRandomNameSuffix()}";
1166
network.
Spec
.NetworkName += $"-{shortApplicationName}"; // Limit to 32 characters to avoid exceeding resource name length limits.
1212
svc.
Spec
.Port = port;
1213
svc.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
1216
svc.
Spec
.Address = KnownHostNames.Localhost;
1220
svc.
Spec
.Address = endpoint.TargetHost;
1225
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1278
tunnelProxy.
Spec
.ContainerNetworkName = KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value;
1279
tunnelProxy.
Spec
.Aliases = [ContainerHostName];
1280
tunnelProxy.
Spec
.Tunnels = [];
1314
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1315
svc.
Spec
.Protocol = PortProtocol.TCP;
1340
tunnelProxy?.
Spec
?.Tunnels?.Add(tunnelConfig);
1345
svc.Annotate(CustomResource.ContainerNetworkAnnotation, tunnelProxy?.
Spec
?.ContainerNetworkName ?? KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value);
1412
exe.
Spec
.WorkingDirectory = executable.WorkingDirectory;
1419
exe.
Spec
.ExecutionType = ExecutionType.IDE;
1420
exe.
Spec
.FallbackExecutionTypes = [ExecutionType.Process];
1425
exe.
Spec
.ExecutionType = ExecutionType.Process;
1455
exe.
Spec
.WorkingDirectory = Path.GetDirectoryName(projectMetadata.ProjectPath);
1472
exe.
Spec
.ExecutionType = ExecutionType.IDE;
1473
exe.
Spec
.FallbackExecutionTypes = [ExecutionType.Process];
1484
exe.
Spec
.ExecutionType = ExecutionType.Process;
1691
var spec = containerExe.
Spec
;
1715
var spec = exe.
Spec
;
1786
exe.
Spec
.PemCertificates = pemCertificates;
1927
ctr.
Spec
.ContainerName = containerObjectInstance.Name; // Use the same name for container orchestrator (Docker, Podman) resource and DCP object name.
1931
ctr.
Spec
.Persistent = true;
1936
ctr.
Spec
.PullPolicy = pullPolicy switch
1957
ctr.
Spec
.Networks = new List<ContainerNetworkConnection>
2047
container.
Spec
.Start = false;
2082
var spec = dcpContainerResource.
Spec
;
2304
dcpContainerResource.
Spec
.Build = new()
2345
dcpContainerResource.
Spec
.Build = new()
2486
patch = CreatePatch(c, obj => obj.
Spec
.Stop = true);
2501
patch = CreatePatch(e, obj => obj.
Spec
.Stop = true);
2564
c.
Spec
.Start = true;
3020
var persistentTunnelDependent = tunnelDependent.Where(td => td.DcpResource is Container c && c.
Spec
.Persistent is true);
3031
.Where(ar => ar.DcpResource is ContainerExec ce && regular.Any(td => td.DcpResource is Container c && c.Metadata.Name == ce.
Spec
.ContainerName)),
3033
.Where(ar => ar.DcpResource is ContainerExec ce && tunnelDependent.Any(td => td.DcpResource is Container c && c.Metadata.Name == ce.
Spec
.ContainerName))
Dcp\Model\ExecutableReplicaSet.cs (1)
109
ers.
Spec
.Template.Spec.ExecutablePath = executablePath;
Dcp\Model\Service.cs (6)
89
public int? AllocatedPort =>
Spec
.Port ?? Status?.EffectivePort;
90
public string? AllocatedAddress =>
Spec
.Address ?? Status?.EffectiveAddress;
97
Spec
.Port = other.
Spec
.Port;
98
Spec
.Address = other.
Spec
.Address;
Dcp\ResourceSnapshotBuilder.cs (18)
26
var environment = GetEnvironmentVariables(container.Status?.EffectiveEnv ?? container.
Spec
.Env, container.
Spec
.Env);
29
if (container.
Spec
.Start is false && (state == null || state == ContainerState.Pending))
52
new(KnownProperties.Container.Image, container.
Spec
.Image),
54
new(KnownProperties.Container.Command, container.
Spec
.Command),
72
if (container.
Spec
.Ports is null)
78
foreach (var port in container.
Spec
.Ports)
90
return (container.
Spec
.Persistent ?? false) ? ContainerLifetime.Persistent : ContainerLifetime.Session;
100
var environment = GetEnvironmentVariables(executable.Status?.EffectiveEnv, executable.
Spec
.Env);
115
new(KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
148
var environment = GetEnvironmentVariables(executable.Status?.EffectiveEnv, executable.
Spec
.Env);
166
new(KnownProperties.Executable.Path, executable.
Spec
.ExecutablePath),
167
new(KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
190
new(KnownProperties.Executable.Path, executable.
Spec
.ExecutablePath),
191
new(KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
267
e.Value.
Spec
.ServiceName == serviceName
299
var isActive = _resourceState.EndpointsMap.Any(e => e.Value.
Spec
.ServiceName == endpointOwnerEndpoint?.Metadata.Name);
328
return container.
Spec
.VolumeMounts?.Select(v => new VolumeSnapshot(v.Source, v.Target ?? "", v.Type, v.IsReadOnly)).ToImmutableArray() ?? [];
Aspire.Hosting.Containers.Tests (12)
WithDockerfileTests.cs (12)
213
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
214
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
245
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
246
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
473
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
474
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
475
Assert.Null(container!.
Spec
!.Build!.Stage);
477
container!.
Spec
!.Build!.Args!,
543
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
544
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
545
Assert.Null(container!.
Spec
!.Build!.Stage);
547
container!.
Spec
!.Build!.Args!,
Aspire.Hosting.Tests (165)
Dcp\DcpExecutorTests.cs (80)
162
var callArgs = executionType == ExecutionType.IDE ? exe.
Spec
.Args : exe.
Spec
.Args![^(expectedArgs?.Length ?? 0)..];
199
Assert.Equal(callArgs, exe.
Spec
.Args);
239
var callCount1 = exe1.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
242
Assert.Single(exe1.
Spec
.Args!, a => a == "--no-build");
243
Assert.Single(exe1.
Spec
.Args!, a => a == "--test");
257
var callCount2 = exe2.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
260
Assert.Single(exe2.
Spec
.Args!, a => a == "--no-build");
261
Assert.Single(exe2.
Spec
.Args!, a => a == "--test");
288
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
292
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
320
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
324
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
352
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
356
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
385
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
389
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
441
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
445
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
475
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
479
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
509
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
513
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
914
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
918
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
923
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == "ASPNETCORE_URLS").Value;
959
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
963
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
992
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
994
Assert.NotNull(dcpCtr.
Spec
.Ports);
995
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
998
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1027
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1029
Assert.NotNull(dcpCtr.
Spec
.Ports);
1030
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
1033
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1107
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1109
Assert.NotNull(dcpCtr.
Spec
.Ports);
1110
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredPort);
1113
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1143
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1145
Assert.NotNull(dcpCtr.
Spec
.Ports);
1146
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredTargetPort && p.ContainerPort == desiredTargetPort);
1149
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1180
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1182
Assert.NotNull(dcpCtr.
Spec
.Ports);
1183
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
1186
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1217
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1219
Assert.NotNull(dcpCtr.
Spec
.Ports);
1220
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort && p.Protocol == "UDP");
1223
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_PROTOCOL_SET").Value;
1306
Assert.Null(implicitDefaultContainer.
Spec
.PullPolicy);
1309
Assert.Null(explicitDefaultContainer.
Spec
.PullPolicy);
1312
Assert.Equal(ContainerPullPolicy.Always, explicitAlwaysContainer.
Spec
.PullPolicy);
1315
Assert.Equal(ContainerPullPolicy.Missing, explicitMissingContainer.
Spec
.PullPolicy);
1318
Assert.Equal(ContainerPullPolicy.Never, explicitNeverContainer.
Spec
.PullPolicy);
1496
Assert.NotNull(exe.
Spec
.Env);
1497
var effectiveLaunchProfileEnv = exe.
Spec
.Env.SingleOrDefault(v => v.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
1528
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
1559
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
1590
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
1620
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
1695
Assert.Equal(ExecutionType.IDE, debuggableExe.
Spec
.ExecutionType);
1702
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
1739
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1776
Assert.Equal(ExecutionType.Process, debuggableExe.
Spec
.ExecutionType);
1780
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
1817
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1853
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1895
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1937
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1979
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2016
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2053
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2096
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2124
Assert.NotNull(container.
Spec
.Networks);
2125
var network = Assert.Single(container.
Spec
.Networks);
2176
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
2251
var exePortEnvVal = dcpContainer.
Spec
?.Env?.Where(e => e.Name == $"EXE_{endpointName.ToUpper()}_PORT").Single().Value;
Dcp\TestKubernetesService.cs (6)
77
svc.Status.EffectiveAddress = svc.
Spec
.Address ?? "localhost";
78
svc.Status.EffectivePort = svc.
Spec
.Port ?? Interlocked.Increment(ref _nextPort);
202
if (eu.
Spec
.Stop == true)
204
exe.
Spec
.Stop = true;
215
if (cu.
Spec
.Stop == true)
217
ctr.
Spec
.Stop = true;
DistributedApplicationTests.cs (79)
694
Assert.Equal(RedisImageSource, item.
Spec
.Image);
695
Assert.Equal(["redis-cli", "-h", "host.docker.internal", "-p", "9999", "MONITOR"], item.
Spec
.Args);
696
Assert.Equal(["--add-host", "testlocalhost:127.0.0.1"], item.
Spec
.RunArgs);
751
Assert.Equal(RedisImageSource, item.
Spec
.Image);
761
item.
Spec
.CreateFiles);
794
Assert.NotNull(redisContainer.
Spec
.Args);
795
Assert.Equal(2, redisContainer.
Spec
.Args.Count);
797
Assert.Equal("-c", redisContainer.
Spec
.Args[0]);
798
Assert.Contains("--tls-cert-file", redisContainer.
Spec
.Args[1]);
799
Assert.Contains("--tls-key-file", redisContainer.
Spec
.Args[1]);
800
Assert.Contains("--tls-auth-clients", redisContainer.
Spec
.Args[1]);
801
Assert.Contains("--tls-port", redisContainer.
Spec
.Args[1]);
802
Assert.Contains("--port", redisContainer.
Spec
.Args[1]);
805
Assert.NotNull(redisContainer.
Spec
.Ports);
806
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6380);
807
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6379);
870
Assert.Equal(RedisImageSource, item.
Spec
.Image);
874
Assert.NotNull(item.
Spec
.Env);
877
Assert.DoesNotContain(item.
Spec
.Env, e => e.Name == "SSL_CERT_FILE");
881
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_FILE"),
889
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_DIR"),
907
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
913
var foundCert = Assert.Single(item.
Spec
?.PemCertificates?.Certificates ?? [], c => string.Equals(c.Thumbprint, cert.Thumbprint, StringComparison.Ordinal));
922
Assert.Equal(expectedDefaultBundleFiles.Count, item.
Spec
?.PemCertificates?.OverwriteBundlePaths?.Count ?? 0);
925
Assert.Contains(bundlePath, item.
Spec
?.PemCertificates?.OverwriteBundlePaths ?? []);
931
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1000
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1003
Assert.NotNull(redisContainer.
Spec
.Env);
1006
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1007
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "CALLBACK_ADDED_VAR" && e.Value == "CallbackValue");
1008
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}_AppendedInCallback");
1040
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1043
Assert.NotNull(redisContainer.
Spec
.Env);
1046
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1047
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}");
1169
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1170
Assert.Equal("6379", GetEnv(redisContainer.
Spec
.Env, "REDIS_PORT"));
1173
Assert.Equal($"{{{{- portForServing \"{testName}-servicea-http0-{suffix}\" -}}}}", GetEnv(serviceA.
Spec
.Env, "PORT0"));
1178
Assert.Equal($"{{{{- portForServing \"{testName}-nodeapp-{suffix}\" -}}}}", GetEnv(nodeApp.
Spec
.Env, "PORT"));
1244
Assert.Equal("BrowserToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1245
Assert.Equal("ThisIsATestToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__BROWSERTOKEN"));
1247
Assert.Equal("ApiKey", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1248
var keyBytes = Convert.FromHexString(GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__PRIMARYAPIKEY")!);
1281
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1282
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1314
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1315
Assert.Equal("bob", redisContainer.
Spec
.Command);
1340
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1342
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1343
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1344
Assert.Equal(sourcePath, redisContainer.
Spec
.VolumeMounts[0].Source);
1368
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1370
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1371
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1372
Assert.NotEqual("etc/path-here", redisContainer.
Spec
.VolumeMounts[0].Source);
1373
Assert.True(Path.IsPathRooted(redisContainer.
Spec
.VolumeMounts[0].Source));
1397
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1399
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1400
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1401
Assert.Equal($"{testName}-volume", redisContainer.
Spec
.VolumeMounts[0].Source);
1642
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1652
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1653
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1657
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1660
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1668
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1669
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == 6379);
1673
Assert.Equal(6379, Assert.Single(otherRedisContainer.
Spec
.Ports!).HostPort);
1710
Assert.All(serviceList.Where(s => s.Metadata.Name.Contains("redis")), s => Assert.Equal(AddressAllocationModes.Proxyless, s.
Spec
.AddressAllocationMode));
1715
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1725
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1726
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1730
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1733
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1742
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1743
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == 6379);
1747
Assert.Equal(6379, Assert.Single(otherRedisContainer.
Spec
.Ports!).HostPort);
1797
Assert.Single(networks, n => n.
Spec
.Persistent == true);
1801
Assert.Single(networks, n => n.
Spec
.Persistent.GetValueOrDefault(false) == false);