15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/internal_api/debug_info_event_listener.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef testing::Test DebugInfoEventListenerTest;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DebugInfoEventListenerTest, VerifyEventsAdded) {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DebugInfoEventListener debug_info_event_listener;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  debug_info_event_listener.CreateAndAddEvent(
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      sync_pb::SyncEnums::ENCRYPTION_COMPLETE);
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(debug_info_event_listener.events_.size(), 1U);
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const sync_pb::DebugEventInfo& debug_info =
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      debug_info_event_listener.events_.back();
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(debug_info.has_singleton_event());
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(debug_info.singleton_event(),
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)            sync_pb::SyncEnums::ENCRYPTION_COMPLETE);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(DebugInfoEventListenerTest, VerifyQueueSize) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DebugInfoEventListener debug_info_event_listener;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (unsigned int i = 0; i < 2*kMaxEntries; ++i) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    debug_info_event_listener.CreateAndAddEvent(
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)        sync_pb::SyncEnums::ENCRYPTION_COMPLETE);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sync_pb::DebugInfo debug_info;
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  debug_info_event_listener.GetDebugInfo(&debug_info);
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  debug_info_event_listener.ClearDebugInfo();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(debug_info.events_dropped());
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(static_cast<int>(kMaxEntries), debug_info.events_size());
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(DebugInfoEventListenerTest, VerifyGetEvents) {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DebugInfoEventListener debug_info_event_listener;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  debug_info_event_listener.CreateAndAddEvent(
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      sync_pb::SyncEnums::ENCRYPTION_COMPLETE);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(debug_info_event_listener.events_.size(), 1U);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sync_pb::DebugInfo debug_info;
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  debug_info_event_listener.GetDebugInfo(&debug_info);
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_EQ(debug_info_event_listener.events_.size(), 1U);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(debug_info.events_size(), 1);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(debug_info.events(0).has_singleton_event());
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(debug_info.events(0).singleton_event(),
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)            sync_pb::SyncEnums::ENCRYPTION_COMPLETE);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(DebugInfoEventListenerTest, VerifyClearEvents) {
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DebugInfoEventListener debug_info_event_listener;
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  debug_info_event_listener.CreateAndAddEvent(
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      sync_pb::SyncEnums::ENCRYPTION_COMPLETE);
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_EQ(debug_info_event_listener.events_.size(), 1U);
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  debug_info_event_listener.ClearDebugInfo();
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_EQ(debug_info_event_listener.events_.size(), 0U);
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace syncer
62