Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(938)

Unified Diff: sync/internal_api/model_type_store_backend_unittest.cc

Issue 2130453004: [Sync] Move //sync to //components/sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/internal_api/model_type_store_backend.cc ('k') | sync/internal_api/model_type_store_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/model_type_store_backend_unittest.cc
diff --git a/sync/internal_api/model_type_store_backend_unittest.cc b/sync/internal_api/model_type_store_backend_unittest.cc
deleted file mode 100644
index 87d540680048f062a35380adb74f2e9927893495..0000000000000000000000000000000000000000
--- a/sync/internal_api/model_type_store_backend_unittest.cc
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "sync/internal_api/public/model_type_store_backend.h"
-
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/leveldatabase/src/include/leveldb/env.h"
-#include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
-
-namespace syncer_v2 {
-
-class ModelTypeStoreBackendTest : public testing::Test {
- public:
- scoped_refptr<ModelTypeStoreBackend> GetOrCreateBackend() {
- std::string path = "/test_db";
- return GetOrCreateBackendWithPath(path);
- }
-
- scoped_refptr<ModelTypeStoreBackend> GetOrCreateBackendWithPath(
- std::string custom_path) {
- std::unique_ptr<leveldb::Env> in_memory_env =
- ModelTypeStoreBackend::CreateInMemoryEnv();
- std::string path;
- in_memory_env->GetTestDirectory(&path);
- path += custom_path;
-
- ModelTypeStore::Result result;
- // In-memory store backend works on the same thread as test.
- scoped_refptr<ModelTypeStoreBackend> backend =
- ModelTypeStoreBackend::GetOrCreateBackend(
- path, std::move(in_memory_env), &result);
- EXPECT_TRUE(backend.get());
- EXPECT_EQ(result, ModelTypeStore::Result::SUCCESS);
- return backend;
- }
-
- bool BackendExistsForPath(std::string path) {
- if (ModelTypeStoreBackend::backend_map_.Get().end() ==
- ModelTypeStoreBackend::backend_map_.Get().find(path)) {
- return false;
- }
- return true;
- }
-
- std::string GetBackendPath(scoped_refptr<ModelTypeStoreBackend> backend) {
- return backend->path_;
- }
-};
-
-// Test that after record is written to backend it can be read back even after
-// backend is destroyed and recreated in the same environment.
-TEST_F(ModelTypeStoreBackendTest, WriteThenRead) {
- scoped_refptr<ModelTypeStoreBackend> backend = GetOrCreateBackend();
-
- // Write record.
- std::unique_ptr<leveldb::WriteBatch> write_batch(new leveldb::WriteBatch());
- write_batch->Put("prefix:id1", "data1");
- ModelTypeStore::Result result =
- backend->WriteModifications(std::move(write_batch));
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
-
- // Read all records with prefix.
- ModelTypeStore::RecordList record_list;
- result = backend->ReadAllRecordsWithPrefix("prefix:", &record_list);
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
- ASSERT_EQ(1ul, record_list.size());
- ASSERT_EQ("id1", record_list[0].id);
- ASSERT_EQ("data1", record_list[0].value);
- record_list.clear();
-
- // Recreate backend and read all records with prefix.
- backend = GetOrCreateBackend();
- result = backend->ReadAllRecordsWithPrefix("prefix:", &record_list);
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
- ASSERT_EQ(1ul, record_list.size());
- ASSERT_EQ("id1", record_list[0].id);
- ASSERT_EQ("data1", record_list[0].value);
-}
-
-// Test that ReadAllRecordsWithPrefix correclty filters records by prefix.
-TEST_F(ModelTypeStoreBackendTest, ReadAllRecordsWithPrefix) {
- scoped_refptr<ModelTypeStoreBackend> backend = GetOrCreateBackend();
-
- std::unique_ptr<leveldb::WriteBatch> write_batch(new leveldb::WriteBatch());
- write_batch->Put("prefix1:id1", "data1");
- write_batch->Put("prefix2:id2", "data2");
- ModelTypeStore::Result result =
- backend->WriteModifications(std::move(write_batch));
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
-
- ModelTypeStore::RecordList record_list;
- result = backend->ReadAllRecordsWithPrefix("prefix1:", &record_list);
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
- ASSERT_EQ(1UL, record_list.size());
- ASSERT_EQ("id1", record_list[0].id);
- ASSERT_EQ("data1", record_list[0].value);
-}
-
-// Test that deleted records are correctly marked as milling in results of
-// ReadRecordsWithPrefix.
-TEST_F(ModelTypeStoreBackendTest, ReadDeletedRecord) {
- scoped_refptr<ModelTypeStoreBackend> backend = GetOrCreateBackend();
-
- // Create records, ensure they are returned by ReadRecordsWithPrefix.
- std::unique_ptr<leveldb::WriteBatch> write_batch(new leveldb::WriteBatch());
- write_batch->Put("prefix:id1", "data1");
- write_batch->Put("prefix:id2", "data2");
- ModelTypeStore::Result result =
- backend->WriteModifications(std::move(write_batch));
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
-
- ModelTypeStore::IdList id_list;
- ModelTypeStore::IdList missing_id_list;
- ModelTypeStore::RecordList record_list;
- id_list.push_back("id1");
- id_list.push_back("id2");
- result = backend->ReadRecordsWithPrefix("prefix:", id_list, &record_list,
- &missing_id_list);
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
- ASSERT_EQ(2UL, record_list.size());
- ASSERT_TRUE(missing_id_list.empty());
-
- // Delete one record.
- write_batch.reset(new leveldb::WriteBatch());
- write_batch->Delete("prefix:id2");
- result = backend->WriteModifications(std::move(write_batch));
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
-
- // Ensure deleted record id is returned in missing_id_list.
- record_list.clear();
- missing_id_list.clear();
- result = backend->ReadRecordsWithPrefix("prefix:", id_list, &record_list,
- &missing_id_list);
- ASSERT_EQ(ModelTypeStore::Result::SUCCESS, result);
- ASSERT_EQ(1UL, record_list.size());
- ASSERT_EQ("id1", record_list[0].id);
- ASSERT_EQ(1UL, missing_id_list.size());
- ASSERT_EQ("id2", missing_id_list[0]);
-}
-
-// Test that only one backend got create when we ask two backend with same path,
-// and after de-reference the backend, the backend will be deleted.
-TEST_F(ModelTypeStoreBackendTest, TwoSameBackendTest) {
- // Create two backend with same path, check if they are reference to same
- // address.
- scoped_refptr<ModelTypeStoreBackend> backend = GetOrCreateBackend();
- scoped_refptr<ModelTypeStoreBackend> backend_second = GetOrCreateBackend();
- std::string path = GetBackendPath(backend);
- ASSERT_EQ(backend.get(), backend_second.get());
-
- // Delete one reference, check the real backend still here.
- backend = nullptr;
- ASSERT_FALSE(backend.get());
- ASSERT_TRUE(backend_second.get());
- ASSERT_TRUE(backend_second->HasOneRef());
-
- // Delete another reference, check the real backend is deleted.
- backend_second = nullptr;
- ASSERT_FALSE(backend_second.get());
- ASSERT_FALSE(BackendExistsForPath(path));
-}
-
-// Test that two backend got create when we ask two backend with different path,
-// and after de-reference two backend, the both backend will be deleted.
-TEST_F(ModelTypeStoreBackendTest, TwoDifferentBackendTest) {
- // Create two backend with different path, check if they are reference to
- // different address.
- scoped_refptr<ModelTypeStoreBackend> backend = GetOrCreateBackend();
- scoped_refptr<ModelTypeStoreBackend> backend_second =
- GetOrCreateBackendWithPath("/test_db2");
- std::string path = GetBackendPath(backend);
- ASSERT_NE(backend.get(), backend_second.get());
- ASSERT_TRUE(backend->HasOneRef());
- ASSERT_TRUE(backend_second->HasOneRef());
-
- // delete one backend, check only one got deleted.
- backend = nullptr;
- ASSERT_FALSE(backend.get());
- ASSERT_TRUE(backend_second.get());
- ASSERT_TRUE(backend_second->HasOneRef());
- ASSERT_FALSE(BackendExistsForPath(path));
-
- // delete another backend.
- backend_second = nullptr;
- ASSERT_FALSE(backend_second.get());
- ASSERT_FALSE(BackendExistsForPath("/test_db2"));
-}
-
-} // namespace syncer_v2
« no previous file with comments | « sync/internal_api/model_type_store_backend.cc ('k') | sync/internal_api/model_type_store_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698