Skip to content

Commit 368ac86

Browse files
committed
Revert BuildPartition.Id.
Include configuration in BinariesDirectoryPath.
1 parent 8f9ce05 commit 368ac86

File tree

9 files changed

+25
-47
lines changed

9 files changed

+25
-47
lines changed

src/BenchmarkDotNet/Jobs/JobExtensions.cs

+5
Original file line numberDiff line numberDiff line change
@@ -436,5 +436,10 @@ private static Job WithCore(this Job job, Action<Job> updateCallback)
436436
updateCallback(newJob);
437437
return newJob;
438438
}
439+
440+
internal static bool HasDynamicBuildCharacteristic(this Job job) =>
441+
job.HasValue(InfrastructureMode.NuGetReferencesCharacteristic)
442+
|| job.HasValue(InfrastructureMode.BuildConfigurationCharacteristic)
443+
|| job.HasValue(InfrastructureMode.ArgumentsCharacteristic);
439444
}
440445
}

src/BenchmarkDotNet/Running/BuildPartition.cs

+2-17
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.IO;
33
using System.Reflection;
4-
using System.Threading;
54
using BenchmarkDotNet.Characteristics;
65
using BenchmarkDotNet.Configs;
76
using BenchmarkDotNet.Environments;
@@ -19,30 +18,20 @@ namespace BenchmarkDotNet.Running
1918
{
2019
public class BuildPartition
2120
{
22-
private static int s_id;
23-
2421
public BuildPartition(BenchmarkBuildInfo[] benchmarks, IResolver resolver)
2522
{
26-
var guid = Guid.NewGuid();
2723
Resolver = resolver;
2824
RepresentativeBenchmarkCase = benchmarks[0].BenchmarkCase;
2925
Benchmarks = benchmarks;
30-
ProgramName = benchmarks[0].Config.Options.IsSet(ConfigOptions.KeepBenchmarkFiles) ? RepresentativeBenchmarkCase.Job.FolderInfo : guid.ToString();
26+
ProgramName = benchmarks[0].Config.Options.IsSet(ConfigOptions.KeepBenchmarkFiles) ? RepresentativeBenchmarkCase.Job.FolderInfo : Guid.NewGuid().ToString();
3127
LogBuildOutput = benchmarks[0].Config.Options.IsSet(ConfigOptions.LogBuildOutput);
3228
GenerateMSBuildBinLog = benchmarks[0].Config.Options.IsSet(ConfigOptions.GenerateMSBuildBinLog);
33-
34-
Id = $"{Interlocked.Increment(ref s_id)}_";
35-
var random = new Random(guid.GetHashCode());
36-
for (int i = 0; i < 6; i++)
37-
Id += (char) ('A' + random.Next(26));
3829
}
3930

4031
public BenchmarkBuildInfo[] Benchmarks { get; }
4132

4233
public string ProgramName { get; }
4334

44-
public string Id { get; }
45-
4635
/// <summary>
4736
/// the benchmarks are grouped by the build settings
4837
/// so you can use this benchmark to get the runtime settings
@@ -98,11 +87,7 @@ internal bool ForcedNoDependenciesForIntegrationTests
9887
if (job.GetToolchain().Builder is not DotNetCliBuilder)
9988
return false;
10089

101-
bool hasDynamicBuildCharacteristic = job.HasValue(InfrastructureMode.NuGetReferencesCharacteristic)
102-
|| job.HasValue(InfrastructureMode.BuildConfigurationCharacteristic)
103-
|| job.HasValue(InfrastructureMode.ArgumentsCharacteristic);
104-
105-
return !hasDynamicBuildCharacteristic;
90+
return !job.HasDynamicBuildCharacteristic();
10691
}
10792
}
10893
}

src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using System.IO;
22
using System.Linq;
3-
using BenchmarkDotNet.Helpers;
4-
using BenchmarkDotNet.Running;
53
using BenchmarkDotNet.Toolchains.CsProj;
64

