Skip to content

Commit 6964f32

Browse files
committed
add build mode as a new dimension for performance tests
1 parent b7187f4 commit 6964f32

File tree

4 files changed

+32
-12
lines changed

4 files changed

+32
-12
lines changed

tests/performance-tests/include/performance-tests/reporting/JsonReportingMetrics.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ class JsonReportingMetrics : public Aws::Monitoring::MonitoringInterface {
5555
* @param sdkVersion SDK version string
5656
* @param commitId Git commit identifier
5757
* @param outputFilename Path to output file (e.g., "s3-perf-results.json")
58+
* @param buildMode Build mode ("debug" or "release")
5859
*/
5960
JsonReportingMetrics(const Aws::Set<Aws::String>& monitoredOperations = Aws::Set<Aws::String>(), const Aws::String& productId = "unknown",
6061
const Aws::String& sdkVersion = "unknown", const Aws::String& commitId = "unknown",
61-
const Aws::String& outputFilename = "performance-test-results.json");
62+
const Aws::String& outputFilename = "performance-test-results.json", const Aws::String& buildMode = "unknown");
6263

6364
~JsonReportingMetrics() override;
6465

@@ -161,6 +162,7 @@ class JsonReportingMetrics : public Aws::Monitoring::MonitoringInterface {
161162
Aws::String m_sdkVersion;
162163
Aws::String m_commitId;
163164
Aws::String m_outputFilename;
165+
Aws::String m_buildMode;
164166
};
165167

166168
/**
@@ -176,10 +178,12 @@ class JsonReportingMetricsFactory : public Aws::Monitoring::MonitoringFactory {
176178
* @param sdkVersion SDK version string
177179
* @param commitId Git commit identifier
178180
* @param outputFilename Path to output file (e.g., "s3-perf-results.json")
181+
* @param buildMode Build mode ("debug" or "release")
179182
*/
180183
JsonReportingMetricsFactory(const Aws::Set<Aws::String>& monitoredOperations = Aws::Set<Aws::String>(),
181184
const Aws::String& productId = "unknown", const Aws::String& sdkVersion = "unknown",
182-
const Aws::String& commitId = "unknown", const Aws::String& outputFilename = "performance-test-results.json");
185+
const Aws::String& commitId = "unknown", const Aws::String& outputFilename = "performance-test-results.json",
186+
const Aws::String& buildMode = "unknown");
183187

184188
~JsonReportingMetricsFactory() override = default;
185189

@@ -195,6 +199,7 @@ class JsonReportingMetricsFactory : public Aws::Monitoring::MonitoringFactory {
195199
Aws::String m_sdkVersion;
196200
Aws::String m_commitId;
197201
Aws::String m_outputFilename;
202+
Aws::String m_buildMode;
198203
};
199204
} // namespace Reporting
200205
} // namespace PerformanceTest

tests/performance-tests/src/reporting/JsonReportingMetrics.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <aws/core/utils/Array.h>
1111
#include <aws/core/utils/DateTime.h>
1212
#include <aws/core/utils/StringUtils.h>
13+
#include <aws/core/utils/UUID.h>
1314
#include <aws/core/utils/json/JsonSerializer.h>
1415
#include <aws/core/utils/memory/AWSMemory.h>
1516
#include <aws/core/utils/memory/stl/AWSMap.h>
@@ -37,27 +38,30 @@ struct PerformanceTest::Reporting::RequestContext {
3738
};
3839

3940
JsonReportingMetrics::JsonReportingMetrics(const Aws::Set<Aws::String>& monitoredOperations, const Aws::String& productId,
40-
const Aws::String& sdkVersion, const Aws::String& commitId, const Aws::String& outputFilename)
41+
const Aws::String& sdkVersion, const Aws::String& commitId, const Aws::String& outputFilename,
42+
const Aws::String& buildMode)
4143
: m_monitoredOperations(monitoredOperations),
4244
m_productId(productId),
4345
m_sdkVersion(sdkVersion),
4446
m_commitId(commitId),
45-
m_outputFilename(outputFilename) {}
47+
m_outputFilename(outputFilename),
48+
m_buildMode(buildMode) {}
4649

4750
JsonReportingMetrics::~JsonReportingMetrics() { DumpJson(); }
4851

4952
JsonReportingMetricsFactory::JsonReportingMetricsFactory(const Aws::Set<Aws::String>& monitoredOperations, const Aws::String& productId,
5053
const Aws::String& sdkVersion, const Aws::String& commitId,
51-
const Aws::String& outputFilename)
54+
const Aws::String& outputFilename, const Aws::String& buildMode)
5255
: m_monitoredOperations(monitoredOperations),
5356
m_productId(productId),
5457
m_sdkVersion(sdkVersion),
5558
m_commitId(commitId),
56-
m_outputFilename(outputFilename) {}
59+
m_outputFilename(outputFilename),
60+
m_buildMode(buildMode) {}
5761

5862
Aws::UniquePtr<Aws::Monitoring::MonitoringInterface> JsonReportingMetricsFactory::CreateMonitoringInstance() const {
5963
return Aws::MakeUnique<JsonReportingMetrics>("JsonReportingMetrics", m_monitoredOperations, m_productId, m_sdkVersion, m_commitId,
60-
m_outputFilename);
64+
m_outputFilename, m_buildMode);
6165
}
6266

