Index: sync/test/fake_server/fake_server_verifier.cc |
diff --git a/sync/test/fake_server/fake_server_verifier.cc b/sync/test/fake_server/fake_server_verifier.cc |
deleted file mode 100644 |
index 20b71926cbc9db0c58c03418bdea9f4911427b03..0000000000000000000000000000000000000000 |
--- a/sync/test/fake_server/fake_server_verifier.cc |
+++ /dev/null |
@@ -1,189 +0,0 @@ |
-// Copyright 2014 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/test/fake_server/fake_server_verifier.h" |
- |
-#include <stddef.h> |
- |
-#include <map> |
-#include <memory> |
-#include <set> |
-#include <vector> |
- |
-#include "base/json/json_writer.h" |
-#include "base/values.h" |
-#include "sync/internal_api/public/base/model_type.h" |
-#include "sync/test/fake_server/fake_server.h" |
-#include "sync/test/fake_server/sessions_hierarchy.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using base::JSONWriter; |
-using std::string; |
-using testing::AssertionFailure; |
-using testing::AssertionResult; |
-using testing::AssertionSuccess; |
- |
-namespace fake_server { |
- |
-namespace { |
- |
-AssertionResult DictionaryCreationAssertionFailure() { |
- return AssertionFailure() << "FakeServer failed to create an entities " |
- << "dictionary."; |
-} |
- |
-AssertionResult VerificationCountAssertionFailure(size_t actual_count, |
- size_t expected_count) { |
- return AssertionFailure() << "Actual count: " << actual_count << "; " |
- << "Expected count: " << expected_count; |
-} |
- |
-AssertionResult UnknownTypeAssertionFailure(const string& model_type) { |
- return AssertionFailure() << "Verification not attempted. Unknown ModelType: " |
- << model_type; |
-} |
- |
-AssertionResult VerifySessionsHierarchyEquality( |
- const SessionsHierarchy& expected, |
- const SessionsHierarchy& actual) { |
- if (expected.Equals(actual)) |
- return AssertionSuccess() << "Sessions hierarchies are equal."; |
- |
- return AssertionFailure() << "Sessions hierarchies are not equal. " |
- << "FakeServer contents: " << actual.ToString() |
- << "; Expected contents: " << expected.ToString(); |
-} |
- |
-// Caller maintains ownership of |entities|. |
-string ConvertFakeServerContentsToString( |
- const base::DictionaryValue& entities) { |
- string entities_str; |
- if (!JSONWriter::WriteWithOptions(entities, JSONWriter::OPTIONS_PRETTY_PRINT, |
- &entities_str)) { |
- entities_str = "Could not convert FakeServer contents to string."; |
- } |
- return "FakeServer contents:\n" + entities_str; |
-} |
- |
-} // namespace |
- |
-FakeServerVerifier::FakeServerVerifier(FakeServer* fake_server) |
- : fake_server_(fake_server) { } |
- |
-FakeServerVerifier::~FakeServerVerifier() {} |
- |
-AssertionResult FakeServerVerifier::VerifyEntityCountByType( |
- size_t expected_count, |
- syncer::ModelType model_type) const { |
- std::unique_ptr<base::DictionaryValue> entities = |
- fake_server_->GetEntitiesAsDictionaryValue(); |
- if (!entities.get()) { |
- return DictionaryCreationAssertionFailure(); |
- } |
- |
- string model_type_string = ModelTypeToString(model_type); |
- base::ListValue* entity_list = NULL; |
- if (!entities->GetList(model_type_string, &entity_list)) { |
- return UnknownTypeAssertionFailure(model_type_string); |
- } else if (expected_count != entity_list->GetSize()) { |
- return VerificationCountAssertionFailure(entity_list->GetSize(), |
- expected_count) |
- << "\n\n" |
- << ConvertFakeServerContentsToString(*entities); |
- } |
- |
- return AssertionSuccess(); |
-} |
- |
-AssertionResult FakeServerVerifier::VerifyEntityCountByTypeAndName( |
- size_t expected_count, |
- syncer::ModelType model_type, |
- const string& name) const { |
- std::unique_ptr<base::DictionaryValue> entities = |
- fake_server_->GetEntitiesAsDictionaryValue(); |
- if (!entities.get()) { |
- return DictionaryCreationAssertionFailure(); |
- } |
- |
- string model_type_string = ModelTypeToString(model_type); |
- base::ListValue* entity_list = NULL; |
- size_t actual_count = 0; |
- if (entities->GetList(model_type_string, &entity_list)) { |
- base::StringValue name_value(name); |
- for (const auto& entity : *entity_list) { |
- if (name_value.Equals(entity.get())) |
- actual_count++; |
- } |
- } |
- |
- if (!entity_list) { |
- return UnknownTypeAssertionFailure(model_type_string); |
- } else if (actual_count != expected_count) { |
- return VerificationCountAssertionFailure(actual_count, expected_count) |
- << "; Name: " |
- << name |
- << "\n\n" |
- << ConvertFakeServerContentsToString(*entities); |
- } |
- |
- return AssertionSuccess(); |
-} |
- |
-AssertionResult FakeServerVerifier::VerifySessions( |
- const SessionsHierarchy& expected_sessions) { |
- std::vector<sync_pb::SyncEntity> sessions = |
- fake_server_->GetSyncEntitiesByModelType(syncer::SESSIONS); |
- // Look for the sessions entity containing a SessionHeader and cache all tab |
- // IDs/URLs. These will be used later to construct a SessionsHierarchy. |
- sync_pb::SessionHeader session_header; |
- std::map<int, int> tab_ids_to_window_ids; |
- std::map<int, std::string> tab_ids_to_urls; |
- std::string session_tag; |
- for (std::vector<sync_pb::SyncEntity>::const_iterator it = sessions.begin(); |
- it != sessions.end(); ++it) { |
- sync_pb::SyncEntity entity = *it; |
- sync_pb::SessionSpecifics session_specifics = entity.specifics().session(); |
- |
- // Ensure that all session tags match the first entity. Only one session is |
- // supported for verification at this time. |
- if (it == sessions.begin()) |
- session_tag = session_specifics.session_tag(); |
- else if (session_specifics.session_tag() != session_tag) |
- return AssertionFailure() << "Multiple session tags found."; |
- |
- if (session_specifics.has_header()) { |
- session_header = session_specifics.header(); |
- } else if (session_specifics.has_tab()) { |
- sync_pb::SessionTab tab = session_specifics.tab(); |
- tab_ids_to_window_ids[tab.tab_id()] = tab.window_id(); |
- tab_ids_to_urls[tab.tab_id()] = |
- tab.navigation(tab.current_navigation_index()).virtual_url(); |
- } |
- } |
- |
- // Create a SessionsHierarchy from the cached SyncEntity data. This loop over |
- // the SessionHeader also ensures its data corresponds to the data stored in |
- // each SessionTab. |
- SessionsHierarchy actual_sessions; |
- ::google::protobuf::RepeatedPtrField<sync_pb::SessionWindow>::const_iterator |
- window_it; |
- for (window_it = session_header.window().begin(); |
- window_it != session_header.window().end(); ++window_it) { |
- sync_pb::SessionWindow window = *window_it; |
- std::multiset<std::string> tab_urls; |
- ::google::protobuf::RepeatedField<int>::const_iterator tab_it; |
- for (tab_it = window.tab().begin(); tab_it != window.tab().end(); |
- ++tab_it) { |
- int tab_id = *tab_it; |
- if (tab_ids_to_window_ids.find(tab_id) == tab_ids_to_window_ids.end()) { |
- return AssertionFailure() << "Malformed data: Tab entity not found."; |
- } |
- tab_urls.insert(tab_ids_to_urls[tab_id]); |
- } |
- actual_sessions.AddWindow(tab_urls); |
- } |
- return VerifySessionsHierarchyEquality(expected_sessions, actual_sessions); |
-} |
- |
-} // namespace fake_server |