diff --git a/src/benchmarks/gc/GC.Infrastructure/Configurations/ReliabilityFrameworkTestCreateSuite.yaml b/src/benchmarks/gc/GC.Infrastructure/Configurations/ReliabilityFrameworkTestCreateSuite.yaml new file mode 100644 index 00000000000..4e6790d1c4a --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/Configurations/ReliabilityFrameworkTestCreateSuite.yaml @@ -0,0 +1,12 @@ +OutputFolder: Q:\output-data_sync_checkin + +EnableStressMode: false + +CoreRoot: Q:\runtime\artifacts\tests\coreclr\windows.x64.Checked\Tests\Core_Root +ReliabilityFrameworkDll: Q:\runtime\artifacts\tests\coreclr\windows.x64.Release\GC\Stress\Framework\ReliabilityFramework\ReliabilityFramework.dll +GCPerfSimDll: Q:\performance\artifacts\bin\GCPerfSim\Release\net7.0\GCPerfSim.dll +TestFolder: Q:\runtime\artifacts\tests\coreclr\windows.x64.Release\GC\Stress\Framework\ReliabilityFramework\Tests + + + + diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTest.CreateTestSuite.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTest.CreateTestSuite.cs new file mode 100644 index 00000000000..51e2c54a054 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTest.CreateTestSuite.cs @@ -0,0 +1,183 @@ +using System.Xml.Linq; + +namespace GC.Infrastructure.Core.Configurations +{ + public static class ReliabilityFrameworkTestSuiteCreator + { + public static void CreateTestingAssets(string ReliabilityFrameworkDll, + string GCPerfSimDll, + string outputFolder, + string TestFolder) + { + try + { + Console.WriteLine($"====== Copy ReliabilityFramework.dll and Tests to `outputFolder` ======"); + Utilities.CopyFile(ReliabilityFrameworkDll, outputFolder); + DirectoryInfo testDir = Directory.CreateDirectory(Path.Combine(outputFolder, "Tests")); + string testfolderPath = testDir.FullName; + Utilities.CopyFilesRecursively(TestFolder, testfolderPath); + + Console.WriteLine($"====== Copy gcperfsim.dll to Tests ======"); + string destTestsFolder = Path.Combine(outputFolder, "Tests"); + Utilities.CopyFile(GCPerfSimDll, destTestsFolder); + } + catch (Exception ex) + { + throw new Exception($"{nameof(ReliabilityFrameworkTestSuiteCreator)}: Fail to generate test assets: {ex}"); + } + } + + public static void GenerateTestScript(string rid, + string baseSuiteFolder, + string coreRoot, + string configPath, + string gcMode, + string outputRoot, + string scriptPath) + { + string scriptFoler = Path.GetDirectoryName(scriptPath); + string osName = rid.Split("-") + .FirstOrDefault(""); + + string configName = Path.GetFileName(configPath).Split("-") + .FirstOrDefault(""); + + (string DOTNET_gcServer, string DOTNET_GCDynamicAdaptationMode) = + gcMode switch + { + "Datas" => ("1", "1"), + "Server" => ("1", "0"), + "Workstation" => ("0", "0"), + _ => throw new Exception($"{nameof(ReliabilityFrameworkTestSuiteCreator)}: Unknow GC mode: {gcMode}") + }; + + string scriptSettingSegment; + string scriptBaseContent; + + if (osName == "win") + { + scriptSettingSegment = +$""" +########## setting start ########## +$Env:DOTNET_gcServer={DOTNET_gcServer} +$Env:DOTNET_GCDynamicAdaptationMode={DOTNET_GCDynamicAdaptationMode} + +$OutputRoot="{outputRoot}" +$CORE_ROOT="{coreRoot}" + +# set config path +$config_path=Join-Path -Path $PSScriptRoot -ChildPath "{Path.GetRelativePath(scriptFoler, configPath)}" + +# set test folder +$test_folder=Join-Path -Path $OutputRoot -ChildPath "Tests" + +# set ReliabilityFramework.dll path +$reliability_framework_dll=Join-Path -Path $OutputRoot -ChildPath "ReliabilityFramework.dll" + +# set output folder +$output_folder=$PSScriptRoot +########## setting end ########## +"""; + string baseScriptPath = Path.Combine(baseSuiteFolder, "TestingScript.ps1.txt"); + scriptBaseContent = File.ReadAllText(baseScriptPath); + } + else + { + scriptSettingSegment = +$""" +#!/bin/bash + +script_root=$(dirname $(realpath $0)) +########## setting start ########## +# set gc mode +export DOTNET_gcServer={DOTNET_gcServer} +export DOTNET_GCDynamicAdaptationMode={DOTNET_GCDynamicAdaptationMode} + +# set core_root +Output_Root={outputRoot} +CORE_ROOT={coreRoot} + +# set config path +config_path=$script_root/{Path.GetRelativePath(scriptFoler, configPath)} + +# set test folder +test_folder=$Output_Root/Tests + +# set ReliabilityFramework.dll path +reliability_framework_dll=$Output_Root/ReliabilityFramework.dll + +# set output folder +output_folder=$script_root + +########## setting end ########## +"""; + string baseScriptPath = Path.Combine(baseSuiteFolder, "TestingScript.sh.txt"); + scriptBaseContent = File.ReadAllText(baseScriptPath); + } + + string content = $"{scriptSettingSegment}\n\n{scriptBaseContent}"; + File.WriteAllText(scriptPath, content); + } + + public static void GenerateTestConfig(string rid, string baseSuiteFolder, string configName, bool enableStress, string gcMode, string configPath) + { + try + { + string osName = rid.Split("-") + .FirstOrDefault(""); + + string maximumWaitTime = + (osName, enableStress) switch + { + ("win", false) => Windows[configName][gcMode], + ("win", true) => WindowsStress[configName][gcMode], + ("linux", false) => Linux[configName][gcMode], + ("linux", true) => LinuxStress[configName][gcMode], + _ => throw new Exception($"{nameof(ReliabilityFrameworkTestSuiteCreator)}: Unknown OS {osName}") + }; + + string baseConfigPath = Path.Combine(baseSuiteFolder, $"{configName}.config"); + string baseConfigContent = File.ReadAllText(baseConfigPath); + XElement config = XElement.Parse(baseConfigContent); + config.SetAttributeValue("maximumWaitTime", maximumWaitTime); + config.SetAttributeValue("maximumExecutionTime", "24:00:00"); + config.SetAttributeValue("maximumTestRuns", "-1"); + + config.Save(configPath, SaveOptions.OmitDuplicateNamespaces); + } + catch (Exception e) + { + throw new Exception($"{nameof(ReliabilityFrameworkTestSuiteCreator)}: Fail to generate test config: {e.Message}"); + } + } + + private static Dictionary> Windows { get; } = new() + { + { "loh", new() { { "Server", "00:10:00"}, { "Workstation", "01:45:00"}, { "Datas", "00:10:00"} } }, + { "poh", new() { { "Server", "00:05:00"}, { "Workstation", "00:50:00" }, { "Datas", "00:05:00" } } }, + { "non_induced", new() { { "Server", "00:30:00"}, { "Workstation", "03:30:00"}, { "Datas", "00:20:00"} } }, + { "finalization", new() { { "Server", "00:05:00"}, { "Workstation", "00:50:00"}, { "Datas", "00:15:00" } } } + }; + private static Dictionary> WindowsStress { get; } = new() + { + { "loh", new() { { "Server", "00:02:00"}, { "Workstation", "00:10:00"}, { "Datas", "00:05:00"} } }, + { "poh", new() { { "Server", "00:02:00"}, { "Workstation", "00:10:00" }, { "Datas", "00:05:00" } } }, + { "non_induced", new() { { "Server", "00:25:00"}, { "Workstation", "04:00:00"}, { "Datas", "00:35:00"} } }, + { "finalization", new() { { "Server", "00:05:00"}, { "Workstation", "00:40:00"}, { "Datas", "01:40:00" } } } + }; + private static Dictionary> Linux { get; } = new() + { + { "loh", new() { { "Server", "00:25:00"}, { "Workstation", "00:20:00"}, { "Datas", "00:20:00"} } }, + { "poh", new() { { "Server", "00:10:00"}, { "Workstation", "00:10:00" }, { "Datas", "00:10:00" } } }, + { "non_induced", new() { { "Server", "00:25:00"}, { "Workstation", "00:55:00"}, { "Datas", "00:15:00"} } }, + { "finalization", new() { { "Server", "00:20:00"}, { "Workstation", "01:30:00"}, { "Datas", "00:25:00" } } } + }; + private static Dictionary> LinuxStress { get; } = new() + { + { "loh", new() { { "Server", "00:10:00"}, { "Workstation", "00:25:00"}, { "Datas", "00:08:00"} } }, + { "poh", new() { { "Server", "00:05:00"}, { "Workstation", "00:15:00" }, { "Datas", "00:05:00" } } }, + { "non_induced", new() { { "Server", "00:25:00"}, { "Workstation", "01:10:00"}, { "Datas", "00:30:00"} } }, + { "finalization", new() { { "Server", "00:20:00"}, { "Workstation", "00:50:00"}, { "Datas", "04:00:00" } } } + }; + } +} diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTestCreateTestSuite.Configuration.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTestCreateTestSuite.Configuration.cs new file mode 100644 index 00000000000..2935bd6873f --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTestCreateTestSuite.Configuration.cs @@ -0,0 +1,67 @@ +using YamlDotNet.Serialization; + +namespace GC.Infrastructure.Core.Configurations +{ + public sealed class ReliabilityFrameworkTestCreateTestSuiteConfiguration + { + public string OutputFolder { get; set; } + public string CoreRoot { get; set; } + public string ReliabilityFrameworkDll { get; set; } + public bool EnableStressMode { get; set; } + public string GCPerfSimDll { get; set; } + public string TestFolder { get; set; } + } + + public static class ReliabilityFrameworkTestCreateTestSuiteConfigurationParser + { + private static readonly IDeserializer _deserializer = + new DeserializerBuilder().IgnoreUnmatchedProperties().Build(); + + public static ReliabilityFrameworkTestCreateTestSuiteConfiguration Parse(string path) + { + // Preconditions. + ConfigurationChecker.VerifyFile(path, nameof(ReliabilityFrameworkTestCreateTestSuiteConfigurationParser)); + + string serializedConfiguration = File.ReadAllText(path); + ReliabilityFrameworkTestCreateTestSuiteConfiguration? configuration = null; + + // This try catch is here because the exception from the YamlDotNet isn't helpful and must be imbued with more details. + try + { + configuration = _deserializer.Deserialize(serializedConfiguration); + } + + catch (Exception ex) + { + throw new ArgumentException($"{nameof(ReliabilityFrameworkTestCreateTestSuiteConfiguration)}: Unable to parse the yaml file because of an error in the syntax. Exception: {ex.Message} \n Call Stack: {ex.StackTrace}"); + } + + if (string.IsNullOrEmpty(configuration.OutputFolder)) + { + throw new ArgumentException($"{nameof(ReliabilityFrameworkTestCreateTestSuiteConfiguration)}: Please specify output folder"); + } + + if (string.IsNullOrEmpty(configuration.ReliabilityFrameworkDll) ) + { + throw new ArgumentException($"{nameof(ReliabilityFrameworkTestCreateTestSuiteConfiguration)}: Please specify ReliabilityFrameworkDll"); + } + + if (!Path.Exists(configuration.CoreRoot)) + { + throw new ArgumentException($"{nameof(ReliabilityFrameworkTestCreateTestSuiteConfiguration)}: Given CoreRoot path is not valid"); + } + + if (string.IsNullOrEmpty(configuration.GCPerfSimDll)) + { + throw new ArgumentException($"{nameof(ReliabilityFrameworkTestCreateTestSuiteConfiguration)}: Please specify GCPerfSimDll"); + } + + if (!Path.Exists(configuration.TestFolder)) + { + throw new ArgumentException($"{nameof(ReliabilityFrameworkTestCreateTestSuiteConfiguration)}: Given TestFolder path is not valid"); + } + + return configuration; + } + } +} \ No newline at end of file diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Utilities.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Utilities.cs index 7ec7371cb0d..c9e4cf09c52 100644 --- a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Utilities.cs +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Utilities.cs @@ -4,15 +4,24 @@ public static class Utilities { public static void CopyFilesRecursively(string sourcePath, string targetPath) { - string targetPathAsDirectory = targetPath + "\\"; + sourcePath = Path.GetFullPath(sourcePath).TrimEnd(Path.DirectorySeparatorChar); + targetPath = Path.GetFullPath(targetPath).TrimEnd(Path.DirectorySeparatorChar); + + Directory.CreateDirectory(targetPath); + foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories)) { - Directory.CreateDirectory(dirPath.Replace(sourcePath, targetPathAsDirectory)); + string relativePath = Path.GetRelativePath(sourcePath, dirPath); + string newDirPath = Path.Combine(targetPath, relativePath); + Directory.CreateDirectory(newDirPath); } - foreach (string newPath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories)) + foreach (string filePath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories)) { - File.Copy(newPath, newPath.Replace(sourcePath, targetPathAsDirectory), true); + string relativePath = Path.GetRelativePath(sourcePath, filePath); + string newFilePath = Path.Combine(targetPath, relativePath); + Directory.CreateDirectory(Path.GetDirectoryName(newFilePath)); + File.Copy(filePath, newFilePath, true); } } @@ -49,5 +58,22 @@ public static bool TryCopyFile(string sourcePath, string destinationPath) return false; } } + + public static void CopyFile(string srcPath, string dstPath) + { + string realDestPath = String.Empty; + if (Directory.Exists(dstPath)) + { + // Copy file to a directory + string fileName = Path.GetFileName(srcPath); + realDestPath = Path.Combine(dstPath, fileName); + } + else + { + realDestPath = dstPath; + } + + File.Copy(srcPath, realDestPath); + } } } diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/ReliabilityFrameworkTest/ReliabilityFrameworkTestCreateTestSuiteCommand.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/ReliabilityFrameworkTest/ReliabilityFrameworkTestCreateTestSuiteCommand.cs new file mode 100644 index 00000000000..5ef60763319 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/ReliabilityFrameworkTest/ReliabilityFrameworkTestCreateTestSuiteCommand.cs @@ -0,0 +1,99 @@ +using GC.Infrastructure.Core.Configurations; +using Spectre.Console; +using Spectre.Console.Cli; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.InteropServices; + +namespace GC.Infrastructure.Commands.ReliabilityFrameworkTest +{ + public sealed class ReliabilityFrameworkTestCreateTestSuiteCommand : + Command + { + private static readonly string RID = RuntimeInformation.RuntimeIdentifier; + + private static readonly string _baseSuitePath = Path.Combine("Commands", "RunCommand", "BaseSuite", "ReliabilityFramework"); + public sealed class ReliabilityFrameworkTestCreateTestSuiteSettings : CommandSettings + { + [Description("Path to Configuration.")] + [CommandOption("-c|--configuration")] + public required string ConfigurationPath { get; init; } + } + + public override int Execute([NotNull] CommandContext context, + [NotNull] ReliabilityFrameworkTestCreateTestSuiteSettings settings) + { + AnsiConsole.Write(new Rule("Create Test Suite For Reliability Framework Test")); + AnsiConsole.WriteLine(); + + ConfigurationChecker.VerifyFile(settings.ConfigurationPath, + nameof(ReliabilityFrameworkTestCreateTestSuiteSettings)); + ReliabilityFrameworkTestCreateTestSuiteConfiguration configuration = + ReliabilityFrameworkTestCreateTestSuiteConfigurationParser.Parse(settings.ConfigurationPath); + + Directory.CreateDirectory(configuration.OutputFolder); + + List configNameList = new() { "loh", "poh", "non_induced", "finalization" }; + + List gcModeList = new() { "Datas", "Server", "Workstation" }; + + // Copy ReliabilityFramework.dll and gcperfsim.dll + ReliabilityFrameworkTestSuiteCreator.CreateTestingAssets(configuration.ReliabilityFrameworkDll, + configuration.GCPerfSimDll, + configuration.OutputFolder, + configuration.TestFolder); + + // Create config file + string platformFolder = Path.Combine(configuration.OutputFolder, RID); + Directory.CreateDirectory(platformFolder); + foreach (string configName in configNameList) + { + string configFolder = Path.Combine(platformFolder, configName); + Directory.CreateDirectory(configFolder); + foreach (string gcMode in gcModeList) + { + string gcModeFolder = Path.Combine(configFolder, gcMode); + Directory.CreateDirectory(gcModeFolder); + + AnsiConsole.WriteLine($"====== Generate {configName}.config for {gcMode} mode ======"); + + string configSuffix = + configuration.EnableStressMode switch + { + true => "-stress", + false => "" + }; + string configPath = Path.Combine(gcModeFolder, + $"{configName}-{gcMode}-{RID}{configSuffix}.config"); + ReliabilityFrameworkTestSuiteCreator.GenerateTestConfig(RID, + _baseSuitePath, + configName, + configuration.EnableStressMode, + gcMode, + configPath); + + AnsiConsole.WriteLine($"====== Generate testing script for {gcMode} mode ======"); + string osName = RID.Split("-") + .FirstOrDefault(""); + string scriptExtension = + osName switch + { + "win" => ".ps1", + "linux" => ".sh" + }; + string scriptPath = Path.Combine(gcModeFolder, $"TestingScript-{configName}-{gcMode}{scriptExtension}"); + + ReliabilityFrameworkTestSuiteCreator.GenerateTestScript(RID, + _baseSuitePath, + configuration.CoreRoot, + configPath, + gcMode, + configuration.OutputFolder, + scriptPath); + } + } + + return 0; + } + } +} diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/TestingScript.ps1.txt b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/TestingScript.ps1.txt new file mode 100644 index 00000000000..159cbbd0c81 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/TestingScript.ps1.txt @@ -0,0 +1,60 @@ +# create output folder +if (-not (Test-Path $output_folder)) +{ + New-Item -ItemType "directory" -Path $output_folder +} + +$dump_folder=Join-Path -Path $output_folder -ChildPath "dumps" +if (-not (Test-Path $dump_folder)) +{ + New-Item -ItemType "directory" -Path $dump_folder +} + +$log_folder=Join-Path -Path $output_folder -ChildPath "logs" +if (-not (Test-Path $log_folder)) +{ + New-Item -ItemType "directory" -Path $log_folder +} + +# copy tests folder and ReliabilityFramework.dll to core_root +Copy-Item -Force -Path $test_folder -Destination $CORE_ROOT -Recurse +Copy-Item -Force -Path $reliability_framework_dll -Destination $CORE_ROOT + +# dump +$Env:DOTNET_DbgEnableMiniDump=1 +$Env:DOTNET_DbgMiniDumpType=4 + +# gc log +$Env:DOTNET_GCLogEnabled=1 +$Env:DOTNET_GCLogFileSize=100 +$Env:DOTNET_StressLog=0 + +$corerun = Join-Path -Path $CORE_ROOT -ChildPath "corerun" +$RFTestDll = Join-Path -Path $CORE_ROOT -ChildPath "ReliabilityFramework.dll" + +$config_content = Get-Content -Path $config_path -Raw + +# Run for 24 hours. +$index=0 +while (1) { + $Env:DOTNET_GCLogFile= Join-Path -Path $log_folder -ChildPath "gclog_$index" + $Env:DOTNET_DbgMiniDumpName=Join-Path -Path $dump_folder -ChildPath "stress_$index.dmp" + + $debugConditionList = @( + "debugBreakOnTestHang=`"true`"", + "debugBreakOnBadTest=`"true`"", + "debugBreakOnOutOfMemory=`"true`"", + "debugBreakOnPathTooLong=`"true`"", + "debugBreakOnMissingTest=`"true`"") + + $debugBreak = $debugConditionList | Where-Object { $config_content.Contains($_) } + if ($debugBreak) + { + Start-Process -NoNewWindow -Wait -WorkingDirectory $CORE_ROOT -FilePath windbgx -ArgumentList "-g", $corerun, $RFTestDll, $config_path + } + else + { + Start-Process -NoNewWindow -Wait -WorkingDirectory $CORE_ROOT -FilePath $corerun -ArgumentList $RFTestDll, $config_path + } + $index += 1 +} diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/TestingScript.sh.txt b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/TestingScript.sh.txt new file mode 100644 index 00000000000..9dac71e333a --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/TestingScript.sh.txt @@ -0,0 +1,46 @@ +# create output folder +mkdir -p $output_folder + +dump_folder=$output_folder/dumps +mkdir -p $dump_folder + +log_folder=$output_folder/logs +mkdir -p $log_folder + +# copy tests folder and ReliabilityFramework.dll to core_root +cp -r $test_folder $CORE_ROOT +cp $reliability_framework_dll $CORE_ROOT + +# dump +export DOTNET_DbgEnableMiniDump=1 +export DOTNET_DbgMiniDumpType=4 + +# gc log +export DOTNET_GCLogEnabled=1 +export DOTNET_GCLogFileSize=100 +export DOTNET_StressLog=0 + +# Run for 24 hours. +pushd $CORE_ROOT +config_content=$(cat $config_path) + +idx=0 + +while true +do + export DOTNET_DbgMiniDumpName=$dump_folder/stress_$idx.dmp + export DOTNET_GCLogFile=$log_folder/gclog-$idx + + if [[ "$config_content" == *"debugBreakOnTestHang=\"true\""* \ + || "$config_content" == *"debugBreakOnBadTest=\"true\""* \ + || "$config_content" == *"debugBreakOnOutOfMemory=\"true\""* \ + || "$config_content" == *"debugBreakOnPathTooLong=\"true\""* \ + || "$config_content" == *"debugBreakOnMissingTest=\"true\""* ]]; then + lldb -o "run" $CORE_ROOT/corerun $CORE_ROOT/ReliabilityFramework.dll $config_path + else + $CORE_ROOT/corerun $CORE_ROOT/ReliabilityFramework.dll $config_path + fi + echo "return value: $?" + dmesg -T | egrep -i 'killed process' + idx=$((idx+1)) +done diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/finalization.config b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/finalization.config new file mode 100644 index 00000000000..815c4fcb0f5 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/finalization.config @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/loh.config b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/loh.config new file mode 100644 index 00000000000..18d72214345 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/loh.config @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/non_induced.config b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/non_induced.config new file mode 100644 index 00000000000..7a1aef353e1 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/non_induced.config @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/poh.config b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/poh.config new file mode 100644 index 00000000000..a6f2ea5c624 --- /dev/null +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/RunCommand/BaseSuite/ReliabilityFramework/poh.config @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/GC.Infrastructure.csproj b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/GC.Infrastructure.csproj index ba7d31c486b..96f61f2c324 100644 --- a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/GC.Infrastructure.csproj +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/GC.Infrastructure.csproj @@ -68,6 +68,24 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Program.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Program.cs index 16cae413165..bc59e8bb85a 100644 --- a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Program.cs +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Program.cs @@ -3,6 +3,7 @@ using GC.Infrastructure.Commands.Microbenchmark; using GC.Infrastructure.Commands.ReliabilityFrameworkTest; using GC.Infrastructure.Commands.RunCommand; +using GC.Infrastructure.Commands.ReliabilityFrameworkTest; using Microsoft.Win32; using Spectre.Console; using Spectre.Console.Cli; @@ -62,8 +63,9 @@ internal static void Main(string[] args) configuration.AddCommand("aspnetbenchmarks-analyze"); // ReliabilityFramework - configuration.AddCommand("rftest-analyze"); - configuration.AddCommand("rftest-aggregate"); + configuration.AddCommand("rf-createsuite"); + configuration.AddCommand("rf-analyze"); + configuration.AddCommand("rf-aggregate"); }); app.Run(args);