Remove the FD parameter from FuseDataProvider ctor.

This leaves the FD implementation details to subclasses. In particular,
it allows minadbd to do additional works with the FD after sideloading.

Bug: 128415917
Test: atest recovery_component_test
Test: atest minadbd_test
Test: Sideload package on taimen.
Change-Id: I106bbaad05201227bbc5fe28890bbbb06fdcb67e
Merged-In: I106bbaad05201227bbc5fe28890bbbb06fdcb67e
(cherry picked from commit 2be9737cf4)
This commit is contained in:
Tao Bao
2019-04-15 12:45:50 -07:00
parent 378bfbfc5c
commit 178cdd4f5c
4 changed files with 34 additions and 29 deletions
+15 -7
View File
@@ -22,7 +22,6 @@
#include <android-base/file.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
#include <gtest/gtest.h>
#include "fuse_provider.h"
@@ -32,17 +31,26 @@ TEST(SideloadTest, fuse_device) {
ASSERT_EQ(0, access("/dev/fuse", R_OK | W_OK));
}
class FuseTestDataProvider : public FuseDataProvider {
public:
FuseTestDataProvider(uint64_t file_size, uint32_t block_size)
: FuseDataProvider(file_size, block_size) {}
private:
bool ReadBlockAlignedData(uint8_t*, uint32_t, uint32_t) const override {
return true;
}
};
TEST(SideloadTest, run_fuse_sideload_wrong_parameters) {
auto provider_small_block =
std::make_unique<FuseFileDataProvider>(android::base::unique_fd(), 4096, 4095);
auto provider_small_block = std::make_unique<FuseTestDataProvider>(4096, 4095);
ASSERT_EQ(-1, run_fuse_sideload(std::move(provider_small_block)));
auto provider_large_block =
std::make_unique<FuseFileDataProvider>(android::base::unique_fd(), 4096, (1 << 22) + 1);
auto provider_large_block = std::make_unique<FuseTestDataProvider>(4096, (1 << 22) + 1);
ASSERT_EQ(-1, run_fuse_sideload(std::move(provider_large_block)));
auto provider_too_many_blocks = std::make_unique<FuseFileDataProvider>(
android::base::unique_fd(), ((1 << 18) + 1) * 4096, 4096);
auto provider_too_many_blocks =
std::make_unique<FuseTestDataProvider>(((1 << 18) + 1) * 4096, 4096);
ASSERT_EQ(-1, run_fuse_sideload(std::move(provider_too_many_blocks)));
}