Skip to content

Commit cc2256e

Browse files
saibulususaibulusu
andauthored
GroupID error for VC Validation (#306)
* Added a unit test for when GroupID is null. * Using case-insensitive dictionary (this.Metadata). * Unit tests. * Updating VcVersion. --------- Co-authored-by: saibulusu <[email protected]>
1 parent fd02853 commit cc2256e

File tree

6 files changed

+110
-12
lines changed

6 files changed

+110
-12
lines changed

.pipelines/azure-pipelines-linux.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ resources:
1616
options: --entrypoint=""
1717

1818
variables:
19-
VcVersion : 1.14.22
19+
VcVersion : 1.14.23
2020
ROOT: $(Build.SourcesDirectory)
2121
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
2222
ENABLE_PRS_DELAYSIGN: 1

.pipelines/azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pool:
1818
vmImage: windows-latest
1919

2020
variables:
21-
VcVersion : 1.14.22
21+
VcVersion : 1.14.23
2222
ROOT: $(Build.SourcesDirectory)
2323
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
2424
ENABLE_PRS_DELAYSIGN: 1

src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioDiscoveryExecutorTests.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,55 @@ await executor.ExecuteAsync(CancellationToken.None)
285285
}
286286
}
287287

288+
[Test]
289+
public async Task FioDiscoveryExecutorExecutesAsExpectedIfGroupIDIsRemoved()
290+
{
291+
this.mockFixture.Parameters[nameof(FioDiscoveryExecutor.ProcessModel)] = WorkloadProcessModel.SingleProcess;
292+
293+
List<string> expectedCommandLines = new List<string>
294+
{
295+
$"--name=fio_discovery_randwrite_134G_4K_d1_th1 --numjobs=1 --iodepth=1 --ioengine=libaio --size=134G --rw=randwrite --bs=4K --direct=1 --ramp_time=30 --runtime=300 --time_based --overwrite=1 --thread --group_reporting --output-format=json --filename=/dev/sd[a-z] --filename=/dev/sd[a-z] --filename=/dev/sd[a-z]",
296+
$"--name=fio_discovery_randwrite_134G_4K_d1_th4 --numjobs=4 --iodepth=1 --ioengine=libaio --size=134G --rw=randwrite --bs=4K --direct=1 --ramp_time=30 --runtime=300 --time_based --overwrite=1 --thread --group_reporting --output-format=json --filename=/dev/sd[a-z] --filename=/dev/sd[a-z] --filename=/dev/sd[a-z]",
297+
$"--name=fio_discovery_randwrite_134G_4K_d2_th8 --numjobs=8 --iodepth=2 --ioengine=libaio --size=134G --rw=randwrite --bs=4K --direct=1 --ramp_time=30 --runtime=300 --time_based --overwrite=1 --thread --group_reporting --output-format=json --filename=/dev/sd[a-z] --filename=/dev/sd[a-z] --filename=/dev/sd[a-z]"
298+
};
299+
300+
using (TestFioDiscoveryExecutor executor = new TestFioDiscoveryExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters))
301+
{
302+
executor.Metadata.Remove("GroupId".CamelCased());
303+
304+
await executor.ExecuteAsync(CancellationToken.None)
305+
.ConfigureAwait(false);
306+
307+
Assert.AreEqual(4, this.mockFixture.ProcessManager.Commands.Count());
308+
Assert.IsTrue(this.mockFixture.ProcessManager.CommandsExecuted(expectedCommandLines.ToArray()));
309+
}
310+
}
311+
312+
[Test]
313+
public async Task FioDiscoveryExecutorExecutesAsExpectedIfGroupIDHasBadCasing()
314+
{
315+
this.mockFixture.Parameters[nameof(FioDiscoveryExecutor.ProcessModel)] = WorkloadProcessModel.SingleProcess;
316+
317+
List<string> expectedCommandLines = new List<string>
318+
{
319+
$"--name=fio_discovery_randwrite_134G_4K_d1_th1 --numjobs=1 --iodepth=1 --ioengine=libaio --size=134G --rw=randwrite --bs=4K --direct=1 --ramp_time=30 --runtime=300 --time_based --overwrite=1 --thread --group_reporting --output-format=json --filename=/dev/sd[a-z] --filename=/dev/sd[a-z] --filename=/dev/sd[a-z]",
320+
$"--name=fio_discovery_randwrite_134G_4K_d1_th4 --numjobs=4 --iodepth=1 --ioengine=libaio --size=134G --rw=randwrite --bs=4K --direct=1 --ramp_time=30 --runtime=300 --time_based --overwrite=1 --thread --group_reporting --output-format=json --filename=/dev/sd[a-z] --filename=/dev/sd[a-z] --filename=/dev/sd[a-z]",
321+
$"--name=fio_discovery_randwrite_134G_4K_d2_th8 --numjobs=8 --iodepth=2 --ioengine=libaio --size=134G --rw=randwrite --bs=4K --direct=1 --ramp_time=30 --runtime=300 --time_based --overwrite=1 --thread --group_reporting --output-format=json --filename=/dev/sd[a-z] --filename=/dev/sd[a-z] --filename=/dev/sd[a-z]"
322+
};
323+
324+
using (TestFioDiscoveryExecutor executor = new TestFioDiscoveryExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters))
325+
{
326+
executor.Metadata.Remove("GroupId".CamelCased());
327+
executor.Metadata.Add("grouPId", string.Empty);
328+
329+
await executor.ExecuteAsync(CancellationToken.None)
330+
.ConfigureAwait(false);
331+
332+
Assert.AreEqual(4, this.mockFixture.ProcessManager.Commands.Count());
333+
Assert.IsTrue(this.mockFixture.ProcessManager.CommandsExecuted(expectedCommandLines.ToArray()));
334+
}
335+
}
336+
288337
private class TestFioDiscoveryExecutor : FioDiscoveryExecutor
289338
{
290339
public TestFioDiscoveryExecutor(IServiceCollection dependencies, IDictionary<string, IConvertible> parameters)

src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioMultiThroughputExecutorTests.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,61 @@ public async Task FioMultiThroughputExecutorCreatesExpectedJobFile_Anomalous_Sce
348348
}
349349
}
350350

