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