Skip to content

Commit 4d3282b

Browse files
committed
test
1 parent 53932c2 commit 4d3282b

File tree

4 files changed

+90
-2
lines changed

4 files changed

+90
-2
lines changed

src/BenchmarkDotNet/EventProcessors/CompositeEventProcessor.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using BenchmarkDotNet.Extensions;
4+
using BenchmarkDotNet.Loggers;
45
using BenchmarkDotNet.Reports;
56
using BenchmarkDotNet.Running;
67
using BenchmarkDotNet.Toolchains.Results;
@@ -12,14 +13,24 @@ internal sealed class CompositeEventProcessor : EventProcessor
1213
{
1314
private readonly HashSet<EventProcessor> eventProcessors;
1415

15-
public CompositeEventProcessor(BenchmarkRunInfo[] benchmarkRunInfos)
16+
public CompositeEventProcessor(BenchmarkRunInfo[] benchmarkRunInfos, CompositeLogger compositeLogger)
1617
{
1718
var eventProcessors = new HashSet<EventProcessor>();
1819

1920
foreach (var info in benchmarkRunInfos)
2021
eventProcessors.AddRange(info.Config.GetEventProcessors());
2122

23+
// Try add log grouping event processor when running on GitHub Actions or Azure Pipelines.
24+
if (IsGitHubAction() || IsAzurePipelines())
25+
{
26+
if (compositeLogger.TryGetConsoleLogger(out var consoleLogger))
27+
eventProcessors.Add(new LogGroupingEventProcessor(consoleLogger));
28+
}
29+
2230
this.eventProcessors = eventProcessors;
31+
32+
static bool IsGitHubAction() => Environment.GetEnvironmentVariable("GITHUB_ACTION") == "true";
33+
static bool IsAzurePipelines() => Environment.GetEnvironmentVariable("TF_BUILD") == "True";
2334
}
2435

2536
public override void OnStartValidationStage()
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using BenchmarkDotNet.Extensions;
4+
using BenchmarkDotNet.Loggers;
5+
using BenchmarkDotNet.Reports;
6+
using BenchmarkDotNet.Running;
7+
8+
namespace BenchmarkDotNet.EventProcessors
9+
{
10+
internal sealed class LogGroupingEventProcessor : EventProcessor
11+
{
12+
private readonly ILogger consoleLogger;
13+
14+
public LogGroupingEventProcessor(ConsoleLogger logger)
15+
{
16+
consoleLogger = logger;
17+
}
18+
19+
public override void OnStartValidationStage()
20+
{
21+
consoleLogger.WriteLine("##[group]ValidationStage");
22+
}
23+
24+
public override void OnEndValidationStage()
25+
{
26+
consoleLogger.WriteLine("##[endgroup]");
27+
}
28+
29+
public override void OnStartBuildStage(IReadOnlyList<BuildPartition> partitions)
30+
{
31+
consoleLogger.WriteLine("##[group]BuildStage");
32+
}
33+
34+
public override void OnEndBuildStage()
35+
{
36+
consoleLogger.WriteLine("##[endgroup]");
37+
}
38+
39+
public override void OnStartRunStage()
40+
{
41+
consoleLogger.WriteLine("##[group]RunStage");
42+
}
43+
44+
public override void OnStartRunBenchmarksInType(Type type, IReadOnlyList<BenchmarkCase> benchmarks)
45+
{
46+
consoleLogger.WriteLine($"##[group]RunBenchmarksInType: {type.GetDisplayName()}");
47+
}
48+
49+
public override void OnEndRunBenchmarksInType(Type type, Summary summary)
50+
{
51+
consoleLogger.WriteLine("##[endgroup]");
52+
}
53+
54+
public override void OnStartRunBenchmark(BenchmarkCase benchmarkCase)
55+
{
56+
Console.WriteLine($"##[group]RunBenchmark: {benchmarkCase.DisplayInfo}");
57+
}
58+
59+
public override void OnEndRunBenchmark(BenchmarkCase benchmarkCase, BenchmarkReport report)
60+
{
61+
Console.WriteLine("##[endgroup]");
62+
}
63+
64+
public override void OnEndRunStage()
65+
{
66+
Console.WriteLine("##[endgroup]");
67+
}
68+
}
69+
}

src/BenchmarkDotNet/Loggers/CompositeLogger.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Immutable;
2+
using System.Linq;
23

34
namespace BenchmarkDotNet.Loggers
45
{
@@ -57,5 +58,11 @@ public void Flush()
5758
}
5859
}
5960
}
61+
62+
public bool TryGetConsoleLogger(out ConsoleLogger consoleLogger)
63+
{
64+
consoleLogger = loggers.OfType<ConsoleLogger>().FirstOrDefault();
65+
return consoleLogger != null;
66+
}
6067
}
6168
}

src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@ internal static Summary[] Run(BenchmarkRunInfo[] benchmarkRunInfos)
5555
using (var streamLogger = new StreamLogger(GetLogFileStreamWriter(benchmarkRunInfos, logFilePath)))
5656
{
5757
var compositeLogger = CreateCompositeLogger(benchmarkRunInfos, streamLogger);
58+
5859
using var wakeLock = WakeLock.Request(WakeLock.GetWakeLockType(benchmarkRunInfos), "BenchmarkDotNet Running Benchmarks", streamLogger);
59-
var eventProcessor = new CompositeEventProcessor(benchmarkRunInfos);
60+
var eventProcessor = new CompositeEventProcessor(benchmarkRunInfos, (CompositeLogger)compositeLogger);
6061

6162
eventProcessor.OnStartValidationStage();
6263

0 commit comments

Comments
 (0)