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

Unified Diff: chrome/common/metrics/metrics_log_manager_unittest.cc

Issue 26646003: MetricsService: Send a hash of the UMA log in a header. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 2 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 | « chrome/common/metrics/metrics_log_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/metrics/metrics_log_manager_unittest.cc
===================================================================
--- chrome/common/metrics/metrics_log_manager_unittest.cc (revision 229433)
+++ chrome/common/metrics/metrics_log_manager_unittest.cc (working copy)
@@ -2,29 +2,30 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/common/metrics/metrics_log_manager.h"
+
#include <string>
#include <utility>
#include <vector>
+#include "base/sha1.h"
#include "chrome/common/metrics/metrics_log_base.h"
-#include "chrome/common/metrics/metrics_log_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
-class MetricsLogManagerTest : public testing::Test {
-};
-
// Dummy serializer that just stores logs in memory.
class DummyLogSerializer : public MetricsLogManager::LogSerializer {
public:
- virtual void SerializeLogs(const std::vector<std::string>& logs,
- MetricsLogManager::LogType log_type) OVERRIDE {
+ virtual void SerializeLogs(
+ const std::vector<MetricsLogManager::SerializedLog>& logs,
+ MetricsLogManager::LogType log_type) OVERRIDE {
persisted_logs_[log_type] = logs;
}
- virtual void DeserializeLogs(MetricsLogManager::LogType log_type,
- std::vector<std::string>* logs) OVERRIDE {
+ virtual void DeserializeLogs(
+ MetricsLogManager::LogType log_type,
+ std::vector<MetricsLogManager::SerializedLog>* logs) OVERRIDE {
ASSERT_NE(static_cast<void*>(NULL), logs);
*logs = persisted_logs_[log_type];
}
@@ -35,7 +36,7 @@
}
// In-memory "persitent storage".
- std::vector<std::string> persisted_logs_[2];
+ std::vector<MetricsLogManager::SerializedLog> persisted_logs_[2];
};
} // namespace
@@ -139,8 +140,8 @@
}
TEST(MetricsLogManagerTest, StoreAndLoad) {
- std::vector<std::string> initial_logs;
- std::vector<std::string> ongoing_logs;
+ std::vector<MetricsLogManager::SerializedLog> initial_logs;
+ std::vector<MetricsLogManager::SerializedLog> ongoing_logs;
// Set up some in-progress logging in a scoped log manager simulating the
// leadup to quitting, then persist as would be done on quit.
@@ -149,7 +150,9 @@
DummyLogSerializer* serializer = new DummyLogSerializer;
log_manager.set_log_serializer(serializer);
// Simulate a log having already been unsent from a previous session.
- std::string log = "proto";
+ MetricsLogManager::SerializedLog log;
+ std::string text = "proto";
+ log.SwapLogText(&text);
serializer->persisted_logs_[MetricsLogManager::ONGOING_LOG].push_back(log);
EXPECT_FALSE(log_manager.has_unsent_logs());
log_manager.LoadPersistedUnsentLogs();
@@ -343,3 +346,44 @@
EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
}
}
+
+TEST(MetricsLogManagerTest, SerializedLog) {
+ const char kFooText[] = "foo";
+ const std::string foo_hash = base::SHA1HashString(kFooText);
+ const char kBarText[] = "bar";
+ const std::string bar_hash = base::SHA1HashString(kBarText);
+
+ MetricsLogManager::SerializedLog log;
+ EXPECT_TRUE(log.log_text().empty());
+ EXPECT_TRUE(log.log_hash().empty());
+
+ std::string foo = kFooText;
+ log.SwapLogText(&foo);
+ EXPECT_TRUE(foo.empty());
+ EXPECT_FALSE(log.IsEmpty());
+ EXPECT_EQ(kFooText, log.log_text());
+ EXPECT_EQ(foo_hash, log.log_hash());
+
+ std::string bar = kBarText;
+ log.SwapLogText(&bar);
+ EXPECT_EQ(kFooText, bar);
+ EXPECT_FALSE(log.IsEmpty());
+ EXPECT_EQ(kBarText, log.log_text());
+ EXPECT_EQ(bar_hash, log.log_hash());
+
+ log.Clear();
+ EXPECT_TRUE(log.IsEmpty());
+ EXPECT_TRUE(log.log_text().empty());
+ EXPECT_TRUE(log.log_hash().empty());
+
+ MetricsLogManager::SerializedLog log2;
+ foo = kFooText;
+ log2.SwapLogText(&foo);
+ log.Swap(&log2);
+ EXPECT_FALSE(log.IsEmpty());
+ EXPECT_EQ(kFooText, log.log_text());
+ EXPECT_EQ(foo_hash, log.log_hash());
+ EXPECT_TRUE(log2.IsEmpty());
+ EXPECT_TRUE(log2.log_text().empty());
+ EXPECT_TRUE(log2.log_hash().empty());
+}
« no previous file with comments | « chrome/common/metrics/metrics_log_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698