Index: chrome/browser/metrics/metrics_log_serializer_unittest.cc |
=================================================================== |
--- chrome/browser/metrics/metrics_log_serializer_unittest.cc (revision 229433) |
+++ chrome/browser/metrics/metrics_log_serializer_unittest.cc (working copy) |
@@ -13,15 +13,18 @@ |
const size_t kListLengthLimit = 3; |
const size_t kLogByteLimit = 1000; |
+void SetLogText(const std::string& log_text, |
+ MetricsLogManager::SerializedLog* log) { |
+ std::string log_text_copy = log_text; |
+ log->SwapLogText(&log_text_copy); |
+} |
+ |
} // namespace |
-class MetricsLogSerializerTest : public ::testing::Test { |
-}; |
- |
// Store and retrieve empty list. |
TEST(MetricsLogSerializerTest, EmptyLogList) { |
ListValue list; |
- std::vector<std::string> local_list; |
+ std::vector<MetricsLogManager::SerializedLog> local_list; |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
@@ -38,8 +41,8 @@ |
TEST(MetricsLogSerializerTest, SingleElementLogList) { |
ListValue list; |
- std::vector<std::string> local_list(1); |
- local_list[0] = "Hello world!"; |
+ std::vector<MetricsLogManager::SerializedLog> local_list(1); |
+ SetLogText("Hello world!", &local_list[0]); |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
@@ -81,20 +84,19 @@ |
ListValue list; |
size_t log_count = kListLengthLimit * 5; |
- std::vector<std::string> local_list(log_count); |
- for (size_t i = 0; i < local_list.size(); ++i) { |
- local_list[0] = "x"; |
- } |
+ std::vector<MetricsLogManager::SerializedLog> local_list(log_count); |
+ for (size_t i = 0; i < local_list.size(); ++i) |
+ SetLogText("x", &local_list[i]); |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
- std::vector<std::string> result_list; |
+ std::vector<MetricsLogManager::SerializedLog> result_list; |
EXPECT_EQ( |
MetricsLogSerializer::RECALL_SUCCESS, |
MetricsLogSerializer::ReadLogsFromPrefList(list, &result_list)); |
EXPECT_EQ(local_list.size(), result_list.size()); |
- EXPECT_TRUE(result_list.front().find("x") == 0); |
+ EXPECT_TRUE(result_list.front().log_text().find("x") == 0); |
} |
// Store a set of logs over the length limit, but that doesn't reach the minimum |
@@ -106,26 +108,28 @@ |
// Make log_count logs each slightly larger than |
// kLogByteLimit / (log_count - 2) |
// so that the minimum is reached before the oldest (first) two logs. |
- std::vector<std::string> local_list(log_count); |
+ std::vector<MetricsLogManager::SerializedLog> local_list(log_count); |
size_t log_size = (kLogByteLimit / (log_count - 2)) + 2; |
- local_list[0] = "one"; |
- local_list[1] = "two"; |
- local_list[2] = "three"; |
- local_list[log_count - 1] = "last"; |
+ SetLogText("one", &local_list[0]); |
+ SetLogText("two", &local_list[1]); |
+ SetLogText("three", &local_list[2]); |
+ SetLogText("last", &local_list[log_count - 1]); |
for (size_t i = 0; i < local_list.size(); ++i) { |
- local_list[i].resize(log_size, ' '); |
+ std::string log_text = local_list[i].log_text(); |
+ log_text.resize(log_size, ' '); |
+ local_list[i].SwapLogText(&log_text); |
} |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
- std::vector<std::string> result_list; |
+ std::vector<MetricsLogManager::SerializedLog> result_list; |
EXPECT_EQ( |
MetricsLogSerializer::RECALL_SUCCESS, |
MetricsLogSerializer::ReadLogsFromPrefList(list, &result_list)); |
EXPECT_EQ(local_list.size() - 2, result_list.size()); |
- EXPECT_TRUE(result_list.front().find("three") == 0); |
- EXPECT_TRUE(result_list.back().find("last") == 0); |
+ EXPECT_TRUE(result_list.front().log_text().find("three") == 0); |
+ EXPECT_TRUE(result_list.back().log_text().find("last") == 0); |
} |
// Store a set of logs within the length limit, but well over the minimum |
@@ -133,16 +137,18 @@ |
TEST(MetricsLogSerializerTest, ShortButLargeLogList) { |
ListValue list; |
- std::vector<std::string> local_list(kListLengthLimit); |
+ std::vector<MetricsLogManager::SerializedLog> local_list(kListLengthLimit); |
// Make the total byte count about twice the minimum. |
size_t log_size = (kLogByteLimit / local_list.size()) * 2; |
for (size_t i = 0; i < local_list.size(); ++i) { |
- local_list[i].resize(log_size, ' '); |
+ std::string log_text = local_list[i].log_text(); |
+ log_text.resize(log_size, ' '); |
+ local_list[i].SwapLogText(&log_text); |
} |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
- std::vector<std::string> result_list; |
+ std::vector<MetricsLogManager::SerializedLog> result_list; |
EXPECT_EQ( |
MetricsLogSerializer::RECALL_SUCCESS, |
MetricsLogSerializer::ReadLogsFromPrefList(list, &result_list)); |
@@ -155,31 +161,35 @@ |
ListValue list; |
// Include twice the max number of logs. |
- std::vector<std::string> local_list(kListLengthLimit * 2); |
+ std::vector<MetricsLogManager::SerializedLog> |
+ local_list(kListLengthLimit * 2); |
// Make the total byte count about four times the minimum. |
size_t log_size = (kLogByteLimit / local_list.size()) * 4; |
- local_list[local_list.size() - kListLengthLimit] = "First to keep"; |
+ SetLogText("First to keep", |
+ &local_list[local_list.size() - kListLengthLimit]); |
for (size_t i = 0; i < local_list.size(); ++i) { |
- local_list[i].resize(log_size, ' '); |
+ std::string log_text = local_list[i].log_text(); |
+ log_text.resize(log_size, ' '); |
+ local_list[i].SwapLogText(&log_text); |
} |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
- std::vector<std::string> result_list; |
+ std::vector<MetricsLogManager::SerializedLog> result_list; |
EXPECT_EQ( |
MetricsLogSerializer::RECALL_SUCCESS, |
MetricsLogSerializer::ReadLogsFromPrefList(list, &result_list)); |
// The max length should control the resulting size. |
EXPECT_EQ(kListLengthLimit, result_list.size()); |
- EXPECT_TRUE(result_list.front().find("First to keep") == 0); |
+ EXPECT_TRUE(result_list.front().log_text().find("First to keep") == 0); |
} |
// Induce LIST_SIZE_TOO_SMALL corruption |
TEST(MetricsLogSerializerTest, SmallRecoveredListSize) { |
ListValue list; |
- std::vector<std::string> local_list(1); |
- local_list[0] = "Hello world!"; |
+ std::vector<MetricsLogManager::SerializedLog> local_list(1); |
+ SetLogText("Hello world!", &local_list[0]); |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
@@ -199,9 +209,9 @@ |
TEST(MetricsLogSerializerTest, RemoveSizeFromLogList) { |
ListValue list; |
- std::vector<std::string> local_list(2); |
- local_list[0] = "one"; |
- local_list[1] = "two"; |
+ std::vector<MetricsLogManager::SerializedLog> local_list(2); |
+ SetLogText("one", &local_list[0]); |
+ SetLogText("two", &local_list[1]); |
EXPECT_EQ(2U, local_list.size()); |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
@@ -220,8 +230,8 @@ |
TEST(MetricsLogSerializerTest, CorruptSizeOfLogList) { |
ListValue list; |
- std::vector<std::string> local_list(1); |
- local_list[0] = "Hello world!"; |
+ std::vector<MetricsLogManager::SerializedLog> local_list(1); |
+ SetLogText("Hello world!", &local_list[0]); |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |
@@ -241,8 +251,8 @@ |
TEST(MetricsLogSerializerTest, CorruptChecksumOfLogList) { |
ListValue list; |
- std::vector<std::string> local_list(1); |
- local_list[0] = "Hello world!"; |
+ std::vector<MetricsLogManager::SerializedLog> local_list(1); |
+ SetLogText("Hello world!", &local_list[0]); |
MetricsLogSerializer::WriteLogsToPrefList(local_list, kListLengthLimit, |
kLogByteLimit, &list); |