summaryrefslogtreecommitdiff
path: root/odrefresh/odr_metrics_test.cc
diff options
context:
space:
mode:
author Jiakai Zhang <jiakaiz@google.com> 2023-04-20 21:56:04 +0100
committer Jiakai Zhang <jiakaiz@google.com> 2023-04-21 16:30:23 +0100
commita1d3d706a581c74fb2a7ba8a85d3c71c06b8cb02 (patch)
tree4dd836b8813eca7ebd07a8bfadf26b6c3a60b3e2 /odrefresh/odr_metrics_test.cc
parentccba1e7e0beeca779b4889ab27c7b21930f85aa1 (diff)
Refactor the compilation part of odrefresh.
The compilation part was not extensible enough to support boot image mainline extension. This CL refactors it to make later changes easier. This CL is a no-op change. Existing tests are still passing. Bug: 269230245 Test: atest art_standalone_odrefresh_tests Change-Id: I1e30d4103a83a7833c097a7cb6df5b95ee3c86ee
Diffstat (limited to 'odrefresh/odr_metrics_test.cc')
-rw-r--r--odrefresh/odr_metrics_test.cc174
1 files changed, 44 insertions, 130 deletions
diff --git a/odrefresh/odr_metrics_test.cc b/odrefresh/odr_metrics_test.cc
index b8446df00b..5396d5df21 100644
--- a/odrefresh/odr_metrics_test.cc
+++ b/odrefresh/odr_metrics_test.cc
@@ -87,56 +87,6 @@ TEST_F(OdrMetricsTest, MetricsFileIsCreatedIfEnabled) {
EXPECT_TRUE(MetricsFileExists());
}
-TEST_F(OdrMetricsTest, TimeValuesAreRecorded) {
- OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
- metrics.SetArtApexVersion(1999);
- metrics.SetTrigger(OdrMetrics::Trigger::kMissingArtifacts);
- metrics.SetStage(OdrMetrics::Stage::kCheck);
- metrics.SetStatus(OdrMetrics::Status::kOK);
-
- // Primary boot classpath compilation time.
- {
- metrics.SetStage(OdrMetrics::Stage::kPrimaryBootClasspath);
- ScopedOdrCompilationTimer timer(metrics);
- std::this_thread::sleep_for(100ms);
- }
- OdrMetricsRecord record = metrics.ToRecord();
- EXPECT_EQ(enum_cast<OdrMetrics::Stage>(record.stage_reached),
- OdrMetrics::Stage::kPrimaryBootClasspath);
- EXPECT_GT(record.primary_bcp_compilation_millis, 0);
- EXPECT_LT(record.primary_bcp_compilation_millis, 300);
- EXPECT_EQ(record.secondary_bcp_compilation_millis, 0);
- EXPECT_EQ(record.system_server_compilation_millis, 0);
-
- // Secondary boot classpath compilation time.
- {
- metrics.SetStage(OdrMetrics::Stage::kSecondaryBootClasspath);
- ScopedOdrCompilationTimer timer(metrics);
- std::this_thread::sleep_for(100ms);
- }
- record = metrics.ToRecord();
- EXPECT_EQ(OdrMetrics::Stage::kSecondaryBootClasspath,
- enum_cast<OdrMetrics::Stage>(record.stage_reached));
- EXPECT_GT(record.primary_bcp_compilation_millis, 0);
- EXPECT_GT(record.secondary_bcp_compilation_millis, 0);
- EXPECT_LT(record.secondary_bcp_compilation_millis, 300);
- EXPECT_EQ(record.system_server_compilation_millis, 0);
-
- // system_server classpath compilation time.
- {
- metrics.SetStage(OdrMetrics::Stage::kSystemServerClasspath);
- ScopedOdrCompilationTimer timer(metrics);
- std::this_thread::sleep_for(100ms);
- }
- record = metrics.ToRecord();
- EXPECT_EQ(OdrMetrics::Stage::kSystemServerClasspath,
- enum_cast<OdrMetrics::Stage>(record.stage_reached));
- EXPECT_GT(record.primary_bcp_compilation_millis, 0);
- EXPECT_GT(record.secondary_bcp_compilation_millis, 0);
- EXPECT_GT(record.system_server_compilation_millis, 0);
- EXPECT_LT(record.system_server_compilation_millis, 300);
-}
-
TEST_F(OdrMetricsTest, CacheSpaceValuesAreUpdated) {
OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
metrics.CaptureSpaceFreeEnd();
@@ -147,16 +97,22 @@ TEST_F(OdrMetricsTest, CacheSpaceValuesAreUpdated) {
TEST_F(OdrMetricsTest, PrimaryBcpResultWithValue) {
OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
- metrics.SetStage(OdrMetrics::Stage::kPrimaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kExited,
- .exit_code = 0,
- .signal = 0
- });
+ metrics.SetDex2OatResult(
+ OdrMetrics::Stage::kPrimaryBootClasspath,
+ 100,
+ ExecResult{.status = ExecResult::Status::kExited, .exit_code = 0, .signal = 0});
OdrMetricsRecord record = metrics.ToRecord();
+
+ EXPECT_EQ(record.primary_bcp_compilation_millis, 100);
EXPECT_EQ(record.primary_bcp_dex2oat_result.status, ExecResult::Status::kExited);
EXPECT_EQ(record.primary_bcp_dex2oat_result.exit_code, 0);
EXPECT_EQ(record.primary_bcp_dex2oat_result.signal, 0);
+
+ EXPECT_EQ(record.secondary_bcp_compilation_millis, 0);
+ EXPECT_EQ(record.secondary_bcp_dex2oat_result.status, kExecResultNotRun);
+
+ EXPECT_EQ(record.system_server_compilation_millis, 0);
+ EXPECT_EQ(record.system_server_dex2oat_result.status, kExecResultNotRun);
}
TEST_F(OdrMetricsTest, PrimaryBcpResultWithoutValue) {
@@ -170,103 +126,61 @@ TEST_F(OdrMetricsTest, PrimaryBcpResultWithoutValue) {
TEST_F(OdrMetricsTest, SecondaryBcpResultWithValue) {
OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
- metrics.SetStage(OdrMetrics::Stage::kPrimaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kExited,
- .exit_code = 0,
- .signal = 0
- });
- metrics.SetStage(OdrMetrics::Stage::kSecondaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kTimedOut,
- .exit_code = 3,
- .signal = 0
- });
+ metrics.SetDex2OatResult(
+ OdrMetrics::Stage::kPrimaryBootClasspath,
+ 100,
+ ExecResult{.status = ExecResult::Status::kExited, .exit_code = 0, .signal = 0});
+ metrics.SetDex2OatResult(
+ OdrMetrics::Stage::kSecondaryBootClasspath,
+ 200,
+ ExecResult{.status = ExecResult::Status::kTimedOut, .exit_code = 3, .signal = 0});
OdrMetricsRecord record = metrics.ToRecord();
+
+ EXPECT_EQ(record.primary_bcp_compilation_millis, 100);
EXPECT_EQ(record.primary_bcp_dex2oat_result.status, ExecResult::Status::kExited);
EXPECT_EQ(record.primary_bcp_dex2oat_result.exit_code, 0);
EXPECT_EQ(record.primary_bcp_dex2oat_result.signal, 0);
+
+ EXPECT_EQ(record.secondary_bcp_compilation_millis, 200);
EXPECT_EQ(record.secondary_bcp_dex2oat_result.status, ExecResult::Status::kTimedOut);
EXPECT_EQ(record.secondary_bcp_dex2oat_result.exit_code, 3);
EXPECT_EQ(record.secondary_bcp_dex2oat_result.signal, 0);
-}
-TEST_F(OdrMetricsTest, SecondaryBcpResultWithoutValue) {
- OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
- metrics.SetStage(OdrMetrics::Stage::kPrimaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kExited,
- .exit_code = 0,
- .signal = 0
- });
-
- OdrMetricsRecord record = metrics.ToRecord();
- EXPECT_EQ(record.primary_bcp_dex2oat_result.status, ExecResult::Status::kExited);
- EXPECT_EQ(record.primary_bcp_dex2oat_result.exit_code, 0);
- EXPECT_EQ(record.primary_bcp_dex2oat_result.signal, 0);
- EXPECT_EQ(record.secondary_bcp_dex2oat_result.status, kExecResultNotRun);
- EXPECT_EQ(record.secondary_bcp_dex2oat_result.exit_code, -1);
- EXPECT_EQ(record.secondary_bcp_dex2oat_result.signal, 0);
+ EXPECT_EQ(record.system_server_compilation_millis, 0);
+ EXPECT_EQ(record.system_server_dex2oat_result.status, kExecResultNotRun);
}
TEST_F(OdrMetricsTest, SystemServerResultWithValue) {
OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
- metrics.SetStage(OdrMetrics::Stage::kPrimaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kExited,
- .exit_code = 0,
- .signal = 0
- });
- metrics.SetStage(OdrMetrics::Stage::kSecondaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kTimedOut,
- .exit_code = 3,
- .signal = 0
- });
- metrics.SetStage(OdrMetrics::Stage::kSystemServerClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kSignaled,
- .exit_code = 2,
- .signal = 9
- });
+ metrics.SetDex2OatResult(
+ OdrMetrics::Stage::kPrimaryBootClasspath,
+ 100,
+ ExecResult{.status = ExecResult::Status::kExited, .exit_code = 0, .signal = 0});
+ metrics.SetDex2OatResult(
+ OdrMetrics::Stage::kSecondaryBootClasspath,
+ 200,
+ ExecResult{.status = ExecResult::Status::kTimedOut, .exit_code = 3, .signal = 0});
+ metrics.SetDex2OatResult(
+ OdrMetrics::Stage::kSystemServerClasspath,
+ 300,
+ ExecResult{.status = ExecResult::Status::kSignaled, .exit_code = 2, .signal = 9});
OdrMetricsRecord record = metrics.ToRecord();
+
+ EXPECT_EQ(record.primary_bcp_compilation_millis, 100);
EXPECT_EQ(record.primary_bcp_dex2oat_result.status, ExecResult::Status::kExited);
EXPECT_EQ(record.primary_bcp_dex2oat_result.exit_code, 0);
EXPECT_EQ(record.primary_bcp_dex2oat_result.signal, 0);
+
+ EXPECT_EQ(record.secondary_bcp_compilation_millis, 200);
EXPECT_EQ(record.secondary_bcp_dex2oat_result.status, ExecResult::Status::kTimedOut);
EXPECT_EQ(record.secondary_bcp_dex2oat_result.exit_code, 3);
EXPECT_EQ(record.secondary_bcp_dex2oat_result.signal, 0);
+
+ EXPECT_EQ(record.system_server_compilation_millis, 300);
EXPECT_EQ(record.system_server_dex2oat_result.status, ExecResult::Status::kSignaled);
EXPECT_EQ(record.system_server_dex2oat_result.exit_code, 2);
EXPECT_EQ(record.system_server_dex2oat_result.signal, 9);
}
-TEST_F(OdrMetricsTest, SystemServerResultWithoutValue) {
- OdrMetrics metrics(GetCacheDirectory(), GetMetricsFilePath());
- metrics.SetStage(OdrMetrics::Stage::kPrimaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kExited,
- .exit_code = 0,
- .signal = 0
- });
- metrics.SetStage(OdrMetrics::Stage::kSecondaryBootClasspath);
- metrics.SetDex2OatResult({
- .status = ExecResult::Status::kTimedOut,
- .exit_code = 3,
- .signal = 0
- });
-
- OdrMetricsRecord record = metrics.ToRecord();
- EXPECT_EQ(record.primary_bcp_dex2oat_result.status, ExecResult::Status::kExited);
- EXPECT_EQ(record.primary_bcp_dex2oat_result.exit_code, 0);
- EXPECT_EQ(record.primary_bcp_dex2oat_result.signal, 0);
- EXPECT_EQ(record.secondary_bcp_dex2oat_result.status, ExecResult::Status::kTimedOut);
- EXPECT_EQ(record.secondary_bcp_dex2oat_result.exit_code, 3);
- EXPECT_EQ(record.secondary_bcp_dex2oat_result.signal, 0);
- EXPECT_EQ(record.system_server_dex2oat_result.status, kExecResultNotRun);
- EXPECT_EQ(record.system_server_dex2oat_result.exit_code, -1);
- EXPECT_EQ(record.system_server_dex2oat_result.signal, 0);
-}
-
} // namespace odrefresh
} // namespace art