Skip to content

Commit 902e49a

Browse files
committed
#66 : Additional unit tests
1 parent d5fd26d commit 902e49a

File tree

3 files changed

+96
-10
lines changed

3 files changed

+96
-10
lines changed

src/Man.Dapr.Sidekick/Process/PortAssignmentBuilder.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,8 @@ public void Build(TOptions proposedOptions, TOptions lastSuccessfulOptions, IDap
7070
continue;
7171
}
7272

73-
// If port is already defined, then use it
74-
if (proposedValue.HasValue)
75-
{
76-
logger.LogDebug("Assigning preferred port {DaprPortNumber} for option {DaprPortName}", proposedValue, propertyName);
77-
reservedPorts.Add(proposedValue.Value);
78-
continue;
79-
}
80-
81-
// If we have an environment variable defined attempt to get the port from it
73+
// If we have an environment variable defined attempt to get the port from it.
74+
// This overrides default/proposed configuration values.
8275
if (!string.IsNullOrEmpty(port.EnvironmentVariable) &&
8376
int.TryParse(Environment.GetEnvironmentVariable(port.EnvironmentVariable), out var environmentPort) &&
8477
environmentPort > 0)
@@ -93,6 +86,14 @@ public void Build(TOptions proposedOptions, TOptions lastSuccessfulOptions, IDap
9386
continue;
9487
}
9588

89+
// If port is already defined, then use it
90+
if (proposedValue.HasValue)
91+
{
92+
logger.LogDebug("Assigning preferred port {DaprPortNumber} for option {DaprPortName}", proposedValue, propertyName);
93+
reservedPorts.Add(proposedValue.Value);
94+
continue;
95+
}
96+
9697
if (AlwaysUseStartingPort || PortAvailabilityChecker == null)
9798
{
9899
logger.LogDebug("Assigning default port {DaprPortNumber} for option {DaprPortName}", port.StartingPort, propertyName);

tests/Man.Dapr.Sidekick.Tests/Process/DaprSidecarProcessTests.cs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,64 @@ public void Should_assign_expected_values()
129129
Assert.That(options.MetricsPort, Is.EqualTo(9090));
130130
Assert.That(options.ProfilePort, Is.EqualTo(7777));
131131
}
132+
133+
[TestCase(false)]
134+
[TestCase(true)]
135+
public void Should_assign_environment_variable_overrides(bool useEnvironmentVariables)
136+
{
137+
var p = new MockDaprSidecarProcess();
138+
var builder = new PortAssignmentBuilder<DaprSidecarOptions>(new MockPortAvailabilityChecker());
139+
var options = new DaprSidecarOptions
140+
{
141+
AppPort = 2000,
142+
DaprGrpcPort = 3000,
143+
DaprHttpPort = 4000
144+
};
145+
146+
var logger = Substitute.For<IDaprLogger>();
147+
148+
var existingAppPort = Environment.GetEnvironmentVariable(DaprConstants.DaprAppPortEnvironmentVariable);
149+
var existingGrpcPort = Environment.GetEnvironmentVariable(DaprConstants.DaprGrpcPortEnvironmentVariable);
150+
var existingHttpPort = Environment.GetEnvironmentVariable(DaprConstants.DaprHttpPortEnvironmentVariable);
151+
152+
try
153+
{
154+
if (useEnvironmentVariables)
155+
{
156+
Environment.SetEnvironmentVariable(DaprConstants.DaprAppPortEnvironmentVariable, "1234");
157+
Environment.SetEnvironmentVariable(DaprConstants.DaprGrpcPortEnvironmentVariable, "98765");
158+
Environment.SetEnvironmentVariable(DaprConstants.DaprHttpPortEnvironmentVariable, "7345");
159+
}
160+
161+
p.AssignPorts(builder);
162+
builder.Build(options, new DaprSidecarOptions(), logger);
163+
164+
// Should respect environment variables
165+
if (useEnvironmentVariables)
166+
{
167+
// Should use environment variable values
168+
Assert.That(options.AppPort, Is.EqualTo(1234));
169+
Assert.That(options.DaprGrpcPort, Is.EqualTo(98765));
170+
Assert.That(options.DaprHttpPort, Is.EqualTo(7345));
171+
}
172+
else
173+
{
174+
// Should use options values
175+
Assert.That(options.AppPort, Is.EqualTo(2000));
176+
Assert.That(options.DaprGrpcPort, Is.EqualTo(3000));
177+
Assert.That(options.DaprHttpPort, Is.EqualTo(4000));
178+
}
179+
}
180+
finally
181+
{
182+
if (useEnvironmentVariables)
183+
{
184+
Environment.SetEnvironmentVariable(DaprConstants.DaprAppPortEnvironmentVariable, existingAppPort);
185+
Environment.SetEnvironmentVariable(DaprConstants.DaprGrpcPortEnvironmentVariable, existingGrpcPort);
186+
Environment.SetEnvironmentVariable(DaprConstants.DaprHttpPortEnvironmentVariable, existingHttpPort);
187+
}
188+
}
189+
}
132190
}
133191

134192
public class AssignLocations

tests/Man.Dapr.Sidekick.Tests/Process/PortAssignmentBuilderTests.cs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using Man.Dapr.Sidekick.Logging;
34
using NSubstitute;
45
using NUnit.Framework;
@@ -135,6 +136,32 @@ public void Should_use_starting_ports()
135136
Assert.That(proposedOptions.DaprHttpPort, Is.EqualTo(200));
136137
Assert.That(proposedOptions.MetricsPort, Is.EqualTo(4000));
137138
}
139+
140+
[Test]
141+
public void Should_use_environment_variable_ports()
142+
{
143+
var logger = Substitute.For<IDaprLogger>();
144+
var checker = Substitute.For<IPortAvailabilityChecker>();
145+
var builder = new PortAssignmentBuilder<DaprSidecarOptions>(checker);
146+
147+
Environment.SetEnvironmentVariable("DAPRSIDEKICK_TESTS_VALID_PORT", "1234");
148+
Environment.SetEnvironmentVariable("DAPRSIDEKICK_TESTS_INVALID_PORT", "Not_A_Number");
149+
150+
builder
151+
.Add(x => x.DaprGrpcPort, 2000, "DAPRSIDEKICK_TESTS_VALID_PORT")
152+
.Add(x => x.DaprHttpPort, 3000, "DAPRSIDEKICK_TESTS_INVALID_PORT")
153+
.Add(x => x.MetricsPort, 4000, "DAPRSIDEKICK_TESTS_MISSING_PORT");
154+
155+
checker.GetAvailablePort(3000, Arg.Any<IEnumerable<int>>()).Returns(3000);
156+
checker.GetAvailablePort(4000, Arg.Any<IEnumerable<int>>()).Returns(4000);
157+
158+
var proposedOptions = new DaprSidecarOptions();
159+
160+
builder.Build(proposedOptions, null, logger);
161+
Assert.That(proposedOptions.DaprGrpcPort, Is.EqualTo(1234));
162+
Assert.That(proposedOptions.DaprHttpPort, Is.EqualTo(3000));
163+
Assert.That(proposedOptions.MetricsPort, Is.EqualTo(4000));
164+
}
138165
}
139166
}
140167
}

0 commit comments

Comments
 (0)