75
namespace BenchmarkDotNet.Toolchains.CoreRun
@@ -23,8 +21,8 @@ public CoreRunGenerator(FileInfo sourceCoreRun, FileInfo copyCoreRun, string tar
2321

2422
protected override string GetPackagesDirectoryPath(string buildArtifactsDirectoryPath) => PackagesPath;
2523

26-
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
27-
=> Path.Combine(base.GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition), "publish");
24+
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
25+
=> Path.Combine(buildArtifactsDirectoryPath, "bin", configuration, TargetFrameworkMoniker, "publish");
2826

2927
protected override void CopyAllRequiredFiles(ArtifactsPaths artifactsPaths)
3028
{

src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs

+5-9
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,11 @@ protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPar
6161
protected override string GetProjectFilePath(string buildArtifactsDirectoryPath)
6262
=> Path.Combine(buildArtifactsDirectoryPath, "BenchmarkDotNet.Autogenerated.csproj");
6363

64-
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
65-
=> buildPartition.ForcedNoDependenciesForIntegrationTests
66-
? Path.Combine(buildArtifactsDirectoryPath, "bin", buildPartition.BuildConfiguration, TargetFrameworkMoniker)
67-
: Path.Combine(buildArtifactsDirectoryPath, "bin", $"bdn_partition_{buildPartition.Id}");
68-
69-
protected override string GetIntermediateDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
70-
=> buildPartition.ForcedNoDependenciesForIntegrationTests
71-
? Path.Combine(buildArtifactsDirectoryPath, "obj", buildPartition.BuildConfiguration, TargetFrameworkMoniker)
72-
: Path.Combine(buildArtifactsDirectoryPath, "obj", $"bdn_partition_{buildPartition.Id}");
64+
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
65+
=> Path.Combine(buildArtifactsDirectoryPath, "bin", configuration, TargetFrameworkMoniker);
66+
67+
protected override string GetIntermediateDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
68+
=> Path.Combine(buildArtifactsDirectoryPath, "obj", configuration, TargetFrameworkMoniker);
7369

7470
[SuppressMessage("ReSharper", "StringLiteralTypo")] // R# complains about $variables$
7571
protected override void GenerateProject(BuildPartition buildPartition, ArtifactsPaths artifactsPaths, ILogger logger)

src/BenchmarkDotNet/Toolchains/GeneratorBase.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ public GenerateResult GenerateProject(BuildPartition buildPartition, ILogger log
4545
/// <summary>
4646
/// returns a path where executable should be found after the build (usually \bin)
4747
/// </summary>
48-
[PublicAPI] protected virtual string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
48+
[PublicAPI] protected virtual string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
4949
=> buildArtifactsDirectoryPath;
5050

5151
/// <summary>
5252
/// returns a path where intermediate files should be found after the build (usually \obj)
5353
/// </summary>
5454
[PublicAPI]
55-
protected virtual string GetIntermediateDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
55+
protected virtual string GetIntermediateDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
5656
=> string.Empty;
5757

5858
/// <summary>
@@ -127,15 +127,15 @@ private ArtifactsPaths GetArtifactsPaths(BuildPartition buildPartition, string r
127127

128128
string programName = buildPartition.ProgramName;
129129
string buildArtifactsDirectoryPath = GetBuildArtifactsDirectoryPath(buildPartition, programName);
130-
string binariesDirectoryPath = GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition);
130+
string binariesDirectoryPath = GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition.BuildConfiguration);
131131

132132
string executablePath = GetExecutablePath(binariesDirectoryPath, programName);
133133

134134
return new ArtifactsPaths(
135135
rootArtifactsFolderPath: rootArtifactsFolderPath,
136136
buildArtifactsDirectoryPath: buildArtifactsDirectoryPath,
137137
binariesDirectoryPath: binariesDirectoryPath,
138-
intermediateDirectoryPath: GetIntermediateDirectoryPath(buildArtifactsDirectoryPath, buildPartition),
138+
intermediateDirectoryPath: GetIntermediateDirectoryPath(buildArtifactsDirectoryPath, buildPartition.BuildConfiguration),
139139
programCodePath: Path.Combine(buildArtifactsDirectoryPath, $"{programName}{codeFileExtension}"),
140140
appConfigPath: $"{executablePath}.config",
141141
nuGetConfigPath: Path.Combine(buildArtifactsDirectoryPath, "NuGet.config"),

src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ protected override string GetExecutablePath(string binariesDirectoryPath, string
5858
? Path.Combine(binariesDirectoryPath, $"{programName}.exe")
5959
: Path.Combine(binariesDirectoryPath, programName);
6060

61-
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
62-
=> buildPartition.ForcedNoDependenciesForIntegrationTests
63-
? Path.Combine(buildArtifactsDirectoryPath, "bin", TargetFrameworkMoniker, CustomDotNetCliToolchainBuilder.GetPortableRuntimeIdentifier(), "publish")
64-
: Path.Combine(base.GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition), CustomDotNetCliToolchainBuilder.GetPortableRuntimeIdentifier(), "publish");
61+
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
62+
=> Path.Combine(buildArtifactsDirectoryPath, "bin", configuration, TargetFrameworkMoniker, CustomDotNetCliToolchainBuilder.GetPortableRuntimeIdentifier(), "publish");
6563
}
6664
}

