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