summaryrefslogtreecommitdiffstats
path: root/tests/component/sideload_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/component/sideload_test.cpp')
-rw-r--r--tests/component/sideload_test.cpp108
1 files changed, 0 insertions, 108 deletions
diff --git a/tests/component/sideload_test.cpp b/tests/component/sideload_test.cpp
deleted file mode 100644
index 6add99f41..000000000
--- a/tests/component/sideload_test.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-#include <unistd.h>
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include <android-base/file.h>
-#include <android-base/strings.h>
-#include <gtest/gtest.h>
-
-#include "fuse_provider.h"
-#include "fuse_sideload.h"
-
-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<FuseTestDataProvider>(4096, 4095);
- ASSERT_EQ(-1, run_fuse_sideload(std::move(provider_small_block)));
-
- 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<FuseTestDataProvider>(((1 << 18) + 1) * 4096, 4096);
- ASSERT_EQ(-1, run_fuse_sideload(std::move(provider_too_many_blocks)));
-}
-
-TEST(SideloadTest, run_fuse_sideload) {
- const std::vector<std::string> blocks = {
- std::string(2048, 'a') + std::string(2048, 'b'),
- std::string(2048, 'c') + std::string(2048, 'd'),
- std::string(2048, 'e') + std::string(2048, 'f'),
- std::string(2048, 'g') + std::string(2048, 'h'),
- };
- const std::string content = android::base::Join(blocks, "");
- ASSERT_EQ(16384U, content.size());
-
- TemporaryFile temp_file;
- ASSERT_TRUE(android::base::WriteStringToFile(content, temp_file.path));
-
- auto provider = std::make_unique<FuseFileDataProvider>(temp_file.path, 4096);
- ASSERT_TRUE(provider->Valid());
- TemporaryDir mount_point;
- pid_t pid = fork();
- if (pid == 0) {
- ASSERT_EQ(0, run_fuse_sideload(std::move(provider), mount_point.path));
- _exit(EXIT_SUCCESS);
- }
-
- std::string package = std::string(mount_point.path) + "/" + FUSE_SIDELOAD_HOST_FILENAME;
- int status;
- static constexpr int kSideloadInstallTimeout = 10;
- for (int i = 0; i < kSideloadInstallTimeout; ++i) {
- ASSERT_NE(-1, waitpid(pid, &status, WNOHANG));
-
- struct stat sb;
- if (stat(package.c_str(), &sb) == 0) {
- break;
- }
-
- if (errno == ENOENT && i < kSideloadInstallTimeout - 1) {
- sleep(1);
- continue;
- }
- FAIL() << "Timed out waiting for the fuse-provided package.";
- }
-
- std::string content_via_fuse;
- ASSERT_TRUE(android::base::ReadFileToString(package, &content_via_fuse));
- ASSERT_EQ(content, content_via_fuse);
-
- std::string exit_flag = std::string(mount_point.path) + "/" + FUSE_SIDELOAD_HOST_EXIT_FLAG;
- struct stat sb;
- ASSERT_EQ(0, stat(exit_flag.c_str(), &sb));
-
- waitpid(pid, &status, 0);
- ASSERT_EQ(0, WEXITSTATUS(status));
- ASSERT_EQ(EXIT_SUCCESS, WEXITSTATUS(status));
-}