blob: e3da31b855d7779448074ebb62df04b1e5dc43a4 [file] [log] [blame]
// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "login_manager/fake_container_manager.h"
namespace login_manager {
FakeContainerManager::FakeContainerManager(pid_t pid) : pid_(pid) {}
bool FakeContainerManager::IsManagedJob(pid_t pid) {
return running_ && pid_ == pid;
}
void FakeContainerManager::HandleExit(const siginfo_t& status) {}
void FakeContainerManager::RequestJobExit() {
LOG_IF(FATAL, !running_) << "Trying to stop an already stopped container";
running_ = false;
exit_callback_.Run(pid_, true);
}
void FakeContainerManager::EnsureJobExit(base::TimeDelta timeout) {}
bool FakeContainerManager::StartContainer(const ExitCallback& exit_callback) {
LOG_IF(FATAL, running_) << "Trying to start an already started container";
exit_callback_ = exit_callback;
running_ = true;
return true;
}
bool FakeContainerManager::GetRootFsPath(base::FilePath* path_out) const {
if (!running_)
return false;
*path_out = base::FilePath();
return true;
}
bool FakeContainerManager::GetContainerPID(pid_t* pid_out) const {
if (!running_)
return false;
*pid_out = pid_;
return true;
}
void FakeContainerManager::SimulateCrash() {
LOG_IF(FATAL, !running_) << "Trying to crash an already stopped container";
running_ = false;
exit_callback_.Run(pid_, false);
}
} // namespace login_manager