gcm_stats_recorder_android_unittest.cc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/gcm_driver/gcm_stats_recorder_android.h"
  5. #include <stddef.h>
  6. #include "components/gcm_driver/crypto/gcm_decryption_result.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace gcm {
  9. namespace {
  10. const char kTestAppId[] = "test_app_id";
  11. const char kTestSenderId[] = "test_sender_id";
  12. class GCMStatsRecorderAndroidTest : public ::testing::Test,
  13. public GCMStatsRecorderAndroid::Delegate {
  14. public:
  15. GCMStatsRecorderAndroidTest()
  16. : activity_recorded_calls_(0) {}
  17. ~GCMStatsRecorderAndroidTest() override {}
  18. // GCMStatsRecorderAndroid::Delegate implementation.
  19. void OnActivityRecorded() override {
  20. ++activity_recorded_calls_;
  21. }
  22. size_t activity_recorded_calls() const { return activity_recorded_calls_; }
  23. private:
  24. size_t activity_recorded_calls_;
  25. };
  26. TEST_F(GCMStatsRecorderAndroidTest, RecordsAndCallsDelegate) {
  27. GCMStatsRecorderAndroid recorder(this /* delegate */);
  28. recorder.set_is_recording(true);
  29. ASSERT_TRUE(recorder.is_recording());
  30. EXPECT_EQ(0u, activity_recorded_calls());
  31. recorder.RecordRegistrationSent(kTestAppId);
  32. EXPECT_EQ(1u, activity_recorded_calls());
  33. recorder.RecordRegistrationResponse(kTestAppId, true /* success */);
  34. EXPECT_EQ(2u, activity_recorded_calls());
  35. recorder.RecordUnregistrationSent(kTestAppId);
  36. EXPECT_EQ(3u, activity_recorded_calls());
  37. recorder.RecordUnregistrationResponse(kTestAppId, true /* success */);
  38. EXPECT_EQ(4u, activity_recorded_calls());
  39. recorder.RecordDataMessageReceived(kTestAppId, kTestSenderId,
  40. 42 /* message_byte_size */);
  41. EXPECT_EQ(5u, activity_recorded_calls());
  42. recorder.RecordDecryptionFailure(kTestAppId,
  43. GCMDecryptionResult::INVALID_PAYLOAD);
  44. EXPECT_EQ(6u, activity_recorded_calls());
  45. RecordedActivities activities;
  46. recorder.CollectActivities(&activities);
  47. EXPECT_EQ(4u, activities.registration_activities.size());
  48. EXPECT_EQ(1u, activities.receiving_activities.size());
  49. EXPECT_EQ(1u, activities.decryption_failure_activities.size());
  50. recorder.CollectActivities(&activities);
  51. EXPECT_EQ(8u, activities.registration_activities.size());
  52. EXPECT_EQ(2u, activities.receiving_activities.size());
  53. EXPECT_EQ(2u, activities.decryption_failure_activities.size());
  54. recorder.Clear();
  55. RecordedActivities empty_activities;
  56. recorder.CollectActivities(&empty_activities);
  57. EXPECT_EQ(0u, empty_activities.registration_activities.size());
  58. EXPECT_EQ(0u, empty_activities.receiving_activities.size());
  59. EXPECT_EQ(0u, empty_activities.decryption_failure_activities.size());
  60. }
  61. TEST_F(GCMStatsRecorderAndroidTest, NullDelegate) {
  62. GCMStatsRecorderAndroid recorder(nullptr /* delegate */);
  63. recorder.set_is_recording(true);
  64. ASSERT_TRUE(recorder.is_recording());
  65. recorder.RecordRegistrationSent(kTestAppId);
  66. RecordedActivities activities;
  67. recorder.CollectActivities(&activities);
  68. EXPECT_EQ(1u, activities.registration_activities.size());
  69. }
  70. TEST_F(GCMStatsRecorderAndroidTest, NotRecording) {
  71. GCMStatsRecorderAndroid recorder(this /* delegate */);
  72. ASSERT_FALSE(recorder.is_recording());
  73. recorder.RecordRegistrationSent(kTestAppId);
  74. RecordedActivities activities;
  75. recorder.CollectActivities(&activities);
  76. EXPECT_EQ(0u, activities.registration_activities.size());
  77. }
  78. } // namespace
  79. } // namespace gcm