2 writes to Spec
Aspire.Hosting (1)
Dcp\Model\ModelCommon.cs (1)
149
Spec
= spec;
Aspire.Hosting.Tests (1)
Dcp\TestKubernetesService.cs (1)
462
proxy.
Spec
= updatedProxy.Spec;
647 references to Spec
Aspire.Hosting (85)
Dcp\ContainerCreator.cs (12)
94
ctr.
Spec
.ContainerName = containerObjectInstance.Name;
98
ctr.
Spec
.Persistent = true;
99
ApplyMonitorProcess(container, ctr.
Spec
);
104
ctr.
Spec
.PullPolicy = pullPolicy switch
125
ctr.
Spec
.Networks = new List<ContainerNetworkConnection>
139
ctr.
Spec
.Start = false;
162
return !DcpModelUtilities.ShouldDeferCreateForExplicitStart(resource.ModelResource, resource.DcpResource.
Spec
.Start);
215
var spec = dcpContainer.
Spec
;
303
var containerExes = _appResources.Get().OfType<RenderedModelResource<ContainerExec>>().Where(ar => ar.DcpResource.
Spec
.ContainerName == dcpContainer.Metadata.Name).ToArray();
656
dcpContainerResource.
Spec
.Build = new()
674
dcpContainerResource.
Spec
.Build.Platform = ToDcpPlatformString(targetPlatform);
718
sp.Service.
Spec
.Port ??= hostPort;
Dcp\ContainerNetworkEndpointProvisioner.cs (11)
115
network.
Spec
.Persistent = true;
116
network.
Spec
.NetworkName = $"{DefaultAspirePersistentNetworkName}-{_nameGenerator.GetProjectHashSuffix()}";
120
network.
Spec
.NetworkName = $"{DefaultAspireNetworkName}-{DcpNameGenerator.GetRandomNameSuffix()}";
128
network.
Spec
.NetworkName += $"-{shortApplicationName}";
185
service.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
186
service.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
390
proxy => proxy.
Spec
.Tunnels = _tunnelConfigurations.ToList(),
416
tunnelProxy.
Spec
.ContainerNetworkName = KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value;
417
tunnelProxy.
Spec
.Aliases = [await GetContainerHostNameAsync(cancellationToken).ConfigureAwait(false)];
418
tunnelProxy.
Spec
.Tunnels = tunnels;
419
tunnelProxy.
Spec
.BaseImage = _options.Value.ContainerTunnelBaseImage;
Dcp\DcpExecutor.cs (19)
194
.Where(sr => !sr.HasCompleteAddress && sr.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless);
526
$"'{volume.
Spec
.Name ?? volume.Metadata.Name}': current state is '{volume.Status?.State ?? "(unknown)"}'"));
689
svc.
Spec
.Port = fixedPublicPort;
692
svc.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
695
svc.
Spec
.Address = KnownHostNames.Localhost;
699
svc.
Spec
.Address = endpoint.TargetHost;
704
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1106
Container {
Spec
.Start: false } => true,
1107
Executable {
Spec
.Start: false } => true,
1186
patch = CreatePatch(c, obj => obj.
Spec
.Stop = true);
1201
patch = CreatePatch(e, obj => obj.
Spec
.Stop = true);
1256
case RenderedModelResource<Container> { DcpResource.
Spec
.Start: false } cr when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(cr.ModelResource, cr.DcpResource.
Spec
.Start):
1259
await PatchDcpObjectAsync(cr.DcpResource, static c => c.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1262
case RenderedModelResource<Executable> { DcpResource.
Spec
.Start: false } er when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(er.ModelResource, er.DcpResource.
Spec
.Start):
1265
await PatchDcpObjectAsync(er.DcpResource, static e => e.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1272
cr.DcpResource.
Spec
.Start = true;
1284
er.DcpResource.
Spec
.Start = true;
Dcp\DcpModelUtilities.cs (2)
225
if (resource.DcpResource is not Container ctr || ctr.
Spec
.Networks is null)
231
var containerNetwork = ctr.
Spec
.Networks.FirstOrDefault(n => n.Name == KnownNetworkIdentifiers.DefaultAspireContainerNetwork.Value);
Dcp\DcpResourceWatcher.cs (3)
557
if (container.
Spec
.Start == false && (container.Status?.State == null || container.Status?.State == ContainerState.Pending))
567
if (executable.
Spec
.Start == false && IsNotStartedExecutableState(executable.Status?.State))
935
var service = endpoint.
Spec
.ServiceName is { } serviceName
Dcp\ExecutableCreator.cs (8)
50
resource.DcpResource.
Spec
.Start);
242
var spec = executable.
Spec
;
297
executable.
Spec
.WorkingDirectory =
302
ApplyExplicitStart(project, executable.
Spec
);
325
executable.
Spec
.WorkingDirectory = resource.WorkingDirectory;
328
ApplyExplicitStart(resource, executable.
Spec
);
378
executable.
Spec
.Terminal = null;
389
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\ResourceLogSource.cs (4)
58
&& executable.
Spec
.ExecutionType is null or "" or ExecutionType.Process
59
&& !string.IsNullOrEmpty(executable.
Spec
.WorkingDirectory)
60
? [new("WorkingDirectory", executable.
Spec
.WorkingDirectory)]
127
if (resource is not Executable {
Spec
.Terminal: not null })
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
350
var isActive = _resourceState.EndpointsMap.Any(e => e.Value.
Spec
.ServiceName == endpointOwnerEndpoint?.Metadata.Name);
379
return container.
Spec
.VolumeMounts?.Select(v => new VolumeSnapshot(v.Source, v.Target ?? "", v.Type, v.IsReadOnly)).ToImmutableArray() ?? [];
Aspire.Hosting.Blazor.Tests (4)
AddBlazorGatewayTests.cs (4)
564
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
565
Assert.Equal("dotnet", executable.
Spec
.ExecutablePath);
566
Assert.Equal(builder.AppHostDirectory, executable.
Spec
.WorkingDirectory);
567
Assert.Equal(plan.Arguments, executable.
Spec
.Args);
Aspire.Hosting.Containers.Tests (12)
WithDockerfileTests.cs (12)
218
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
219
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
251
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
252
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
488
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
489
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
490
Assert.Null(container!.
Spec
!.Build!.Stage);
492
container!.
Spec
!.Build!.Args!,
559
Assert.Equal(tempContextPath, container!.
Spec
!.Build!.Context);
560
Assert.Equal(tempDockerfilePath, container!.
Spec
!.Build!.Dockerfile);
561
Assert.Null(container!.
Spec
!.Build!.Stage);
563
container!.
Spec
!.Build!.Args!,
Aspire.Hosting.Dotnet.Tests (3)
DotnetProjectResourceTests.cs (3)
127
Assert.Equal(resource.Resource.Command, executable.
Spec
.ExecutablePath);
128
Assert.Equal(resource.Resource.WorkingDirectory, executable.
Spec
.WorkingDirectory);
129
Assert.False(executable.
Spec
.Start);
Aspire.Hosting.Tests (543)
Dcp\DcpExecutorTests.cs (402)
316
Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "PORT").Value);
353
Assert.All(created, executable => Assert.True(executable.
Spec
.Start));
441
Assert.NotNull(container.
Spec
.Build);
442
Assert.Equal("linux/arm64", container.
Spec
.Build!.Platform);
463
Assert.NotNull(container.
Spec
.Build);
464
Assert.Null(container.
Spec
.Build!.Platform);
577
var callArgs = executionType == ExecutionType.IDE ? exe.
Spec
.Args : exe.
Spec
.Args![^(expectedArgs?.Length ?? 0)..];
582
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
615
Assert.Equal(callArgs, exe.
Spec
.Args);
619
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
663
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
664
Assert.Equal(["app-arg"], exe.
Spec
.Args);
665
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
673
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
703
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
704
Assert.Equal(["custom", "exec", "--", "prepended-arg", "app-arg"], exe.
Spec
.Args);
712
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
740
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
742
var effectiveArgs = exe.
Spec
.Args!.ToList();
786
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
788
var effectiveArgs = container.
Spec
.Args!.ToList();
936
var callCount1 = exe1.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
939
Assert.Single(exe1.
Spec
.Args!, a => a == "--no-build");
940
Assert.Single(exe1.
Spec
.Args!, a => a == "--test");
943
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations1, exe1.
Spec
.Args);
956
var callCount2 = exe2.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
959
Assert.Single(exe2.
Spec
.Args!, a => a == "--no-build");
960
Assert.Single(exe2.
Spec
.Args!, a => a == "--test");
963
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations2, exe2.
Spec
.Args);
996
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
999
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1034
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1037
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1065
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1069
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1130
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1134
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1181
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1185
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1210
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1214
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "EQUAL_PORT_AND_TARGET_PORT").Value;
1245
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1249
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1288
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1289
Assert.Null(svc.
Spec
.Port);
1294
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1326
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1330
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1357
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1361
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1388
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1390
Assert.Equal(desiredPort, svc.
Spec
.Port);
1393
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1420
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1424
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1448
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1450
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1453
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1569
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
1571
var envVarVal = dynamicExecutable.
Spec
.Env?.Single(v => v.Name == "DYNAMIC_PORT").Value;
1608
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1647
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1649
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1650
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1723
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), firstExecutable.
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1732
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), executables[1].
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1761
Assert.Contains(firstContainer.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1770
Assert.Contains(containers[1].
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1809
Assert.Equal(persistedPort, persistentService.
Spec
.Port);
1811
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
1854
Assert.Equal(AddressAllocationModes.Proxyless, service.
Spec
.AddressAllocationMode);
3956
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3961
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
3966
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4003
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4008
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
4037
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4041
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4074
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4078
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4119
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4120
Assert.Null(svc.
Spec
.Port);
4125
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4152
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4154
Assert.NotNull(dcpCtr.
Spec
.Ports);
4155
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
4158
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
4187
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4189
Assert.NotNull(dcpCtr.
Spec
.Ports);
4190
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
4193
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4417
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4419
Assert.NotNull(dcpCtr.
Spec
.Ports);
4420
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredPort);
4423
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
4448
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4449
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4451
Assert.NotNull(dcpCtr.
Spec
.Ports);
4452
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4455
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
4520
Assert.NotNull(dcpCtr.
Spec
.Ports);
4521
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4523
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4568
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4570
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4572
Assert.NotNull(dcpCtr.
Spec
.Ports);
4573
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4574
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT").Value;
4577
var secondEnvVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT_AGAIN").Value;
4601
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4603
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4605
Assert.NotNull(dcpCtr.
Spec
.Ports);
4606
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4607
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_HOST_AND_PORT").Value;
4651
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4652
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4654
Assert.NotNull(dcpCtr.
Spec
.Ports);
4655
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4693
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4694
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4696
Assert.NotNull(dcpCtr.
Spec
.Ports);
4697
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4758
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4760
Assert.NotNull(dcpCtr.
Spec
.Ports);
4761
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
4764
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4790
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4792
Assert.NotNull(dcpCtr.
Spec
.Ports);
4793
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
4796
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4824
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4826
Assert.NotNull(dcpCtr.
Spec
.Ports);
4827
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort && p.Protocol == "UDP");
4830
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_PROTOCOL_SET").Value;
4913
Assert.Null(implicitDefaultContainer.
Spec
.PullPolicy);
4916
Assert.Null(explicitDefaultContainer.
Spec
.PullPolicy);
4919
Assert.Equal(ContainerPullPolicy.Always, explicitAlwaysContainer.
Spec
.PullPolicy);
4922
Assert.Equal(ContainerPullPolicy.Missing, explicitMissingContainer.
Spec
.PullPolicy);
4925
Assert.Equal(ContainerPullPolicy.Never, explicitNeverContainer.
Spec
.PullPolicy);
5149
Assert.NotNull(exe.
Spec
.Env);
5150
var effectiveLaunchProfileEnv = exe.
Spec
.Env.SingleOrDefault(v => v.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5181
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5212
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5243
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
5273
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
5364
var debugValue = Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "DEBUG_VALUE").Value;
5368
Assert.Equal(["app-arg"], executable.
Spec
.Args);
5415
Assert.Equal(ExecutionType.IDE, debuggableExe.
Spec
.ExecutionType);
5416
Assert.Null(debuggableExe.
Spec
.FallbackExecutionTypes);
5423
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
5457
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
5458
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5459
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5487
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5488
Assert.Equal(expectedArgs, exe.
Spec
.Args);
5491
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
5524
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5525
Assert.Equal(expectedArgs, exe.
Spec
.Args);
5528
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
5548
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5549
AssertDefaultProjectProcessArgs(exe.
Spec
.Args, "app-arg");
5591
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5592
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5631
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5632
Assert.Equal(["app-arg"], exe.
Spec
.Args);
5633
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5675
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5676
Assert.Equal(["app-arg"], exe.
Spec
.Args);
5677
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5719
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5720
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
5724
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
5805
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5806
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5838
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
5839
Assert.Null(container.
Spec
.MonitorPid);
5840
Assert.Null(container.
Spec
.MonitorTimestamp);
5848
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
5849
Assert.Null(exe.
Spec
.MonitorPid);
5850
Assert.Null(exe.
Spec
.MonitorTimestamp);
5851
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5991
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
5992
Assert.Equal(parentProcessIdentity.ProcessId, container.
Spec
.MonitorPid);
5993
Assert.NotNull(container.
Spec
.MonitorTimestamp);
5994
Assert.Equal(parentProcessIdentity.Timestamp, container.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
6002
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
6003
Assert.Equal(parentProcessIdentity.ProcessId, exe.
Spec
.MonitorPid);
6004
Assert.NotNull(exe.
Spec
.MonitorTimestamp);
6005
Assert.Equal(parentProcessIdentity.Timestamp, exe.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
6006
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6043
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
6044
var sslCertFile = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_FILE").Value;
6143
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
6242
Assert.True(exe.
Spec
.Start);
6323
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6360
Assert.Equal(ExecutionType.Process, debuggableExe.
Spec
.ExecutionType);
6364
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
6401
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6437
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6479
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6521
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6563
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6596
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6636
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6638
Assert.NotNull(exe.
Spec
.Args);
6639
Assert.Contains("launch-tool-arg", exe.
Spec
.Args);
6640
Assert.NotNull(exe.
Spec
.Terminal);
6676
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6709
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6748
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6789
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6824
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6825
Assert.Null(exe.
Spec
.Args);
6826
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6872
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6931
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6932
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6933
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6942
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6983
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6984
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6985
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6994
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7028
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7029
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7030
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7039
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7099
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7100
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7101
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7102
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7110
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7203
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
7218
Assert.Equal(expectedArgs, executable.
Spec
.Args);
7347
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
7364
Assert.Equal(expectedArgs, executable.
Spec
.Args);
7430
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7431
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
7432
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7437
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7520
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7521
Assert.Equal(dotnetCommand, exe.
Spec
.ExecutablePath);
7545
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7546
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7567
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7635
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7637
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7638
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7642
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7688
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7689
Assert.Equal(resourceArgs, exe.
Spec
.Args);
7690
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7753
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7754
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7780
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7822
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7861
Assert.Equal(ExecutionType.IDE, standardExe.
Spec
.ExecutionType);
7864
Assert.Equal(ExecutionType.IDE, customExe.
Spec
.ExecutionType);
7865
Assert.Null(customExe.
Spec
.Args);
7866
Assert.Null(customExe.
Spec
.FallbackExecutionTypes);
7920
Assert.Equal(ExecutionType.Process, standardExe.
Spec
.ExecutionType);
7924
Assert.Equal(ExecutionType.IDE, functionsExe.
Spec
.ExecutionType);
7959
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7960
Assert.Equal(["app-arg"], exe.
Spec
.Args);
7961
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7989
Assert.NotNull(container.
Spec
.Networks);
7990
var network = Assert.Single(container.
Spec
.Networks);
8040
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8041
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8080
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8081
Assert.NotNull(exe.
Spec
.Args);
8082
Assert.Equal("run", exe.
Spec
.Args[0]);
8083
Assert.Equal("--file", exe.
Spec
.Args[1]);
8084
Assert.Equal(projectPath, exe.
Spec
.Args[2]);
8085
Assert.Equal("--no-cache", exe.
Spec
.Args[3]);
8086
Assert.Contains("--no-launch-profile", exe.
Spec
.Args);
8087
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8131
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8132
Assert.Null(exe.
Spec
.Args);
8133
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8177
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8218
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8299
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8300
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8303
exe.
Spec
.Args!,
8339
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8341
exe.
Spec
.Args!,
8350
Assert.DoesNotContain("--no-launch-profile", exe.
Spec
.Args!);
8376
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8378
exe.
Spec
.Args!,
8411
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8413
exe.
Spec
.Args!,
8447
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8449
exe.
Spec
.Args!,
8466
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
8498
Assert.True(exe.
Spec
.Persistent);
8499
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8502
exe.
Spec
.Args!,
8535
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8570
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8571
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8577
Assert.Null(exe.
Spec
.Args);
8610
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8611
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8644
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8645
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8708
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8740
Assert.True(exe.
Spec
.Persistent);
8741
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8834
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8835
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8836
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8889
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8890
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8891
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8940
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8941
Assert.Equal(["certificate-arg", "app-arg"], exe.
Spec
.Args);
8942
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8993
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8994
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8995
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9026
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9027
Assert.Equal(["tool", "exec", "app-arg"], exe.
Spec
.Args);
9070
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9071
Assert.Equal(["run", "app-arg"], exe.
Spec
.Args);
9072
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9165
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9201
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9202
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9203
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9238
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9239
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9240
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9432
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
9442
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
9451
Assert.Null(exe3.
Spec
.FallbackExecutionTypes);
9494
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
9495
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
9505
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
9506
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
9513
Assert.Equal(ExecutionType.IDE, exe2.
Spec
.ExecutionType);
9514
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
9665
var exePortEnvVal = dcpContainer.
Spec
?.Env?.Where(e => e.Name == $"EXE_{endpointName.ToUpper()}_PORT").Single().Value;
9728
Assert.NotNull(dcpContainer.
Spec
.Env);
9729
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
9775
Assert.NotNull(dcpContainer.
Spec
.Env);
9776
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
9889
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
9929
var startedExecutable = Assert.Single(GetCreatedExecutablesForResource(kubernetesService, "anExecutable"), e => e.
Spec
.Start == true);
9930
Assert.Contains("--deferred", startedExecutable.
Spec
.Args!);
9931
Assert.Contains(startedExecutable.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
9934
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedExecutable.
Spec
.Args);
9974
var startedContainer = Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == "aContainer" && c.
Spec
.Start == true);
9975
Assert.Contains("--deferred", startedContainer.
Spec
.Args!);
9976
Assert.Contains(startedContainer.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
9979
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedContainer.
Spec
.Args);
10020
Assert.False(executable.
Spec
.Start);
10021
Assert.True(executable.
Spec
.Persistent);
10022
Assert.Contains("--persistent", executable.
Spec
.Args!);
10023
Assert.Contains(executable.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
10032
Assert.True(executable.
Spec
.Start);
10073
Assert.False(container.
Spec
.Start);
10074
Assert.True(container.
Spec
.Persistent);
10075
Assert.Contains("--persistent", container.
Spec
.Args!);
10076
Assert.Contains(container.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
10085
Assert.True(container.
Spec
.Start);
10189
Assert.Equal("example.com/tunnel-base:custom", tunnelProxy.
Spec
.BaseImage);
10230
Assert.NotNull(dcpExecutable.
Spec
.Env);
10233
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_URL").Value);
10236
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "HOST_PORT").Value);
10280
Assert.NotNull(sourceExecutable.
Spec
.Env);
10283
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
10317
Assert.NotNull(dcpExecutable.
Spec
.Env);
10320
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_PORT").Value);
10357
Assert.NotNull(sourceExecutable.
Spec
.Env);
10360
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
10517
Assert.NotNull(sourceExecutable.
Spec
.Env);
10520
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
10566
Assert.NotNull(dcpExecutable.
Spec
.Env);
10569
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_PORT").Value);
10730
Assert.NotNull(waitingConsumingContainer.
Spec
.Env);
10731
var executableBPort = Assert.Single(waitingConsumingContainer.
Spec
.Env, e => e.Name == "EXEC_B_PORT").Value;
10735
Assert.Equal(2, tunnelProxy.
Spec
.Tunnels?.Count);
10802
Assert.NotNull(tunnelDependentDcpContainer.
Spec
.Env);
10803
var upstreamPort = Assert.Single(tunnelDependentDcpContainer.
Spec
.Env, e => e.Name == "UPSTREAM_PORT").Value;
10807
Assert.Equal(1, tunnelProxy.
Spec
.Tunnels?.Count);
11003
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
11095
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
11173
var spec = exes[i].
Spec
.Terminal;
11198
Assert.Null(exe.
Spec
.Terminal);
11235
Assert.NotNull(exe.
Spec
.Terminal);
11236
Assert.Equal(host.Layout.ProducerUdsPath, exe.
Spec
.Terminal!.UdsPath);
11237
Assert.Equal(100, exe.
Spec
.Terminal.Cols);
11238
Assert.Equal(30, exe.
Spec
.Terminal.Rows);
11241
Assert.Equal("connect", exe.
Spec
.Terminal.SocketMode);
11279
Assert.NotNull(container.
Spec
.Terminal);
11280
Assert.Equal(host.Layout.ProducerUdsPath, container.
Spec
.Terminal!.UdsPath);
11281
Assert.Equal(100, container.
Spec
.Terminal.Cols);
11282
Assert.Equal(30, container.
Spec
.Terminal.Rows);
11284
Assert.Equal("connect", container.
Spec
.Terminal.SocketMode);
11512
return Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
Dcp\ExecutableLaunchPlanTests.cs (7)
207
executable.
Spec
.ExecutionType = ExecutionType.IDE;
208
executable.
Spec
.FallbackExecutionTypes = [ExecutionType.Process];
209
executable.
Spec
.Args = ["stale"];
231
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
232
Assert.Null(executable.
Spec
.FallbackExecutionTypes);
233
Assert.Equal(["app-arg"], executable.
Spec
.Args);
236
executable.
Spec
.Env!,
Dcp\KubernetesServiceTests.cs (4)
989
Assert.Equal("test-image", first.
Spec
.Image);
995
Assert.Equal("test-image", second.
Spec
.Image);
1025
Assert.Equal(Volatile.Read(ref original)!.
Spec
.Image, created.
Spec
.Image);
Dcp\ResourceLogSourceTests.cs (3)
27
executable.
Spec
.ExecutionType = executionType;
28
executable.
Spec
.WorkingDirectory = WorkingDirectory;
67
executable.
Spec
.Terminal = new TerminalSpec();
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)
108
if (svc.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless ||
109
svc.
Spec
.Port is not null ||
116
svc.Status.EffectiveAddress = svc.
Spec
.Address ?? "localhost";
117
svc.Status.EffectivePort = svc.
Spec
.Port ?? Interlocked.Increment(ref _nextPort);
130
proxy.Status.TunnelStatuses = CreateReadyTunnelStatuses(proxy.
Spec
.Tunnels);
264
if (service?.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless || service.
Spec
.Port is not null || service.Status?.EffectivePort is not null)
269
var hostPort = container.
Spec
.Ports?.FirstOrDefault(port => port.ContainerPort == serviceProduced.Port)?.HostPort;
272
service.Status.EffectiveAddress = service.
Spec
.Address ?? "localhost";
410
if (eu.
Spec
.Start is not null)
412
exe.
Spec
.Start = eu.
Spec
.Start;
416
if (eu.
Spec
.Stop == true)
418
exe.
Spec
.Stop = true;
437
if (cu.
Spec
.Start is not null)
439
ctr.
Spec
.Start = cu.
Spec
.Start;
443
if (cu.
Spec
.Stop == true)
445
ctr.
Spec
.Stop = true;
462
proxy.Spec = updatedProxy.
Spec
;
466
proxy.Status.TunnelStatuses = CreateReadyTunnelStatuses(proxy.
Spec
.Tunnels);
DistributedApplicationTests.cs (93)
842
Assert.Equal(RedisImageSource, item.
Spec
.Image);
843
Assert.Equal(["redis-cli", "-h", "host.docker.internal", "-p", "9999", "MONITOR"], item.
Spec
.Args);
844
Assert.Equal(["--add-host", "testlocalhost:127.0.0.1"], item.
Spec
.RunArgs);
899
Assert.Equal(RedisImageSource, item.
Spec
.Image);
909
item.
Spec
.CreateFiles);
942
Assert.NotNull(redisContainer.
Spec
.Args);
943
Assert.Equal(2, redisContainer.
Spec
.Args.Count);
945
Assert.Equal("-c", redisContainer.
Spec
.Args[0]);
946
Assert.Contains("--tls-cert-file", redisContainer.
Spec
.Args[1]);
947
Assert.Contains("--tls-key-file", redisContainer.
Spec
.Args[1]);
948
Assert.Contains("--tls-auth-clients", redisContainer.
Spec
.Args[1]);
949
Assert.Contains("--tls-port", redisContainer.
Spec
.Args[1]);
950
Assert.Contains("--port", redisContainer.
Spec
.Args[1]);
953
Assert.NotNull(redisContainer.
Spec
.Ports);
954
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6380);
955
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6379);
1018
Assert.Equal(RedisImageSource, item.
Spec
.Image);
1022
Assert.NotNull(item.
Spec
.Env);
1025
Assert.DoesNotContain(item.
Spec
.Env, e => e.Name == "SSL_CERT_FILE");
1029
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_FILE"),
1037
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_DIR"),
1055
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1061
var foundCert = Assert.Single(item.
Spec
?.PemCertificates?.Certificates ?? [], c => string.Equals(c.Thumbprint, cert.Thumbprint, StringComparison.Ordinal));
1070
Assert.Equal(expectedDefaultBundleFiles.Count, item.
Spec
?.PemCertificates?.OverwriteBundlePaths?.Count ?? 0);
1073
Assert.Contains(bundlePath, item.
Spec
?.PemCertificates?.OverwriteBundlePaths ?? []);
1079
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1148
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1151
Assert.NotNull(redisContainer.
Spec
.Env);
1154
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1155
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "CALLBACK_ADDED_VAR" && e.Value == "CallbackValue");
1156
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}_AppendedInCallback");
1188
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1191
Assert.NotNull(redisContainer.
Spec
.Env);
1194
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1195
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}");
1320
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1321
Assert.Equal("6379", GetEnv(redisContainer.
Spec
.Env, "REDIS_PORT"));
1324
Assert.Equal($"{{{{- portForServing \"{testName}-servicea-http0-{suffix}\" -}}}}", GetEnv(serviceA.
Spec
.Env, "PORT0"));
1329
Assert.Equal($"{{{{- portForServing \"{testName}-nodeapp-{suffix}\" -}}}}", GetEnv(nodeApp.
Spec
.Env, "PORT"));
1395
Assert.Equal("BrowserToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1396
Assert.Equal("ThisIsATestToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__BROWSERTOKEN"));
1398
Assert.Equal("ApiKey", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1399
var keyBytes = Convert.FromHexString(GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__PRIMARYAPIKEY")!);
1432
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1433
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1527
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1528
Assert.Equal("bob", redisContainer.
Spec
.Command);
1553
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1555
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1556
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1557
Assert.Equal(sourcePath, redisContainer.
Spec
.VolumeMounts[0].Source);
1581
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1583
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1584
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1585
Assert.NotEqual("etc/path-here", redisContainer.
Spec
.VolumeMounts[0].Source);
1586
Assert.True(Path.IsPathRooted(redisContainer.
Spec
.VolumeMounts[0].Source));
1610
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1612
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1613
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1614
Assert.Equal($"{testName}-volume", redisContainer.
Spec
.VolumeMounts[0].Source);
1617
Assert.Equal($"{testName}-volume", containerVolume.
Spec
.Name);
1861
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1871
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1872
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1876
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1882
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1890
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1891
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == otherRedisPort && p.ContainerPort == 6379);
1895
var portSpec = Assert.Single(otherRedisContainer.
Spec
.Ports!);
1934
Assert.All(serviceList.Where(s => s.Metadata.Name.Contains("redis")), s => Assert.Equal(AddressAllocationModes.Proxyless, s.
Spec
.AddressAllocationMode));
1939
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1949
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1950
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1954
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1960
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1969
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1970
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == otherRedisPort && p.ContainerPort == 6379);
1974
var portSpec = Assert.Single(otherRedisContainer.
Spec
.Ports!);
2026
Assert.Single(networks, n => n.
Spec
.Persistent == true);
2030
Assert.Single(networks, n => n.
Spec
.Persistent.GetValueOrDefault(false) == false);
2066
Assert.True(dcpContainer.
Spec
.Persistent.GetValueOrDefault());
2067
Assert.Equal(parentProcessIdentity.ProcessId, dcpContainer.
Spec
.MonitorPid);
2068
Assert.NotNull(dcpContainer.
Spec
.MonitorTimestamp);
2069
Assert.InRange((dcpContainer.
Spec
.MonitorTimestamp.Value - parentProcessIdentity.Timestamp).Duration(), TimeSpan.Zero, TimeSpan.FromMilliseconds(1));
2070
Assert.False(dcpContainer.
Spec
.Start.GetValueOrDefault(true));
2075
Assert.True(dcpExecutable.
Spec
.Persistent.GetValueOrDefault());
2076
Assert.Equal(parentProcessIdentity.ProcessId, dcpExecutable.
Spec
.MonitorPid);
2077
Assert.NotNull(dcpExecutable.
Spec
.MonitorTimestamp);
2078
Assert.InRange((dcpExecutable.
Spec
.MonitorTimestamp.Value - parentProcessIdentity.Timestamp).Duration(), TimeSpan.Zero, TimeSpan.FromMilliseconds(1));
2079
Assert.False(dcpExecutable.
Spec
.Start.GetValueOrDefault(true));
2080
Assert.Equal(ExecutionType.Process, dcpExecutable.
Spec
.ExecutionType);
2378
Assert.Equal(AddressAllocationModes.Proxyless, service.
Spec
.AddressAllocationMode);
2380
var port = Assert.IsType<int>(service.
Spec
.Port);
WithVolumeTests.cs (2)
211
Assert.Equal(volumeName, volume.
Spec
.Name);
212
Assert.True(volume.
Spec
.Persistent);