| // Copyright 2017 The Fuchsia Authors |
| // |
| // 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 "analyzer/store/report_store.h" |
| |
| #include <string> |
| #include <utility> |
| |
| #include "analyzer/store/memory_store_test_helper.h" |
| #include "analyzer/store/report_store_abstract_test.h" |
| #include "third_party/googletest/googletest/include/gtest/gtest.h" |
| |
| namespace cobalt { |
| namespace analyzer { |
| namespace store { |
| |
| namespace { |
| |
| const uint32_t kCustomerId = 11; |
| const uint32_t kProjectId = 222; |
| const uint32_t kReportConfigId = 3333; |
| |
| ReportId MakeReportId(int64_t creation_time_seconds, uint32_t instance_id) { |
| ReportId report_id; |
| report_id.set_customer_id(kCustomerId); |
| report_id.set_project_id(kProjectId); |
| report_id.set_report_config_id(kReportConfigId); |
| report_id.set_creation_time_seconds(creation_time_seconds); |
| report_id.set_instance_id(instance_id); |
| return report_id; |
| } |
| |
| } // namespace |
| |
| // Tests of the private static functions of ReportStore. These do not involve |
| // a DataStore and so they are included only here in this concrete test and |
| // not in ReportStoreAbstractTest. |
| class ReportStorePrivateTest : public ::testing::Test { |
| protected: |
| static std::string MakeMetadataRowKey(const ReportId& report_id) { |
| return ReportStore::MakeMetadataRowKey(report_id); |
| } |
| |
| static std::string MetadataRangeStartKey(int64_t creation_time_seconds) { |
| return ReportStore::MetadataRangeStartKey( |
| kCustomerId, kProjectId, kReportConfigId, creation_time_seconds); |
| } |
| |
| static std::string ReportStartRowKey(const ReportId& report_id) { |
| return ReportStore::ReportStartRowKey(report_id); |
| } |
| |
| static std::string ReportEndRowKey(const ReportId& report_id) { |
| return ReportStore::ReportEndRowKey(report_id); |
| } |
| |
| static std::string GenerateReportRowKey(const ReportId& report_id) { |
| return ReportStore::GenerateReportRowKey(report_id); |
| } |
| }; |
| |
| TEST_F(ReportStorePrivateTest, MakeMetadataRowKeyTest) { |
| ReportId report_id = MakeReportId(12345, 54321); |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000012345:0000054321:0000", |
| MakeMetadataRowKey(report_id)); |
| |
| report_id.set_sequence_num(0); |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000012345:0000054321:0000", |
| MakeMetadataRowKey(report_id)); |
| |
| report_id.set_sequence_num(1); |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000012345:0000054321:0001", |
| MakeMetadataRowKey(report_id)); |
| |
| report_id.set_sequence_num(2); |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000012345:0000054321:0002", |
| MakeMetadataRowKey(report_id)); |
| } |
| |
| TEST_F(ReportStorePrivateTest, MetadataRangeStartKeyTest) { |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000123456:0000000000:0000", |
| MetadataRangeStartKey(123456)); |
| } |
| |
| TEST_F(ReportStorePrivateTest, ReportStartRowKeyTest) { |
| ReportId report_id = MakeReportId(12345, 54321); |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000012345:0000054321:0000:", |
| ReportStartRowKey(report_id)); |
| } |
| |
| TEST_F(ReportStorePrivateTest, ReportEndRowKeyTest) { |
| ReportId report_id = MakeReportId(12345, 54321); |
| EXPECT_EQ( |
| "0000000011:0000000222:0000003333:00000000000000012345:0000054321:0000:" |
| "9999999999", |
| ReportEndRowKey(report_id)); |
| } |
| |
| TEST_F(ReportStorePrivateTest, GenerateReportRowKeyTest) { |
| ReportId report_id = MakeReportId(12345, 54321); |
| std::string generated_report_row_key = GenerateReportRowKey(report_id); |
| EXPECT_TRUE(ReportStartRowKey(report_id) < generated_report_row_key); |
| EXPECT_TRUE(ReportEndRowKey(report_id) > generated_report_row_key); |
| } |
| |
| // Now we instantiate ReportStoreAbstractTest using the MemoryStore |
| // as the underlying DataStore. |
| |
| INSTANTIATE_TYPED_TEST_CASE_P(ReportStoreTest, ReportStoreAbstractTest, |
| MemoryStoreFactory); |
| |
| } // namespace store |
| } // namespace analyzer |
| } // namespace cobalt |