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:
@@ -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)));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user