6367
void JsonReportingMetrics::StoreLatencyInContext(const Aws::String& serviceName, const Aws::String& requestName,
@@ -184,8 +188,14 @@ void JsonReportingMetrics::DumpJson() const {
184188
jsonMetric.WithInt64("date", record.date.Seconds());
185189

186190
if (!record.dimensions.empty()) {
187-
Aws::Utils::Array<Aws::Utils::Json::JsonValue> dimensionsArray(record.dimensions.size());
191+
Aws::Utils::Array<Aws::Utils::Json::JsonValue> dimensionsArray(record.dimensions.size() + 1);
188192
size_t dimensionIndex = 0;
193+
194+
Aws::Utils::Json::JsonValue buildModeDimension;
195+
buildModeDimension.WithString("name", "build-mode");
196+
buildModeDimension.WithString("value", m_buildMode);
197+
dimensionsArray[dimensionIndex++] = std::move(buildModeDimension);
198+
189199
for (const auto& dim : record.dimensions) {
190200
Aws::Utils::Json::JsonValue dimension;
191201
dimension.WithString("name", dim.first);

tests/performance-tests/src/services/dynamodb/main.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ int main(int argc, char** argv) {
2323
cxxopts::Options options("dynamodb-perf-test", "DynamoDB Performance Test");
2424
options.add_options()("r,region", "AWS region", cxxopts::value<std::string>()->default_value("us-east-1"))(
2525
"i,iterations", "Number of iterations", cxxopts::value<int>()->default_value("10"))(
26-
"c,commit-id", "Commit ID", cxxopts::value<std::string>()->default_value("unknown"));
26+
"c,commit-id", "Commit ID", cxxopts::value<std::string>()->default_value("unknown"))(
27+
"b,build-mode", "Build mode (debug or release)", cxxopts::value<std::string>()->default_value("unknown"));
2728

2829
auto const result = options.parse(argc, argv);
2930

3031
Aws::String const region = Aws::Utils::StringUtils::to_string(result["region"].as<std::string>());
3132
Aws::String const commitId = Aws::Utils::StringUtils::to_string(result["commit-id"].as<std::string>());
33+
Aws::String const buildMode = Aws::Utils::StringUtils::to_string(result["build-mode"].as<std::string>());
3234
int const iterations = result["iterations"].as<int>();
3335

3436
Aws::SDKOptions sdkOptions;
@@ -41,7 +43,7 @@ int main(int argc, char** argv) {
4143
}
4244
return Aws::MakeUnique<PerformanceTest::Reporting::JsonReportingMetricsFactory>(
4345
"JsonReportingMetricsFactory", operations, "cpp1", versionStr, commitId,
44-
PerformanceTest::Services::DynamoDB::TestConfig::OutputFilename);
46+
PerformanceTest::Services::DynamoDB::TestConfig::OutputFilename, buildMode);
4547
}};
4648

4749
Aws::InitAPI(sdkOptions);

tests/performance-tests/src/services/s3/main.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ int main(int argc, char** argv) {
2424
options.add_options()("r,region", "AWS region", cxxopts::value<std::string>()->default_value("us-east-1"))(
2525
"a,az-id", "Availability zone ID", cxxopts::value<std::string>()->default_value("use1-az4"))(
2626
"i,iterations", "Number of iterations", cxxopts::value<int>()->default_value("10"))(
27-
"c,commit-id", "Commit ID", cxxopts::value<std::string>()->default_value("unknown"));
27+
"c,commit-id", "Commit ID", cxxopts::value<std::string>()->default_value("unknown"))(
28+
"b,build-mode", "Build mode (debug or release)", cxxopts::value<std::string>()->default_value("unknown"));
2829

2930
auto const result = options.parse(argc, argv);
3031

3132
Aws::String const region = Aws::Utils::StringUtils::to_string(result["region"].as<std::string>());
3233
Aws::String const availabilityZoneId = Aws::Utils::StringUtils::to_string(result["az-id"].as<std::string>());
3334
Aws::String const commitId = Aws::Utils::StringUtils::to_string(result["commit-id"].as<std::string>());
35+
Aws::String const buildMode = Aws::Utils::StringUtils::to_string(result["build-mode"].as<std::string>());
3436
int const iterations = result["iterations"].as<int>();
3537

3638
Aws::SDKOptions sdkOptions;
@@ -42,7 +44,8 @@ int main(int argc, char** argv) {
4244
operations.insert(operation);
4345
}
4446
return Aws::MakeUnique<PerformanceTest::Reporting::JsonReportingMetricsFactory>(
45-
"JsonReportingMetricsFactory", operations, "cpp1", versionStr, commitId, PerformanceTest::Services::S3::TestConfig::OutputFilename);
47+
"JsonReportingMetricsFactory", operations, "cpp1", versionStr, commitId, PerformanceTest::Services::S3::TestConfig::OutputFilename,
48+
buildMode);
4649
}};
4750

4851
Aws::InitAPI(sdkOptions);

0 commit comments

Comments
 (0)