src/BenchmarkDotNet/Toolchains/MonoWasm/WasmGenerator.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,7 @@ protected void GenerateProjectFile(BuildPartition buildPartition, ArtifactsPaths
6868

6969
protected override string GetExecutablePath(string binariesDirectoryPath, string programName) => Path.Combine(binariesDirectoryPath, MainJS);
7070

71-
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
72-
=> buildPartition.ForcedNoDependenciesForIntegrationTests
73-
? Path.Combine(buildArtifactsDirectoryPath, "bin", TargetFrameworkMoniker, "browser-wasm", "AppBundle")
74-
: Path.Combine(base.GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition), "browser-wasm", "AppBundle");
71+
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
72+
=> Path.Combine(buildArtifactsDirectoryPath, "bin", configuration, TargetFrameworkMoniker, "browser-wasm", "AppBundle");
7573
}
7674
}

src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPar
6464
? Path.Combine(Path.GetTempPath(), programName) // store everything in temp to avoid collisions with IDE
6565
: base.GetBuildArtifactsDirectoryPath(buildPartition, programName);
6666

67-
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, BuildPartition buildPartition)
68-
=> Path.Combine(base.GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition), runtimeIdentifier, "publish");
67+
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
68+
=> Path.Combine(buildArtifactsDirectoryPath, "bin", configuration, TargetFrameworkMoniker, runtimeIdentifier, "publish");
6969

7070
protected override void GenerateBuildScript(BuildPartition buildPartition, ArtifactsPaths artifactsPaths)
7171
{

src/BenchmarkDotNet/Toolchains/ToolchainExtensions.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ private static IToolchain GetToolchain(Job job, Descriptor descriptor)
2828
: GetToolchain(
2929
job.ResolveValue(EnvironmentMode.RuntimeCharacteristic, EnvironmentResolver.Instance),
3030
descriptor,
31-
job.HasValue(InfrastructureMode.NuGetReferencesCharacteristic)
32-
|| job.HasValue(InfrastructureMode.BuildConfigurationCharacteristic)
33-
|| job.HasValue(InfrastructureMode.ArgumentsCharacteristic));
31+
job.HasDynamicBuildCharacteristic());
3432

3533
internal static IToolchain GetToolchain(this Runtime runtime, Descriptor? descriptor = null, bool preferMsBuildToolchains = false)
3634
{

0 commit comments

Comments
 (0)