Merge "Move TempDevice to test_util.h"
This commit is contained in:
commit
30820a384c
2 changed files with 48 additions and 44 deletions
|
|
@ -47,50 +47,6 @@ TEST(libdm, HasMinimumTargets) {
|
||||||
ASSERT_TRUE(dm.GetTargetByName("linear", &info));
|
ASSERT_TRUE(dm.GetTargetByName("linear", &info));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to ensure that device mapper devices are released.
|
|
||||||
class TempDevice {
|
|
||||||
public:
|
|
||||||
TempDevice(const std::string& name, const DmTable& table)
|
|
||||||
: dm_(DeviceMapper::Instance()), name_(name), valid_(false) {
|
|
||||||
valid_ = dm_.CreateDevice(name, table, &path_, 5s);
|
|
||||||
}
|
|
||||||
TempDevice(TempDevice&& other) noexcept
|
|
||||||
: dm_(other.dm_), name_(other.name_), path_(other.path_), valid_(other.valid_) {
|
|
||||||
other.valid_ = false;
|
|
||||||
}
|
|
||||||
~TempDevice() {
|
|
||||||
if (valid_) {
|
|
||||||
dm_.DeleteDevice(name_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bool Destroy() {
|
|
||||||
if (!valid_) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
valid_ = false;
|
|
||||||
return dm_.DeleteDevice(name_);
|
|
||||||
}
|
|
||||||
std::string path() const { return path_; }
|
|
||||||
const std::string& name() const { return name_; }
|
|
||||||
bool valid() const { return valid_; }
|
|
||||||
|
|
||||||
TempDevice(const TempDevice&) = delete;
|
|
||||||
TempDevice& operator=(const TempDevice&) = delete;
|
|
||||||
|
|
||||||
TempDevice& operator=(TempDevice&& other) noexcept {
|
|
||||||
name_ = other.name_;
|
|
||||||
valid_ = other.valid_;
|
|
||||||
other.valid_ = false;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
DeviceMapper& dm_;
|
|
||||||
std::string name_;
|
|
||||||
std::string path_;
|
|
||||||
bool valid_;
|
|
||||||
};
|
|
||||||
|
|
||||||
TEST(libdm, DmLinear) {
|
TEST(libdm, DmLinear) {
|
||||||
unique_fd tmp1(CreateTempFile("file_1", 4096));
|
unique_fd tmp1(CreateTempFile("file_1", 4096));
|
||||||
ASSERT_GE(tmp1, 0);
|
ASSERT_GE(tmp1, 0);
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,12 @@
|
||||||
#include <android-base/unique_fd.h>
|
#include <android-base/unique_fd.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include <chrono>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include <libdm/dm.h>
|
||||||
|
#include <libdm/dm_table.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
namespace dm {
|
namespace dm {
|
||||||
|
|
||||||
|
|
@ -29,6 +33,50 @@ namespace dm {
|
||||||
// created with a fixed size.
|
// created with a fixed size.
|
||||||
android::base::unique_fd CreateTempFile(const std::string& name, size_t size);
|
android::base::unique_fd CreateTempFile(const std::string& name, size_t size);
|
||||||
|
|
||||||
|
// Helper to ensure that device mapper devices are released.
|
||||||
|
class TempDevice {
|
||||||
|
public:
|
||||||
|
TempDevice(const std::string& name, const DmTable& table)
|
||||||
|
: dm_(DeviceMapper::Instance()), name_(name), valid_(false) {
|
||||||
|
valid_ = dm_.CreateDevice(name, table, &path_, std::chrono::seconds(5));
|
||||||
|
}
|
||||||
|
TempDevice(TempDevice&& other) noexcept
|
||||||
|
: dm_(other.dm_), name_(other.name_), path_(other.path_), valid_(other.valid_) {
|
||||||
|
other.valid_ = false;
|
||||||
|
}
|
||||||
|
~TempDevice() {
|
||||||
|
if (valid_) {
|
||||||
|
dm_.DeleteDevice(name_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool Destroy() {
|
||||||
|
if (!valid_) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
valid_ = false;
|
||||||
|
return dm_.DeleteDevice(name_);
|
||||||
|
}
|
||||||
|
std::string path() const { return path_; }
|
||||||
|
const std::string& name() const { return name_; }
|
||||||
|
bool valid() const { return valid_; }
|
||||||
|
|
||||||
|
TempDevice(const TempDevice&) = delete;
|
||||||
|
TempDevice& operator=(const TempDevice&) = delete;
|
||||||
|
|
||||||
|
TempDevice& operator=(TempDevice&& other) noexcept {
|
||||||
|
name_ = other.name_;
|
||||||
|
valid_ = other.valid_;
|
||||||
|
other.valid_ = false;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
DeviceMapper& dm_;
|
||||||
|
std::string name_;
|
||||||
|
std::string path_;
|
||||||
|
bool valid_;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace dm
|
} // namespace dm
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue