diff options
author | 2023-04-20 21:56:04 +0100 | |
---|---|---|
committer | 2023-04-21 16:30:23 +0100 | |
commit | a1d3d706a581c74fb2a7ba8a85d3c71c06b8cb02 (patch) | |
tree | 4dd836b8813eca7ebd07a8bfadf26b6c3a60b3e2 /odrefresh/odr_metrics_test.cc | |
parent | ccba1e7e0beeca779b4889ab27c7b21930f85aa1 (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.cc | 174 |
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 |