Skip to content

Commit bed3353

Browse files
RakeshwarKRakeshwar Reddy Kambaiahgari
andauthored
Change all profiles to use timespans (vs. integers) when representing time ranges (#601)
* InitCommit * Commit changes * fix tests * update tests for backward compatibility. * Commit changes * update tests --------- Co-authored-by: Rakeshwar Reddy Kambaiahgari <rkambaiahgar@microsoft.com>
1 parent 3821dc9 commit bed3353

37 files changed

+470
-190
lines changed

src/VirtualClient/VirtualClient.Actions.UnitTests/DeathStarBench/DeathStarBenchClientExecutorTests.cs

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void SetupTest()
8383
this.mockFixture.Parameters[nameof(DeathStarBenchExecutor.ServiceName)] = "socialnetwork";
8484
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.ThreadCount)] = "20";
8585
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.ConnectionCount)] = "1000";
86-
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.Duration)] = "600s";
86+
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.Duration)] = "00:05:00";
8787
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.RequestPerSec)] = "1000";
8888
this.mockFixture.Parameters[nameof(DeathStarBenchServerExecutor.GraphType)] = "socfb-Reed98";
8989
this.mockFixture.Parameters[nameof(DeathStarBenchExecutor.SwarmCommand)] = "--join-swarm";
@@ -159,10 +159,10 @@ public async Task DeathStarBenchClientExecutorExecutesExpectedCommands_SocialNet
159159
$"sudo --join-swarm", // mock command but illustrates the idea of the command that should be called
160160
$"sudo make clean",
161161
$"sudo make",
162-
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 600s -L -s ./scripts/social-network/compose-post.lua http://localhost:8080/wrk2-api/post/compose -R 1000 >> results.txt\"",
163-
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 600s -L -s ./scripts/social-network/read-home-timeline.lua http://localhost:8080/wrk2-api/home-timeline/read -R 1000 >> results.txt\"",
164-
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 600s -L -s ./scripts/social-network/read-user-timeline.lua http://localhost:8080/wrk2-api/user-timeline/read -R 1000 >> results.txt\"",
165-
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 600s -L -s ./scripts/social-network/mixed-workload.lua http://localhost:8080 -R 1000 >> results.txt\"",
162+
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 300s -L -s ./scripts/social-network/compose-post.lua http://localhost:8080/wrk2-api/post/compose -R 1000 >> results.txt\"",
163+
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 300s -L -s ./scripts/social-network/read-home-timeline.lua http://localhost:8080/wrk2-api/home-timeline/read -R 1000 >> results.txt\"",
164+
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 300s -L -s ./scripts/social-network/read-user-timeline.lua http://localhost:8080/wrk2-api/user-timeline/read -R 1000 >> results.txt\"",
165+
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 300s -L -s ./scripts/social-network/mixed-workload.lua http://localhost:8080 -R 1000 >> results.txt\"",
166166
$"sudo bash {this.mockPackage.Path}/linux-x64/scripts/isSwarmNode.sh",
167167
$"sudo bash {this.mockPackage.Path}/linux-x64/scripts/isSwarmNode.sh"
168168
};
@@ -211,7 +211,7 @@ public async Task DeathStarBenchClientExecutorExecutesExpectedCommands_MediaMicr
211211
$"sudo --join-swarm", // mock command but illustrates the idea of the command that should be called
212212
$"sudo make clean",
213213
$"sudo make",
214-
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 600s -L -s ./scripts/media-microservices/compose-review.lua http://localhost:8080/wrk2-api/review/compose -R 1000 >> results.txt\"",
214+
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 300s -L -s ./scripts/media-microservices/compose-review.lua http://localhost:8080/wrk2-api/review/compose -R 1000 >> results.txt\"",
215215
$"sudo bash {this.mockPackage.Path}/linux-x64/scripts/isSwarmNode.sh",
216216
$"sudo bash {this.mockPackage.Path}/linux-x64/scripts/isSwarmNode.sh",
217217
};
@@ -258,7 +258,7 @@ public async Task DeathStarBenchClientExecutorExecutesExpectedCommands_HotelRese
258258
$"sudo --join-swarm", // mock command but illustrates the idea of the command that should be called
259259
$"sudo make clean",
260260
$"sudo make",
261-
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 600s -L -s ./scripts/hotel-reservation/mixed-workload_type_1.lua http://0.0.0.0:5000 -R 1000 >> results.txt\"",
261+
$"sudo bash -c \"./wrk -D exp -t 20 -c 1000 -d 300s -L -s ./scripts/hotel-reservation/mixed-workload_type_1.lua http://0.0.0.0:5000 -R 1000 >> results.txt\"",
262262
$"sudo bash {this.mockPackage.Path}/linux-x64/scripts/isSwarmNode.sh",
263263
$"sudo bash {this.mockPackage.Path}/linux-x64/scripts/isSwarmNode.sh"
264264
};
@@ -281,6 +281,32 @@ await executor.ExecuteAsync(CancellationToken.None)
281281
}
282282
}
283283

