blob: c933f7387988e6dcd4b60801fa19c6e7402068a7 [file] [log] [blame]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef INIT_PROCESS_KILLER_FAKE_PROCESS_MANAGER_H_
#define INIT_PROCESS_KILLER_FAKE_PROCESS_MANAGER_H_
#include <sys/types.h>
#include <vector>
#include <base/files/file_path.h>
#include <init/process_killer/process.h>
namespace init {
class FakeProcessManager : public ProcessManager {
public:
FakeProcessManager() : ProcessManager(base::FilePath("/foo")) {}
~FakeProcessManager() override = default;
std::vector<ActiveProcess> GetProcessList(bool need_files,
bool need_mounts) override {
return process_list_;
}
bool SendSignalToProcess(const ActiveProcess& p, int signal) override {
if (signal == SIGTERM || signal == SIGKILL) {
auto iter = std::find_if(process_list_.begin(), process_list_.end(),
[&p](const ActiveProcess& process) {
return p.GetPid() == process.GetPid();
});
if (iter != process_list_.end())
process_list_.erase(iter);
}
return true;
}
void SetProcessListForTesting(
const std::vector<ActiveProcess>& process_list) {
process_list_ = process_list;
}
private:
std::vector<ActiveProcess> process_list_;
};
} // namespace init
#endif // INIT_PROCESS_KILLER_FAKE_PROCESS_MANAGER_H_