From f9a4c226ff6ac3b291223097101432f89a98dd19 Mon Sep 17 00:00:00 2001 From: Rakeshwar Reddy Kambaiahgari Date: Tue, 18 Aug 2026 09:27:51 -0700 Subject: [PATCH 1/3] Mandate supported platforms and OS --- .../VirtualClient.Contracts/Constants.cs | 27 +++++++ .../profiles/BOOTSTRAP-CERTIFICATE.json | 4 + .../profiles/BOOTSTRAP-DEPENDENCIES.json | 4 + .../profiles/BOOTSTRAP-PACKAGE.json | 4 + .../EXAMPLE-CLIENT-SERVER-WORKLOAD-1.json | 4 + .../EXAMPLE-CLIENT-SERVER-WORKLOAD-2.json | 4 + .../EXAMPLE-CLIENT-SERVER-WORKLOAD-3.json | 4 + .../profiles/EXAMPLE-EXECUTE-SCRIPT.json | 1 + .../profiles/EXAMPLE-WORKLOAD-2.json | 3 +- .../profiles/EXAMPLE-WORKLOAD.json | 3 +- .../profiles/EXECUTE-COMMAND.json | 4 + .../profiles/EXECUTE-SCRIPT.json | 3 +- .../profiles/GET-ACCESS-TOKEN.json | 4 + .../profiles/GET-STARTED-OPENSSL.json | 2 +- .../profiles/MONITORS-COUNTERS.json | 2 +- .../profiles/MONITORS-DEFAULT.json | 2 +- .../profiles/MONITORS-FILE-UPLOAD.json | 2 +- .../profiles/MONITORS-GPU-AMD.json | 2 +- .../profiles/MONITORS-GPU-NVIDIA.json | 4 +- .../profiles/PERF-COMPRESSION-LZBENCH.json | 2 +- .../profiles/PERF-COMPRESSION.json | 2 +- .../profiles/PERF-CPU-COREMARK.json | 4 +- .../profiles/PERF-CPU-COREMARKPRO.json | 2 +- .../profiles/PERF-CPU-DOTNETRUNTIME.json | 5 ++ .../profiles/PERF-CPU-EXAMPLE-AFFINITY.json | 3 +- .../profiles/PERF-CPU-GEEKBENCH.json | 2 +- .../profiles/PERF-CPU-GEEKBENCH5.json | 2 +- .../profiles/PERF-CPU-HPCG.json | 2 +- .../profiles/PERF-CPU-LAPACK.json | 4 +- .../profiles/PERF-CPU-OPENSSL-TLS.json | 2 +- .../profiles/PERF-CPU-OPENSSL.json | 2 +- .../profiles/PERF-CPU-PRIME95.json | 2 +- .../profiles/PERF-GRAPH500.json | 2 +- .../profiles/PERF-IO-DISKSPD.json | 2 +- .../profiles/PERF-IO-FIO-OLTP.json | 4 +- .../profiles/PERF-IO-FIO.json | 2 +- .../profiles/PERF-MEM-LMBENCH-SWEEP.json | 2 +- .../profiles/PERF-MEM-LMBENCH.json | 2 +- .../profiles/PERF-MEM-STREAM.json | 4 +- .../profiles/PERF-MEM-STREAMMSFT.json | 2 +- .../profiles/PERF-MEM-STREAMTRIAD.json | 2 +- .../profiles/PERF-MEM-STRESSAPPTEST.json | 2 +- .../profiles/PERF-MONGODB-YCSB.json | 4 +- .../profiles/PERF-NETWORK-2.json | 2 +- .../profiles/PERF-NETWORK-CTSTRAFFIC.json | 2 +- .../profiles/PERF-NETWORK-DEATHSTARBENCH.json | 2 +- .../profiles/PERF-NETWORK-NTTTCP.json | 2 +- .../profiles/PERF-NETWORK-PING.json | 2 +- .../profiles/PERF-NETWORK.json | 2 +- .../profiles/PERF-OPENFOAM.json | 2 +- .../profiles/PERF-SPECCPU-FPRATE.json | 2 +- .../profiles/PERF-SPECCPU-FPSPEED.json | 2 +- .../profiles/PERF-SPECCPU-INTRATE.json | 2 +- .../profiles/PERF-SPECCPU-INTSPEED.json | 2 +- .../profiles/PERF-SPECJBB.json | 2 +- .../profiles/PERF-SPECJVM.json | 2 +- .../profiles/PERF-STRESSNG.json | 4 +- .../profiles/PERF-WEB-ASPNET-BOMBARDIER.json | 2 +- .../profiles/PERF-WEB-ASPNET-ORCHARD-WRK.json | 2 +- .../PERF-WEB-ASPNET-WRK-AFFINITY.json | 2 +- .../profiles/PERF-WEB-ASPNET-WRK.json | 2 +- .../profiles/PERF-WEB-NGINX-WRK-RP.json | 4 +- .../profiles/PERF-WEB-NGINX-WRK.json | 2 +- .../profiles/PERF-WEB-NGINX-WRK2-RP.json | 4 +- .../profiles/PERF-WEB-NGINX-WRK2.json | 2 +- .../profiles/POWER-SPEC100.json | 2 +- .../profiles/POWER-SPEC30.json | 2 +- .../profiles/POWER-SPEC50.json | 2 +- .../profiles/POWER-SPEC70.json | 2 +- .../profiles/QUAL-GPU-DCGMI.json | 4 +- .../profiles/SETUP-FORMAT-DISKS.json | 2 +- .../profiles/SETUP-GPU-AMD-MI25.json | 4 +- .../profiles/SETUP-GPU-AMD-V620.json | 4 +- .../profiles/SETUP-GPU-NVIDIA-A100.json | 2 +- .../profiles/SETUP-GPU-NVIDIA-GB200.json | 2 +- .../profiles/UPLOAD-FILES.json | 4 + .../profiles/UPLOAD-TELEMETRY.json | 4 + .../ProfileValidationTests.cs | 74 +++++++++++++++++++ website/docs/guides/0011-profiles.md | 50 ++++++++++++- 79 files changed, 275 insertions(+), 78 deletions(-) diff --git a/src/VirtualClient/VirtualClient.Contracts/Constants.cs b/src/VirtualClient/VirtualClient.Contracts/Constants.cs index 8a0f7c7021..e0f8e5fac4 100644 --- a/src/VirtualClient/VirtualClient.Contracts/Constants.cs +++ b/src/VirtualClient/VirtualClient.Contracts/Constants.cs @@ -3,6 +3,7 @@ namespace VirtualClient.Contracts { + using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; /// @@ -303,6 +304,32 @@ public class ProfileMetadata /// Metadata = SupportsIterations /// public const string SupportsIterations = nameof(SupportsIterations); + + /// + /// Metadata = RecommendedMinimumExecutionTime. Optional. Does not apply to + /// profiles whose runtime is determined externally (e.g. monitor profiles run + /// for as long as the workload profile they are paired with). + /// + public const string RecommendedMinimumExecutionTime = nameof(RecommendedMinimumExecutionTime); + + /// + /// Metadata = SupportedPlatforms + /// + public const string SupportedPlatforms = nameof(SupportedPlatforms); + + /// + /// Metadata = SupportedOperatingSystems + /// + public const string SupportedOperatingSystems = nameof(SupportedOperatingSystems); + + /// + /// The metadata properties every profile is required to define. + /// + public static readonly IReadOnlyList BaseProperties = new List + { + ProfileMetadata.SupportedPlatforms, + ProfileMetadata.SupportedOperatingSystems + }; } /// diff --git a/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-CERTIFICATE.json b/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-CERTIFICATE.json index 4546d63d9c..bf8165baca 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-CERTIFICATE.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-CERTIFICATE.json @@ -1,5 +1,9 @@ { "Description": "Installs a certificate from a target Key Vault.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "CertificateName": null, "AccessToken": null, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-DEPENDENCIES.json b/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-DEPENDENCIES.json index 94ba2b4e2e..56742ec5c3 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-DEPENDENCIES.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-DEPENDENCIES.json @@ -1,5 +1,9 @@ { "Description": "Installs dependencies from the package store.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "Package": null, "RegisterAsName": null diff --git a/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-PACKAGE.json b/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-PACKAGE.json index bc032296c4..5c9285f0b6 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-PACKAGE.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/BOOTSTRAP-PACKAGE.json @@ -1,5 +1,9 @@ { "Description": "Installs dependencies from a package store.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "Package": null, "RegisterAsName": null diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-1.json b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-1.json index 33fe9e5229..07efe60560 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-1.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-1.json @@ -1,6 +1,10 @@ { "Description": "Test Profile Executor", "MinimumExecutionInterval": "00:00:05", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "ProfilingEnabled": false, "ProfilingMode": "None" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-2.json b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-2.json index 423e72058e..499235082d 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-2.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-2.json @@ -1,6 +1,10 @@ { "Description": "Test Profile Executor", "MinimumExecutionInterval": "00:00:05", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "ProfilingEnabled": false, "ProfilingMode": "None" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-3.json b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-3.json index 23635fe134..a58644ea83 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-3.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-CLIENT-SERVER-WORKLOAD-3.json @@ -1,6 +1,10 @@ { "Description": "Test Profile Executor", "MinimumExecutionInterval": "00:00:05", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { }, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-EXECUTE-SCRIPT.json b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-EXECUTE-SCRIPT.json index f0c0e3d8a1..172d276f47 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-EXECUTE-SCRIPT.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-EXECUTE-SCRIPT.json @@ -3,6 +3,7 @@ "MinimumExecutionInterval": "00:00:05", "Metadata": { "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "ScriptPathParameterUsage": "The Script Path can be an absolute Path, or be relative to the Virtual Client Executable or be relative to platform-specific package if the script is downloaded using DependencyPackageInstallation." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD-2.json b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD-2.json index faa3d2d14e..d6d459afaf 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD-2.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD-2.json @@ -2,7 +2,8 @@ "Description": "Test Profile Executor", "MinimumExecutionInterval": "00:00:05", "Metadata": { - "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64" + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "ProfilingEnabled": true, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD.json b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD.json index 75d0a4ea21..971326b65a 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXAMPLE-WORKLOAD.json @@ -2,7 +2,8 @@ "Description": "Test Profile Executor", "MinimumExecutionInterval": "00:00:05", "Metadata": { - "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64" + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "ProfilingEnabled": false, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-COMMAND.json b/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-COMMAND.json index 7b4b0e78ed..af8385bd6c 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-COMMAND.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-COMMAND.json @@ -1,5 +1,9 @@ { "Description": "Executes a command on the local system.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "Command": null, "Scenario": "ExecuteCommand", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-SCRIPT.json b/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-SCRIPT.json index 6046e9e7e4..e46c6c59ea 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-SCRIPT.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/EXECUTE-SCRIPT.json @@ -2,7 +2,8 @@ "Description": "Executes scripts from a package.", "MinimumExecutionInterval": "00:00:05", "Metadata": { - "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64" + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "Command": null, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/GET-ACCESS-TOKEN.json b/src/VirtualClient/VirtualClient.Main/profiles/GET-ACCESS-TOKEN.json index a32e3bc74b..a100ab6fa5 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/GET-ACCESS-TOKEN.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/GET-ACCESS-TOKEN.json @@ -1,5 +1,9 @@ { "Description": "Get access token for the user that can be used to authenticate.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "TenantId": null, "FilePath": null diff --git a/src/VirtualClient/VirtualClient.Main/profiles/GET-STARTED-OPENSSL.json b/src/VirtualClient/VirtualClient.Main/profiles/GET-STARTED-OPENSSL.json index f20c8bdb67..d4c052a143 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/GET-STARTED-OPENSSL.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/GET-STARTED-OPENSSL.json @@ -2,7 +2,7 @@ "Description": "OpenSSL CPU Performance Workload", "Metadata": { "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": {}, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-COUNTERS.json b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-COUNTERS.json index efc36b8327..a484ab6ca1 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-COUNTERS.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-COUNTERS.json @@ -2,7 +2,7 @@ "Description": "Default Monitors", "Metadata": { "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "MonitorFrequency": "00:05:00", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-DEFAULT.json b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-DEFAULT.json index 2115a5f110..23227a68ae 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-DEFAULT.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-DEFAULT.json @@ -2,7 +2,7 @@ "Description": "Default Monitors", "Metadata": { "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "ProfilingEnabled": false, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-FILE-UPLOAD.json b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-FILE-UPLOAD.json index 5d3abda64f..c5e93d8147 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-FILE-UPLOAD.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-FILE-UPLOAD.json @@ -2,7 +2,7 @@ "Description": "Monitor provides support for uploading files to a content store.", "Metadata": { "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "DeleteOnUpload": null, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-AMD.json b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-AMD.json index fc82ad373c..0734e3a2e1 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-AMD.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-AMD.json @@ -2,7 +2,7 @@ "Description": "Default Monitors for AMD GPU systems.", "Metadata": { "SupportedPlatforms": "linux-x64,win-x64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "PreliminaryRequirements": "Please note that the AMD GPU driver MUST be already installed on the system for the monitors to function correctly." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-NVIDIA.json b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-NVIDIA.json index e8a5657944..e09838a060 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-NVIDIA.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-GPU-NVIDIA.json @@ -1,8 +1,8 @@ { "Description": "Default Monitors for Nvidia GPU systems.", "Metadata": { - "SupportedPlatforms": "linux-arm64,linux-x64,win-x64", - "SupportedOperatingSystems": "CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", + "SupportedOperatingSystems": "CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "PreliminaryRequirements": "Please note that the Nvidia GPU driver and CUDA toolsets MUST be already installed on the system for the monitors to function correctly." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION-LZBENCH.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION-LZBENCH.json index 9c23e3ec27..bd714d91c3 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION-LZBENCH.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION-LZBENCH.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "24:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "CompilerVersion": "" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION.json index 2787c9205e..c8aaf2bf21 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-COMPRESSION.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "04:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { }, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARK.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARK.json index 993ebacc3e..b975cfe5b0 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARK.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARK.json @@ -3,8 +3,8 @@ "MinimumExecutionInterval": "00:01:00", "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", - "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "CompilerVersion": "", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARKPRO.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARKPRO.json index 7440197b53..33915f8eae 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARKPRO.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-COREMARKPRO.json @@ -4,7 +4,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:01:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "CompilerVersion": "", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-DOTNETRUNTIME.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-DOTNETRUNTIME.json index e127fc1317..7fa7c919ca 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-DOTNETRUNTIME.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-DOTNETRUNTIME.json @@ -1,5 +1,10 @@ { "Description": "DotNetRuntime CPU Performance workload", + "Metadata": { + "RecommendedMinimumExecutionTime": "01:30:00", + "SupportedPlatforms": "win-x64", + "SupportedOperatingSystems": "Windows" + }, "Parameters": { "NumberOfJvmInstances": "1", "NumberOfWarehouses": "8", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-EXAMPLE-AFFINITY.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-EXAMPLE-AFFINITY.json index 7fbd2a4727..283257734b 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-EXAMPLE-AFFINITY.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-EXAMPLE-AFFINITY.json @@ -2,7 +2,8 @@ "Description": "Example CPU Affinity Workload Profile", "MinimumExecutionInterval": "00:00:05", "Metadata": { - "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64" + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "ProfilingEnabled": false, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH.json index 21f455c531..0f470e3ee8 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Actions": [ { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH5.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH5.json index 1c7f8de9ff..c695524a6c 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH5.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-GEEKBENCH5.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Actions": [ { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-HPCG.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-HPCG.json index 0e4a7b130a..131609bf7f 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-HPCG.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-HPCG.json @@ -4,7 +4,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "CompilerVersion": "" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-LAPACK.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-LAPACK.json index 3681ca0434..5ecbbbb5df 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-LAPACK.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-LAPACK.json @@ -2,8 +2,8 @@ "Description": "LAPACK Performance workload", "Metadata": { "RecommendedMinimumExecutionTime": "(4-cores)=02:00:00,(16-cores)=04:00:00,(64-cores)=10:00:00", - "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "CompilerVersion": "" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL-TLS.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL-TLS.json index 11205050c8..cff2f37ad5 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL-TLS.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL-TLS.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "03:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "ServerPort": 5000, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL.json index e71ff27f04..d3836da307 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-OPENSSL.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "Duration": "00:01:40" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-PRIME95.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-PRIME95.json index cca7f7a18b..d3a3f96598 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-PRIME95.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-CPU-PRIME95.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "02:00:00", "SupportedPlatforms": "linux-x64,win-x64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "Duration": "00:15:00", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-GRAPH500.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-GRAPH500.json index 6404113d03..4698c21d72 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-GRAPH500.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-GRAPH500.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "Scale": "10", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-DISKSPD.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-DISKSPD.json index 67f2ac5672..b966e1b73f 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-DISKSPD.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-DISKSPD.json @@ -1,7 +1,7 @@ { "Description": "DiskSpd I/O Stress Performance Workload", "Metadata": { - "RecommendedMinimumExecutionTime": "00:30:00", + "RecommendedMinimumExecutionTime": "02:00:00", "SupportedPlatforms": "win-x64,win-arm64", "SupportedOperatingSystems": "Windows" }, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO-OLTP.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO-OLTP.json index 9cf4c5b2c9..4311de6342 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO-OLTP.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO-OLTP.json @@ -3,9 +3,9 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "This profile uses FIO job files (e.g. *.jobfile) via the command line.", - "Documentation": "FIO documentation: https://fio.readthedocs.io/en/latest/fio_doc.html FIO Job File documentation: https://fio.readthedocs.io/en/latest/fio_doc.html#job-file-format" + "DocumentationUri": "FIO documentation: https://fio.readthedocs.io/en/latest/fio_doc.html FIO Job File documentation: https://fio.readthedocs.io/en/latest/fio_doc.html#job-file-format" }, "Parameters": { "Engine": "{calculate(\"{Platform}\".StartsWith(\"linux\") ? \"libaio\" : \"windowsaio\")}", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json index 281d72f2fb..00d68424d8 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "02:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "DiskFillSize": "500G", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH-SWEEP.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH-SWEEP.json index e0dbd1caa6..e05d9a5889 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH-SWEEP.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH-SWEEP.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "CompilerName": "gcc", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH.json index be3032aee8..3dc70ddab6 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-LMBENCH.json @@ -4,7 +4,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "(4-cores)=04:00:00,(16-cores)=10:00:00,(64-cores)=16:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu", "Notes_Runtime": "The benchmark takes approximately 6 to 8 minutes per 1 GB of RAM targeted. The default profile uses 25% of the total RAM." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAM.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAM.json index c8bf76c8dc..fe7d097c4f 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAM.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAM.json @@ -1,10 +1,10 @@ { "Description": "STREAM Performance Workload - Sustainable Memory Bandwidth in High Performance Computers Benchmark", "Metadata": { - "DocumentationLink": "https://msazure.visualstudio.com/One/_git/CRC-AIR-Workloads?version=GBmaster&path=/docs/workloads", "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "Windows,Ubuntu", + "SupportedOperatingSystems": "Ubuntu,Windows", + "DocumentationUri": "https://msazure.visualstudio.com/One/_git/CRC-AIR-Workloads?version=GBmaster&path=/docs/workloads", "SupportedValuesOfToolset": "STREAM,STREAMTriad,STREAMMsft" }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMMSFT.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMMSFT.json index 028c3caa67..3256b32501 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMMSFT.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMMSFT.json @@ -1,10 +1,10 @@ { "Description": "Microsoft's Stream Performance Workload", "Metadata": { - "DocumentationLink": "https://msazure.visualstudio.com/One/_git/CRC-AIR-Workloads?version=GBmaster&path=/docs/workloads", "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-arm64", "SupportedOperatingSystems": "Ubuntu", + "DocumentationUri": "https://msazure.visualstudio.com/One/_git/CRC-AIR-Workloads?version=GBmaster&path=/docs/workloads", "SupportedValuesOfToolset": "STREAM,STREAMTriad,STREAMMsft" }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMTRIAD.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMTRIAD.json index a8387ec9ee..f51299e67f 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMTRIAD.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STREAMTRIAD.json @@ -1,10 +1,10 @@ { "Description": "Stream Performance Workload", "Metadata": { - "DocumentationLink": "https://msazure.visualstudio.com/One/_git/CRC-AIR-Workloads?version=GBmaster&path=/docs/workloads", "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-x64", "SupportedOperatingSystems": "Ubuntu", + "DocumentationUri": "https://msazure.visualstudio.com/One/_git/CRC-AIR-Workloads?version=GBmaster&path=/docs/workloads", "SupportedValuesOfToolset": "STREAM,STREAMTriad,STREAMMsft" }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STRESSAPPTEST.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STRESSAPPTEST.json index 9ab36935ec..48b3776653 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STRESSAPPTEST.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MEM-STRESSAPPTEST.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "Duration": "00:01:00", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MONGODB-YCSB.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MONGODB-YCSB.json index 54208f7ba5..cd2efbb9e8 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-MONGODB-YCSB.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-MONGODB-YCSB.json @@ -1,9 +1,9 @@ { "Description": "MongoDB YCSB client-server workload (2-VM)", "Metadata": { - "RecommendedMinimumExecutionTime": "00:15:00", + "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "AzureLinux,Ubuntu", + "SupportedOperatingSystems": "AzureLinux,Debian,Ubuntu", "Notes": "Database sizes vary based on RecordCount: Small (500000 records) ~8-10 GB, Medium (2500000 records) ~40-50 GB, Large (20000000 records) ~320-400 GB, XLarge (55000000 records) ~900 GB-1 TB. Default configuration uses Medium size (~40-50 GB) with 2500000 records." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-2.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-2.json index f0c139fb12..d91db77851 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-2.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-2.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows,AwsLinux", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "latte.exe workload UDP protocol support is removed due to constant hangs regardless of the use of iterations (-i) or timeout (-t)." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-CTSTRAFFIC.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-CTSTRAFFIC.json index 1d19937cb9..012c243fa3 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-CTSTRAFFIC.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-CTSTRAFFIC.json @@ -2,7 +2,7 @@ "Description": "CtsTraffic Network Performance Workload", "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", - "SupportedPlatforms": "win-x64, win-arm64", + "SupportedPlatforms": "win-x64,win-arm64", "SupportedOperatingSystems": "Windows" }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-DEATHSTARBENCH.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-DEATHSTARBENCH.json index 18dda800f9..3ccb34d24e 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-DEATHSTARBENCH.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-DEATHSTARBENCH.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", "SupportedPlatforms": "linux-x64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "Ubuntu" }, "Parameters": { "ThreadCount": "20", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-NTTTCP.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-NTTTCP.json index 1646b4036f..9e4392288d 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-NTTTCP.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-NTTTCP.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows,AwsLinux" + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "EnableBusyPoll": true, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-PING.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-PING.json index 6f2c7aeaa8..449bc91a1a 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-PING.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-PING.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "IPAddress": null, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK.json index 8e5073be33..8aa11a6843 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:30:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows,AwsLinux", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "latte.exe workload UDP protocol support is removed due to constant hangs regardless of the use of iterations (-i) or timeout (-t)." }, "Parameters": { diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-OPENFOAM.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-OPENFOAM.json index 1b637aff08..8c107b6571 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-OPENFOAM.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-OPENFOAM.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "02:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "Iterations": "500" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json index 54aec9fd27..25258193be 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json @@ -9,7 +9,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "(4-cores)=02:00:00,(16-cores)=05:00:00,(64-cores)=10:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "Using a private package 'speccpu.2017.1.1.9-danielbowers.zip' to enable support for speccpu on Ubuntu 24. SPEC CPU 2017 was not initially designed for win-arm64.", "Limitations": "The following benchmarks don't work on Windows: 507, 511, 521, 526, 527, 538" }, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPSPEED.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPSPEED.json index 7620a07ba0..0e588574f4 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPSPEED.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPSPEED.json @@ -9,7 +9,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "(4-cores)=02:00:00,(16-cores)=06:00:00,(64-cores)=12:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "Using a private package 'speccpu.2017.1.1.9-danielbowers.zip' to enable support for speccpu on Ubuntu 24. SPEC CPU 2017 was not initially designed for win-arm64.", "Limitations": "The following benchmarks don't work on Windows: 607, 621, 627, 628, 638, 649" }, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTRATE.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTRATE.json index 844f93d5db..cd47ac87f0 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTRATE.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTRATE.json @@ -9,7 +9,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "(8-cores)=04:00:00,(16-cores)=08:00:00,(64-cores)=10:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "Using a private package 'speccpu.2017.1.1.9-danielbowers.zip' to enable support for speccpu on Ubuntu 24. SPEC CPU 2017 was not initially designed for win-arm64.", "Limitations": "The following benchmarks don't work on Windows: 500, 502, 520, 523, 531" }, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTSPEED.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTSPEED.json index e2dc3a04d3..bb93ce007f 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTSPEED.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTSPEED.json @@ -9,7 +9,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "(8-cores)=04:00:00,(16-cores)=06:00:00,(64-cores)=08:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", - "SupportedOperatingSystems": "Azure Linux,CentOS,Debian,RedHat,Suse,Ubuntu,Windows", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows", "Notes": "Using a private package 'speccpu.2017.1.1.9-danielbowers.zip' to enable support for speccpu on Ubuntu 24. SPEC CPU 2017 was not initially designed for win-arm64.", "Limitations": "The following benchmarks don't work on Windows: 600, 602, 605, 620, 623, 625, 631, 648, 657" }, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJBB.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJBB.json index 71e47bdbd7..ae86806466 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJBB.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJBB.json @@ -5,7 +5,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "(4-cores)=05:00:00,(16-cores)=03:00:00,(64-cores)=02:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "JavaFlags": "-XX:+AlwaysPreTouch -XX:+UseLargePages -XX:+UseParallelGC" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJVM.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJVM.json index 1d99d922a5..595810e361 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJVM.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECJVM.json @@ -4,7 +4,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "03:00:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": {}, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-STRESSNG.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-STRESSNG.json index c9fe1c8923..1b651f00e6 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-STRESSNG.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-STRESSNG.json @@ -4,8 +4,8 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu", - "SpecialInstrucions": "The commandline parameter --yaml is programatically added, do not add it in profile. By default, --metrics flag is ON, --cpu is set to ProcessorCount and the default timeout is 60 seconds." + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu", + "SpecialInstructions": "The commandline parameter --yaml is programatically added, do not add it in profile. By default, --metrics flag is ON, --cpu is set to ProcessorCount and the default timeout is 60 seconds." }, "Parameters": { "CommandLine": "--timeout 60" diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-BOMBARDIER.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-BOMBARDIER.json index 63a09d94ad..a3ccce1208 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-BOMBARDIER.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-BOMBARDIER.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "DotNetVersion": "8.0.204", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-ORCHARD-WRK.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-ORCHARD-WRK.json index c2f5687b55..61345476c0 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-ORCHARD-WRK.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-ORCHARD-WRK.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,Ubuntu" + "SupportedOperatingSystems": "AzureLinux,Ubuntu" }, "Parameters": { "DotNetVersion": "9.0.203", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK-AFFINITY.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK-AFFINITY.json index afbf1d74e1..e9d57b22ca 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK-AFFINITY.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK-AFFINITY.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "DotNetVersion": "9", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK.json index b18f2c41a2..5d60dd3a4b 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-ASPNET-WRK.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "DotNetVersion": "9", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK-RP.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK-RP.json index 2f930f5299..f60702c3c0 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK-RP.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK-RP.json @@ -3,8 +3,8 @@ "Metadata": { "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu", - "Note": "Reverse Proxy config requires three nodes for the roles Client, Reverse Proxy, and Server." + "SupportedOperatingSystems": "Debian,Ubuntu", + "Notes": "Reverse Proxy config requires three nodes for the roles Client, Reverse Proxy, and Server." }, "Parameters": { "TestDuration": "00:02:30", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK.json index 182783d5a6..de3eda7ce4 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64,linux-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu" + "SupportedOperatingSystems": "Debian,Ubuntu" }, "Parameters": { "TestDuration": "00:02:30", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2-RP.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2-RP.json index f82c68a429..3ab05b22c8 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2-RP.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2-RP.json @@ -3,8 +3,8 @@ "Metadata": { "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64", - "SupportedOperatingSystems": "Ubuntu 22", - "Note": "Reverse Proxy config requires three nodes for the roles Client, Reverse Proxy, and Server." + "SupportedOperatingSystems": "Ubuntu", + "Notes": "Reverse Proxy config requires three nodes for the roles Client, Reverse Proxy, and Server." }, "Parameters": { "TestDuration": "00:02:30", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2.json index e319436f1f..2481db839f 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-WEB-NGINX-WRK2.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64", - "SupportedOperatingSystems": "Ubuntu 22" + "SupportedOperatingSystems": "Ubuntu" }, "Parameters": { "TestDuration": "00:02:30", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC100.json b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC100.json index d8758172f7..1ca8bb88c2 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC100.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC100.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": {}, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC30.json b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC30.json index 83b56665a7..757a5e1063 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC30.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC30.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": {}, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC50.json b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC50.json index fecf047cfb..fd00d1d4e8 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC50.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC50.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": {}, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC70.json b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC70.json index f86f790c40..4158c2fc28 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC70.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/POWER-SPEC70.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:05:00", "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": {}, "Actions": [ diff --git a/src/VirtualClient/VirtualClient.Main/profiles/QUAL-GPU-DCGMI.json b/src/VirtualClient/VirtualClient.Main/profiles/QUAL-GPU-DCGMI.json index 086965f3e4..f3784f3a05 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/QUAL-GPU-DCGMI.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/QUAL-GPU-DCGMI.json @@ -1,9 +1,9 @@ { "Description": "DCGMI Monitor", "Metadata": { - "RecommendedMinimumExecutionTime": "00:60:00", + "RecommendedMinimumExecutionTime": "01:00:00", "SupportedPlatforms": "linux-x64", - "SupportedOperatingSystems": "Ubuntu, Debian, CentOS, RedHat, SUSE" + "SupportedOperatingSystems": "CentOS,Debian,OpenSuse,RedHat,Ubuntu" }, "Parameters": { "Level": "4", diff --git a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-FORMAT-DISKS.json b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-FORMAT-DISKS.json index d553b50cf5..4d07542c59 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-FORMAT-DISKS.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-FORMAT-DISKS.json @@ -2,7 +2,7 @@ "Description": "Enables the disks on the system to be partitioned and formatted.", "Metadata": { "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", - "SupportedOperatingSystems": "Windows,Linux" + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" }, "Parameters": { "Force": true, diff --git a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-MI25.json b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-MI25.json index 01e264d414..7f7188fc47 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-MI25.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-MI25.json @@ -2,8 +2,8 @@ "Description": "AMD GPU Driver Installation Dependency", "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", - "SupportedPlatforms": "win-x64,linux-x64", - "SupportedOperatingSystems": "Windows,Ubuntu" + "SupportedPlatforms": "linux-x64,win-x64", + "SupportedOperatingSystems": "Ubuntu,Windows" }, "Parameters": { "Username": null diff --git a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-V620.json b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-V620.json index 344a4f3b96..05519946c9 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-V620.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-AMD-V620.json @@ -2,8 +2,8 @@ "Description": "AMD GPU Driver Installation Dependency", "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", - "SupportedPlatforms": "win-x64,linux-x64", - "SupportedOperatingSystems": "Windows,Ubuntu" + "SupportedPlatforms": "linux-x64,win-x64", + "SupportedOperatingSystems": "Ubuntu,Windows" }, "Parameters": { "Username": null diff --git a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-A100.json b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-A100.json index 1c34c30ef7..93a26d275c 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-A100.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-A100.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-x64", - "SupportedOperatingSystems": "Linux", + "SupportedOperatingSystems": "Ubuntu", "SupportedLinuxGpuModel": "NVIDIA A100", "SupportedLinuxDistros": "Ubuntu24", "SpecialRequirements": "This is an NVIDIA GPU Driver dependency. It can only be installed on the system having an NVIDIA A100 GPU card/chip." diff --git a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-GB200.json b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-GB200.json index 08c4d2baeb..e1b6a78f7a 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-GB200.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/SETUP-GPU-NVIDIA-GB200.json @@ -3,7 +3,7 @@ "Metadata": { "RecommendedMinimumExecutionTime": "00:10:00", "SupportedPlatforms": "linux-arm64", - "SupportedOperatingSystems": "Linux", + "SupportedOperatingSystems": "Ubuntu", "SupportedLinuxGpuModel": "NVIDIA GB200", "SupportedLinuxDistros": "Ubuntu24", "SpecialRequirements": "This is an NVIDIA GPU Driver dependency. It can only be installed on the system having an NVIDIA GB200 GPU card/chip." diff --git a/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-FILES.json b/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-FILES.json index 52d71d9a16..1ab1bb96ad 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-FILES.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-FILES.json @@ -1,5 +1,9 @@ { "Description": "Uploads files from a directory to a content store location.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "TargetDirectory": null, "FlattenStructure": false diff --git a/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-TELEMETRY.json b/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-TELEMETRY.json index 71bf89cdd6..b40a5d50a4 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-TELEMETRY.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/UPLOAD-TELEMETRY.json @@ -1,5 +1,9 @@ { "Description": "Uploads telemetry from data point files on the local system.", + "Metadata": { + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64", + "SupportedOperatingSystems": "AmazonLinux,AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, "Parameters": { "Format": null, "Intrinsic": false, diff --git a/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs b/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs index e4399b8511..f74b490006 100644 --- a/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs +++ b/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs @@ -58,6 +58,80 @@ public void AllWorkloadProfilesMeetTheJsonSchemaRequirements(string profileName) } } + [Test] + [TestCaseSource(nameof(GetWorkloadProfileTestSource))] + public void AllWorkloadProfilesDefineTheRequiredBaseMetadata(string profileName) + { + string profileString = File.ReadAllText(profileName); + ExecutionProfile profileObject = JsonConvert.DeserializeObject(profileString); + + Assert.IsNotNull( + profileObject.Metadata, + $"The profile '{Path.GetFileName(profileName)}' does not define a 'Metadata' section."); + + IEnumerable missing = ProfileMetadata.BaseProperties + .Where(property => !profileObject.Metadata.TryGetValue(property, out IConvertible value) + || string.IsNullOrWhiteSpace(value?.ToString())); + + Assert.IsEmpty( + missing, + $"The profile '{Path.GetFileName(profileName)}' is missing required base metadata: " + + $"{string.Join(", ", missing)}."); + } + + [Test] + [TestCaseSource(nameof(GetWorkloadProfileTestSource))] + public void AllWorkloadProfilesDefineSupportedOperatingSystemsUsingTheCanonicalNames(string profileName) + { + string profileString = File.ReadAllText(profileName); + ExecutionProfile profileObject = JsonConvert.DeserializeObject(profileString); + + profileObject.Metadata.TryGetValue(ProfileMetadata.SupportedOperatingSystems, out IConvertible operatingSystems); + + IEnumerable invalid = operatingSystems.ToString() + .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) + .Where(name => !string.Equals(name, "Windows", StringComparison.Ordinal) + && !Enum.TryParse(name, ignoreCase: false, out LinuxDistribution _)); + + Assert.IsEmpty( + invalid, + $"The profile '{Path.GetFileName(profileName)}' defines operating systems that do not match the " + + $"'{nameof(LinuxDistribution)}' names (or 'Windows'): {string.Join(", ", invalid)}."); + } + + [Test] + [TestCaseSource(nameof(GetWorkloadProfileTestSource))] + public void AllWorkloadProfilesDefineAValidRecommendedMinimumExecutionTime(string profileName) + { + string profileString = File.ReadAllText(profileName); + ExecutionProfile profileObject = JsonConvert.DeserializeObject(profileString); + + // The property is optional. It does not apply to profiles whose runtime is + // determined externally (e.g. monitor profiles). + if (!profileObject.Metadata.TryGetValue(ProfileMetadata.RecommendedMinimumExecutionTime, out IConvertible executionTime)) + { + return; + } + + string value = executionTime?.ToString(); + + // Two forms are supported: a single timespan (e.g. 01:00:00), or a set of + // timespans scaled by core count for workloads whose runtime depends on it + // (e.g. "(4-cores)=02:00:00,(16-cores)=04:00:00"). + IEnumerable timespans = Regex.IsMatch(value ?? string.Empty, @"^\(\d+-cores\)=") + ? Regex.Matches(value, @"\(\d+-cores\)=([^,]+)").Select(match => match.Groups[1].Value) + : new List { value }; + + foreach (string timespan in timespans) + { + Assert.IsTrue( + TimeSpan.TryParse(timespan?.Trim(), out TimeSpan parsed) && parsed > TimeSpan.Zero, + $"The profile '{Path.GetFileName(profileName)}' defines a " + + $"'{ProfileMetadata.RecommendedMinimumExecutionTime}' value containing an invalid timespan: " + + $"'{timespan}' (in '{value}')."); + } + } + [Test] [Ignore("This test can be used manually when needed to validate that workload profiles do not have parameter reference inlining mistakes.")] public async Task WorkloadProfileDoNotHaveInlineParameterReferencingMistakes() diff --git a/website/docs/guides/0011-profiles.md b/website/docs/guides/0011-profiles.md index 3264a1e6b8..71c40ad88b 100644 --- a/website/docs/guides/0011-profiles.md +++ b/website/docs/guides/0011-profiles.md @@ -25,8 +25,54 @@ properties that one might find in a profile. |---------------------------------|-------------|---------------| | SupportsIterations | Optional. True/False. This metadata property DOES affect the operations of the Virtual Client. When set to false, it indicates that the profile does not support profile iterations (i.e. --iterations on the command line). | | | RecommendedMinimumExecutionTime | Optional. Provides a recommendation for the minimum length of time for running the profile. This time is typically based on the amount of time expected to execute all actions in the profile 1 full round. Actions are generally executed in sequential order. Note that this is an estimate based on empirical evidence, but it is always a good idea to leave a little extra time buffer. | | -| SupportedPlatforms | Optional. Defines a set of OS platforms and CPU architectures on which the profile (and all components within) is confirmed to run correctly (e.g. win-x64 -> Windows OS, X64 architecture). | | -| SupportedOperatingSystems | Optional. Defines a set of operating systems on which the profile is confirmed to run correctly (e.g. Ubuntu, CentOS, Windows). This list does not indicate that the Virtual Client will run on every version of these operating systems. Focus on latest versions of the operating systems for support. | | +| SupportedPlatforms | Required (base metadata). Defines a set of OS platforms and CPU architectures on which the profile (and all components within) is confirmed to run correctly (e.g. win-x64 -> Windows OS, X64 architecture). | | +| SupportedOperatingSystems | Required (base metadata). Defines a set of operating systems on which the profile is confirmed to run correctly (e.g. Ubuntu, CentOS, Windows). This list does not indicate that the Virtual Client will run on every version of these operating systems. Focus on latest versions of the operating systems for support. | | + +### Base Metadata +Every profile in the Virtual Client repo is required to define the following two properties. This "base metadata" gives users and +automation a consistent way to answer 2 questions about any profile without having to read the rest of it: where can it run, and on +which operating systems. The set is defined in code by `ProfileMetadata.BaseProperties` and is enforced by unit tests that run against +every profile in the repo. + +| Property | Format | Allowed Values | +|---------------------------------|--------|----------------| +| SupportedPlatforms | Comma-delimited | `linux-x64`, `linux-arm64`, `win-x64`, `win-arm64`. | +| SupportedOperatingSystems | Comma-delimited | The names defined by the `LinuxDistribution` enumeration (e.g. `AmazonLinux`, `AzureLinux`, `CentOS`, `Debian`, `Fedora`, `Flatcar`, `Gentoo`, `OpenSuse`, `RedHat`, `Ubuntu`) plus `Windows`. | + +Note that `AzureLinux` is the canonical name for the distro previously written as `CBL-Mariner`, and `AmazonLinux` is canonical for +`AwsLinux`. Version numbers are not included in `SupportedOperatingSystems`; a profile that only supports a specific version should +note that in a profile-specific metadata property. + +`RecommendedMinimumExecutionTime` is **optional** and is not part of the required base metadata. It is only meaningful for profiles +that define their own workload. It does not apply to profiles whose runtime is determined by something outside the profile, such as: + +* Monitor profiles (`MONITORS-*.json`), which run for as long as the workload profile they are paired with. +* Bootstrap, setup and upload profiles, whose duration depends on package sizes and network throughput. +* `EXECUTE-COMMAND.json` and `EXECUTE-SCRIPT.json`, where the work itself is supplied by the user. + +Where the property is defined, it should be derived from the actions in the profile (which execute sequentially) rather than estimated. +Two formats are supported: + +* A single timespan (e.g. `01:00:00`) for profiles whose runtime does not vary meaningfully with the size of the system. +* A set of timespans scaled by core count, for workloads whose runtime depends on the number of cores/vCPUs available + (e.g. `(4-cores)=02:00:00,(16-cores)=04:00:00,(64-cores)=10:00:00`). This form is used by SPECcpu, SPECjbb, LAPACK and LMbench. + +``` json +// The base metadata as it appears at the top of a workload profile, alongside the +// optional RecommendedMinimumExecutionTime. +{ + "Description": "OpenSSL CPU Performance Workload", + "Metadata": { + "RecommendedMinimumExecutionTime": "01:00:00", + "SupportedPlatforms": "linux-x64,linux-arm64,win-x64", + "SupportedOperatingSystems": "AzureLinux,CentOS,Debian,OpenSuse,RedHat,Ubuntu,Windows" + }, + ... +} +``` + +Any number of additional profile-specific metadata properties (e.g. `Notes`, `DocumentationUri`, `PreliminaryRequirements`) may also +be defined. ## Parameters The section 'Parameters' within the profile defines a set of 1 or more parameters (typically with default values) that can be used to override the default values in the components that From 9eeab3f1b745656605bb6b94ed68ce3e4823f48b Mon Sep 17 00:00:00 2001 From: Rakeshwar Reddy Kambaiahgari Date: Tue, 18 Aug 2026 09:44:17 -0700 Subject: [PATCH 2/3] commit changes --- .../ProfileValidationTests.cs | 5 +-- website/docs/guides/0011-profiles.md | 41 ++++++------------- 2 files changed, 13 insertions(+), 33 deletions(-) diff --git a/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs b/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs index f74b490006..2f715a087d 100644 --- a/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs +++ b/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs @@ -107,7 +107,6 @@ public void AllWorkloadProfilesDefineAValidRecommendedMinimumExecutionTime(strin ExecutionProfile profileObject = JsonConvert.DeserializeObject(profileString); // The property is optional. It does not apply to profiles whose runtime is - // determined externally (e.g. monitor profiles). if (!profileObject.Metadata.TryGetValue(ProfileMetadata.RecommendedMinimumExecutionTime, out IConvertible executionTime)) { return; @@ -115,9 +114,7 @@ public void AllWorkloadProfilesDefineAValidRecommendedMinimumExecutionTime(strin string value = executionTime?.ToString(); - // Two forms are supported: a single timespan (e.g. 01:00:00), or a set of - // timespans scaled by core count for workloads whose runtime depends on it - // (e.g. "(4-cores)=02:00:00,(16-cores)=04:00:00"). + // Either a single timespan, or timespans scaled by core count (e.g. "(4-cores)=02:00:00"). IEnumerable timespans = Regex.IsMatch(value ?? string.Empty, @"^\(\d+-cores\)=") ? Regex.Matches(value, @"\(\d+-cores\)=([^,]+)").Select(match => match.Groups[1].Value) : new List { value }; diff --git a/website/docs/guides/0011-profiles.md b/website/docs/guides/0011-profiles.md index 71c40ad88b..f7f224cacd 100644 --- a/website/docs/guides/0011-profiles.md +++ b/website/docs/guides/0011-profiles.md @@ -25,41 +25,27 @@ properties that one might find in a profile. |---------------------------------|-------------|---------------| | SupportsIterations | Optional. True/False. This metadata property DOES affect the operations of the Virtual Client. When set to false, it indicates that the profile does not support profile iterations (i.e. --iterations on the command line). | | | RecommendedMinimumExecutionTime | Optional. Provides a recommendation for the minimum length of time for running the profile. This time is typically based on the amount of time expected to execute all actions in the profile 1 full round. Actions are generally executed in sequential order. Note that this is an estimate based on empirical evidence, but it is always a good idea to leave a little extra time buffer. | | -| SupportedPlatforms | Required (base metadata). Defines a set of OS platforms and CPU architectures on which the profile (and all components within) is confirmed to run correctly (e.g. win-x64 -> Windows OS, X64 architecture). | | -| SupportedOperatingSystems | Required (base metadata). Defines a set of operating systems on which the profile is confirmed to run correctly (e.g. Ubuntu, CentOS, Windows). This list does not indicate that the Virtual Client will run on every version of these operating systems. Focus on latest versions of the operating systems for support. | | +| SupportedPlatforms | Required. Defines a set of OS platforms and CPU architectures on which the profile (and all components within) is confirmed to run correctly. | | +| SupportedOperatingSystems | Required. Defines a set of operating systems on which the profile can run (e.g. Ubuntu, Windows). | | ### Base Metadata -Every profile in the Virtual Client repo is required to define the following two properties. This "base metadata" gives users and -automation a consistent way to answer 2 questions about any profile without having to read the rest of it: where can it run, and on -which operating systems. The set is defined in code by `ProfileMetadata.BaseProperties` and is enforced by unit tests that run against -every profile in the repo. +Every profile in the Virtual Client repo must define `SupportedPlatforms` and `SupportedOperatingSystems`. The set is defined in code by +`ProfileMetadata.BaseProperties` and is enforced by unit tests that run against every profile on each pull request. | Property | Format | Allowed Values | |---------------------------------|--------|----------------| -| SupportedPlatforms | Comma-delimited | `linux-x64`, `linux-arm64`, `win-x64`, `win-arm64`. | -| SupportedOperatingSystems | Comma-delimited | The names defined by the `LinuxDistribution` enumeration (e.g. `AmazonLinux`, `AzureLinux`, `CentOS`, `Debian`, `Fedora`, `Flatcar`, `Gentoo`, `OpenSuse`, `RedHat`, `Ubuntu`) plus `Windows`. | +| SupportedPlatforms | Comma-delimited | `linux-x64`, `linux-arm64`, `win-x64`, `win-arm64` | +| SupportedOperatingSystems | Comma-delimited | The `LinuxDistribution` enumeration names (`AmazonLinux`, `AzureLinux`, `CentOS`, `Debian`, `Fedora`, `Flatcar`, `Gentoo`, `OpenSuse`, `RedHat`, `Ubuntu`) plus `Windows` | -Note that `AzureLinux` is the canonical name for the distro previously written as `CBL-Mariner`, and `AmazonLinux` is canonical for -`AwsLinux`. Version numbers are not included in `SupportedOperatingSystems`; a profile that only supports a specific version should -note that in a profile-specific metadata property. +Note that `AzureLinux` is the canonical name for the distro previously written as `CBL-Mariner`, and `AmazonLinux` for `AwsLinux`. Version +numbers are not included; note version-specific support in a profile-specific property instead. -`RecommendedMinimumExecutionTime` is **optional** and is not part of the required base metadata. It is only meaningful for profiles -that define their own workload. It does not apply to profiles whose runtime is determined by something outside the profile, such as: - -* Monitor profiles (`MONITORS-*.json`), which run for as long as the workload profile they are paired with. -* Bootstrap, setup and upload profiles, whose duration depends on package sizes and network throughput. -* `EXECUTE-COMMAND.json` and `EXECUTE-SCRIPT.json`, where the work itself is supplied by the user. - -Where the property is defined, it should be derived from the actions in the profile (which execute sequentially) rather than estimated. -Two formats are supported: - -* A single timespan (e.g. `01:00:00`) for profiles whose runtime does not vary meaningfully with the size of the system. -* A set of timespans scaled by core count, for workloads whose runtime depends on the number of cores/vCPUs available - (e.g. `(4-cores)=02:00:00,(16-cores)=04:00:00,(64-cores)=10:00:00`). This form is used by SPECcpu, SPECjbb, LAPACK and LMbench. +`RecommendedMinimumExecutionTime` is optional and is not part of the base metadata. It does not apply where the runtime is determined +outside the profile. Monitor profiles run for as long as the workload profile they are paired with, and the bootstrap, setup and upload +profiles depend on package sizes and network throughput. Two formats are supported: a single timespan, or timespans scaled by core count for workloads whose +runtime depends on the cores available (e.g. `(4-cores)=02:00:00,(16-cores)=04:00:00`). ``` json -// The base metadata as it appears at the top of a workload profile, alongside the -// optional RecommendedMinimumExecutionTime. { "Description": "OpenSSL CPU Performance Workload", "Metadata": { @@ -71,9 +57,6 @@ Two formats are supported: } ``` -Any number of additional profile-specific metadata properties (e.g. `Notes`, `DocumentationUri`, `PreliminaryRequirements`) may also -be defined. - ## Parameters The section 'Parameters' within the profile defines a set of 1 or more parameters (typically with default values) that can be used to override the default values in the components that are part of the 'Actions', 'Monitors' or 'Dependencies' sections. In general, Virtual Client profiles are not meant to be overly general purpose. They represent tested and vetted recipes From 49f757ac8b18ceb6d5cd5e4382c89f575b7ff793 Mon Sep 17 00:00:00 2001 From: Rakeshwar Reddy Kambaiahgari Date: Tue, 18 Aug 2026 13:31:36 -0700 Subject: [PATCH 3/3] fix tests --- .../ProfileValidationTests.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs b/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs index 2f715a087d..bbb739073b 100644 --- a/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs +++ b/src/VirtualClient/VirtualClient.UnitTests/ProfileValidationTests.cs @@ -71,7 +71,8 @@ public void AllWorkloadProfilesDefineTheRequiredBaseMetadata(string profileName) IEnumerable missing = ProfileMetadata.BaseProperties .Where(property => !profileObject.Metadata.TryGetValue(property, out IConvertible value) - || string.IsNullOrWhiteSpace(value?.ToString())); + || string.IsNullOrWhiteSpace(value?.ToString())) + .ToList(); Assert.IsEmpty( missing, @@ -86,12 +87,20 @@ public void AllWorkloadProfilesDefineSupportedOperatingSystemsUsingTheCanonicalN string profileString = File.ReadAllText(profileName); ExecutionProfile profileObject = JsonConvert.DeserializeObject(profileString); - profileObject.Metadata.TryGetValue(ProfileMetadata.SupportedOperatingSystems, out IConvertible operatingSystems); + // Presence of the property is enforced by AllWorkloadProfilesDefineTheRequiredBaseMetadata. + // Bail out here so a missing value surfaces as that assertion rather than a NullReferenceException. + if (profileObject.Metadata?.TryGetValue(ProfileMetadata.SupportedOperatingSystems, out IConvertible operatingSystems) != true + || string.IsNullOrWhiteSpace(operatingSystems?.ToString())) + { + return; + } IEnumerable invalid = operatingSystems.ToString() .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) .Where(name => !string.Equals(name, "Windows", StringComparison.Ordinal) - && !Enum.TryParse(name, ignoreCase: false, out LinuxDistribution _)); + && !(Enum.TryParse(name, ignoreCase: false, out LinuxDistribution distribution) + && distribution != LinuxDistribution.Unknown + && !int.TryParse(name, out int _))); Assert.IsEmpty( invalid, @@ -106,8 +115,8 @@ public void AllWorkloadProfilesDefineAValidRecommendedMinimumExecutionTime(strin string profileString = File.ReadAllText(profileName); ExecutionProfile profileObject = JsonConvert.DeserializeObject(profileString); - // The property is optional. It does not apply to profiles whose runtime is - if (!profileObject.Metadata.TryGetValue(ProfileMetadata.RecommendedMinimumExecutionTime, out IConvertible executionTime)) + // The property is optional. It does not apply to profiles whose runtime is determined externally. + if (profileObject.Metadata?.TryGetValue(ProfileMetadata.RecommendedMinimumExecutionTime, out IConvertible executionTime) != true) { return; }