Skip to content

Commit 2244617

Browse files
committed
Async validation
1 parent e930ff7 commit 2244617

67 files changed

Lines changed: 381 additions & 406 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[*.cs]
2+
3+
# CS1998: Async method lacks 'await' operators and will run synchronously
4+
dotnet_diagnostic.CS1998.severity = suggestion

BenchmarkDotNet.slnx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
<Project Path="samples/BenchmarkDotNet.Samples.FSharp/BenchmarkDotNet.Samples.FSharp.fsproj" />
99
<Project Path="samples/BenchmarkDotNet.Samples/BenchmarkDotNet.Samples.csproj" DefaultStartup="true" />
1010
</Folder>
11+
<Folder Name="/Solution Items/">
12+
<File Path=".editorconfig" />
13+
</Folder>
1114
<Folder Name="/src/">
1215
<Project Path="src/BenchmarkDotNet.Analyzers/BenchmarkDotNet.Analyzers.csproj" />
1316
<Project Path="src/BenchmarkDotNet.Annotations/BenchmarkDotNet.Annotations.csproj" />

src/BenchmarkDotNet.Diagnostics.Windows/ConcurrencyVisualizerProfiler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public void Handle(HostSignal signal, DiagnoserActionParameters parameters)
7575

7676
public IEnumerable<Metric> ProcessResults(DiagnoserResults results) => etwProfiler.ProcessResults(results);
7777

78-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters) => etwProfiler.Validate(validationParameters);
78+
public IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters) => etwProfiler.ValidateAsync(validationParameters);
7979

8080
private static EtwProfilerConfig CreateDefaultConfig()
8181
{

src/BenchmarkDotNet.Diagnostics.Windows/EtwProfiler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ public EtwProfiler(EtwProfilerConfig config)
5757

5858
public RunMode GetRunMode(BenchmarkCase benchmarkCase) => runMode;
5959

60-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters)
61-
=> HardwareCounters.Validate(validationParameters, mandatory: false);
60+
public IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters)
61+
=> HardwareCounters.Validate(validationParameters, mandatory: false).ToAsyncEnumerable();
6262

6363
public void Handle(HostSignal signal, DiagnoserActionParameters parameters)
6464
{

src/BenchmarkDotNet.Diagnostics.Windows/JitDiagnoser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void Handle(HostSignal signal, DiagnoserActionParameters parameters)
3232

3333
public virtual IEnumerable<Metric> ProcessResults(DiagnoserResults results) => Array.Empty<Metric>();
3434

35-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters)
35+
public async IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters)
3636
{
3737
if (!OsDetector.IsWindows())
3838
{

src/BenchmarkDotNet.Diagnostics.Windows/NativeMemoryProfiler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public IEnumerable<Metric> ProcessResults(DiagnoserResults results)
5656
return new NativeMemoryLogParser(traceFilePath, results.BenchmarkCase, logger, results.BuildResult.ArtifactsPaths.ProgramName).Parse();
5757
}
5858

59-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters) => etwProfiler.Validate(validationParameters);
59+
public IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters) => etwProfiler.ValidateAsync(validationParameters);
6060

6161
private static EtwProfilerConfig CreateDefaultConfig()
6262
{

src/BenchmarkDotNet/BenchmarkDotNet.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<AssemblyTitle>BenchmarkDotNet</AssemblyTitle>
66
<TargetFrameworks>netstandard2.0;net6.0;net8.0;net9.0;net10.0</TargetFrameworks>
77
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
8-
<NoWarn>$(NoWarn);1701;1702;1705;1591;3005;NU1702;CS3001;CS3003</NoWarn>
8+
<NoWarn>$(NoWarn);1701;1702;1705;1591;3005;NU1510;NU1702;CS3001;CS3003</NoWarn>
99
<AssemblyName>BenchmarkDotNet</AssemblyName>
1010
<PackageId>BenchmarkDotNet</PackageId>
1111
<RootNamespace>BenchmarkDotNet</RootNamespace>
@@ -28,6 +28,7 @@
2828
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
2929
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
3030
<PackageReference Include="System.Management" Version="10.0.1" />
31+
<PackageReference Include="System.Linq.AsyncEnumerable" Version="10.0.1" />
3132
</ItemGroup>
3233
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
3334
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />

src/BenchmarkDotNet/Diagnosers/CompositeDiagnoser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ public void DisplayResults(ILogger logger)
5555
}
5656
}
5757

58-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters)
59-
=> diagnosers.SelectMany(diagnoser => diagnoser.Validate(validationParameters));
58+
public IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters)
59+
=> diagnosers.ToAsyncEnumerable().SelectMany(diagnoser => diagnoser.ValidateAsync(validationParameters));
6060
}
6161

6262
public sealed class CompositeInProcessDiagnoser(IReadOnlyList<IInProcessDiagnoser> inProcessDiagnosers)

src/BenchmarkDotNet/Diagnosers/EventPipeProfiler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public EventPipeProfiler(EventPipeProfile profile = EventPipeProfile.CpuSampling
5656

5757
public RunMode GetRunMode(BenchmarkCase benchmarkCase) => performExtraBenchmarksRun ? RunMode.ExtraRun : RunMode.NoOverhead;
5858

59-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters)
59+
public async IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters)
6060
{
6161
foreach (var benchmark in validationParameters.Benchmarks)
6262
{

src/BenchmarkDotNet/Diagnosers/ExceptionDiagnoser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public IEnumerable<Metric> ProcessResults(DiagnoserResults diagnoserResults)
4949
}
5050
}
5151

52-
public IEnumerable<ValidationError> Validate(ValidationParameters validationParameters) => [];
52+
public IAsyncEnumerable<ValidationError> ValidateAsync(ValidationParameters validationParameters) => AsyncEnumerable.Empty<ValidationError>();
5353

5454
void IInProcessDiagnoser.DeserializeResults(BenchmarkCase benchmarkCase, string serializedResults)
5555
=> results.Add(benchmarkCase, long.Parse(serializedResults));

0 commit comments

Comments
 (0)