284+
[Test]
285+
public void DeathStarBenchClientExecutorSupportsIntegerAndTimeSpanDurationFormats()
286+
{
287+
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.Duration)] = 300;
288+
289+
TestDeathStarBenchClientExecutor executor = new TestDeathStarBenchClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
290+
291+
Assert.AreEqual(TimeSpan.FromSeconds(300), executor.Duration);
292+
293+
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.Duration)] = "00:05:00";
294+
295+
executor = new TestDeathStarBenchClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
296+
297+
Assert.AreEqual(TimeSpan.FromMinutes(5), executor.Duration);
298+
299+
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.Duration)] = 180;
300+
executor = new TestDeathStarBenchClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
301+
TimeSpan integerBasedDuration = executor.Duration;
302+
303+
this.mockFixture.Parameters[nameof(DeathStarBenchClientExecutor.Duration)] = "00:03:00";
304+
executor = new TestDeathStarBenchClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
305+
TimeSpan timespanBasedDuration = executor.Duration;
306+
307+
Assert.AreEqual(integerBasedDuration, timespanBasedDuration);
308+
}
309+
284310
private class TestDeathStarBenchClientExecutor : DeathStarBenchClientExecutor
285311
{
286312
public TestDeathStarBenchClientExecutor(IServiceCollection services, IDictionary<string, IConvertible> parameters = null)

src/VirtualClient/VirtualClient.Actions.UnitTests/Network/CPS/CPSClientExecutorTests.cs

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ public void SetupTest()
4343

4444
this.mockFixture.Parameters["PackageName"] = "Networking";
4545
this.mockFixture.Parameters["Connections"] = "256";
46-
this.mockFixture.Parameters["TestDuration"] = "300";
47-
this.mockFixture.Parameters["WarmupTime"] = "30";
48-
this.mockFixture.Parameters["Delaytime"] = "0";
46+
this.mockFixture.Parameters["TestDuration"] = "00:05:00";
47+
this.mockFixture.Parameters["WarmupTime"] = "00:00:30";
48+
this.mockFixture.Parameters["Delaytime"] = "00:00:00";
4949
this.mockFixture.Parameters["ConfidenceLevel"] = "99";
5050

5151
string currentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
@@ -94,6 +94,39 @@ public async Task CPSClientExecutorExecutesAsExpected()
9494
Assert.AreEqual(1, processExecuted);
9595
}
9696

97+
[Test]
98+
public async Task CPSClientExecutorExecutesAsExpectedWithIntegerTimeParameters()
99+
{
100+
this.mockFixture.Parameters["TestDuration"] = 120;
101+
this.mockFixture.Parameters["WarmupTime"] = 30;
102+
this.mockFixture.Parameters["Delaytime"] = 15;
103+
104+
NetworkingWorkloadExecutorTests.TestNetworkingWorkloadExecutor networkingWorkloadExecutor = new NetworkingWorkloadExecutorTests.TestNetworkingWorkloadExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
105+
await networkingWorkloadExecutor.OnInitialize.Invoke(EventContext.None, CancellationToken.None);
106+
107+
int processExecuted = 0;
108+
this.mockFixture.ProcessManager.OnCreateProcess = (file, arguments, workingDirectory) =>
109+
{
110+
processExecuted++;
111+
this.networkingWorkloadState.ToolState = NetworkingWorkloadToolState.Stopped;
112+
var expectedStateItem = new Item<NetworkingWorkloadState>(nameof(NetworkingWorkloadState), this.networkingWorkloadState);
113+
114+
this.mockFixture.ApiClient.Setup(client => client.GetStateAsync(It.IsAny<string>(), It.IsAny<CancellationToken>(), It.IsAny<IAsyncPolicy<HttpResponseMessage>>()))
115+
.ReturnsAsync(this.mockFixture.CreateHttpResponse(HttpStatusCode.OK, expectedStateItem));
116+
117+
return this.mockFixture.Process;
118+
};
119+
120+
TestCPSClientExecutor component = new TestCPSClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
121+
122+
Assert.AreEqual(TimeSpan.FromSeconds(120), component.TestDuration);
123+
Assert.AreEqual(TimeSpan.FromSeconds(30), component.WarmupTime);
124+
Assert.AreEqual(TimeSpan.FromSeconds(15), component.DelayTime);
125+
126+
await component.ExecuteAsync(CancellationToken.None).ConfigureAwait(false);
127+
Assert.AreEqual(1, processExecuted);
128+
}
129+
97130
private void SetupNetworkingWorkloadState()
98131
{
99132
this.networkingWorkloadState = new NetworkingWorkloadState();
@@ -109,6 +142,40 @@ private void SetupNetworkingWorkloadState()
109142
.ReturnsAsync(this.mockFixture.CreateHttpResponse(HttpStatusCode.OK, expectedStateItem));
110143
}
111144

145+
[Test]
146+
public void CPSClientExecutorSupportsIntegerAndTimeSpanTimeFormats()
147+
{
148+
this.mockFixture.Parameters["TestDuration"] = 300;
149+
this.mockFixture.Parameters["WarmupTime"] = 60;
150+
this.mockFixture.Parameters["Delaytime"] = 30;
151+
152+
TestCPSClientExecutor executor = new TestCPSClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
153+
154+
Assert.AreEqual(TimeSpan.FromSeconds(300), executor.TestDuration);
155+
Assert.AreEqual(TimeSpan.FromSeconds(60), executor.WarmupTime);
156+
Assert.AreEqual(TimeSpan.FromSeconds(30), executor.DelayTime);
157+
158+
this.mockFixture.Parameters["TestDuration"] = "00:05:00";
159+
this.mockFixture.Parameters["WarmupTime"] = "00:01:00";
160+
this.mockFixture.Parameters["Delaytime"] = "00:00:30";
161+
162+
executor = new TestCPSClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
163+
164+
Assert.AreEqual(TimeSpan.FromMinutes(5), executor.TestDuration);
165+
Assert.AreEqual(TimeSpan.FromMinutes(1), executor.WarmupTime);
166+
Assert.AreEqual(TimeSpan.FromSeconds(30), executor.DelayTime);
167+
168+
this.mockFixture.Parameters["TestDuration"] = 180;
169+
executor = new TestCPSClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
170+
TimeSpan integerBasedDuration = executor.TestDuration;
171+
172+
this.mockFixture.Parameters["TestDuration"] = "00:03:00";
173+
executor = new TestCPSClientExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
174+
TimeSpan timespanBasedDuration = executor.TestDuration;
175+
176+
Assert.AreEqual(integerBasedDuration, timespanBasedDuration);
177+
}
178+
112179
private class TestCPSClientExecutor : CPSClientExecutor
113180
{
114181
public TestCPSClientExecutor(IServiceCollection dependencies, IDictionary<string, IConvertible> parameters)

src/VirtualClient/VirtualClient.Actions.UnitTests/Network/CPS/CPSServerExecutorTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ public void SetupTest()
6060

6161
this.mockFixture.Parameters["PackageName"] = "cps";
6262
this.mockFixture.Parameters["Connections"] = "256";
63-
this.mockFixture.Parameters["TestDuration"] = "300";
64-
this.mockFixture.Parameters["WarmupTime"] = "30";
65-
this.mockFixture.Parameters["Delaytime"] = "0";
63+
this.mockFixture.Parameters["TestDuration"] = "00:05:00";
64+
this.mockFixture.Parameters["WarmupTime"] = "00:00:30";
65+
this.mockFixture.Parameters["Delaytime"] = "00:00:00";
6666
this.mockFixture.Parameters["ConfidenceLevel"] = "99";
6767

6868
string exampleResults = File.ReadAllText(this.mockFixture.Combine(CPSServerExecutorTests.ExamplesDirectory, "CPS_Example_Results_Server.txt"));

src/VirtualClient/VirtualClient.Actions.UnitTests/Network/NTttcp/NTttcpExecutorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public void SetupTest(PlatformID platform = PlatformID.Unix)
4141

4242
this.mockFixture.Parameters["PackageName"] = "networking";
4343
this.mockFixture.Parameters["Connections"] = "256";
44-
this.mockFixture.Parameters["TestDuration"] = "300";
45-
this.mockFixture.Parameters["WarmupTime"] = "300";
44+
this.mockFixture.Parameters["TestDuration"] = "00:05:00";
45+
this.mockFixture.Parameters["WarmupTime"] = "00:05:00";
4646
this.mockFixture.Parameters["Protocol"] = "TCP";
4747
this.mockFixture.Parameters["ThreadCount"] = "1";
4848
this.mockFixture.Parameters["BufferSizeClient"] = "4k";

src/VirtualClient/VirtualClient.Actions.UnitTests/Network/NetworkingWorkloadExecutorTests.cs

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public void NetworkingWorkloadStateInstancesAreJsonSerializable(bool? noSyncEnab
7373
"8K",
7474
"8K",
7575
256,
76-
60,
77-
5,
78-
5,
76+
"00:01:00",
77+
"00:00:05",
78+
"00:00:05",
7979
"Test_Mode_1",
8080
64,
8181
1234,
@@ -109,9 +109,9 @@ public void NetworkingWorkloadStateInstancesAreJsonSerializable_2()
109109
"8K",
110110
"8K",
111111
256,
112-
60,
113-
5,
114-
5,
112+
"00:01:00",
113+
"00:00:05",
114+
"00:00:05",
115115
"Test_Mode_1",
116116
64,
117117
1234,
@@ -157,9 +157,9 @@ public void NetworkingWorkloadStateInstancesAreJsonSerializable_3()
157157
"8K",
158158
"8K",
159159
256,
160-
60,
161-
5,
162-
5,
160+
"00:01:00",
161+
"00:00:05",
162+
"00:00:05",
163163
"Test_Mode_1",
164164
64,
165165
1234,
@@ -258,6 +258,42 @@ public void NetworkingWorkloadExecutorCreatesServerAPIClientForClient()
258258
Mock<object> mockSender = new Mock<object>();
259259
}
260260

261+
[Test]
262+
public void NetworkingWorkloadExecutorSupportsIntegerAndTimeSpanTimeFormats()
263+
{
264+
this.SetupTest(PlatformID.Unix, NetworkingWorkloadTool.NTttcp);
265+
266+
this.mockFixture.Parameters["TestDuration"] = 300;
267+
this.mockFixture.Parameters["WarmupTime"] = 60;
268+
this.mockFixture.Parameters["DelayTime"] = 30;
269+
270+
TestNetworkingWorkloadExecutor executor = new TestNetworkingWorkloadExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
271+
272+
Assert.AreEqual(TimeSpan.FromSeconds(300), executor.TestDuration);
273+
Assert.AreEqual(TimeSpan.FromSeconds(60), executor.WarmupTime);
274+
Assert.AreEqual(TimeSpan.FromSeconds(30), executor.DelayTime);
275+
276+
this.mockFixture.Parameters["TestDuration"] = "00:05:00";
277+
this.mockFixture.Parameters["WarmupTime"] = "00:01:00";
278+
this.mockFixture.Parameters["DelayTime"] = "00:00:30";
279+
280+
executor = new TestNetworkingWorkloadExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
281+
282+
Assert.AreEqual(TimeSpan.FromMinutes(5), executor.TestDuration);
283+
Assert.AreEqual(TimeSpan.FromMinutes(1), executor.WarmupTime);
284+
Assert.AreEqual(TimeSpan.FromSeconds(30), executor.DelayTime);
285+
286+
this.mockFixture.Parameters["TestDuration"] = 180;
287+
executor = new TestNetworkingWorkloadExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
288+
TimeSpan integerBasedDuration = executor.TestDuration;
289+
290+
this.mockFixture.Parameters["TestDuration"] = "00:03:00";
291+
executor = new TestNetworkingWorkloadExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters);
292+
TimeSpan timespanBasedDuration = executor.TestDuration;
293+
294+
Assert.AreEqual(integerBasedDuration, timespanBasedDuration);
295+
}
296+
261297
public class TestNetworkingWorkloadExecutor : NetworkingWorkloadExecutor
262298
{
263299
private MockFixture mockFixture;

src/VirtualClient/VirtualClient.Actions.UnitTests/Network/SockPerf/SockPerfExecutorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void SetupTest()
3838
.Returns(true);
3939

4040
this.mockFixture.Parameters["PackageName"] = "Networking";
41-
this.mockFixture.Parameters["TestDuration"] = "300";
41+
this.mockFixture.Parameters["TestDuration"] = "00:05:00";
4242
this.mockFixture.Parameters["Protocol"] = "TCP";
4343
this.mockFixture.Parameters["TestMode"] = "ping-pong";
4444
this.mockFixture.Parameters["MessageSize"] = "64";

0 commit comments

Comments
 (0)