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