| Index: chrome/browser/metrics/metrics_log_serializer_unittest.cc
|
| diff --git a/chrome/browser/metrics/metrics_log_serializer_unittest.cc b/chrome/browser/metrics/metrics_log_serializer_unittest.cc
|
| index 59c257b8c16e89f0884a631f65e15ca85a305027..f023a7cb2ef0b119f2f49a6dbbe8197d75a6bc44 100644
|
| --- a/chrome/browser/metrics/metrics_log_serializer_unittest.cc
|
| +++ b/chrome/browser/metrics/metrics_log_serializer_unittest.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2012 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.
|
|
|
| @@ -8,42 +8,46 @@
|
| #include "chrome/browser/metrics/metrics_log_serializer.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +typedef MetricsLogManager::SerializedLog SerializedLog;
|
| +
|
| namespace {
|
| - class MetricsLogSerializerTest : public ::testing::Test {
|
| - };
|
| -}
|
|
|
| -static const size_t kMaxLocalListSize = 3;
|
| +const size_t kMaxLocalListSize = 3;
|
| +
|
| +} // namespace
|
| +
|
| +class MetricsLogSerializerTest : public ::testing::Test {
|
| +};
|
|
|
| // Store and retrieve empty list.
|
| TEST(MetricsLogSerializerTest, EmptyLogList) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
| + std::vector<SerializedLog> local_list;
|
|
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, true, kMaxLocalListSize,
|
| &list);
|
| EXPECT_EQ(0U, list.GetSize());
|
|
|
| local_list.clear(); // ReadLogsFromPrefList() expects empty |local_list|.
|
| - EXPECT_EQ(MetricsLogSerializer::LIST_EMPTY,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::LIST_EMPTY,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| EXPECT_EQ(0U, local_list.size());
|
| }
|
|
|
| // Store and retrieve a single log value.
|
| TEST(MetricsLogSerializerTest, SingleElementLogList) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
|
|
| - local_list.push_back("Hello world!");
|
| - EXPECT_EQ(1U, local_list.size());
|
| + std::vector<SerializedLog> local_list(1);
|
| + local_list[0].xml = "Hello world!";
|
|
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, true, kMaxLocalListSize,
|
| &list);
|
|
|
| // |list| will now contain the following:
|
| // [1, Base64Encode("Hello world!"), MD5("Hello world!")].
|
| - EXPECT_EQ(3U, list.GetSize());
|
| + ASSERT_EQ(3U, list.GetSize());
|
|
|
| // Examine each element.
|
| ListValue::const_iterator it = list.begin();
|
| @@ -66,55 +70,56 @@ TEST(MetricsLogSerializerTest, SingleElementLogList) {
|
| EXPECT_TRUE(it == list.end()); // Reached end of list.
|
|
|
| local_list.clear();
|
| - EXPECT_EQ(MetricsLogSerializer::RECALL_SUCCESS,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::RECALL_SUCCESS,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| EXPECT_EQ(1U, local_list.size());
|
| }
|
|
|
| // Store elements greater than the limit.
|
| TEST(MetricsLogSerializerTest, OverLimitLogList) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
|
|
| - local_list.push_back("one");
|
| - local_list.push_back("two");
|
| - local_list.push_back("three");
|
| - local_list.push_back("four");
|
| - EXPECT_EQ(4U, local_list.size());
|
| + std::vector<SerializedLog> local_list(4);
|
| + local_list[0].proto = "one";
|
| + local_list[1].proto = "two";
|
| + local_list[2].proto = "three";
|
| + local_list[3].proto = "four";
|
|
|
| std::string expected_first;
|
| - base::Base64Encode(local_list[local_list.size() - kMaxLocalListSize],
|
| + base::Base64Encode(local_list[local_list.size() - kMaxLocalListSize].proto,
|
| &expected_first);
|
| std::string expected_last;
|
| - base::Base64Encode(local_list[local_list.size() - 1],
|
| + base::Base64Encode(local_list[local_list.size() - 1].proto,
|
| &expected_last);
|
|
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| - &list);
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, false,
|
| + kMaxLocalListSize, &list);
|
| EXPECT_EQ(kMaxLocalListSize + 2, list.GetSize());
|
|
|
| std::string actual_first;
|
| EXPECT_TRUE((*(list.begin() + 1))->GetAsString(&actual_first));
|
| - EXPECT_TRUE(expected_first == actual_first);
|
| + EXPECT_EQ(expected_first, actual_first);
|
|
|
| std::string actual_last;
|
| EXPECT_TRUE((*(list.end() - 2))->GetAsString(&actual_last));
|
| - EXPECT_TRUE(expected_last == actual_last);
|
| + EXPECT_EQ(expected_last, actual_last);
|
|
|
| local_list.clear();
|
| - EXPECT_EQ(MetricsLogSerializer::RECALL_SUCCESS,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::RECALL_SUCCESS,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| EXPECT_EQ(kMaxLocalListSize, local_list.size());
|
| }
|
|
|
| // Induce LIST_SIZE_TOO_SMALL corruption
|
| TEST(MetricsLogSerializerTest, SmallRecoveredListSize) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
|
|
| - local_list.push_back("Hello world!");
|
| - EXPECT_EQ(1U, local_list.size());
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| + std::vector<SerializedLog> local_list(1);
|
| + local_list[0].xml = "Hello world!";
|
| +
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, true, kMaxLocalListSize,
|
| &list);
|
| EXPECT_EQ(3U, list.GetSize());
|
|
|
| @@ -123,19 +128,20 @@ TEST(MetricsLogSerializerTest, SmallRecoveredListSize) {
|
| EXPECT_EQ(2U, list.GetSize());
|
|
|
| local_list.clear();
|
| - EXPECT_EQ(MetricsLogSerializer::LIST_SIZE_TOO_SMALL,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::LIST_SIZE_TOO_SMALL,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| }
|
|
|
| // Remove size from the stored list.
|
| TEST(MetricsLogSerializerTest, RemoveSizeFromLogList) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
|
|
| - local_list.push_back("one");
|
| - local_list.push_back("two");
|
| + std::vector<SerializedLog> local_list(2);
|
| + local_list[0].xml = "one";
|
| + local_list[1].xml = "two";
|
| EXPECT_EQ(2U, local_list.size());
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, true, kMaxLocalListSize,
|
| &list);
|
| EXPECT_EQ(4U, list.GetSize());
|
|
|
| @@ -143,18 +149,19 @@ TEST(MetricsLogSerializerTest, RemoveSizeFromLogList) {
|
| EXPECT_EQ(3U, list.GetSize());
|
|
|
| local_list.clear();
|
| - EXPECT_EQ(MetricsLogSerializer::LIST_SIZE_MISSING,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::LIST_SIZE_MISSING,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| }
|
|
|
| // Corrupt size of stored list.
|
| TEST(MetricsLogSerializerTest, CorruptSizeOfLogList) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
|
|
| - local_list.push_back("Hello world!");
|
| - EXPECT_EQ(1U, local_list.size());
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| + std::vector<SerializedLog> local_list(1);
|
| + local_list[0].xml = "Hello world!";
|
| +
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, true, kMaxLocalListSize,
|
| &list);
|
| EXPECT_EQ(3U, list.GetSize());
|
|
|
| @@ -163,19 +170,19 @@ TEST(MetricsLogSerializerTest, CorruptSizeOfLogList) {
|
| EXPECT_EQ(3U, list.GetSize());
|
|
|
| local_list.clear();
|
| - EXPECT_EQ(MetricsLogSerializer::LIST_SIZE_CORRUPTION,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::LIST_SIZE_CORRUPTION,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| }
|
|
|
| // Corrupt checksum of stored list.
|
| TEST(MetricsLogSerializerTest, CorruptChecksumOfLogList) {
|
| ListValue list;
|
| - std::vector<std::string> local_list;
|
|
|
| - local_list.clear();
|
| - local_list.push_back("Hello world!");
|
| - EXPECT_EQ(1U, local_list.size());
|
| - MetricsLogSerializer::WriteLogsToPrefList(local_list, kMaxLocalListSize,
|
| + std::vector<SerializedLog> local_list(1);
|
| + local_list[0].xml = "Hello world!";
|
| +
|
| + MetricsLogSerializer::WriteLogsToPrefList(local_list, true, kMaxLocalListSize,
|
| &list);
|
| EXPECT_EQ(3U, list.GetSize());
|
|
|
| @@ -187,6 +194,7 @@ TEST(MetricsLogSerializerTest, CorruptChecksumOfLogList) {
|
| EXPECT_EQ(3U, list.GetSize());
|
|
|
| local_list.clear();
|
| - EXPECT_EQ(MetricsLogSerializer::CHECKSUM_CORRUPTION,
|
| - MetricsLogSerializer::ReadLogsFromPrefList(list, &local_list));
|
| + EXPECT_EQ(
|
| + MetricsLogSerializer::CHECKSUM_CORRUPTION,
|
| + MetricsLogSerializer::ReadLogsFromPrefList(list, true, &local_list));
|
| }
|
|
|