Loading fs_mgr/libsnapshot/snapuserd/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -238,7 +238,10 @@ cc_test { "liburing", "libz", ], include_dirs: ["bionic/libc/kernel"], include_dirs: [ "bionic/libc/kernel", ".", ], header_libs: [ "libstorage_literals_headers", "libfiemap_headers", Loading fs_mgr/libsnapshot/snapuserd/testing/temp_device.h 0 → 100644 +72 −0 Original line number Diff line number Diff line // Copyright (C) 2023 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #pragma once #include <chrono> #include <string> #include <libdm/dm.h> namespace android { namespace snapshot { using android::dm::DeviceMapper; using android::dm::DmTable; 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_.DeleteDeviceIfExists(name_); } } bool Destroy() { if (!valid_) { return true; } valid_ = false; return dm_.DeleteDeviceIfExists(name_); } const 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 snapshot } // namespace android fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_test.cpp +1 −43 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ #include "handler_manager.h" #include "snapuserd_core.h" #include "testing/temp_device.h" DEFINE_string(force_config, "", "Force testing mode with iouring disabled"); Loading @@ -54,49 +55,6 @@ using namespace std::chrono_literals; using namespace android::dm; using namespace std; 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_.DeleteDeviceIfExists(name_); } } bool Destroy() { if (!valid_) { return true; } valid_ = false; return dm_.DeleteDeviceIfExists(name_); } const 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_; }; class SnapuserdTest : public ::testing::Test { public: bool SetupDefault(); Loading Loading
fs_mgr/libsnapshot/snapuserd/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -238,7 +238,10 @@ cc_test { "liburing", "libz", ], include_dirs: ["bionic/libc/kernel"], include_dirs: [ "bionic/libc/kernel", ".", ], header_libs: [ "libstorage_literals_headers", "libfiemap_headers", Loading
fs_mgr/libsnapshot/snapuserd/testing/temp_device.h 0 → 100644 +72 −0 Original line number Diff line number Diff line // Copyright (C) 2023 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #pragma once #include <chrono> #include <string> #include <libdm/dm.h> namespace android { namespace snapshot { using android::dm::DeviceMapper; using android::dm::DmTable; 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_.DeleteDeviceIfExists(name_); } } bool Destroy() { if (!valid_) { return true; } valid_ = false; return dm_.DeleteDeviceIfExists(name_); } const 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 snapshot } // namespace android
fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_test.cpp +1 −43 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ #include "handler_manager.h" #include "snapuserd_core.h" #include "testing/temp_device.h" DEFINE_string(force_config, "", "Force testing mode with iouring disabled"); Loading @@ -54,49 +55,6 @@ using namespace std::chrono_literals; using namespace android::dm; using namespace std; 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_.DeleteDeviceIfExists(name_); } } bool Destroy() { if (!valid_) { return true; } valid_ = false; return dm_.DeleteDeviceIfExists(name_); } const 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_; }; class SnapuserdTest : public ::testing::Test { public: bool SetupDefault(); Loading