351+
[Test]
352+
public async Task FioMultiThroughputSucceedsIfGroupIDIsRemoved()
353+
{
354+
int executions = 0;
355+
using (TestFioMultiThroughputExecutor executor = new TestFioMultiThroughputExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters))
356+
{
357+
executor.Metadata.Remove("GroupId".CamelCased());
358+
359+
this.mockFixture.ProcessManager.OnCreateProcess = (file, arguments, workingDirectory) =>
360+
{
361+
if (!arguments.Contains("chmod"))
362+
{
363+
executions++;
364+
Assert.IsTrue(arguments.Equals($"{this.mockPath.Path}/linux-x64/fio {this.mockPath.Path}/linux-x64/" +
365+
$"{nameof(FioMultiThroughputExecutor)}" +
366+
$"{executor.Parameters[nameof(FioMultiThroughputExecutor.TemplateJobFile)]}" +
367+
$" --section randomreader --section randomwriter --section sequentialwriter --time_based --output-format=json --thread --fallocate=none"));
368+
}
369+
return this.defaultMemoryProcess;
370+
};
371+
372+
await executor.ExecuteAsync(CancellationToken.None)
373+
.ConfigureAwait(false);
374+
}
375+
Assert.IsTrue(executions == 1);
376+
}
377+
378+
[Test]
379+
public async Task FioMultiThroughputSucceedsIfGroupIDHasBadCasing()
380+
{
381+
int executions = 0;
382+
using (TestFioMultiThroughputExecutor executor = new TestFioMultiThroughputExecutor(this.mockFixture.Dependencies, this.mockFixture.Parameters))
383+
{
384+
executor.Metadata.Remove("GroupId");
385+
executor.Metadata.Add("grouPId", string.Empty);
386+
387+
this.mockFixture.ProcessManager.OnCreateProcess = (file, arguments, workingDirectory) =>
388+
{
389+
if (!arguments.Contains("chmod"))
390+
{
391+
executions++;
392+
Assert.IsTrue(arguments.Equals($"{this.mockPath.Path}/linux-x64/fio {this.mockPath.Path}/linux-x64/" +
393+
$"{nameof(FioMultiThroughputExecutor)}" +
394+
$"{executor.Parameters[nameof(FioMultiThroughputExecutor.TemplateJobFile)]}" +
395+
$" --section randomreader --section randomwriter --section sequentialwriter --time_based --output-format=json --thread --fallocate=none"));
396+
}
397+
return this.defaultMemoryProcess;
398+
};
399+
400+
await executor.ExecuteAsync(CancellationToken.None)
401+
.ConfigureAwait(false);
402+
}
403+
Assert.IsTrue(executions == 1);
404+
}
405+
351406
private class TestFioMultiThroughputExecutor : FioMultiThroughputExecutor
352407
{
353408
public TestFioMultiThroughputExecutor(IServiceCollection dependencies, IDictionary<string, IConvertible> parameters)

src/VirtualClient/VirtualClient.Actions/FIO/FioDiscoveryExecutor.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,10 @@ public string GroupId
136136
{
137137
get
138138
{
139-
object metadata = null;
140-
EventContext.PersistentProperties.TryGetValue(nameof(metadata), out metadata);
141-
142139
IConvertible value = string.Empty;
143-
if (metadata != null)
140+
if (this.Metadata != null)
144141
{
145-
(metadata as Dictionary<string, IConvertible>).TryGetValue(nameof(this.GroupId).CamelCased(), out value);
142+
(this.Metadata as Dictionary<string, IConvertible>).TryGetValue(nameof(this.GroupId), out value);
146143
}
147144

148145
return value == null ? string.Empty : value.ToString();

src/VirtualClient/VirtualClient.Actions/FIO/FioMultiThroughputExecutor.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,10 @@ public string GroupId
7575
{
7676
get
7777
{
78-
object metadata = null;
79-
EventContext.PersistentProperties.TryGetValue(nameof(metadata), out metadata);
80-
8178
IConvertible value = string.Empty;
82-
if (metadata != null)
79+
if (this.Metadata != null)
8380
{
84-
(metadata as Dictionary<string, IConvertible>).TryGetValue(nameof(this.GroupId).CamelCased(), out value);
81+
(this.Metadata as Dictionary<string, IConvertible>).TryGetValue(nameof(this.GroupId), out value);
8582
}
8683

8784
return value == null ? string.Empty : value.ToString();

0 commit comments

Comments
 (0)