xref: /aosp_15_r20/system/core/fs_mgr/libsnapshot/snapuserd/testing/dm_user_harness.h (revision 00c7fec1bb09f3284aad6a6f96d2f63dfc3650ad)
1 // Copyright (C) 2023 The Android Open Source Project
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //      http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 #include <android-base/unique_fd.h>
18 
19 #include "harness.h"
20 #include "temp_device.h"
21 
22 namespace android {
23 namespace snapshot {
24 
25 using android::base::unique_fd;
26 
27 class DmUserBlockServerFactory;
28 
29 class DmUserDevice final : public IUserDevice {
30   public:
31     explicit DmUserDevice(std::unique_ptr<Tempdevice>&& dev);
32     const std::string& GetPath() override;
33     bool Destroy() override;
34 
35   private:
36     std::unique_ptr<Tempdevice> dev_;
37 };
38 
39 class DmUserTestHarness final : public ITestHarness {
40   public:
41     DmUserTestHarness();
42 
43     std::unique_ptr<IUserDevice> CreateUserDevice(const std::string& dev_name,
44                                                   const std::string& misc_name,
45                                                   uint64_t num_sectors) override;
46     IBlockServerFactory* GetBlockServerFactory() override;
HasUserDevice()47     bool HasUserDevice() override { return true; }
48 
49   private:
50     std::unique_ptr<DmUserBlockServerFactory> block_server_factory_;
51 };
52 
53 }  // namespace snapshot
54 }  // namespace android
55