You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.9 KiB
66 lines
1.9 KiB
// Copyright 2018 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 LIBBRILLO_BRILLO_BLKDEV_UTILS_DEVICE_MAPPER_FAKE_H_
|
|
#define LIBBRILLO_BRILLO_BLKDEV_UTILS_DEVICE_MAPPER_FAKE_H_
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <base/files/file_path.h>
|
|
#include <brillo/blkdev_utils/device_mapper.h>
|
|
#include <brillo/blkdev_utils/device_mapper_fake.h>
|
|
#include <brillo/blkdev_utils/device_mapper_task.h>
|
|
#include <brillo/secure_blob.h>
|
|
|
|
namespace brillo {
|
|
namespace fake {
|
|
|
|
// Fake implementation of dm_task primitives.
|
|
// ------------------------------------------
|
|
// dm_task is an opaque type in libdevmapper so we
|
|
// define a minimal struct for DmTask and DmTarget
|
|
// to avoid linking in libdevmapper.
|
|
struct DmTarget {
|
|
uint64_t start;
|
|
uint64_t size;
|
|
std::string type;
|
|
SecureBlob parameters;
|
|
};
|
|
|
|
struct DmTask {
|
|
int type;
|
|
std::string name;
|
|
std::vector<DmTarget> targets;
|
|
};
|
|
|
|
// Fake task factory: creates fake tasks that
|
|
// stub task info into a map.
|
|
std::unique_ptr<DevmapperTask> CreateDevmapperTask(int type);
|
|
|
|
class FakeDevmapperTask : public brillo::DevmapperTask {
|
|
public:
|
|
explicit FakeDevmapperTask(int type);
|
|
~FakeDevmapperTask() override = default;
|
|
bool SetName(const std::string& name) override;
|
|
bool AddTarget(uint64_t start,
|
|
uint64_t sectors,
|
|
const std::string& target,
|
|
const SecureBlob& parameters) override;
|
|
bool GetNextTarget(uint64_t* start,
|
|
uint64_t* sectors,
|
|
std::string* target,
|
|
SecureBlob* parameters) override;
|
|
bool Run(bool udev_sync = true) override;
|
|
|
|
private:
|
|
std::unique_ptr<DmTask> task_;
|
|
};
|
|
|
|
} // namespace fake
|
|
} // namespace brillo
|
|
|
|
#endif // LIBBRILLO_BRILLO_BLKDEV_UTILS_DEVICE_MAPPER_FAKE_H_
|