Commit 6473b1f5 authored by Ryo Hashimoto's avatar Ryo Hashimoto Committed by Chromium LUCI CQ

arc: Use arcvm-post-vm-start-services to control jobs

BUG=b:171408795
TEST=Launch Play Store

Change-Id: I350bb9e05ecbd168a6452e76b59b601a27db8dc8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2560534Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Commit-Queue: Ryo Hashimoto <hashimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#833139}
parent 398cd975
...@@ -62,14 +62,14 @@ namespace { ...@@ -62,14 +62,14 @@ namespace {
// The "_2d" in job names below corresponds to "-". Upstart escapes characters // The "_2d" in job names below corresponds to "-". Upstart escapes characters
// that aren't valid in D-Bus object paths with underscore followed by its // that aren't valid in D-Bus object paths with underscore followed by its
// ascii code in hex. So "arc_2dcreate_2ddata" becomes "arc-create-data". // ascii code in hex. So "arc_2dcreate_2ddata" becomes "arc-create-data".
constexpr const char kArcVmAdbdJobName[] = "arcvm_2dadbd";
constexpr const char kArcVmPerBoardFeaturesJobName[] = constexpr const char kArcVmPerBoardFeaturesJobName[] =
"arcvm_2dper_2dboard_2dfeatures"; "arcvm_2dper_2dboard_2dfeatures";
// TODO(hashimoto): Introduce another job for post-vm-start services.
constexpr char kArcVmPreLoginServicesJobName[] = constexpr char kArcVmPreLoginServicesJobName[] =
"arcvm_2dpre_2dlogin_2dservices"; "arcvm_2dpre_2dlogin_2dservices";
constexpr char kArcVmPostLoginServicesJobName[] = constexpr char kArcVmPostLoginServicesJobName[] =
"arcvm_2dpost_2dlogin_2dservices"; "arcvm_2dpost_2dlogin_2dservices";
constexpr char kArcVmPostVmStartServicesJobName[] =
"arcvm_2dpost_2dvm_2dstart_2dservices";
constexpr const char kCrosSystemPath[] = "/usr/bin/crossystem"; constexpr const char kCrosSystemPath[] = "/usr/bin/crossystem";
constexpr const char kArcVmBootNotificationServerSocketPath[] = constexpr const char kArcVmBootNotificationServerSocketPath[] =
...@@ -653,6 +653,8 @@ class ArcVmClientAdapter : public ArcClientAdapter, ...@@ -653,6 +653,8 @@ class ArcVmClientAdapter : public ArcClientAdapter,
// exist. // exist.
JobDesc{kArcVmPerBoardFeaturesJobName, UpstartOperation::JOB_START, {}}, JobDesc{kArcVmPerBoardFeaturesJobName, UpstartOperation::JOB_START, {}},
JobDesc{
kArcVmPostVmStartServicesJobName, UpstartOperation::JOB_STOP, {}},
JobDesc{kArcVmPostLoginServicesJobName, UpstartOperation::JOB_STOP, {}}, JobDesc{kArcVmPostLoginServicesJobName, UpstartOperation::JOB_STOP, {}},
JobDesc{kArcVmPreLoginServicesJobName, JobDesc{kArcVmPreLoginServicesJobName,
UpstartOperation::JOB_STOP_AND_START, UpstartOperation::JOB_STOP_AND_START,
...@@ -830,20 +832,16 @@ class ArcVmClientAdapter : public ArcClientAdapter, ...@@ -830,20 +832,16 @@ class ArcVmClientAdapter : public ArcClientAdapter,
current_cid_ = response.vm_info().cid(); current_cid_ = response.vm_info().cid();
VLOG(1) << "ARCVM started cid=" << current_cid_; VLOG(1) << "ARCVM started cid=" << current_cid_;
if (!should_start_adbd) { VLOG(1) << "Starting arcvm-post-vm-start-services.";
// No need to start arcvm-adbd. Run the |callback| now. std::vector<std::string> environment;
std::move(callback).Run(true); if (should_start_adbd) {
return; environment.push_back("SERIALNUMBER=" + serial_number_);
environment.push_back(
base::StringPrintf("ARCVM_CID=%" PRId64, current_cid_));
} }
std::deque<JobDesc> jobs{JobDesc{kArcVmPostVmStartServicesJobName,
// Start the daemon for supporting adb-over-usb. UpstartOperation::JOB_START,
VLOG(1) << "Starting arcvm-adbd"; std::move(environment)}};
std::vector<std::string> environment_for_adbd = {
"SERIALNUMBER=" + serial_number_,
base::StringPrintf("ARCVM_CID=%" PRId64, current_cid_)};
std::deque<JobDesc> jobs{JobDesc{kArcVmAdbdJobName,
UpstartOperation::JOB_STOP_AND_START,
std::move(environment_for_adbd)}};
ConfigureUpstartJobs( ConfigureUpstartJobs(
std::move(jobs), std::move(jobs),
base::BindOnce(&ArcVmClientAdapter::OnConfigureUpstartJobsAfterVmStart, base::BindOnce(&ArcVmClientAdapter::OnConfigureUpstartJobsAfterVmStart,
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
namespace arc { namespace arc {
namespace { namespace {
constexpr const char kArcVmAdbdJobName[] = "arcvm_2dadbd";
constexpr const char kArcVmPerBoardFeaturesJobName[] = constexpr const char kArcVmPerBoardFeaturesJobName[] =
"arcvm_2dper_2dboard_2dfeatures"; "arcvm_2dper_2dboard_2dfeatures";
constexpr const size_t kUnixMaxPathLen = sizeof(sockaddr_un::sun_path); constexpr const size_t kUnixMaxPathLen = sizeof(sockaddr_un::sun_path);
...@@ -54,6 +53,8 @@ constexpr char kArcVmPreLoginServicesJobName[] = ...@@ -54,6 +53,8 @@ constexpr char kArcVmPreLoginServicesJobName[] =
"arcvm_2dpre_2dlogin_2dservices"; "arcvm_2dpre_2dlogin_2dservices";
constexpr char kArcVmPostLoginServicesJobName[] = constexpr char kArcVmPostLoginServicesJobName[] =
"arcvm_2dpost_2dlogin_2dservices"; "arcvm_2dpost_2dlogin_2dservices";
constexpr char kArcVmPostVmStartServicesJobName[] =
"arcvm_2dpost_2dvm_2dstart_2dservices";
constexpr const char kUserIdHash[] = "this_is_a_valid_user_id_hash"; constexpr const char kUserIdHash[] = "this_is_a_valid_user_id_hash";
constexpr const char kSerialNumber[] = "AAAABBBBCCCCDDDD1234"; constexpr const char kSerialNumber[] = "AAAABBBBCCCCDDDD1234";
...@@ -762,14 +763,14 @@ TEST_F(ArcVmClientAdapterTest, UpgradeArc_StartArcVmPostLoginServicesFailure) { ...@@ -762,14 +763,14 @@ TEST_F(ArcVmClientAdapterTest, UpgradeArc_StartArcVmPostLoginServicesFailure) {
EXPECT_TRUE(arc_instance_stopped_called()); EXPECT_TRUE(arc_instance_stopped_called());
} }
// Tests that UpgradeArc() handles arcvm-adbd stop failures properly. // Tests that UpgradeArc() handles arcvm-post-vm-start-services stop failures
// Note that arcvm-adbd is restarted AFTER ARCVM is started. // properly.
TEST_F(ArcVmClientAdapterTest, UpgradeArc_StopArcVmAdbdFailure) { TEST_F(ArcVmClientAdapterTest, UpgradeArc_StopArcVmPostVmStartServicesFailure) {
SetValidUserInfo(); SetValidUserInfo();
StartMiniArc(); StartMiniArc();
// Inject failure to FakeUpstartClient. // Inject failure to FakeUpstartClient.
InjectUpstartStopJobFailure(kArcVmAdbdJobName); InjectUpstartStopJobFailure(kArcVmPostVmStartServicesJobName);
// Upgrade should still succeed. // Upgrade should still succeed.
UpgradeArc(true); UpgradeArc(true);
...@@ -780,14 +781,15 @@ TEST_F(ArcVmClientAdapterTest, UpgradeArc_StopArcVmAdbdFailure) { ...@@ -780,14 +781,15 @@ TEST_F(ArcVmClientAdapterTest, UpgradeArc_StopArcVmAdbdFailure) {
EXPECT_FALSE(GetTestConciergeClient()->stop_vm_called()); EXPECT_FALSE(GetTestConciergeClient()->stop_vm_called());
} }
// Tests that UpgradeArc() handles arcvm-adbd startup failures properly. // Tests that UpgradeArc() handles arcvm-post-vm-start-services startup failures
// Note that arcvm-adbd is restarted AFTER ARCVM is started. // properly.
TEST_F(ArcVmClientAdapterTest, UpgradeArc_StartArcVmAdbdFailure) { TEST_F(ArcVmClientAdapterTest,
UpgradeArc_StartArcVmPostVmStartServicesFailure) {
SetValidUserInfo(); SetValidUserInfo();
StartMiniArc(); StartMiniArc();
// Inject failure to FakeUpstartClient. // Inject failure to FakeUpstartClient.
InjectUpstartStartJobFailure(kArcVmAdbdJobName); InjectUpstartStartJobFailure(kArcVmPostVmStartServicesJobName);
EnableAdbOverUsbForTesting(); EnableAdbOverUsbForTesting();
UpgradeArc(false); UpgradeArc(false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment