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;
637 references to Spec
Aspire.Hosting (84)
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 (10)
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;
Dcp\DcpExecutor.cs (19)
195
.Where(sr => !sr.HasCompleteAddress && sr.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless);
527
$"'{volume.
Spec
.Name ?? volume.Metadata.Name}': current state is '{volume.Status?.State ?? "(unknown)"}'"));
690
svc.
Spec
.Port = fixedPublicPort;
693
svc.
Spec
.Protocol = PortProtocol.FromProtocolType(endpoint.Protocol);
696
svc.
Spec
.Address = KnownHostNames.Localhost;
700
svc.
Spec
.Address = endpoint.TargetHost;
705
svc.
Spec
.AddressAllocationMode = AddressAllocationModes.Proxyless;
1107
Container {
Spec
.Start: false } => true,
1108
Executable {
Spec
.Start: false } => true,
1187
patch = CreatePatch(c, obj => obj.
Spec
.Stop = true);
1202
patch = CreatePatch(e, obj => obj.
Spec
.Stop = true);
1257
case RenderedModelResource<Container> { DcpResource.
Spec
.Start: false } cr when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(cr.ModelResource, cr.DcpResource.
Spec
.Start):
1260
await PatchDcpObjectAsync(cr.DcpResource, static c => c.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1263
case RenderedModelResource<Executable> { DcpResource.
Spec
.Start: false } er when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(er.ModelResource, er.DcpResource.
Spec
.Start):
1266
await PatchDcpObjectAsync(er.DcpResource, static e => e.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1273
cr.DcpResource.
Spec
.Start = true;
1285
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
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.Dotnet.Tests (3)
DotnetProjectResourceTests.cs (3)
129
Assert.Equal(resource.Resource.Command, executable.
Spec
.ExecutablePath);
130
Assert.Equal(resource.Resource.WorkingDirectory, executable.
Spec
.WorkingDirectory);
131
Assert.False(executable.
Spec
.Start);
Aspire.Hosting.Tests (538)
Dcp\DcpExecutorTests.cs (401)
317
Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "PORT").Value);
354
Assert.All(created, executable => Assert.True(executable.
Spec
.Start));
442
Assert.NotNull(container.
Spec
.Build);
443
Assert.Equal("linux/arm64", container.
Spec
.Build!.Platform);
464
Assert.NotNull(container.
Spec
.Build);
465
Assert.Null(container.
Spec
.Build!.Platform);
578
var callArgs = executionType == ExecutionType.IDE ? exe.
Spec
.Args : exe.
Spec
.Args![^(expectedArgs?.Length ?? 0)..];
583
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
616
Assert.Equal(callArgs, exe.
Spec
.Args);
620
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
664
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
665
Assert.Equal(["app-arg"], exe.
Spec
.Args);
666
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
674
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
704
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
705
Assert.Equal(["custom", "exec", "--", "prepended-arg", "app-arg"], exe.
Spec
.Args);
713
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
741
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
743
var effectiveArgs = exe.
Spec
.Args!.ToList();
787
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
789
var effectiveArgs = container.
Spec
.Args!.ToList();
937
var callCount1 = exe1.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
940
Assert.Single(exe1.
Spec
.Args!, a => a == "--no-build");
941
Assert.Single(exe1.
Spec
.Args!, a => a == "--test");
944
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations1, exe1.
Spec
.Args);
957
var callCount2 = exe2.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
960
Assert.Single(exe2.
Spec
.Args!, a => a == "--no-build");
961
Assert.Single(exe2.
Spec
.Args!, a => a == "--test");
964
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations2, exe2.
Spec
.Args);
997
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1000
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1035
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1038
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1066
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1070
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1131
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1135
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1182
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1186
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1211
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1215
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "EQUAL_PORT_AND_TARGET_PORT").Value;
1246
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1250
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1289
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1290
Assert.Null(svc.
Spec
.Port);
1295
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1327
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1331
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1358
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1362
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1389
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1391
Assert.Equal(desiredPort, svc.
Spec
.Port);
1394
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1421
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1425
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1449
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1451
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1454
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1570
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
1572
var envVarVal = dynamicExecutable.
Spec
.Env?.Single(v => v.Name == "DYNAMIC_PORT").Value;
1609
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1648
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1650
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1651
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1724
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), firstExecutable.
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1733
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), executables[1].
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1762
Assert.Contains(firstContainer.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1771
Assert.Contains(containers[1].
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1810
Assert.Equal(persistedPort, persistentService.
Spec
.Port);
1812
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
1855
Assert.Equal(AddressAllocationModes.Proxyless, service.
Spec
.AddressAllocationMode);
3957
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
3962
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
3967
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4004
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4009
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
4038
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4042
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4075
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4079
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4120
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4121
Assert.Null(svc.
Spec
.Port);
4126
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4153
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4155
Assert.NotNull(dcpCtr.
Spec
.Ports);
4156
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
4159
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
4188
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4190
Assert.NotNull(dcpCtr.
Spec
.Ports);
4191
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
4194
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4418
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4420
Assert.NotNull(dcpCtr.
Spec
.Ports);
4421
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredPort);
4424
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
4449
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4450
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4452
Assert.NotNull(dcpCtr.
Spec
.Ports);
4453
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4456
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
4521
Assert.NotNull(dcpCtr.
Spec
.Ports);
4522
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4524
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4569
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4571
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4573
Assert.NotNull(dcpCtr.
Spec
.Ports);
4574
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4575
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT").Value;
4578
var secondEnvVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT_AGAIN").Value;
4602
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4604
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4606
Assert.NotNull(dcpCtr.
Spec
.Ports);
4607
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4608
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_HOST_AND_PORT").Value;
4652
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4653
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4655
Assert.NotNull(dcpCtr.
Spec
.Ports);
4656
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4694
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4695
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4697
Assert.NotNull(dcpCtr.
Spec
.Ports);
4698
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4759
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4761
Assert.NotNull(dcpCtr.
Spec
.Ports);
4762
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
4765
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4791
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4793
Assert.NotNull(dcpCtr.
Spec
.Ports);
4794
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
4797
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4825
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4827
Assert.NotNull(dcpCtr.
Spec
.Ports);
4828
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort && p.Protocol == "UDP");
4831
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_PROTOCOL_SET").Value;
4914
Assert.Null(implicitDefaultContainer.
Spec
.PullPolicy);
4917
Assert.Null(explicitDefaultContainer.
Spec
.PullPolicy);
4920
Assert.Equal(ContainerPullPolicy.Always, explicitAlwaysContainer.
Spec
.PullPolicy);
4923
Assert.Equal(ContainerPullPolicy.Missing, explicitMissingContainer.
Spec
.PullPolicy);
4926
Assert.Equal(ContainerPullPolicy.Never, explicitNeverContainer.
Spec
.PullPolicy);
5150
Assert.NotNull(exe.
Spec
.Env);
5151
var effectiveLaunchProfileEnv = exe.
Spec
.Env.SingleOrDefault(v => v.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5182
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5213
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5244
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
5274
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
5365
var debugValue = Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "DEBUG_VALUE").Value;
5369
Assert.Equal(["app-arg"], executable.
Spec
.Args);
5416
Assert.Equal(ExecutionType.IDE, debuggableExe.
Spec
.ExecutionType);
5417
Assert.Null(debuggableExe.
Spec
.FallbackExecutionTypes);
5424
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
5458
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
5459
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5460
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5488
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5489
Assert.Equal(expectedArgs, exe.
Spec
.Args);
5492
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
5525
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5526
Assert.Equal(expectedArgs, exe.
Spec
.Args);
5529
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
5549
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5550
AssertDefaultProjectProcessArgs(exe.
Spec
.Args, "app-arg");
5592
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5593
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5632
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5633
Assert.Equal(["app-arg"], exe.
Spec
.Args);
5634
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5676
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5677
Assert.Equal(["app-arg"], exe.
Spec
.Args);
5678
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5720
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5721
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
5725
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
5806
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
5807
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
5839
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
5840
Assert.Null(container.
Spec
.MonitorPid);
5841
Assert.Null(container.
Spec
.MonitorTimestamp);
5849
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
5850
Assert.Null(exe.
Spec
.MonitorPid);
5851
Assert.Null(exe.
Spec
.MonitorTimestamp);
5852
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
5992
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
5993
Assert.Equal(parentProcessIdentity.ProcessId, container.
Spec
.MonitorPid);
5994
Assert.NotNull(container.
Spec
.MonitorTimestamp);
5995
Assert.Equal(parentProcessIdentity.Timestamp, container.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
6003
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
6004
Assert.Equal(parentProcessIdentity.ProcessId, exe.
Spec
.MonitorPid);
6005
Assert.NotNull(exe.
Spec
.MonitorTimestamp);
6006
Assert.Equal(parentProcessIdentity.Timestamp, exe.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
6007
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6044
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
6045
var sslCertFile = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_FILE").Value;
6144
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
6243
Assert.True(exe.
Spec
.Start);
6324
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6361
Assert.Equal(ExecutionType.Process, debuggableExe.
Spec
.ExecutionType);
6365
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
6402
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6438
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6480
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6522
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6564
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6597
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6637
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6639
Assert.NotNull(exe.
Spec
.Args);
6640
Assert.Contains("launch-tool-arg", exe.
Spec
.Args);
6641
Assert.NotNull(exe.
Spec
.Terminal);
6677
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6710
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6749
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6790
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6825
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6826
Assert.Null(exe.
Spec
.Args);
6827
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6873
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6932
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6933
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6934
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6943
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6984
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6985
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
6986
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
6995
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7029
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7030
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7031
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7040
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7100
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7101
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7102
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7103
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7111
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7204
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
7219
Assert.Equal(expectedArgs, executable.
Spec
.Args);
7348
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
7365
Assert.Equal(expectedArgs, executable.
Spec
.Args);
7431
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7432
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
7433
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7438
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7521
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7522
Assert.Equal(dotnetCommand, exe.
Spec
.ExecutablePath);
7546
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7547
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7568
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7636
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7638
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7639
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7643
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
7689
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7690
Assert.Equal(resourceArgs, exe.
Spec
.Args);
7691
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7754
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7755
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7781
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7823
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7862
Assert.Equal(ExecutionType.IDE, standardExe.
Spec
.ExecutionType);
7865
Assert.Equal(ExecutionType.IDE, customExe.
Spec
.ExecutionType);
7866
Assert.Null(customExe.
Spec
.Args);
7867
Assert.Null(customExe.
Spec
.FallbackExecutionTypes);
7921
Assert.Equal(ExecutionType.Process, standardExe.
Spec
.ExecutionType);
7925
Assert.Equal(ExecutionType.IDE, functionsExe.
Spec
.ExecutionType);
7960
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7961
Assert.Equal(["app-arg"], exe.
Spec
.Args);
7962
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7990
Assert.NotNull(container.
Spec
.Networks);
7991
var network = Assert.Single(container.
Spec
.Networks);
8041
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8042
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8081
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8082
Assert.NotNull(exe.
Spec
.Args);
8083
Assert.Equal("run", exe.
Spec
.Args[0]);
8084
Assert.Equal("--file", exe.
Spec
.Args[1]);
8085
Assert.Equal(projectPath, exe.
Spec
.Args[2]);
8086
Assert.Equal("--no-cache", exe.
Spec
.Args[3]);
8087
Assert.Contains("--no-launch-profile", exe.
Spec
.Args);
8088
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8132
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8133
Assert.Null(exe.
Spec
.Args);
8134
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8178
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8219
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8300
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8301
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8304
exe.
Spec
.Args!,
8340
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8342
exe.
Spec
.Args!,
8351
Assert.DoesNotContain("--no-launch-profile", exe.
Spec
.Args!);
8377
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8379
exe.
Spec
.Args!,
8412
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8414
exe.
Spec
.Args!,
8448
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8450
exe.
Spec
.Args!,
8467
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
8499
Assert.True(exe.
Spec
.Persistent);
8500
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8503
exe.
Spec
.Args!,
8536
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8571
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8572
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8578
Assert.Null(exe.
Spec
.Args);
8611
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8612
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8645
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8646
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8709
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8741
Assert.True(exe.
Spec
.Persistent);
8742
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8835
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8836
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8837
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8890
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8891
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8892
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8941
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8942
Assert.Equal(["certificate-arg", "app-arg"], exe.
Spec
.Args);
8943
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8994
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8995
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8996
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9027
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9028
Assert.Equal(["tool", "exec", "app-arg"], exe.
Spec
.Args);
9071
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9072
Assert.Equal(["run", "app-arg"], exe.
Spec
.Args);
9073
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9166
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9202
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9203
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9204
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9239
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9240
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9241
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9433
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
9443
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
9452
Assert.Null(exe3.
Spec
.FallbackExecutionTypes);
9495
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
9496
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
9506
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
9507
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
9514
Assert.Equal(ExecutionType.IDE, exe2.
Spec
.ExecutionType);
9515
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
9666
var exePortEnvVal = dcpContainer.
Spec
?.Env?.Where(e => e.Name == $"EXE_{endpointName.ToUpper()}_PORT").Single().Value;
9729
Assert.NotNull(dcpContainer.
Spec
.Env);
9730
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
9776
Assert.NotNull(dcpContainer.
Spec
.Env);
9777
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
9890
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
9930
var startedExecutable = Assert.Single(GetCreatedExecutablesForResource(kubernetesService, "anExecutable"), e => e.
Spec
.Start == true);
9931
Assert.Contains("--deferred", startedExecutable.
Spec
.Args!);
9932
Assert.Contains(startedExecutable.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
9935
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedExecutable.
Spec
.Args);
9975
var startedContainer = Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == "aContainer" && c.
Spec
.Start == true);
9976
Assert.Contains("--deferred", startedContainer.
Spec
.Args!);
9977
Assert.Contains(startedContainer.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
9980
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedContainer.
Spec
.Args);
10021
Assert.False(executable.
Spec
.Start);
10022
Assert.True(executable.
Spec
.Persistent);
10023
Assert.Contains("--persistent", executable.
Spec
.Args!);
10024
Assert.Contains(executable.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
10033
Assert.True(executable.
Spec
.Start);
10074
Assert.False(container.
Spec
.Start);
10075
Assert.True(container.
Spec
.Persistent);
10076
Assert.Contains("--persistent", container.
Spec
.Args!);
10077
Assert.Contains(container.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
10086
Assert.True(container.
Spec
.Start);
10205
Assert.NotNull(dcpExecutable.
Spec
.Env);
10208
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_URL").Value);
10211
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "HOST_PORT").Value);
10255
Assert.NotNull(sourceExecutable.
Spec
.Env);
10258
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
10292
Assert.NotNull(dcpExecutable.
Spec
.Env);
10295
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_PORT").Value);
10332
Assert.NotNull(sourceExecutable.
Spec
.Env);
10335
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
10492
Assert.NotNull(sourceExecutable.
Spec
.Env);
10495
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
10541
Assert.NotNull(dcpExecutable.
Spec
.Env);
10544
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_PORT").Value);
10705
Assert.NotNull(waitingConsumingContainer.
Spec
.Env);
10706
var executableBPort = Assert.Single(waitingConsumingContainer.
Spec
.Env, e => e.Name == "EXEC_B_PORT").Value;
10710
Assert.Equal(2, tunnelProxy.
Spec
.Tunnels?.Count);
10777
Assert.NotNull(tunnelDependentDcpContainer.
Spec
.Env);
10778
var upstreamPort = Assert.Single(tunnelDependentDcpContainer.
Spec
.Env, e => e.Name == "UPSTREAM_PORT").Value;
10782
Assert.Equal(1, tunnelProxy.
Spec
.Tunnels?.Count);
10978
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
11070
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
11148
var spec = exes[i].
Spec
.Terminal;
11173
Assert.Null(exe.
Spec
.Terminal);
11210
Assert.NotNull(exe.
Spec
.Terminal);
11211
Assert.Equal(host.Layout.ProducerUdsPath, exe.
Spec
.Terminal!.UdsPath);
11212
Assert.Equal(100, exe.
Spec
.Terminal.Cols);
11213
Assert.Equal(30, exe.
Spec
.Terminal.Rows);
11216
Assert.Equal("connect", exe.
Spec
.Terminal.SocketMode);
11254
Assert.NotNull(container.
Spec
.Terminal);
11255
Assert.Equal(host.Layout.ProducerUdsPath, container.
Spec
.Terminal!.UdsPath);
11256
Assert.Equal(100, container.
Spec
.Terminal.Cols);
11257
Assert.Equal(30, container.
Spec
.Terminal.Rows);
11259
Assert.Equal("connect", container.
Spec
.Terminal.SocketMode);
11487
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\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);