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

Side by Side Diff: components/gcm_driver/gcm_client_impl_unittest.cc

Issue 442123003: [GCM] Adding the OnSendAcknowledgement event (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing code review comments. Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « components/gcm_driver/gcm_client_impl.cc ('k') | components/gcm_driver/gcm_driver_desktop.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/gcm_driver/gcm_client_impl.h" 5 #include "components/gcm_driver/gcm_client_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 17 matching lines...) Expand all
28 namespace gcm { 28 namespace gcm {
29 29
30 namespace { 30 namespace {
31 31
32 enum LastEvent { 32 enum LastEvent {
33 NONE, 33 NONE,
34 LOADING_COMPLETED, 34 LOADING_COMPLETED,
35 REGISTRATION_COMPLETED, 35 REGISTRATION_COMPLETED,
36 UNREGISTRATION_COMPLETED, 36 UNREGISTRATION_COMPLETED,
37 MESSAGE_SEND_ERROR, 37 MESSAGE_SEND_ERROR,
38 MESSAGE_SEND_ACK,
38 MESSAGE_RECEIVED, 39 MESSAGE_RECEIVED,
39 MESSAGES_DELETED, 40 MESSAGES_DELETED,
40 }; 41 };
41 42
42 const uint64 kDeviceAndroidId = 54321; 43 const uint64 kDeviceAndroidId = 54321;
43 const uint64 kDeviceSecurityToken = 12345; 44 const uint64 kDeviceSecurityToken = 12345;
44 const int64 kSettingsCheckinInterval = 16 * 60 * 60; 45 const int64 kSettingsCheckinInterval = 16 * 60 * 60;
45 const char kAppId[] = "app_id"; 46 const char kAppId[] = "app_id";
46 const char kSender[] = "project_id"; 47 const char kSender[] = "project_id";
47 const char kSender2[] = "project_id2"; 48 const char kSender2[] = "project_id2";
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 public: 217 public:
217 GCMClientImplTest(); 218 GCMClientImplTest();
218 virtual ~GCMClientImplTest(); 219 virtual ~GCMClientImplTest();
219 220
220 virtual void SetUp() OVERRIDE; 221 virtual void SetUp() OVERRIDE;
221 222
222 void BuildGCMClient(base::TimeDelta clock_step); 223 void BuildGCMClient(base::TimeDelta clock_step);
223 void InitializeGCMClient(); 224 void InitializeGCMClient();
224 void StartGCMClient(); 225 void StartGCMClient();
225 void ReceiveMessageFromMCS(const MCSMessage& message); 226 void ReceiveMessageFromMCS(const MCSMessage& message);
227 void ReceiveOnMessageSentToMCS(
228 const std::string& app_id,
229 const std::string& message_id,
230 const MCSClient::MessageSendStatus status);
226 void CompleteCheckin(uint64 android_id, 231 void CompleteCheckin(uint64 android_id,
227 uint64 security_token, 232 uint64 security_token,
228 const std::string& digest, 233 const std::string& digest,
229 const std::map<std::string, std::string>& settings); 234 const std::map<std::string, std::string>& settings);
230 void CompleteRegistration(const std::string& registration_id); 235 void CompleteRegistration(const std::string& registration_id);
231 void CompleteUnregistration(const std::string& app_id); 236 void CompleteUnregistration(const std::string& app_id);
232 237
233 bool ExistsRegistration(const std::string& app_id) const; 238 bool ExistsRegistration(const std::string& app_id) const;
234 void AddRegistration(const std::string& app_id, 239 void AddRegistration(const std::string& app_id,
235 const std::vector<std::string>& sender_ids, 240 const std::vector<std::string>& sender_ids,
236 const std::string& registration_id); 241 const std::string& registration_id);
237 242
238 // GCMClient::Delegate overrides (for verification). 243 // GCMClient::Delegate overrides (for verification).
239 virtual void OnRegisterFinished(const std::string& app_id, 244 virtual void OnRegisterFinished(const std::string& app_id,
240 const std::string& registration_id, 245 const std::string& registration_id,
241 GCMClient::Result result) OVERRIDE; 246 GCMClient::Result result) OVERRIDE;
242 virtual void OnUnregisterFinished(const std::string& app_id, 247 virtual void OnUnregisterFinished(const std::string& app_id,
243 GCMClient::Result result) OVERRIDE; 248 GCMClient::Result result) OVERRIDE;
244 virtual void OnSendFinished(const std::string& app_id, 249 virtual void OnSendFinished(const std::string& app_id,
245 const std::string& message_id, 250 const std::string& message_id,
246 GCMClient::Result result) OVERRIDE {} 251 GCMClient::Result result) OVERRIDE {}
247 virtual void OnMessageReceived(const std::string& registration_id, 252 virtual void OnMessageReceived(const std::string& registration_id,
248 const GCMClient::IncomingMessage& message) 253 const GCMClient::IncomingMessage& message)
249 OVERRIDE; 254 OVERRIDE;
250 virtual void OnMessagesDeleted(const std::string& app_id) OVERRIDE; 255 virtual void OnMessagesDeleted(const std::string& app_id) OVERRIDE;
251 virtual void OnMessageSendError( 256 virtual void OnMessageSendError(
252 const std::string& app_id, 257 const std::string& app_id,
253 const gcm::GCMClient::SendErrorDetails& send_error_details) OVERRIDE; 258 const gcm::GCMClient::SendErrorDetails& send_error_details) OVERRIDE;
259 virtual void OnSendAcknowledged(const std::string& app_id,
260 const std::string& message_id) OVERRIDE;
254 virtual void OnGCMReady() OVERRIDE; 261 virtual void OnGCMReady() OVERRIDE;
255 virtual void OnActivityRecorded() OVERRIDE {} 262 virtual void OnActivityRecorded() OVERRIDE {}
256 virtual void OnConnected(const net::IPEndPoint& ip_endpoint) OVERRIDE {} 263 virtual void OnConnected(const net::IPEndPoint& ip_endpoint) OVERRIDE {}
257 virtual void OnDisconnected() OVERRIDE {} 264 virtual void OnDisconnected() OVERRIDE {}
258 265
259 GCMClientImpl* gcm_client() const { return gcm_client_.get(); } 266 GCMClientImpl* gcm_client() const { return gcm_client_.get(); }
260 FakeMCSClient* mcs_client() const { 267 FakeMCSClient* mcs_client() const {
261 return reinterpret_cast<FakeMCSClient*>(gcm_client_->mcs_client_.get()); 268 return reinterpret_cast<FakeMCSClient*>(gcm_client_->mcs_client_.get());
262 } 269 }
263 ConnectionFactory* connection_factory() const { 270 ConnectionFactory* connection_factory() const {
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 // Start loading and check-in. 474 // Start loading and check-in.
468 gcm_client_->Start(); 475 gcm_client_->Start();
469 476
470 PumpLoopUntilIdle(); 477 PumpLoopUntilIdle();
471 } 478 }
472 479
473 void GCMClientImplTest::ReceiveMessageFromMCS(const MCSMessage& message) { 480 void GCMClientImplTest::ReceiveMessageFromMCS(const MCSMessage& message) {
474 gcm_client_->OnMessageReceivedFromMCS(message); 481 gcm_client_->OnMessageReceivedFromMCS(message);
475 } 482 }
476 483
484 void GCMClientImplTest::ReceiveOnMessageSentToMCS(
485 const std::string& app_id,
486 const std::string& message_id,
487 const MCSClient::MessageSendStatus status) {
488 gcm_client_->OnMessageSentToMCS(0LL, app_id, message_id, status);
489 }
490
477 void GCMClientImplTest::OnGCMReady() { 491 void GCMClientImplTest::OnGCMReady() {
478 last_event_ = LOADING_COMPLETED; 492 last_event_ = LOADING_COMPLETED;
479 QuitLoop(); 493 QuitLoop();
480 } 494 }
481 495
482 void GCMClientImplTest::OnMessageReceived( 496 void GCMClientImplTest::OnMessageReceived(
483 const std::string& registration_id, 497 const std::string& registration_id,
484 const GCMClient::IncomingMessage& message) { 498 const GCMClient::IncomingMessage& message) {
485 last_event_ = MESSAGE_RECEIVED; 499 last_event_ = MESSAGE_RECEIVED;
486 last_app_id_ = registration_id; 500 last_app_id_ = registration_id;
(...skipping 23 matching lines...) Expand all
510 } 524 }
511 525
512 void GCMClientImplTest::OnMessageSendError( 526 void GCMClientImplTest::OnMessageSendError(
513 const std::string& app_id, 527 const std::string& app_id,
514 const gcm::GCMClient::SendErrorDetails& send_error_details) { 528 const gcm::GCMClient::SendErrorDetails& send_error_details) {
515 last_event_ = MESSAGE_SEND_ERROR; 529 last_event_ = MESSAGE_SEND_ERROR;
516 last_app_id_ = app_id; 530 last_app_id_ = app_id;
517 last_error_details_ = send_error_details; 531 last_error_details_ = send_error_details;
518 } 532 }
519 533
534 void GCMClientImplTest::OnSendAcknowledged(const std::string& app_id,
535 const std::string& message_id) {
536 last_event_ = MESSAGE_SEND_ACK;
537 last_app_id_ = app_id;
538 last_message_id_ = message_id;
539 }
540
520 int64 GCMClientImplTest::CurrentTime() { 541 int64 GCMClientImplTest::CurrentTime() {
521 return clock()->Now().ToInternalValue() / base::Time::kMicrosecondsPerSecond; 542 return clock()->Now().ToInternalValue() / base::Time::kMicrosecondsPerSecond;
522 } 543 }
523 544
524 TEST_F(GCMClientImplTest, LoadingCompleted) { 545 TEST_F(GCMClientImplTest, LoadingCompleted) {
525 EXPECT_EQ(LOADING_COMPLETED, last_event()); 546 EXPECT_EQ(LOADING_COMPLETED, last_event());
526 EXPECT_EQ(kDeviceAndroidId, mcs_client()->last_android_id()); 547 EXPECT_EQ(kDeviceAndroidId, mcs_client()->last_android_id());
527 EXPECT_EQ(kDeviceSecurityToken, mcs_client()->last_security_token()); 548 EXPECT_EQ(kDeviceSecurityToken, mcs_client()->last_security_token());
528 549
529 // Checking freshly loaded CheckinInfo. 550 // Checking freshly loaded CheckinInfo.
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 MCSMessage message(BuildDownstreamMessage( 692 MCSMessage message(BuildDownstreamMessage(
672 kSender, kAppId, expected_data)); 693 kSender, kAppId, expected_data));
673 EXPECT_TRUE(message.IsValid()); 694 EXPECT_TRUE(message.IsValid());
674 ReceiveMessageFromMCS(message); 695 ReceiveMessageFromMCS(message);
675 696
676 EXPECT_EQ(MESSAGES_DELETED, last_event()); 697 EXPECT_EQ(MESSAGES_DELETED, last_event());
677 EXPECT_EQ(kAppId, last_app_id()); 698 EXPECT_EQ(kAppId, last_app_id());
678 } 699 }
679 700
680 TEST_F(GCMClientImplTest, SendMessage) { 701 TEST_F(GCMClientImplTest, SendMessage) {
681 mcs_proto::DataMessageStanza stanza;
682 stanza.set_ttl(500);
683
684 GCMClient::OutgoingMessage message; 702 GCMClient::OutgoingMessage message;
685 message.id = "007"; 703 message.id = "007";
686 message.time_to_live = 500; 704 message.time_to_live = 500;
687 message.data["key"] = "value"; 705 message.data["key"] = "value";
688 gcm_client()->Send(kAppId, kSender, message); 706 gcm_client()->Send(kAppId, kSender, message);
689 707
690 EXPECT_EQ(kDataMessageStanzaTag, mcs_client()->last_message_tag()); 708 EXPECT_EQ(kDataMessageStanzaTag, mcs_client()->last_message_tag());
691 EXPECT_EQ(kAppId, mcs_client()->last_data_message_stanza().category()); 709 EXPECT_EQ(kAppId, mcs_client()->last_data_message_stanza().category());
692 EXPECT_EQ(kSender, mcs_client()->last_data_message_stanza().to()); 710 EXPECT_EQ(kSender, mcs_client()->last_data_message_stanza().to());
693 EXPECT_EQ(500, mcs_client()->last_data_message_stanza().ttl()); 711 EXPECT_EQ(500, mcs_client()->last_data_message_stanza().ttl());
694 EXPECT_EQ(CurrentTime(), mcs_client()->last_data_message_stanza().sent()); 712 EXPECT_EQ(CurrentTime(), mcs_client()->last_data_message_stanza().sent());
695 EXPECT_EQ("007", mcs_client()->last_data_message_stanza().id()); 713 EXPECT_EQ("007", mcs_client()->last_data_message_stanza().id());
696 EXPECT_EQ("gcm@chrome.com", mcs_client()->last_data_message_stanza().from()); 714 EXPECT_EQ("gcm@chrome.com", mcs_client()->last_data_message_stanza().from());
697 EXPECT_EQ(kSender, mcs_client()->last_data_message_stanza().to()); 715 EXPECT_EQ(kSender, mcs_client()->last_data_message_stanza().to());
698 EXPECT_EQ("key", mcs_client()->last_data_message_stanza().app_data(0).key()); 716 EXPECT_EQ("key", mcs_client()->last_data_message_stanza().app_data(0).key());
699 EXPECT_EQ("value", 717 EXPECT_EQ("value",
700 mcs_client()->last_data_message_stanza().app_data(0).value()); 718 mcs_client()->last_data_message_stanza().app_data(0).value());
701 } 719 }
702 720
721 TEST_F(GCMClientImplTest, SendMessageAcknowledged) {
722 ReceiveOnMessageSentToMCS(kAppId, "007", MCSClient::SENT);
723 EXPECT_EQ(MESSAGE_SEND_ACK, last_event());
724 EXPECT_EQ(kAppId, last_app_id());
725 EXPECT_EQ("007", last_message_id());
726 }
727
703 class GCMClientImplCheckinTest : public GCMClientImplTest { 728 class GCMClientImplCheckinTest : public GCMClientImplTest {
704 public: 729 public:
705 GCMClientImplCheckinTest(); 730 GCMClientImplCheckinTest();
706 virtual ~GCMClientImplCheckinTest(); 731 virtual ~GCMClientImplCheckinTest();
707 732
708 virtual void SetUp() OVERRIDE; 733 virtual void SetUp() OVERRIDE;
709 }; 734 };
710 735
711 GCMClientImplCheckinTest::GCMClientImplCheckinTest() { 736 GCMClientImplCheckinTest::GCMClientImplCheckinTest() {
712 } 737 }
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestartImmediately) { 996 TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestartImmediately) {
972 // Start the GCM and then stop and restart it immediately. 997 // Start the GCM and then stop and restart it immediately.
973 gcm_client()->Start(); 998 gcm_client()->Start();
974 gcm_client()->Stop(); 999 gcm_client()->Stop();
975 gcm_client()->Start(); 1000 gcm_client()->Start();
976 1001
977 PumpLoopUntilIdle(); 1002 PumpLoopUntilIdle();
978 } 1003 }
979 1004
980 } // namespace gcm 1005 } // namespace gcm
OLDNEW
« no previous file with comments | « components/gcm_driver/gcm_client_impl.cc ('k') | components/gcm_driver/gcm_driver_desktop.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698