2 writes to Spec
Aspire.Hosting (1)
Dcp\Model\ModelCommon.cs (1)
149
Spec
= spec;
Aspire.Hosting.Tests (1)
Dcp\TestKubernetesService.cs (1)
413
proxy.
Spec
= updatedProxy.Spec;
598 references to Spec
Aspire.Hosting (78)
Dcp\ContainerCreator.cs (22)
117
network.
Spec
.Persistent = true;
118
network.
Spec
.NetworkName = $"{DcpExecutor.DefaultAspirePersistentNetworkName}-{_nameGenerator.GetProjectHashSuffix()}";
122
network.
Spec
.NetworkName = $"{DcpExecutor.DefaultAspireNetworkName}-{DcpNameGenerator.GetRandomNameSuffix()}";
128
network.
Spec
.NetworkName += $"-{shortApplicationName}";
153
ctr.
Spec
.ContainerName = containerObjectInstance.Name;
157
ctr.
Spec
.Persistent = true;
158
ApplyMonitorProcess(container, ctr.
Spec
);
163
ctr.
Spec
.PullPolicy = pullPolicy switch
184
ctr.
Spec
.Networks = new List<ContainerNetworkConnection>
198
ctr.
Spec
.Start = false;
254
return !DcpModelUtilities.ShouldDeferCreateForExplicitStart(resource.ModelResource, resource.DcpResource.
Spec
.Start);
307
var spec = dcpContainer.
Spec
;
395
var containerExes = _appResources.Get().OfType<RenderedModelResource<ContainerExec>>().Where(ar => ar.DcpResource.
Spec
.ContainerName == dcpContainer.Metadata.Name).ToArray();
438
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
439
svc.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
485
tunnelProxy.
Spec
.ContainerNetworkName = KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value;
486
tunnelProxy.
Spec
.Aliases = [await GetContainerHostNameAsync(cancellationToken).ConfigureAwait(false)];
487
tunnelProxy.
Spec
.Tunnels = tunnels;
564
p => p.
Spec
.Tunnels = _tunnelConfigurations.ToList(),
972
dcpContainerResource.
Spec
.Build = new()
990
dcpContainerResource.
Spec
.Build.Platform = ToDcpPlatformString(targetPlatform);
1034
sp.Service.
Spec
.Port ??= hostPort;
Dcp\DcpExecutor.cs (18)
202
.Where(sr => !sr.HasCompleteAddress && sr.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless);
698
svc.
Spec
.Port = fixedPublicPort;
701
svc.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
704
svc.
Spec
.Address = KnownHostNames.Localhost;
708
svc.
Spec
.Address = endpoint.TargetHost;
713
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1067
Container {
Spec
.Start: false } => true,
1068
Executable {
Spec
.Start: false } => true,
1147
patch = CreatePatch(c, obj => obj.
Spec
.Stop = true);
1162
patch = CreatePatch(e, obj => obj.
Spec
.Stop = true);
1217
case RenderedModelResource<Container> { DcpResource.
Spec
.Start: false } cr when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(cr.ModelResource, cr.DcpResource.
Spec
.Start):
1220
await PatchDcpObjectAsync(cr.DcpResource, static c => c.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1223
case RenderedModelResource<Executable> { DcpResource.
Spec
.Start: false } er when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(er.ModelResource, er.DcpResource.
Spec
.Start):
1226
await PatchDcpObjectAsync(er.DcpResource, static e => e.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1233
cr.DcpResource.
Spec
.Start = true;
1245
er.DcpResource.
Spec
.Start = true;
Dcp\DcpModelUtilities.cs (2)
220
if (resource.DcpResource is not Container ctr || ctr.
Spec
.Networks is null)
226
var containerNetwork = ctr.
Spec
.Networks.FirstOrDefault(n => n.Name == KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value);
Dcp\DcpResourceWatcher.cs (2)
503
if (container.
Spec
.Start == false && (container.Status?.State == null || container.Status?.State == ContainerState.Pending))
513
if (executable.
Spec
.Start == false && IsNotStartedExecutableState(executable.Status?.State))
Dcp\ExecutableCreator.cs (8)
47
resource.DcpResource.
Spec
.Start);
166
var spec = executable.
Spec
;
221
executable.
Spec
.WorkingDirectory =
226
ApplyExplicitStart(project, executable.
Spec
);
241
executable.
Spec
.WorkingDirectory = resource.WorkingDirectory;
244
ApplyExplicitStart(resource, executable.
Spec
);
293
executable.
Spec
.Terminal = null;
304
executable.
Spec
.Terminal = new TerminalSpec
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 (19)
30
var environment = GetEnvironmentVariables(container.Status?.EffectiveEnv ?? container.
Spec
.Env, container.
Spec
.Env);
33
if (container.
Spec
.Start is false && (state == null || state == ContainerState.Pending))
56
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Container, KnownProperties.Container.Image, container.
Spec
.Image),
58
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Container, KnownProperties.Container.Command, container.
Spec
.Command),
76
if (container.
Spec
.Ports is null)
82
foreach (var port in container.
Spec
.Ports)
94
return (container.
Spec
.Persistent ?? false) ? ContainerLifetime.Persistent : ContainerLifetime.Session;
104
var environment = GetEnvironmentVariables(executable.Status?.EffectiveEnv, executable.
Spec
.Env);
120
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Executable, KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
156
if (executable.
Spec
.Start is false && IsNotStartedExecutableState(state))
164
var environment = GetEnvironmentVariables(executable.Status?.EffectiveEnv, executable.
Spec
.Env);
185
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Project, KnownProperties.Executable.Path, executable.
Spec
.ExecutablePath),
186
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Project, KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
209
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Executable, KnownProperties.Executable.Path, executable.
Spec
.ExecutablePath),
210
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Executable, KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
318
e.Value.
Spec
.ServiceName == serviceName
352
var isActive = _resourceState.EndpointsMap.Any(e => e.Value.
Spec
.ServiceName == endpointOwnerEndpoint?.Metadata.Name);
385
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)
220
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
221
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
253
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
254
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
490
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
491
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
492
Assert.Null(container!.
Spec
!.Build!.Stage);
494
container!.
Spec
!.Build!.Args!,
561
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
562
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
563
Assert.Null(container!.
Spec
!.Build!.Stage);
565
container!.
Spec
!.Build!.Args!,
Aspire.Hosting.Tests (508)
Dcp\DcpExecutorTests.cs (377)
89
Assert.NotNull(container.
Spec
.Build);
90
Assert.Equal("linux/arm64", container.
Spec
.Build!.Platform);
111
Assert.NotNull(container.
Spec
.Build);
112
Assert.Null(container.
Spec
.Build!.Platform);
225
var callArgs = executionType == ExecutionType.IDE ? exe.
Spec
.Args : exe.
Spec
.Args![^(expectedArgs?.Length ?? 0)..];
230
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
263
Assert.Equal(callArgs, exe.
Spec
.Args);
267
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
311
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
312
Assert.Equal(["app-arg"], exe.
Spec
.Args);
313
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
321
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
351
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
352
Assert.Equal(["custom", "exec", "--", "prepended-arg", "app-arg"], exe.
Spec
.Args);
360
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
388
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
390
var effectiveArgs = exe.
Spec
.Args!.ToList();
434
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
436
var effectiveArgs = container.
Spec
.Args!.ToList();
584
var callCount1 = exe1.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
587
Assert.Single(exe1.
Spec
.Args!, a => a == "--no-build");
588
Assert.Single(exe1.
Spec
.Args!, a => a == "--test");
591
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations1, exe1.
Spec
.Args);
604
var callCount2 = exe2.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
607
Assert.Single(exe2.
Spec
.Args!, a => a == "--no-build");
608
Assert.Single(exe2.
Spec
.Args!, a => a == "--test");
611
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations2, exe2.
Spec
.Args);
637
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
641
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
669
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
673
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
701
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
705
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
734
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
738
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
785
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
789
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
814
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
818
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "EQUAL_PORT_AND_TARGET_PORT").Value;
849
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
853
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
885
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
886
Assert.Null(svc.
Spec
.Port);
891
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
923
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
927
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
954
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
958
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
985
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
987
Assert.Equal(desiredPort, svc.
Spec
.Port);
990
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1017
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1021
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1045
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1047
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1050
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1166
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
1168
var envVarVal = dynamicExecutable.
Spec
.Env?.Single(v => v.Name == "DYNAMIC_PORT").Value;
1205
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1244
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1246
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1247
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1320
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), firstExecutable.
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1329
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), executables[1].
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1358
Assert.Contains(firstContainer.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1367
Assert.Contains(containers[1].
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1406
Assert.Equal(persistedPort, persistentService.
Spec
.Port);
1408
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
3394
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3398
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
3403
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
3439
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3443
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
3472
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3476
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
3509
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3513
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
3547
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3548
Assert.Null(svc.
Spec
.Port);
3553
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
3580
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3582
Assert.NotNull(dcpCtr.
Spec
.Ports);
3583
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
3586
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
3615
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3617
Assert.NotNull(dcpCtr.
Spec
.Ports);
3618
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
3621
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
3698
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3700
Assert.NotNull(dcpCtr.
Spec
.Ports);
3701
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredPort);
3704
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
3729
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3730
Assert.Equal(allocatedPort, svc.
Spec
.Port);
3732
Assert.NotNull(dcpCtr.
Spec
.Ports);
3733
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
3736
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
3801
Assert.NotNull(dcpCtr.
Spec
.Ports);
3802
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
3804
Assert.Equal(allocatedPort, svc.
Spec
.Port);
3849
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3851
Assert.Equal(allocatedPort, svc.
Spec
.Port);
3853
Assert.NotNull(dcpCtr.
Spec
.Ports);
3854
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
3855
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT").Value;
3858
var secondEnvVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT_AGAIN").Value;
3882
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3884
Assert.Equal(allocatedPort, svc.
Spec
.Port);
3886
Assert.NotNull(dcpCtr.
Spec
.Ports);
3887
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
3888
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_HOST_AND_PORT").Value;
3932
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3933
Assert.Equal(allocatedPort, svc.
Spec
.Port);
3935
Assert.NotNull(dcpCtr.
Spec
.Ports);
3936
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
3974
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
3975
Assert.Equal(allocatedPort, svc.
Spec
.Port);
3977
Assert.NotNull(dcpCtr.
Spec
.Ports);
3978
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4039
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4041
Assert.NotNull(dcpCtr.
Spec
.Ports);
4042
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
4045
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4071
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4073
Assert.NotNull(dcpCtr.
Spec
.Ports);
4074
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
4077
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4105
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4107
Assert.NotNull(dcpCtr.
Spec
.Ports);
4108
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort && p.Protocol == "UDP");
4111
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_PROTOCOL_SET").Value;
4194
Assert.Null(implicitDefaultContainer.
Spec
.PullPolicy);
4197
Assert.Null(explicitDefaultContainer.
Spec
.PullPolicy);
4200
Assert.Equal(ContainerPullPolicy.Always, explicitAlwaysContainer.
Spec
.PullPolicy);
4203
Assert.Equal(ContainerPullPolicy.Missing, explicitMissingContainer.
Spec
.PullPolicy);
4206
Assert.Equal(ContainerPullPolicy.Never, explicitNeverContainer.
Spec
.PullPolicy);
4430
Assert.NotNull(exe.
Spec
.Env);
4431
var effectiveLaunchProfileEnv = exe.
Spec
.Env.SingleOrDefault(v => v.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
4462
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
4493
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
4524
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
4554
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
4645
var debugValue = Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "DEBUG_VALUE").Value;
4649
Assert.Equal(["app-arg"], executable.
Spec
.Args);
4696
Assert.Equal(ExecutionType.IDE, debuggableExe.
Spec
.ExecutionType);
4697
Assert.Null(debuggableExe.
Spec
.FallbackExecutionTypes);
4704
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
4738
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
4739
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
4740
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
4768
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
4769
Assert.Equal(expectedArgs, exe.
Spec
.Args);
4772
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
4805
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
4806
Assert.Equal(expectedArgs, exe.
Spec
.Args);
4809
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
4829
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
4830
AssertDefaultProjectProcessArgs(exe.
Spec
.Args, "app-arg");
4872
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
4873
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
4912
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
4913
Assert.Equal(["app-arg"], exe.
Spec
.Args);
4914
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
4956
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
4957
Assert.Equal(["app-arg"], exe.
Spec
.Args);
4958
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5000
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5001
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
5005
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
5086
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5087
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5119
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
5120
Assert.Null(container.
Spec
.MonitorPid);
5121
Assert.Null(container.
Spec
.MonitorTimestamp);
5129
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
5130
Assert.Null(exe.
Spec
.MonitorPid);
5131
Assert.Null(exe.
Spec
.MonitorTimestamp);
5132
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5272
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
5273
Assert.Equal(parentProcessIdentity.ProcessId, container.
Spec
.MonitorPid);
5274
Assert.NotNull(container.
Spec
.MonitorTimestamp);
5275
Assert.Equal(parentProcessIdentity.Timestamp, container.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
5283
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
5284
Assert.Equal(parentProcessIdentity.ProcessId, exe.
Spec
.MonitorPid);
5285
Assert.NotNull(exe.
Spec
.MonitorTimestamp);
5286
Assert.Equal(parentProcessIdentity.Timestamp, exe.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
5287
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5324
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
5325
var sslCertFile = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_FILE").Value;
5424
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
5523
Assert.True(exe.
Spec
.Start);
5604
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5641
Assert.Equal(ExecutionType.Process, debuggableExe.
Spec
.ExecutionType);
5645
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
5682
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5718
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5760
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5802
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5844
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5877
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5917
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5919
Assert.NotNull(exe.
Spec
.Args);
5920
Assert.Contains("launch-tool-arg", exe.
Spec
.Args);
5921
Assert.NotNull(exe.
Spec
.Terminal);
5957
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5990
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6029
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6070
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6105
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6106
Assert.Null(exe.
Spec
.Args);
6107
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6153
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6212
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6213
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6214
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6223
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6264
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6265
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6266
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6275
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6309
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6310
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6311
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6320
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6380
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6381
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6382
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6383
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6391
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6484
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
6499
Assert.Equal(expectedArgs, executable.
Spec
.Args);
6628
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
6645
Assert.Equal(expectedArgs, executable.
Spec
.Args);
6711
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6712
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
6713
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6718
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
6801
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6802
Assert.Equal(dotnetCommand, exe.
Spec
.ExecutablePath);
6826
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6827
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6848
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
6916
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6918
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6919
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6923
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
6969
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6970
Assert.Equal(resourceArgs, exe.
Spec
.Args);
6971
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7034
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7035
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7061
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7103
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7142
Assert.Equal(ExecutionType.IDE, standardExe.
Spec
.ExecutionType);
7145
Assert.Equal(ExecutionType.IDE, customExe.
Spec
.ExecutionType);
7146
Assert.Null(customExe.
Spec
.Args);
7147
Assert.Null(customExe.
Spec
.FallbackExecutionTypes);
7201
Assert.Equal(ExecutionType.Process, standardExe.
Spec
.ExecutionType);
7205
Assert.Equal(ExecutionType.IDE, functionsExe.
Spec
.ExecutionType);
7240
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7241
Assert.Equal(["app-arg"], exe.
Spec
.Args);
7242
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7270
Assert.NotNull(container.
Spec
.Networks);
7271
var network = Assert.Single(container.
Spec
.Networks);
7321
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7322
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7352
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7355
Assert.Null(exe.
Spec
.Args);
7356
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7400
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7441
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7522
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7523
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7526
exe.
Spec
.Args!,
7562
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7564
exe.
Spec
.Args!,
7573
Assert.DoesNotContain("--no-launch-profile", exe.
Spec
.Args!);
7599
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7601
exe.
Spec
.Args!,
7634
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7636
exe.
Spec
.Args!,
7670
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7672
exe.
Spec
.Args!,
7689
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7721
Assert.True(exe.
Spec
.Persistent);
7722
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7725
exe.
Spec
.Args!,
7758
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7793
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7794
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7800
Assert.Null(exe.
Spec
.Args);
7833
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7834
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7867
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7868
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7931
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7963
Assert.True(exe.
Spec
.Persistent);
7964
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8057
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8058
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8059
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8112
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8113
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8114
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8163
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8164
Assert.Equal(["certificate-arg", "app-arg"], exe.
Spec
.Args);
8165
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8216
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8217
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8218
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8249
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8250
Assert.Equal(["tool", "exec", "app-arg"], exe.
Spec
.Args);
8293
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8294
Assert.Equal(["run", "app-arg"], exe.
Spec
.Args);
8295
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8388
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8424
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8425
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8426
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8461
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8462
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8463
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8655
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
8665
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
8674
Assert.Null(exe3.
Spec
.FallbackExecutionTypes);
8717
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
8718
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
8728
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
8729
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
8736
Assert.Equal(ExecutionType.IDE, exe2.
Spec
.ExecutionType);
8737
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
8888
var exePortEnvVal = dcpContainer.
Spec
?.Env?.Where(e => e.Name == $"EXE_{endpointName.ToUpper()}_PORT").Single().Value;
8951
Assert.NotNull(dcpContainer.
Spec
.Env);
8952
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
8998
Assert.NotNull(dcpContainer.
Spec
.Env);
8999
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
9112
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
9152
var startedExecutable = Assert.Single(GetCreatedExecutablesForResource(kubernetesService, "anExecutable"), e => e.
Spec
.Start == true);
9153
Assert.Contains("--deferred", startedExecutable.
Spec
.Args!);
9154
Assert.Contains(startedExecutable.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
9157
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedExecutable.
Spec
.Args);
9197
var startedContainer = Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == "aContainer" && c.
Spec
.Start == true);
9198
Assert.Contains("--deferred", startedContainer.
Spec
.Args!);
9199
Assert.Contains(startedContainer.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
9202
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedContainer.
Spec
.Args);
9243
Assert.False(executable.
Spec
.Start);
9244
Assert.True(executable.
Spec
.Persistent);
9245
Assert.Contains("--persistent", executable.
Spec
.Args!);
9246
Assert.Contains(executable.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
9255
Assert.True(executable.
Spec
.Start);
9296
Assert.False(container.
Spec
.Start);
9297
Assert.True(container.
Spec
.Persistent);
9298
Assert.Contains("--persistent", container.
Spec
.Args!);
9299
Assert.Contains(container.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
9308
Assert.True(container.
Spec
.Start);
9447
Assert.NotNull(waitingConsumingContainer.
Spec
.Env);
9448
var executableBPort = Assert.Single(waitingConsumingContainer.
Spec
.Env, e => e.Name == "EXEC_B_PORT").Value;
9452
Assert.Equal(2, tunnelProxy.
Spec
.Tunnels?.Count);
9519
Assert.NotNull(tunnelDependentDcpContainer.
Spec
.Env);
9520
var upstreamPort = Assert.Single(tunnelDependentDcpContainer.
Spec
.Env, e => e.Name == "UPSTREAM_PORT").Value;
9524
Assert.Equal(1, tunnelProxy.
Spec
.Tunnels?.Count);
9720
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9812
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9879
var spec = exes[i].
Spec
.Terminal;
9904
Assert.Null(exe.
Spec
.Terminal);
9941
Assert.NotNull(exe.
Spec
.Terminal);
9942
Assert.Equal(host.Layout.ProducerUdsPath, exe.
Spec
.Terminal!.UdsPath);
9943
Assert.Equal(100, exe.
Spec
.Terminal.Cols);
9944
Assert.Equal(30, exe.
Spec
.Terminal.Rows);
9947
Assert.Equal("connect", exe.
Spec
.Terminal.SocketMode);
9985
Assert.NotNull(container.
Spec
.Terminal);
9986
Assert.Equal(host.Layout.ProducerUdsPath, container.
Spec
.Terminal!.UdsPath);
9987
Assert.Equal(100, container.
Spec
.Terminal.Cols);
9988
Assert.Equal(30, container.
Spec
.Terminal.Rows);
9990
Assert.Equal("connect", container.
Spec
.Terminal.SocketMode);
10179
return Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
Dcp\ExecutableLaunchPlanTests.cs (7)
176
executable.
Spec
.ExecutionType = ExecutionType.IDE;
177
executable.
Spec
.FallbackExecutionTypes = [ExecutionType.Process];
178
executable.
Spec
.Args = ["stale"];
200
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
201
Assert.Null(executable.
Spec
.FallbackExecutionTypes);
202
Assert.Equal(["app-arg"], executable.
Spec
.Args);
205
executable.
Spec
.Env!,
Dcp\ResourceSnapshotBuilderTests.cs (11)
24
container.
Spec
.Command = "redis-server";
25
container.
Spec
.Ports = [new() { ContainerPort = 6379 }];
26
container.
Spec
.Persistent = true;
46
executable.
Spec
.WorkingDirectory = "/app";
69
executable.
Spec
.WorkingDirectory = "/app";
162
executable.
Spec
.WorkingDirectory = "/app";
219
executable.
Spec
.Start = false;
234
executable.
Spec
.Start = false;
249
executable.
Spec
.Start = false;
264
executable.
Spec
.Start = false;
278
executable.
Spec
.Args = [.. launchArgumentAnnotations.Select(a => a.Argument)];
Dcp\TestKubernetesService.cs (21)
77
if (svc.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless ||
78
svc.
Spec
.Port is not null ||
85
svc.Status.EffectiveAddress = svc.
Spec
.Address ?? "localhost";
86
svc.Status.EffectivePort = svc.
Spec
.Port ?? Interlocked.Increment(ref _nextPort);
99
proxy.Status.TunnelStatuses = CreateReadyTunnelStatuses(proxy.
Spec
.Tunnels);
233
if (service?.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless || service.
Spec
.Port is not null || service.Status?.EffectivePort is not null)
238
var hostPort = container.
Spec
.Ports?.FirstOrDefault(port => port.ContainerPort == serviceProduced.Port)?.HostPort;
241
service.Status.EffectiveAddress = service.
Spec
.Address ?? "localhost";
361
if (eu.
Spec
.Start is not null)
363
exe.
Spec
.Start = eu.
Spec
.Start;
367
if (eu.
Spec
.Stop == true)
369
exe.
Spec
.Stop = true;
388
if (cu.
Spec
.Start is not null)
390
ctr.
Spec
.Start = cu.
Spec
.Start;
394
if (cu.
Spec
.Stop == true)
396
ctr.
Spec
.Stop = true;
413
proxy.Spec = updatedProxy.
Spec
;
417
proxy.Status.TunnelStatuses = CreateReadyTunnelStatuses(proxy.
Spec
.Tunnels);
DistributedApplicationTests.cs (92)
838
Assert.Equal(RedisImageSource, item.
Spec
.Image);
839
Assert.Equal(["redis-cli", "-h", "host.docker.internal", "-p", "9999", "MONITOR"], item.
Spec
.Args);
840
Assert.Equal(["--add-host", "testlocalhost:127.0.0.1"], item.
Spec
.RunArgs);
895
Assert.Equal(RedisImageSource, item.
Spec
.Image);
905
item.
Spec
.CreateFiles);
938
Assert.NotNull(redisContainer.
Spec
.Args);
939
Assert.Equal(2, redisContainer.
Spec
.Args.Count);
941
Assert.Equal("-c", redisContainer.
Spec
.Args[0]);
942
Assert.Contains("--tls-cert-file", redisContainer.
Spec
.Args[1]);
943
Assert.Contains("--tls-key-file", redisContainer.
Spec
.Args[1]);
944
Assert.Contains("--tls-auth-clients", redisContainer.
Spec
.Args[1]);
945
Assert.Contains("--tls-port", redisContainer.
Spec
.Args[1]);
946
Assert.Contains("--port", redisContainer.
Spec
.Args[1]);
949
Assert.NotNull(redisContainer.
Spec
.Ports);
950
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6380);
951
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6379);
1014
Assert.Equal(RedisImageSource, item.
Spec
.Image);
1018
Assert.NotNull(item.
Spec
.Env);
1021
Assert.DoesNotContain(item.
Spec
.Env, e => e.Name == "SSL_CERT_FILE");
1025
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_FILE"),
1033
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_DIR"),
1051
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1057
var foundCert = Assert.Single(item.
Spec
?.PemCertificates?.Certificates ?? [], c => string.Equals(c.Thumbprint, cert.Thumbprint, StringComparison.Ordinal));
1066
Assert.Equal(expectedDefaultBundleFiles.Count, item.
Spec
?.PemCertificates?.OverwriteBundlePaths?.Count ?? 0);
1069
Assert.Contains(bundlePath, item.
Spec
?.PemCertificates?.OverwriteBundlePaths ?? []);
1075
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1144
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1147
Assert.NotNull(redisContainer.
Spec
.Env);
1150
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1151
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "CALLBACK_ADDED_VAR" && e.Value == "CallbackValue");
1152
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}_AppendedInCallback");
1184
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1187
Assert.NotNull(redisContainer.
Spec
.Env);
1190
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1191
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}");
1313
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1314
Assert.Equal("6379", GetEnv(redisContainer.
Spec
.Env, "REDIS_PORT"));
1317
Assert.Equal($"{{{{- portForServing \"{testName}-servicea-http0-{suffix}\" -}}}}", GetEnv(serviceA.
Spec
.Env, "PORT0"));
1322
Assert.Equal($"{{{{- portForServing \"{testName}-nodeapp-{suffix}\" -}}}}", GetEnv(nodeApp.
Spec
.Env, "PORT"));
1388
Assert.Equal("BrowserToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1389
Assert.Equal("ThisIsATestToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__BROWSERTOKEN"));
1391
Assert.Equal("ApiKey", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1392
var keyBytes = Convert.FromHexString(GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__PRIMARYAPIKEY")!);
1425
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1426
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1520
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1521
Assert.Equal("bob", redisContainer.
Spec
.Command);
1546
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1548
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1549
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1550
Assert.Equal(sourcePath, redisContainer.
Spec
.VolumeMounts[0].Source);
1574
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1576
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1577
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1578
Assert.NotEqual("etc/path-here", redisContainer.
Spec
.VolumeMounts[0].Source);
1579
Assert.True(Path.IsPathRooted(redisContainer.
Spec
.VolumeMounts[0].Source));
1603
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1605
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1606
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1607
Assert.Equal($"{testName}-volume", redisContainer.
Spec
.VolumeMounts[0].Source);
1850
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1860
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1861
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1865
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1871
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1879
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1880
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == otherRedisPort && p.ContainerPort == 6379);
1884
var portSpec = Assert.Single(otherRedisContainer.
Spec
.Ports!);
1923
Assert.All(serviceList.Where(s => s.Metadata.Name.Contains("redis")), s => Assert.Equal(AddressAllocationModes.Proxyless, s.
Spec
.AddressAllocationMode));
1928
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1938
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1939
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1943
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1949
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1958
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1959
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == otherRedisPort && p.ContainerPort == 6379);
1963
var portSpec = Assert.Single(otherRedisContainer.
Spec
.Ports!);
2015
Assert.Single(networks, n => n.
Spec
.Persistent == true);
2019
Assert.Single(networks, n => n.
Spec
.Persistent.GetValueOrDefault(false) == false);
2055
Assert.True(dcpContainer.
Spec
.Persistent.GetValueOrDefault());
2056
Assert.Equal(parentProcessIdentity.ProcessId, dcpContainer.
Spec
.MonitorPid);
2057
Assert.NotNull(dcpContainer.
Spec
.MonitorTimestamp);
2058
Assert.InRange((dcpContainer.
Spec
.MonitorTimestamp.Value - parentProcessIdentity.Timestamp).Duration(), TimeSpan.Zero, TimeSpan.FromMilliseconds(1));
2059
Assert.False(dcpContainer.
Spec
.Start.GetValueOrDefault(true));
2064
Assert.True(dcpExecutable.
Spec
.Persistent.GetValueOrDefault());
2065
Assert.Equal(parentProcessIdentity.ProcessId, dcpExecutable.
Spec
.MonitorPid);
2066
Assert.NotNull(dcpExecutable.
Spec
.MonitorTimestamp);
2067
Assert.InRange((dcpExecutable.
Spec
.MonitorTimestamp.Value - parentProcessIdentity.Timestamp).Duration(), TimeSpan.Zero, TimeSpan.FromMilliseconds(1));
2068
Assert.False(dcpExecutable.
Spec
.Start.GetValueOrDefault(true));
2069
Assert.Equal(ExecutionType.Process, dcpExecutable.
Spec
.ExecutionType);
2367
Assert.Equal(AddressAllocationModes.Proxyless, service.
Spec
.AddressAllocationMode);
2369
var port = Assert.IsType<int>(service.
Spec
.Port);