Skip to content

Commit 27aec58

Browse files
committed
Add multiple input test
1 parent 588caa3 commit 27aec58

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
=== MultipleInputColumnsDisplayTest ===
2+
3+
BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
4+
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
5+
Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
6+
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
7+
Job-rndId0 : extra output line
8+
Job-rndId1 : extra output line
9+
Job-rndId2 : extra output line
10+
Job-rndId3 : extra output line
11+
Job-rndId4 : extra output line
12+
Job-rndId5 : extra output line
13+
Dry : extra output line
14+
15+
16+
Method | Runtime | IterationCount | LaunchCount | RunStrategy | UnrollFactor | WarmupCount | Mean | Error | Ratio |
17+
------- |--------------------- |--------------- |------------ |------------ |------------- |------------ |---------:|------:|------:|
18+
Method | .NET 6.0 | Default | Default | ColdStart | 1 | Default | 1.000 ns | NA | 1.00 |
19+
Method | .NET 6.0 | Default | Default | Default | 16 | Default | 1.000 ns | NA | 1.00 |
20+
Method | .NET Framework 4.8.1 | Default | Default | ColdStart | 1 | Default | 1.000 ns | NA | 1.00 |
21+
Method | .NET Framework 4.8.1 | Default | Default | Default | 16 | Default | 1.000 ns | NA | 1.00 |
22+
Method | NativeAOT 6.0 | Default | Default | ColdStart | 1 | Default | 1.000 ns | NA | 1.00 |
23+
Method | NativeAOT 6.0 | Default | Default | Default | 16 | Default | 1.000 ns | NA | 1.00 |
24+
Method | .NET 6.0 | 1 | 1 | ColdStart | 1 | 1 | 1.000 ns | NA | 1.00 |
25+
Method | .NET Framework 4.8.1 | 1 | 1 | ColdStart | 1 | 1 | 1.000 ns | NA | 1.00 |
26+
Method | NativeAOT 6.0 | 1 | 1 | ColdStart | 1 | 1 | 1.000 ns | NA | 1.00 |

tests/BenchmarkDotNet.Tests/Columns/JobColumnsApprovalTests.cs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
using System;
22
using System.Globalization;
33
using System.Runtime.CompilerServices;
4+
using System.Text.RegularExpressions;
45
using System.Threading;
56
using ApprovalTests;
67
using ApprovalTests.Namers;
78
using ApprovalTests.Reporters;
89
using BenchmarkDotNet.Attributes;
10+
using BenchmarkDotNet.Columns;
911
using BenchmarkDotNet.Configs;
12+
using BenchmarkDotNet.ConsoleArguments;
13+
using BenchmarkDotNet.Engines;
1014
using BenchmarkDotNet.Environments;
1115
using BenchmarkDotNet.Exporters;
1216
using BenchmarkDotNet.Jobs;
1317
using BenchmarkDotNet.Loggers;
1418
using BenchmarkDotNet.Tests.Mocks;
19+
using BenchmarkDotNet.Tests.XUnit;
1520
using BenchmarkDotNet.Toolchains.InProcess.Emit;
1621
using JetBrains.Annotations;
1722
using Xunit;
@@ -83,5 +88,61 @@ public class BenchmarkClass
8388
{
8489
[Benchmark] public void Method() { }
8590
}
91+
92+
[FactDotNetCoreOnly("In the .Net Framework cmd job uses CsProjClassicNetToolchain while fluent and attribute jobs use RoslynToolchain by default")]
93+
[MethodImpl(MethodImplOptions.NoInlining)]
94+
public void MultipleInputColumnsDisplayTest()
95+
{
96+
var cmdConfig = ConfigParser.Parse(
97+
"--join --runtimes net481 net6.0 nativeaot6.0".Split(), NullLogger.Instance).config;
98+
99+
var fluentConfig = ManualConfig.CreateEmpty().AddColumnProvider(DefaultColumnProviders.Instance)
100+
.AddJob(Job.Dry.WithRuntime(CoreRuntime.Core60))
101+
.AddJob(Job.Dry.WithRuntime(ClrRuntime.Net481))
102+
.AddJob(Job.Dry.WithRuntime(NativeAotRuntime.Net60));
103+
104+
var config = ManualConfig.Union(cmdConfig, fluentConfig);
105+
106+
NamerFactory.AdditionalInformation = nameof(MultipleInputColumnsDisplayTest);
107+
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
108+
109+
var logger = new AccumulationLogger();
110+
logger.WriteLine("=== " + nameof(MultipleInputColumnsDisplayTest) + " ===");
111+
112+
var exporter = MarkdownExporter.Mock;
113+
var summary = MockFactory.CreateSummary<BenchmarkClass1>(config);
114+
exporter.ExportToLog(summary, logger);
115+
116+
var log = logger.GetLog();
117+
log = ReplaceRandomIDs(log);
118+
Approvals.Verify(log);
119+
}
120+
121+
private static string ReplaceRandomIDs(string log)
122+
{
123+
var regex = new Regex(@"Job-\w*");
124+
125+
var index = 0;
126+
foreach (Match match in regex.Matches(log))
127+
{
128+
var randomGeneratedJobName = match.Value;
129+
130+
// JobIdGenerator.GenerateRandomId() generates Job-ABCDEF
131+
// respect the length for proper table formatting
132+
var persistantName = $"Job-rndId{index}";
133+
log = log.Replace(randomGeneratedJobName, persistantName);
134+
index++;
135+
}
136+
137+
return log;
138+
}
139+
140+
[SimpleJob(RunStrategy.ColdStart, RuntimeMoniker.Net60)]
141+
[SimpleJob(RunStrategy.ColdStart, RuntimeMoniker.Net481)]
142+
[SimpleJob(RunStrategy.ColdStart, RuntimeMoniker.NativeAot60)]
143+
public class BenchmarkClass1
144+
{
145+
[Benchmark] public void Method() { }
146+
}
86147
}
87148
}

0 commit comments

Comments
 (0)