blob: da21a5758aaf4f12c5821d8ca915a4f1cb10096c [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.
#ifndef LOGIN_MANAGER_FAKE_CONTAINER_MANAGER_H_
#define LOGIN_MANAGER_FAKE_CONTAINER_MANAGER_H_
#include <string>
#include <vector>
#include <base/callback.h>
#include "login_manager/container_manager_interface.h"
namespace login_manager {
// Fake implementation used for tests.
class FakeContainerManager : public ContainerManagerInterface {
public:
explicit FakeContainerManager(pid_t pid);
FakeContainerManager(const FakeContainerManager&) = delete;
FakeContainerManager& operator=(const FakeContainerManager&) = delete;
~FakeContainerManager() override = default;
bool running() const { return running_; }
bool HandleExit(const siginfo_t& status) override;
void RequestJobExit(ArcContainerStopReason reason) override;
void EnsureJobExit(base::TimeDelta timeout) override;
bool StartContainer(const std::vector<std::string>& env,
const ExitCallback& exit_callback) override;
StatefulMode GetStatefulMode() const override;
void SetStatefulMode(StatefulMode mode) override;
bool GetContainerPID(pid_t* pid_out) const override;
void SimulateCrash();
private:
// True if the container is running.
bool running_ = false;
StatefulMode stateful_mode_ = StatefulMode::STATELESS;
const pid_t pid_;
ExitCallback exit_callback_;
};
} // namespace login_manager
#endif // LOGIN_MANAGER_FAKE_CONTAINER_MANAGER_H_