1 write to Spec
Aspire.Hosting (1)
Dcp\Model\ModelCommon.cs (1)
150
Spec
= spec;
253 references to Spec
Aspire.Hosting (72)
Dcp\DcpExecutor.cs (47)
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))
926
var containerNetworkName = (ctp.DcpResource as ContainerNetworkTunnelProxy)?.
Spec
.ContainerNetworkName;
1049
if (appResource.DcpResource is Container ctr && ctr.
Spec
.Networks is not null)
1052
var containerNetwork = ctr.
Spec
.Networks.FirstOrDefault(n => n.Name == KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value);
1158
network.
Spec
.Persistent = true;
1161
network.
Spec
.NetworkName = $"{DefaultAspirePersistentNetworkName}-{_nameGenerator.GetProjectHashSuffix()}";
1165
network.
Spec
.NetworkName = $"{DefaultAspireNetworkName}-{DcpNameGenerator.GetRandomNameSuffix()}";
1171
network.
Spec
.NetworkName += $"-{shortApplicationName}"; // Limit to 32 characters to avoid exceeding resource name length limits.
1217
svc.
Spec
.Port = port;
1218
svc.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
1221
svc.
Spec
.Address = KnownHostNames.Localhost;
1225
svc.
Spec
.Address = endpoint.TargetHost;
1230
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1283
tunnelProxy.
Spec
.ContainerNetworkName = KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value;
1284
tunnelProxy.
Spec
.Aliases = [ContainerHostName];
1285
tunnelProxy.
Spec
.Tunnels = [];
1319
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1320
svc.
Spec
.Protocol = PortProtocol.TCP;
1345
tunnelProxy?.
Spec
?.Tunnels?.Add(tunnelConfig);
1350
svc.Annotate(CustomResource.ContainerNetworkAnnotation, tunnelProxy?.
Spec
?.ContainerNetworkName ?? KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value);
1417
exe.
Spec
.WorkingDirectory = executable.WorkingDirectory;
1426
exe.
Spec
.ExecutionType = ExecutionType.IDE;
1427
exe.
Spec
.FallbackExecutionTypes = [ ExecutionType.Process ];
1431
exe.
Spec
.ExecutionType = ExecutionType.Process;
1461
exe.
Spec
.WorkingDirectory = Path.GetDirectoryName(projectMetadata.ProjectPath);
1475
exe.
Spec
.ExecutionType = ExecutionType.IDE;
1476
exe.
Spec
.FallbackExecutionTypes = [ ExecutionType.Process ];
1500
exe.
Spec
.ExecutionType = ExecutionType.Process;
1711
var spec = containerExe.
Spec
;
1735
var spec = exe.
Spec
;
1821
exe.
Spec
.PemCertificates = pemCertificates;
1894
exe.
Spec
.ExecutionType = ExecutionType.Process;
1984
ctr.
Spec
.ContainerName = containerObjectInstance.Name; // Use the same name for container orchestrator (Docker, Podman) resource and DCP object name.
1988
ctr.
Spec
.Persistent = true;
1993
ctr.
Spec
.PullPolicy = pullPolicy switch
2014
ctr.
Spec
.Networks = new List<ContainerNetworkConnection>
2104
container.
Spec
.Start = false;
2139
var spec = dcpContainerResource.
Spec
;
2394
dcpContainerResource.
Spec
.Build = new()
2435
dcpContainerResource.
Spec
.Build = new()
2576
patch = CreatePatch(c, obj => obj.
Spec
.Stop = true);
2591
patch = CreatePatch(e, obj => obj.
Spec
.Stop = true);
2654
c.
Spec
.Start = true;
3110
var persistentTunnelDependent = tunnelDependent.Where(td => td.DcpResource is Container c && c.
Spec
.Persistent is true);
3121
.Where(ar => ar.DcpResource is ContainerExec ce && regular.Any(td => td.DcpResource is Container c && c.Metadata.Name == ce.
Spec
.ContainerName)),
3123
.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 (169)
Dcp\DcpExecutorTests.cs (84)
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);
1529
Assert.NotNull(exe.
Spec
.Env);
1530
var effectiveLaunchProfileEnv = exe.
Spec
.Env.SingleOrDefault(v => v.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
1561
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
1592
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
1623
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
1653
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
1728
Assert.Equal(ExecutionType.IDE, debuggableExe.
Spec
.ExecutionType);
1735
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
1772
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1809
Assert.Equal(ExecutionType.Process, debuggableExe.
Spec
.ExecutionType);
1813
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
1850
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1886
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1928
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
1970
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
2012
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2049
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2086
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2129
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2157
Assert.NotNull(container.
Spec
.Networks);
2158
var network = Assert.Single(container.
Spec
.Networks);
2209
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
2284
var exePortEnvVal = dcpContainer.
Spec
?.Env?.Where(e => e.Name == $"EXE_{endpointName.ToUpper()}_PORT").Single().Value;
2386
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
2434
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
2490
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
2538
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
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);