2 writes to Spec
Aspire.Hosting (1)
Dcp\Model\ModelCommon.cs (1)
149
Spec
= spec;
Aspire.Hosting.Tests (1)
Dcp\TestKubernetesService.cs (1)
467
proxy.
Spec
= updatedProxy.Spec;
664 references to Spec
Aspire.Hosting (89)
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 (20)
193
.Where(sr => !sr.HasCompleteAddress && sr.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless);
537
$"'{volume.
Spec
.Name ?? volume.Metadata.Name}': current state is '{volume.Status?.State ?? "(unknown)"}'"));
683
svc.
Spec
.Port = fixedPublicPort;
688
svc.
Spec
.Port = _persistentPortAllocator.GetOrAllocatePersistentPort(
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;
1022
Container {
Spec
.Start: false } => true,
1023
Executable {
Spec
.Start: false } => true,
1102
patch = CreatePatch(c, obj => obj.
Spec
.Stop = true);
1118
patch = CreatePatch(e, obj => obj.
Spec
.Stop = true);
1175
case RenderedModelResource<Container> { DcpResource.
Spec
.Start: false } cr when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(cr.ModelResource, cr.DcpResource.
Spec
.Start):
1178
await PatchDcpObjectAsync(cr.DcpResource, static c => c.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1181
case RenderedModelResource<Executable> { DcpResource.
Spec
.Start: false } er when !DcpModelUtilities.ShouldDeferCreateForExplicitStart(er.ModelResource, er.DcpResource.
Spec
.Start):
1184
await PatchDcpObjectAsync(er.DcpResource, static e => e.
Spec
.Start = true, cancellationToken).ConfigureAwait(false);
1191
cr.DcpResource.
Spec
.Start = true;
1203
er.DcpResource.
Spec
.Start = true;
Dcp\DcpModelUtilities.cs (2)
267
if (resource.DcpResource is not Container ctr || ctr.
Spec
.Networks is null)
273
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
;
304
executable.
Spec
.WorkingDirectory =
309
ApplyExplicitStart(project, executable.
Spec
);
332
executable.
Spec
.WorkingDirectory = resource.WorkingDirectory;
335
ApplyExplicitStart(resource, executable.
Spec
);
385
executable.
Spec
.Terminal = null;
396
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 (22)
31
var environment = GetEnvironmentVariables(container.Status?.EffectiveEnv ?? container.
Spec
.Env, container.
Spec
.Env);
34
if (container.
Spec
.Start is false && (state == null || state == ContainerState.Pending))
57
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Container, KnownProperties.Container.Image, container.
Spec
.Image),
59
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Container, KnownProperties.Container.Command, container.
Spec
.Command),
77
if (container.
Spec
.Ports is null)
83
foreach (var port in container.
Spec
.Ports)
95
return (container.
Spec
.Persistent ?? false) ? ContainerLifetime.Persistent : ContainerLifetime.Session;
105
var environment = GetEnvironmentVariables(executable.Status?.EffectiveEnv, executable.
Spec
.Env);
121
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Executable, KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
157
if (executable.
Spec
.Start is false && IsNotStartedExecutableState(state))
165
var environment = GetEnvironmentVariables(executable.Status?.EffectiveEnv, executable.
Spec
.Env);
194
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Project, KnownProperties.Executable.Path, executable.
Spec
.ExecutablePath),
195
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Project, KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
219
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Executable, KnownProperties.Executable.Path, executable.
Spec
.ExecutablePath),
220
ResourcePropertySnapshotMetadata.Create(KnownResourceTypes.Executable, KnownProperties.Executable.WorkDir, executable.
Spec
.WorkingDirectory),
261
if (resource.
Spec
.ExecutionType == ExecutionType.Process &&
288
var executableName = Path.GetFileName(resource.
Spec
.ExecutablePath);
297
if (resource.
Spec
.ExecutionType == ExecutionType.IDE &&
577
e.Value.
Spec
.ServiceName == serviceName
609
var isActive = _resourceState.EndpointsMap.Any(e => e.Value.
Spec
.ServiceName == endpointOwnerEndpoint?.Metadata.Name);
638
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)
568
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
569
Assert.Equal("dotnet", executable.
Spec
.ExecutablePath);
570
Assert.Equal(builder.AppHostDirectory, executable.
Spec
.WorkingDirectory);
571
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)
119
Assert.Equal(resource.Resource.Command, executable.
Spec
.ExecutablePath);
120
Assert.Equal(resource.Resource.WorkingDirectory, executable.
Spec
.WorkingDirectory);
121
Assert.False(executable.
Spec
.Start);
Aspire.Hosting.Tests (556)
Dcp\DcpExecutorTests.cs (411)
316
Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "PORT").Value);
353
Assert.All(created, executable => Assert.True(executable.
Spec
.Start));
484
Assert.NotNull(container.
Spec
.Build);
485
Assert.Equal("linux/arm64", container.
Spec
.Build!.Platform);
506
Assert.NotNull(container.
Spec
.Build);
507
Assert.Null(container.
Spec
.Build!.Platform);
620
var callArgs = executionType == ExecutionType.IDE ? exe.
Spec
.Args : exe.
Spec
.Args![^(expectedArgs?.Length ?? 0)..];
625
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
658
Assert.Equal(callArgs, exe.
Spec
.Args);
662
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
706
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
707
Assert.Equal(["app-arg"], exe.
Spec
.Args);
708
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
716
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
746
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
747
Assert.Equal(["custom", "exec", "--", "prepended-arg", "app-arg"], exe.
Spec
.Args);
755
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
783
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
785
var effectiveArgs = exe.
Spec
.Args!.ToList();
829
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
831
var effectiveArgs = container.
Spec
.Args!.ToList();
979
var callCount1 = exe1.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
982
Assert.Single(exe1.
Spec
.Args!, a => a == "--no-build");
983
Assert.Single(exe1.
Spec
.Args!, a => a == "--test");
986
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations1, exe1.
Spec
.Args);
999
var callCount2 = exe2.
Spec
.Env!.Single(e => e.Name == "CALL_COUNT");
1002
Assert.Single(exe2.
Spec
.Args!, a => a == "--no-build");
1003
Assert.Single(exe2.
Spec
.Args!, a => a == "--test");
1006
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations2, exe2.
Spec
.Args);
1039
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1042
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1077
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1080
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1108
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1112
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1173
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1177
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1224
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1228
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1253
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1257
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "EQUAL_PORT_AND_TARGET_PORT").Value;
1288
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1292
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1331
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
1332
Assert.Null(svc.
Spec
.Port);
1337
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1369
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1373
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1400
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1404
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
1431
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1433
Assert.Equal(desiredPort, svc.
Spec
.Port);
1436
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
1463
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1467
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
1491
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1493
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1496
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
1612
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
1614
var envVarVal = dynamicExecutable.
Spec
.Env?.Single(v => v.Name == "DYNAMIC_PORT").Value;
1653
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1695
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
1697
Assert.Equal(allocatedPort, svc.
Spec
.Port);
1698
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1729
Assert.Contains(container.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == allocatedPort);
1793
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), firstExecutable.
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1802
Assert.Equal(allocatedPort.ToString(CultureInfo.InvariantCulture), executables[1].
Spec
.Env?.Single(v => v.Name == "HTTP_PORT").Value);
1831
Assert.Contains(firstContainer.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1840
Assert.Contains(containers[1].
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == targetPort);
1892
Assert.Equal(persistedPort, persistentService.
Spec
.Port);
1894
Assert.Equal(allocatedPort, dynamicService.
Spec
.Port);
2189
Assert.Equal(AddressAllocationModes.Proxyless, service.
Spec
.AddressAllocationMode);
2342
Assert.Equal(service.
Spec
.Port, allocation.Value);
2343
Assert.NotEqual(service.
Spec
.Port, targetPort);
4442
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4447
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "NO_PORT_NO_TARGET_PORT").Value;
4452
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4489
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4494
var envVarVal = dcpExe.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
4523
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4527
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4560
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4564
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4605
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4606
Assert.Null(svc.
Spec
.Port);
4611
var aspnetCoreUrls = dcpExe.
Spec
.Env?.Single(v => v.Name == KnownAspNetCoreConfigNames.Urls).Value;
4638
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4640
Assert.NotNull(dcpCtr.
Spec
.Ports);
4641
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
4644
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
4673
Assert.Equal(AddressAllocationModes.Localhost, svc.
Spec
.AddressAllocationMode);
4675
Assert.NotNull(dcpCtr.
Spec
.Ports);
4676
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort is null && p.ContainerPort == desiredTargetPort);
4679
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
4903
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4905
Assert.NotNull(dcpCtr.
Spec
.Ports);
4906
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredPort);
4909
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_SET_NO_TARGET_PORT").Value;
4934
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
4935
Assert.Equal(allocatedPort, svc.
Spec
.Port);
4937
Assert.NotNull(dcpCtr.
Spec
.Ports);
4938
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
4941
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "NO_PORT_TARGET_PORT_SET").Value;
5010
Assert.NotNull(dcpCtr.
Spec
.Ports);
5011
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
5013
Assert.Equal(allocatedPort, svc.
Spec
.Port);
5058
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5060
Assert.Equal(allocatedPort, svc.
Spec
.Port);
5062
Assert.NotNull(dcpCtr.
Spec
.Ports);
5063
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
5064
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT").Value;
5067
var secondEnvVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_PORT_AGAIN").Value;
5091
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5093
Assert.Equal(allocatedPort, svc.
Spec
.Port);
5095
Assert.NotNull(dcpCtr.
Spec
.Ports);
5096
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
5097
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PUBLIC_HOST_AND_PORT").Value;
5141
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5142
Assert.Equal(allocatedPort, svc.
Spec
.Port);
5144
Assert.NotNull(dcpCtr.
Spec
.Ports);
5145
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
5183
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5184
Assert.Equal(allocatedPort, svc.
Spec
.Port);
5186
Assert.NotNull(dcpCtr.
Spec
.Ports);
5187
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == allocatedPort && p.ContainerPort == desiredTargetPort);
5296
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5298
Assert.NotNull(dcpCtr.
Spec
.Ports);
5299
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
5302
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
5328
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5330
Assert.NotNull(dcpCtr.
Spec
.Ports);
5331
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort);
5334
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_TARGET_PORT_SET").Value;
5362
Assert.Equal(AddressAllocationModes.Proxyless, svc.
Spec
.AddressAllocationMode);
5364
Assert.NotNull(dcpCtr.
Spec
.Ports);
5365
Assert.Contains(dcpCtr.
Spec
.Ports!, p => p.HostPort == desiredPort && p.ContainerPort == desiredTargetPort && p.Protocol == "UDP");
5368
var envVarVal = dcpCtr.
Spec
.Env?.Single(v => v.Name == "PORT_AND_PROTOCOL_SET").Value;
5395
Assert.True(dcpExe.
Spec
.Stop);
5417
Assert.True(dcpCtr.
Spec
.Stop);
5519
Assert.Null(implicitDefaultContainer.
Spec
.PullPolicy);
5522
Assert.Null(explicitDefaultContainer.
Spec
.PullPolicy);
5525
Assert.Equal(ContainerPullPolicy.Always, explicitAlwaysContainer.
Spec
.PullPolicy);
5528
Assert.Equal(ContainerPullPolicy.Missing, explicitMissingContainer.
Spec
.PullPolicy);
5531
Assert.Equal(ContainerPullPolicy.Never, explicitNeverContainer.
Spec
.PullPolicy);
5755
Assert.NotNull(exe.
Spec
.Env);
5756
var effectiveLaunchProfileEnv = exe.
Spec
.Env.SingleOrDefault(v => v.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5787
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5818
var envVal = exe.
Spec
.Env!.SingleOrDefault(e => e.Name == "DOTNET_LAUNCH_PROFILE")?.Value;
5849
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
5879
Assert.DoesNotContain(exe.
Spec
.Env ?? [], e => e.Name == "DOTNET_LAUNCH_PROFILE");
5970
var debugValue = Assert.Single(executable.
Spec
.Env!, variable => variable.Name == "DEBUG_VALUE").Value;
5974
Assert.Equal(["app-arg"], executable.
Spec
.Args);
6021
Assert.Equal(ExecutionType.IDE, debuggableExe.
Spec
.ExecutionType);
6022
Assert.Null(debuggableExe.
Spec
.FallbackExecutionTypes);
6029
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
6063
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
6064
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6065
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6093
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6094
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6097
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
6130
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6131
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6134
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
6161
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6168
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6171
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, exe.
Spec
.Args);
6213
Assert.Equal(expectedArgs, exe.
Spec
.Args);
6233
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6234
AssertDefaultProjectProcessArgs(exe.
Spec
.Args, "app-arg");
6276
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6277
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6316
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6317
Assert.Equal(["app-arg"], exe.
Spec
.Args);
6318
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6360
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6361
Assert.Equal(["app-arg"], exe.
Spec
.Args);
6362
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6404
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6405
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
6409
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
6490
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
6491
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
6523
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
6524
Assert.Null(container.
Spec
.MonitorPid);
6525
Assert.Null(container.
Spec
.MonitorTimestamp);
6533
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
6534
Assert.Null(exe.
Spec
.MonitorPid);
6535
Assert.Null(exe.
Spec
.MonitorTimestamp);
6536
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6676
Assert.True(container.
Spec
.Persistent.GetValueOrDefault());
6677
Assert.Equal(parentProcessIdentity.ProcessId, container.
Spec
.MonitorPid);
6678
Assert.NotNull(container.
Spec
.MonitorTimestamp);
6679
Assert.Equal(parentProcessIdentity.Timestamp, container.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
6687
Assert.True(exe.
Spec
.Persistent.GetValueOrDefault());
6688
Assert.Equal(parentProcessIdentity.ProcessId, exe.
Spec
.MonitorPid);
6689
Assert.NotNull(exe.
Spec
.MonitorTimestamp);
6690
Assert.Equal(parentProcessIdentity.Timestamp, exe.
Spec
.MonitorTimestamp.Value, TimeSpan.FromMicroseconds(1));
6691
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
6728
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
6729
var sslCertFile = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_FILE").Value;
6828
var sslCertDir = Assert.Single(exe.
Spec
.Env!, e => e.Name == "SSL_CERT_DIR").Value;
6927
Assert.True(exe.
Spec
.Start);
7008
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7045
Assert.Equal(ExecutionType.Process, debuggableExe.
Spec
.ExecutionType);
7049
Assert.Equal(ExecutionType.Process, nonDebuggableExe.
Spec
.ExecutionType);
7086
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7122
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7164
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7206
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7248
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7281
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7321
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7323
Assert.NotNull(exe.
Spec
.Args);
7324
Assert.Contains("launch-tool-arg", exe.
Spec
.Args);
7325
Assert.NotNull(exe.
Spec
.Terminal);
7361
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7394
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7433
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7474
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7509
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7510
Assert.Null(exe.
Spec
.Args);
7511
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7557
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7616
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7617
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7618
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7627
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7668
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7669
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7670
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7679
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7713
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
7714
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7715
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7724
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7784
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
7785
Assert.Equal("dotnet", exe.
Spec
.ExecutablePath);
7786
Assert.Equal("/tmp/mauiapp", exe.
Spec
.WorkingDirectory);
7787
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
7795
Assert.Equal(expectedArgs, exe.
Spec
.Args);
7888
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
7903
Assert.Equal(expectedArgs, executable.
Spec
.Args);
8032
Assert.Equal(ExecutionType.Process, executable.
Spec
.ExecutionType);
8049
Assert.Equal(expectedArgs, executable.
Spec
.Args);
8115
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8116
Assert.Equal(["--profile-arg", "profile value", "app-arg"], exe.
Spec
.Args);
8117
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8122
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
8205
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8206
Assert.Equal(dotnetCommand, exe.
Spec
.ExecutablePath);
8230
Assert.Equal(expectedArgs, exe.
Spec
.Args);
8231
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8252
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
8320
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8322
Assert.Equal(expectedArgs, exe.
Spec
.Args);
8323
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8327
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
8373
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8374
Assert.Equal(resourceArgs, exe.
Spec
.Args);
8375
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8438
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8439
Assert.Equal(expectedArgs, exe.
Spec
.Args);
8465
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8507
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8546
Assert.Equal(ExecutionType.IDE, standardExe.
Spec
.ExecutionType);
8549
Assert.Equal(ExecutionType.IDE, customExe.
Spec
.ExecutionType);
8550
Assert.Null(customExe.
Spec
.Args);
8551
Assert.Null(customExe.
Spec
.FallbackExecutionTypes);
8605
Assert.Equal(ExecutionType.Process, standardExe.
Spec
.ExecutionType);
8609
Assert.Equal(ExecutionType.IDE, functionsExe.
Spec
.ExecutionType);
8644
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8645
Assert.Equal(["app-arg"], exe.
Spec
.Args);
8646
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8674
Assert.NotNull(container.
Spec
.Networks);
8675
var network = Assert.Single(container.
Spec
.Networks);
8725
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8726
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8765
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8766
Assert.NotNull(exe.
Spec
.Args);
8767
Assert.Equal("run", exe.
Spec
.Args[0]);
8768
Assert.Equal("--file", exe.
Spec
.Args[1]);
8769
Assert.Equal(projectPath, exe.
Spec
.Args[2]);
8770
Assert.Equal("--no-cache", exe.
Spec
.Args[3]);
8771
Assert.Contains("--no-launch-profile", exe.
Spec
.Args);
8772
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8816
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8817
Assert.Null(exe.
Spec
.Args);
8818
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8862
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8903
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
8984
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
8985
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
8988
exe.
Spec
.Args!,
9024
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9026
exe.
Spec
.Args!,
9035
Assert.DoesNotContain("--no-launch-profile", exe.
Spec
.Args!);
9061
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9063
exe.
Spec
.Args!,
9096
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9098
exe.
Spec
.Args!,
9132
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9134
exe.
Spec
.Args!,
9151
AssertEffectiveArgumentIndexesMatchSpecArgs(displayArgs, exe.
Spec
.Args);
9183
Assert.True(exe.
Spec
.Persistent);
9184
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9187
exe.
Spec
.Args!,
9220
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9255
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9256
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9262
Assert.Null(exe.
Spec
.Args);
9295
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9296
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9329
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9330
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9393
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9425
Assert.True(exe.
Spec
.Persistent);
9426
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9519
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9520
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9521
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9574
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9575
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9576
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9625
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9626
Assert.Equal(["certificate-arg", "app-arg"], exe.
Spec
.Args);
9627
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9678
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9679
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9680
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9711
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
9712
Assert.Equal(["tool", "exec", "app-arg"], exe.
Spec
.Args);
9755
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9756
Assert.Equal(["run", "app-arg"], exe.
Spec
.Args);
9757
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9850
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9886
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9887
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9888
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
9923
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
9924
Assert.Equal(["app-arg"], exe.
Spec
.Args);
9925
Assert.Null(exe.
Spec
.FallbackExecutionTypes);
10117
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
10127
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
10136
Assert.Null(exe3.
Spec
.FallbackExecutionTypes);
10179
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
10180
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
10190
Assert.Equal(ExecutionType.IDE, exe1.
Spec
.ExecutionType);
10191
Assert.Null(exe1.
Spec
.FallbackExecutionTypes);
10198
Assert.Equal(ExecutionType.IDE, exe2.
Spec
.ExecutionType);
10199
Assert.Null(exe2.
Spec
.FallbackExecutionTypes);
10350
var exePortEnvVal = dcpContainer.
Spec
?.Env?.Where(e => e.Name == $"EXE_{endpointName.ToUpper()}_PORT").Single().Value;
10416
Assert.NotNull(dcpContainer.
Spec
.Env);
10417
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
10465
Assert.NotNull(dcpContainer.
Spec
.Env);
10466
var url = Assert.Single(dcpContainer.
Spec
.Env, e => e.Name == "URL").Value;
10579
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, container.
Spec
.Args);
10619
var startedExecutable = Assert.Single(GetCreatedExecutablesForResource(kubernetesService, "anExecutable"), e => e.
Spec
.Start == true);
10620
Assert.Contains("--deferred", startedExecutable.
Spec
.Args!);
10621
Assert.Contains(startedExecutable.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
10624
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedExecutable.
Spec
.Args);
10664
var startedContainer = Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == "aContainer" && c.
Spec
.Start == true);
10665
Assert.Contains("--deferred", startedContainer.
Spec
.Args!);
10666
Assert.Contains(startedContainer.
Spec
.Env!, e => e is { Name: "DEFERRED_ENV", Value: "true" });
10669
AssertEffectiveArgumentIndexesMatchSpecArgs(argAnnotations, startedContainer.
Spec
.Args);
10710
Assert.False(executable.
Spec
.Start);
10711
Assert.True(executable.
Spec
.Persistent);
10712
Assert.Contains("--persistent", executable.
Spec
.Args!);
10713
Assert.Contains(executable.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
10722
Assert.True(executable.
Spec
.Start);
10763
Assert.False(container.
Spec
.Start);
10764
Assert.True(container.
Spec
.Persistent);
10765
Assert.Contains("--persistent", container.
Spec
.Args!);
10766
Assert.Contains(container.
Spec
.Env!, e => e is { Name: "PERSISTENT_ENV", Value: "true" });
10775
Assert.True(container.
Spec
.Start);
10879
Assert.Equal("example.com/tunnel-base:custom", tunnelProxy.
Spec
.BaseImage);
10920
Assert.NotNull(dcpExecutable.
Spec
.Env);
10923
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_URL").Value);
10926
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "HOST_PORT").Value);
10970
Assert.NotNull(sourceExecutable.
Spec
.Env);
10973
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
11007
Assert.NotNull(dcpExecutable.
Spec
.Env);
11010
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_PORT").Value);
11047
Assert.NotNull(sourceExecutable.
Spec
.Env);
11050
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
11207
Assert.NotNull(sourceExecutable.
Spec
.Env);
11210
Assert.Single(sourceExecutable.
Spec
.Env, variable => variable.Name == "TARGET_PORT").Value);
11256
Assert.NotNull(dcpExecutable.
Spec
.Env);
11259
Assert.Single(dcpExecutable.
Spec
.Env, variable => variable.Name == "CONTAINER_PORT").Value);
11420
Assert.NotNull(waitingConsumingContainer.
Spec
.Env);
11421
var executableBPort = Assert.Single(waitingConsumingContainer.
Spec
.Env, e => e.Name == "EXEC_B_PORT").Value;
11425
Assert.Equal(2, tunnelProxy.
Spec
.Tunnels?.Count);
11492
Assert.NotNull(tunnelDependentDcpContainer.
Spec
.Env);
11493
var upstreamPort = Assert.Single(tunnelDependentDcpContainer.
Spec
.Env, e => e.Name == "UPSTREAM_PORT").Value;
11497
Assert.Equal(1, tunnelProxy.
Spec
.Tunnels?.Count);
11693
Assert.Equal(ExecutionType.IDE, exe.
Spec
.ExecutionType);
11785
Assert.Equal(ExecutionType.Process, exe.
Spec
.ExecutionType);
11863
var spec = exes[i].
Spec
.Terminal;
11888
Assert.Null(exe.
Spec
.Terminal);
11925
Assert.NotNull(exe.
Spec
.Terminal);
11926
Assert.Equal(host.Layout.ProducerUdsPath, exe.
Spec
.Terminal!.UdsPath);
11927
Assert.Equal(100, exe.
Spec
.Terminal.Cols);
11928
Assert.Equal(30, exe.
Spec
.Terminal.Rows);
11931
Assert.Equal("connect", exe.
Spec
.Terminal.SocketMode);
11969
Assert.NotNull(container.
Spec
.Terminal);
11970
Assert.Equal(host.Layout.ProducerUdsPath, container.
Spec
.Terminal!.UdsPath);
11971
Assert.Equal(100, container.
Spec
.Terminal.Cols);
11972
Assert.Equal(30, container.
Spec
.Terminal.Rows);
11974
Assert.Equal("connect", container.
Spec
.Terminal.SocketMode);
12222
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)
1100
Assert.Equal("test-image", first.
Spec
.Image);
1106
Assert.Equal("test-image", second.
Spec
.Image);
1136
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 (15)
25
container.
Spec
.Command = "redis-server";
26
container.
Spec
.Ports = [new() { ContainerPort = 6379 }];
27
container.
Spec
.Persistent = true;
47
executable.
Spec
.WorkingDirectory = "/app";
70
executable.
Spec
.WorkingDirectory = "/app";
128
executable.
Spec
.ExecutionType = ExecutionType.IDE;
180
executable.
Spec
.ExecutionType = ExecutionType.IDE;
234
executable.
Spec
.ExecutionType = ExecutionType.Process;
286
executable.
Spec
.ExecutionType = ExecutionType.Process;
664
executable.
Spec
.WorkingDirectory = "/app";
721
executable.
Spec
.Start = false;
736
executable.
Spec
.Start = false;
751
executable.
Spec
.Start = false;
766
executable.
Spec
.Start = false;
780
executable.
Spec
.Args = [.. launchArgumentAnnotations.Select(a => a.Argument)];
Dcp\TestKubernetesService.cs (21)
113
if (svc.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless ||
114
svc.
Spec
.Port is not null ||
121
svc.Status.EffectiveAddress = svc.
Spec
.Address ?? "localhost";
122
svc.Status.EffectivePort = svc.
Spec
.Port ?? Interlocked.Increment(ref _nextPort);
135
proxy.Status.TunnelStatuses = CreateReadyTunnelStatuses(proxy.
Spec
.Tunnels);
269
if (service?.
Spec
.AddressAllocationMode != AddressAllocationModes.Proxyless || service.
Spec
.Port is not null || service.Status?.EffectivePort is not null)
274
var hostPort = container.
Spec
.Ports?.FirstOrDefault(port => port.ContainerPort == serviceProduced.Port)?.HostPort;
277
service.Status.EffectiveAddress = service.
Spec
.Address ?? "localhost";
415
if (eu.
Spec
.Start is not null)
417
exe.
Spec
.Start = eu.
Spec
.Start;
421
if (eu.
Spec
.Stop == true)
423
exe.
Spec
.Stop = true;
442
if (cu.
Spec
.Start is not null)
444
ctr.
Spec
.Start = cu.
Spec
.Start;
448
if (cu.
Spec
.Stop == true)
450
ctr.
Spec
.Stop = true;
467
proxy.Spec = updatedProxy.
Spec
;
471
proxy.Status.TunnelStatuses = CreateReadyTunnelStatuses(proxy.
Spec
.Tunnels);
DistributedApplicationTests.cs (93)
916
Assert.Equal(RedisImageSource, item.
Spec
.Image);
917
Assert.Equal(["redis-cli", "-h", "host.docker.internal", "-p", "9999", "MONITOR"], item.
Spec
.Args);
918
Assert.Equal(["--add-host", "testlocalhost:127.0.0.1"], item.
Spec
.RunArgs);
973
Assert.Equal(RedisImageSource, item.
Spec
.Image);
983
item.
Spec
.CreateFiles);
1016
Assert.NotNull(redisContainer.
Spec
.Args);
1017
Assert.Equal(2, redisContainer.
Spec
.Args.Count);
1019
Assert.Equal("-c", redisContainer.
Spec
.Args[0]);
1020
Assert.Contains("--tls-cert-file", redisContainer.
Spec
.Args[1]);
1021
Assert.Contains("--tls-key-file", redisContainer.
Spec
.Args[1]);
1022
Assert.Contains("--tls-auth-clients", redisContainer.
Spec
.Args[1]);
1023
Assert.Contains("--tls-port", redisContainer.
Spec
.Args[1]);
1024
Assert.Contains("--port", redisContainer.
Spec
.Args[1]);
1027
Assert.NotNull(redisContainer.
Spec
.Ports);
1028
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6380);
1029
Assert.Contains(redisContainer.
Spec
.Ports, p => p.ContainerPort == 6379);
1092
Assert.Equal(RedisImageSource, item.
Spec
.Image);
1096
Assert.NotNull(item.
Spec
.Env);
1099
Assert.DoesNotContain(item.
Spec
.Env, e => e.Name == "SSL_CERT_FILE");
1103
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_FILE"),
1111
Assert.Collection(item.
Spec
.Env.Where(e => e.Name == "SSL_CERT_DIR"),
1129
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1135
var foundCert = Assert.Single(item.
Spec
?.PemCertificates?.Certificates ?? [], c => string.Equals(c.Thumbprint, cert.Thumbprint, StringComparison.Ordinal));
1144
Assert.Equal(expectedDefaultBundleFiles.Count, item.
Spec
?.PemCertificates?.OverwriteBundlePaths?.Count ?? 0);
1147
Assert.Contains(bundlePath, item.
Spec
?.PemCertificates?.OverwriteBundlePaths ?? []);
1153
Assert.Empty(item.
Spec
?.PemCertificates?.Certificates ?? []);
1222
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1225
Assert.NotNull(redisContainer.
Spec
.Env);
1228
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1229
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "CALLBACK_ADDED_VAR" && e.Value == "CallbackValue");
1230
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}_AppendedInCallback");
1262
r => r.
Spec
.Env != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1265
Assert.NotNull(redisContainer.
Spec
.Env);
1268
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_ENV_VAR" && e.Value == "InitialValue");
1269
Assert.Single(redisContainer.
Spec
.Env, e => e.Name == "INITIAL_REFERENCE_EXPRESSION" && e.Value == $"{value}");
1394
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1395
Assert.Equal("6379", GetEnv(redisContainer.
Spec
.Env, "REDIS_PORT"));
1398
Assert.Equal($"{{{{- portForServing \"{testName}-servicea-http0-{suffix}\" -}}}}", GetEnv(serviceA.
Spec
.Env, "PORT0"));
1403
Assert.Equal($"{{{{- portForServing \"{testName}-nodeapp-{suffix}\" -}}}}", GetEnv(nodeApp.
Spec
.Env, "PORT"));
1469
Assert.Equal("BrowserToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1470
Assert.Equal("ThisIsATestToken", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__BROWSERTOKEN"));
1472
Assert.Equal("ApiKey", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1473
var keyBytes = Convert.FromHexString(GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__PRIMARYAPIKEY")!);
1506
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__FRONTEND__AUTHMODE"));
1507
Assert.Equal("Unsecured", GetEnv(aspireDashboard.
Spec
.Env, "DASHBOARD__OTLP__AUTHMODE"));
1601
Assert.Equal(RedisImageSource, redisContainer.
Spec
.Image);
1602
Assert.Equal("bob", redisContainer.
Spec
.Command);
1627
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1629
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1630
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1631
Assert.Equal(sourcePath, redisContainer.
Spec
.VolumeMounts[0].Source);
1655
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1657
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1658
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1659
Assert.NotEqual("etc/path-here", redisContainer.
Spec
.VolumeMounts[0].Source);
1660
Assert.True(Path.IsPathRooted(redisContainer.
Spec
.VolumeMounts[0].Source));
1684
$"{testName}-redis-{ReplicaIdRegex}-{suffix}", r => r.
Spec
.VolumeMounts != null).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
1686
Assert.NotNull(redisContainer.
Spec
.VolumeMounts);
1687
Assert.NotEmpty(redisContainer.
Spec
.VolumeMounts);
1688
Assert.Equal($"{testName}-volume", redisContainer.
Spec
.VolumeMounts[0].Source);
1691
Assert.Equal($"{testName}-volume", containerVolume.
Spec
.Name);
1937
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
1947
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
1948
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
1952
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
1958
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
1966
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
1967
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == otherRedisPort && p.ContainerPort == 6379);
1971
var portSpec = Assert.Single(otherRedisContainer.
Spec
.Ports!);
2012
Assert.All(serviceList.Where(s => s.Metadata.Name.Contains("redis")), s => Assert.Equal(AddressAllocationModes.Proxyless, s.
Spec
.AddressAllocationMode));
2017
var env = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redis");
2027
Assert.Equal(2, redisContainer.
Spec
.Ports!.Count);
2028
Assert.Contains(redisContainer.
Spec
.Ports!, p => p.HostPort == port);
2032
Assert.Equal(port, Assert.Single(redisContainer.
Spec
.Ports!).HostPort);
2038
var otherRedisEnv = Assert.Single(service.
Spec
.Env!, e => e.Name == $"ConnectionStrings__{testName}-redisNoPort");
2047
Assert.Equal(2, otherRedisContainer.
Spec
.Ports!.Count);
2048
Assert.Contains(otherRedisContainer.
Spec
.Ports!, p => p.HostPort == otherRedisPort && p.ContainerPort == 6379);
2052
var portSpec = Assert.Single(otherRedisContainer.
Spec
.Ports!);
2104
Assert.Single(networks, n => n.
Spec
.Persistent == true);
2108
Assert.Single(networks, n => n.
Spec
.Persistent.GetValueOrDefault(false) == false);
2144
Assert.True(dcpContainer.
Spec
.Persistent.GetValueOrDefault());
2145
Assert.Equal(parentProcessIdentity.ProcessId, dcpContainer.
Spec
.MonitorPid);
2146
Assert.NotNull(dcpContainer.
Spec
.MonitorTimestamp);
2147
Assert.InRange((dcpContainer.
Spec
.MonitorTimestamp.Value - parentProcessIdentity.Timestamp).Duration(), TimeSpan.Zero, TimeSpan.FromMilliseconds(1));
2148
Assert.False(dcpContainer.
Spec
.Start.GetValueOrDefault(true));
2153
Assert.True(dcpExecutable.
Spec
.Persistent.GetValueOrDefault());
2154
Assert.Equal(parentProcessIdentity.ProcessId, dcpExecutable.
Spec
.MonitorPid);
2155
Assert.NotNull(dcpExecutable.
Spec
.MonitorTimestamp);
2156
Assert.InRange((dcpExecutable.
Spec
.MonitorTimestamp.Value - parentProcessIdentity.Timestamp).Duration(), TimeSpan.Zero, TimeSpan.FromMilliseconds(1));
2157
Assert.False(dcpExecutable.
Spec
.Start.GetValueOrDefault(true));
2158
Assert.Equal(ExecutionType.Process, dcpExecutable.
Spec
.ExecutionType);
2456
Assert.Equal(AddressAllocationModes.Proxyless, service.
Spec
.AddressAllocationMode);
2458
var port = Assert.IsType<int>(service.
Spec
.Port);
WithVolumeTests.cs (2)
154
Assert.Equal(volumeName, volume.
Spec
.Name);
155
Assert.True(volume.
Spec
.Persistent);