diff options
Diffstat (limited to 'tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp')
-rw-r--r-- | tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp | 140 |
1 files changed, 37 insertions, 103 deletions
diff --git a/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp b/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp index 77664e40a8..31183fa01b 100644 --- a/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp +++ b/tools/aconfig/aconfig_storage_write_api/tests/storage_write_api_test.cpp @@ -22,11 +22,9 @@ #include "aconfig_storage/aconfig_storage_read_api.hpp" #include "aconfig_storage/aconfig_storage_write_api.hpp" #include <gtest/gtest.h> -#include <protos/aconfig_storage_metadata.pb.h> #include <android-base/file.h> #include <android-base/result.h> -using android::aconfig_storage_metadata::storage_files; using namespace android::base; namespace api = aconfig_storage; @@ -50,95 +48,40 @@ class AconfigStorageTest : public ::testing::Test { return temp_file; } - Result<std::string> write_storage_location_pb_file(std::string const& flag_val, - std::string const& flag_info) { - auto temp_file = std::tmpnam(nullptr); - auto proto = storage_files(); - auto* info = proto.add_files(); - info->set_version(0); - info->set_container("mockup"); - info->set_package_map("some_package.map"); - info->set_flag_map("some_flag.map"); - info->set_flag_val(flag_val); - info->set_flag_info(flag_info); - info->set_timestamp(12345); - - auto content = std::string(); - proto.SerializeToString(&content); - if (!WriteStringToFile(content, temp_file)) { - return Error() << "failed to write storage records pb file"; - } - return temp_file; - } - void SetUp() override { auto const test_dir = android::base::GetExecutableDirectory(); flag_val = *copy_to_rw_temp_file(test_dir + "/flag.val"); flag_info = *copy_to_rw_temp_file(test_dir + "/flag.info"); - storage_record_pb = *write_storage_location_pb_file(flag_val, flag_info); } void TearDown() override { std::remove(flag_val.c_str()); std::remove(flag_info.c_str()); - std::remove(storage_record_pb.c_str()); } std::string flag_val; std::string flag_info; - std::string storage_record_pb; }; -/// Negative test to lock down the error when mapping none exist storage files -TEST_F(AconfigStorageTest, test_none_exist_storage_file_mapping) { - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "vendor", api::StorageFileType::flag_val); - ASSERT_FALSE(mapped_file_result.ok()); - ASSERT_EQ(mapped_file_result.error().message(), - "Unable to find storage files for container vendor"); -} - /// Negative test to lock down the error when mapping a non writeable storage file TEST_F(AconfigStorageTest, test_non_writable_storage_file_mapping) { ASSERT_TRUE(chmod(flag_val.c_str(), S_IRUSR | S_IRGRP | S_IROTH) != -1); - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::flag_val); + auto mapped_file_result = api::map_mutable_storage_file(flag_val); ASSERT_FALSE(mapped_file_result.ok()); auto it = mapped_file_result.error().message().find("cannot map nonwriteable file"); ASSERT_TRUE(it != std::string::npos) << mapped_file_result.error().message(); } -/// Negative test to lock down the error when mapping a file type that cannot be modified -TEST_F(AconfigStorageTest, test_invalid_storage_file_type_mapping) { - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::package_map); - ASSERT_FALSE(mapped_file_result.ok()); - auto it = mapped_file_result.error().message().find( - "Cannot create mutable mapped file for this file type"); - ASSERT_TRUE(it != std::string::npos) << mapped_file_result.error().message(); - - mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::flag_map); - ASSERT_FALSE(mapped_file_result.ok()); - it = mapped_file_result.error().message().find( - "Cannot create mutable mapped file for this file type"); - ASSERT_TRUE(it != std::string::npos) << mapped_file_result.error().message(); -} - /// Test to lock down storage flag value update api TEST_F(AconfigStorageTest, test_boolean_flag_value_update) { - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::flag_val); + auto mapped_file_result = api::map_mutable_storage_file(flag_val); ASSERT_TRUE(mapped_file_result.ok()); - auto mapped_file = *mapped_file_result; + auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result); for (int offset = 0; offset < 8; ++offset) { - auto update_result = api::set_boolean_flag_value(mapped_file, offset, true); + auto update_result = api::set_boolean_flag_value(*mapped_file, offset, true); ASSERT_TRUE(update_result.ok()); - auto ro_mapped_file = api::MappedStorageFile(); - ro_mapped_file.file_ptr = mapped_file.file_ptr; - ro_mapped_file.file_size = mapped_file.file_size; - auto value = api::get_boolean_flag_value(ro_mapped_file, offset); + auto value = api::get_boolean_flag_value(*mapped_file, offset); ASSERT_TRUE(value.ok()); ASSERT_TRUE(*value); } @@ -146,70 +89,61 @@ TEST_F(AconfigStorageTest, test_boolean_flag_value_update) { /// Negative test to lock down the error when querying flag value out of range TEST_F(AconfigStorageTest, test_invalid_boolean_flag_value_update) { - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::flag_val); + auto mapped_file_result = api::map_mutable_storage_file(flag_val); ASSERT_TRUE(mapped_file_result.ok()); - auto mapped_file = *mapped_file_result; - auto update_result = api::set_boolean_flag_value(mapped_file, 8, true); + auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result); + auto update_result = api::set_boolean_flag_value(*mapped_file, 8, true); ASSERT_FALSE(update_result.ok()); ASSERT_EQ(update_result.error().message(), std::string("InvalidStorageFileOffset(Flag value offset goes beyond the end of the file.)")); } -/// Test to lock down storage flag stickiness update api -TEST_F(AconfigStorageTest, test_flag_is_sticky_update) { - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::flag_info); +/// Test to lock down storage flag has server override update api +TEST_F(AconfigStorageTest, test_flag_has_server_override_update) { + auto mapped_file_result = api::map_mutable_storage_file(flag_info); ASSERT_TRUE(mapped_file_result.ok()); - auto mapped_file = *mapped_file_result; + auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result); for (int offset = 0; offset < 8; ++offset) { - auto update_result = api::set_flag_is_sticky( - mapped_file, api::FlagValueType::Boolean, offset, true); - ASSERT_TRUE(update_result.ok()); - auto ro_mapped_file = api::MappedStorageFile(); - ro_mapped_file.file_ptr = mapped_file.file_ptr; - ro_mapped_file.file_size = mapped_file.file_size; - auto attribute = api::get_boolean_flag_attribute(ro_mapped_file, offset); + auto update_result = api::set_flag_has_server_override( + *mapped_file, api::FlagValueType::Boolean, offset, true); + ASSERT_TRUE(update_result.ok()) << update_result.error(); + auto attribute = api::get_flag_attribute( + *mapped_file, api::FlagValueType::Boolean, offset); ASSERT_TRUE(attribute.ok()); - ASSERT_TRUE(*attribute & api::FlagInfoBit::IsSticky); + ASSERT_TRUE(*attribute & api::FlagInfoBit::HasServerOverride); - update_result = api::set_flag_is_sticky( - mapped_file, api::FlagValueType::Boolean, offset, false); + update_result = api::set_flag_has_server_override( + *mapped_file, api::FlagValueType::Boolean, offset, false); ASSERT_TRUE(update_result.ok()); - ro_mapped_file.file_ptr = mapped_file.file_ptr; - ro_mapped_file.file_size = mapped_file.file_size; - attribute = api::get_boolean_flag_attribute(ro_mapped_file, offset); + attribute = api::get_flag_attribute( + *mapped_file, api::FlagValueType::Boolean, offset); ASSERT_TRUE(attribute.ok()); - ASSERT_FALSE(*attribute & api::FlagInfoBit::IsSticky); + ASSERT_FALSE(*attribute & api::FlagInfoBit::HasServerOverride); } } -/// Test to lock down storage flag has override update api -TEST_F(AconfigStorageTest, test_flag_has_override_update) { - auto mapped_file_result = private_api::get_mutable_mapped_file_impl( - storage_record_pb, "mockup", api::StorageFileType::flag_info); +/// Test to lock down storage flag has local override update api +TEST_F(AconfigStorageTest, test_flag_has_local_override_update) { + auto mapped_file_result = api::map_mutable_storage_file(flag_info); ASSERT_TRUE(mapped_file_result.ok()); - auto mapped_file = *mapped_file_result; + auto mapped_file = std::unique_ptr<api::MutableMappedStorageFile>(*mapped_file_result); for (int offset = 0; offset < 8; ++offset) { - auto update_result = api::set_flag_has_override( - mapped_file, api::FlagValueType::Boolean, offset, true); + auto update_result = api::set_flag_has_local_override( + *mapped_file, api::FlagValueType::Boolean, offset, true); ASSERT_TRUE(update_result.ok()); - auto ro_mapped_file = api::MappedStorageFile(); - ro_mapped_file.file_ptr = mapped_file.file_ptr; - ro_mapped_file.file_size = mapped_file.file_size; - auto attribute = api::get_boolean_flag_attribute(ro_mapped_file, offset); + auto attribute = api::get_flag_attribute( + *mapped_file, api::FlagValueType::Boolean, offset); ASSERT_TRUE(attribute.ok()); - ASSERT_TRUE(*attribute & api::FlagInfoBit::HasOverride); + ASSERT_TRUE(*attribute & api::FlagInfoBit::HasLocalOverride); - update_result = api::set_flag_has_override( - mapped_file, api::FlagValueType::Boolean, offset, false); + update_result = api::set_flag_has_local_override( + *mapped_file, api::FlagValueType::Boolean, offset, false); ASSERT_TRUE(update_result.ok()); - ro_mapped_file.file_ptr = mapped_file.file_ptr; - ro_mapped_file.file_size = mapped_file.file_size; - attribute = api::get_boolean_flag_attribute(ro_mapped_file, offset); + attribute = api::get_flag_attribute( + *mapped_file, api::FlagValueType::Boolean, offset); ASSERT_TRUE(attribute.ok()); - ASSERT_FALSE(*attribute & api::FlagInfoBit::HasOverride); + ASSERT_FALSE(*attribute & api::FlagInfoBit::HasLocalOverride); } } |