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

Side by Side Diff: remoting/host/chromoting_host_unittest.cc

Issue 850983002: Implement video frame acknowledgements in the chromoting protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « no previous file | remoting/host/client_session.cc » ('j') | remoting/host/video_scheduler.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "remoting/base/auto_thread_task_runner.h" 9 #include "remoting/base/auto_thread_task_runner.h"
10 #include "remoting/host/audio_capturer.h" 10 #include "remoting/host/audio_capturer.h"
(...skipping 10 matching lines...) Expand all
21 #include "remoting/signaling/mock_signal_strategy.h" 21 #include "remoting/signaling/mock_signal_strategy.h"
22 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gmock_mutant.h" 23 #include "testing/gmock_mutant.h"
24 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
25 25
26 using ::remoting::protocol::MockClientStub; 26 using ::remoting::protocol::MockClientStub;
27 using ::remoting::protocol::MockConnectionToClient; 27 using ::remoting::protocol::MockConnectionToClient;
28 using ::remoting::protocol::MockConnectionToClientEventHandler; 28 using ::remoting::protocol::MockConnectionToClientEventHandler;
29 using ::remoting::protocol::MockHostStub; 29 using ::remoting::protocol::MockHostStub;
30 using ::remoting::protocol::MockSession; 30 using ::remoting::protocol::MockSession;
31 using ::remoting::protocol::MockVideoStub; 31 using ::remoting::protocol::MockVideoSender;
32 using ::remoting::protocol::Session; 32 using ::remoting::protocol::Session;
33 using ::remoting::protocol::SessionConfig; 33 using ::remoting::protocol::SessionConfig;
34 34
35 using testing::_; 35 using testing::_;
36 using testing::AnyNumber; 36 using testing::AnyNumber;
37 using testing::AtLeast; 37 using testing::AtLeast;
38 using testing::AtMost; 38 using testing::AtMost;
39 using testing::CreateFunctor; 39 using testing::CreateFunctor;
40 using testing::DeleteArg; 40 using testing::DeleteArg;
41 using testing::DoAll; 41 using testing::DoAll;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 EXPECT_CALL(*session2_, config()) 136 EXPECT_CALL(*session2_, config())
137 .WillRepeatedly(ReturnRef(session_config2_)); 137 .WillRepeatedly(ReturnRef(session_config2_));
138 138
139 owned_connection1_.reset(new MockConnectionToClient(session1_, 139 owned_connection1_.reset(new MockConnectionToClient(session1_,
140 &host_stub1_)); 140 &host_stub1_));
141 connection1_ = owned_connection1_.get(); 141 connection1_ = owned_connection1_.get();
142 owned_connection2_.reset(new MockConnectionToClient(session2_, 142 owned_connection2_.reset(new MockConnectionToClient(session2_,
143 &host_stub2_)); 143 &host_stub2_));
144 connection2_ = owned_connection2_.get(); 144 connection2_ = owned_connection2_.get();
145 145
146 ON_CALL(video_stub1_, ProcessVideoPacketPtr(_, _)) 146 ON_CALL(video_sender1_, ProcessVideoPacketPtr(_, _))
147 .WillByDefault(DeleteArg<0>()); 147 .WillByDefault(DeleteArg<0>());
148 ON_CALL(video_stub2_, ProcessVideoPacketPtr(_, _)) 148 ON_CALL(video_sender2_, ProcessVideoPacketPtr(_, _))
149 .WillByDefault(DeleteArg<0>()); 149 .WillByDefault(DeleteArg<0>());
150 ON_CALL(*connection1_, video_stub()) 150 ON_CALL(*connection1_, video_sender())
151 .WillByDefault(Return(&video_stub1_)); 151 .WillByDefault(Return(&video_sender1_));
152 ON_CALL(*connection1_, client_stub()) 152 ON_CALL(*connection1_, client_stub())
153 .WillByDefault(Return(&client_stub1_)); 153 .WillByDefault(Return(&client_stub1_));
154 ON_CALL(*connection1_, session()) 154 ON_CALL(*connection1_, session())
155 .WillByDefault(Return(session1_)); 155 .WillByDefault(Return(session1_));
156 ON_CALL(*connection2_, video_stub()) 156 ON_CALL(*connection2_, video_sender())
157 .WillByDefault(Return(&video_stub2_)); 157 .WillByDefault(Return(&video_sender2_));
158 ON_CALL(*connection2_, client_stub()) 158 ON_CALL(*connection2_, client_stub())
159 .WillByDefault(Return(&client_stub2_)); 159 .WillByDefault(Return(&client_stub2_));
160 ON_CALL(*connection2_, session()) 160 ON_CALL(*connection2_, session())
161 .WillByDefault(Return(session2_)); 161 .WillByDefault(Return(session2_));
162 EXPECT_CALL(*connection1_, video_stub()) 162 EXPECT_CALL(*connection1_, video_sender())
163 .Times(AnyNumber()); 163 .Times(AnyNumber());
164 EXPECT_CALL(*connection1_, client_stub()) 164 EXPECT_CALL(*connection1_, client_stub())
165 .Times(AnyNumber()); 165 .Times(AnyNumber());
166 EXPECT_CALL(*connection1_, session()) 166 EXPECT_CALL(*connection1_, session())
167 .Times(AnyNumber()); 167 .Times(AnyNumber());
168 EXPECT_CALL(*connection2_, video_stub()) 168 EXPECT_CALL(*connection2_, video_sender())
169 .Times(AnyNumber()); 169 .Times(AnyNumber());
170 EXPECT_CALL(*connection2_, client_stub()) 170 EXPECT_CALL(*connection2_, client_stub())
171 .Times(AnyNumber()); 171 .Times(AnyNumber());
172 EXPECT_CALL(*connection2_, session()) 172 EXPECT_CALL(*connection2_, session())
173 .Times(AnyNumber()); 173 .Times(AnyNumber());
174 174
175 empty_candidate_config_ = 175 empty_candidate_config_ =
176 protocol::CandidateSessionConfig::CreateEmpty(); 176 protocol::CandidateSessionConfig::CreateEmpty();
177 default_candidate_config_ = 177 default_candidate_config_ =
178 protocol::CandidateSessionConfig::CreateDefault(); 178 protocol::CandidateSessionConfig::CreateDefault();
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 return EXPECT_CALL(*session_manager_, Init(_, host_.get())); 337 return EXPECT_CALL(*session_manager_, Init(_, host_.get()));
338 } 338 }
339 339
340 // Expect a client to connect. 340 // Expect a client to connect.
341 // Return an expectation that a session has started, and that the first 341 // Return an expectation that a session has started, and that the first
342 // video packet has been sent to the client. 342 // video packet has been sent to the client.
343 // Do |action| when that happens. 343 // Do |action| when that happens.
344 template <class A> 344 template <class A>
345 Expectation ExpectClientConnected(int connection_index, A action) { 345 Expectation ExpectClientConnected(int connection_index, A action) {
346 const std::string& session_jid = get_session_jid(connection_index); 346 const std::string& session_jid = get_session_jid(connection_index);
347 MockVideoStub& video_stub = get_video_stub(connection_index); 347 MockVideoSender& video_sender = get_video_sender(connection_index);
348 348
349 Expectation client_authenticated = 349 Expectation client_authenticated =
350 EXPECT_CALL(host_status_observer_, OnClientAuthenticated(session_jid)); 350 EXPECT_CALL(host_status_observer_, OnClientAuthenticated(session_jid));
351 EXPECT_CALL(host_status_observer_, OnClientConnected(session_jid)) 351 EXPECT_CALL(host_status_observer_, OnClientConnected(session_jid))
352 .After(client_authenticated); 352 .After(client_authenticated);
353 Expectation video_packet_sent = 353 Expectation video_packet_sent =
354 EXPECT_CALL(video_stub, ProcessVideoPacketPtr(_, _)) 354 EXPECT_CALL(video_sender, ProcessVideoPacketPtr(_, _))
355 .After(client_authenticated) 355 .After(client_authenticated)
356 .WillOnce(DoAll( 356 .WillOnce(DoAll(
357 action, 357 action,
358 RunDoneTask())) 358 RunDoneTask()))
359 .RetiresOnSaturation(); 359 .RetiresOnSaturation();
360 EXPECT_CALL(video_stub, ProcessVideoPacketPtr(_, _)) 360 EXPECT_CALL(video_sender, ProcessVideoPacketPtr(_, _))
361 .Times(AnyNumber()) 361 .Times(AnyNumber())
362 .After(video_packet_sent) 362 .After(video_packet_sent)
363 .WillRepeatedly(RunDoneTask()); 363 .WillRepeatedly(RunDoneTask());
364 return video_packet_sent; 364 return video_packet_sent;
365 } 365 }
366 366
367 // Return an expectation that a client will disconnect after a given 367 // Return an expectation that a client will disconnect after a given
368 // expectation. The given action will be done after the event executor is 368 // expectation. The given action will be done after the event executor is
369 // notified that the session has finished. 369 // notified that the session has finished.
370 template <class A> 370 template <class A>
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 scoped_ptr<ChromotingHost> host_; 415 scoped_ptr<ChromotingHost> host_;
416 MockHostStatusObserver host_status_observer_; 416 MockHostStatusObserver host_status_observer_;
417 protocol::MockSessionManager* session_manager_; 417 protocol::MockSessionManager* session_manager_;
418 std::string xmpp_login_; 418 std::string xmpp_login_;
419 MockConnectionToClient* connection1_; 419 MockConnectionToClient* connection1_;
420 scoped_ptr<MockConnectionToClient> owned_connection1_; 420 scoped_ptr<MockConnectionToClient> owned_connection1_;
421 ClientSession* client1_; 421 ClientSession* client1_;
422 std::string session_jid1_; 422 std::string session_jid1_;
423 MockSession* session1_; // Owned by |connection_|. 423 MockSession* session1_; // Owned by |connection_|.
424 SessionConfig session_config1_; 424 SessionConfig session_config1_;
425 MockVideoStub video_stub1_; 425 MockVideoSender video_sender1_;
426 MockClientStub client_stub1_; 426 MockClientStub client_stub1_;
427 MockHostStub host_stub1_; 427 MockHostStub host_stub1_;
428 MockConnectionToClient* connection2_; 428 MockConnectionToClient* connection2_;
429 scoped_ptr<MockConnectionToClient> owned_connection2_; 429 scoped_ptr<MockConnectionToClient> owned_connection2_;
430 ClientSession* client2_; 430 ClientSession* client2_;
431 std::string session_jid2_; 431 std::string session_jid2_;
432 MockSession* session2_; // Owned by |connection2_|. 432 MockSession* session2_; // Owned by |connection2_|.
433 SessionConfig session_config2_; 433 SessionConfig session_config2_;
434 MockVideoStub video_stub2_; 434 MockVideoSender video_sender2_;
435 MockClientStub client_stub2_; 435 MockClientStub client_stub2_;
436 MockHostStub host_stub2_; 436 MockHostStub host_stub2_;
437 scoped_ptr<MockSession> session_unowned1_; // Not owned by a connection. 437 scoped_ptr<MockSession> session_unowned1_; // Not owned by a connection.
438 SessionConfig session_unowned_config1_; 438 SessionConfig session_unowned_config1_;
439 std::string session_unowned_jid1_; 439 std::string session_unowned_jid1_;
440 scoped_ptr<MockSession> session_unowned2_; // Not owned by a connection. 440 scoped_ptr<MockSession> session_unowned2_; // Not owned by a connection.
441 SessionConfig session_unowned_config2_; 441 SessionConfig session_unowned_config2_;
442 std::string session_unowned_jid2_; 442 std::string session_unowned_jid2_;
443 protocol::Session::EventHandler* session_unowned1_event_handler_; 443 protocol::Session::EventHandler* session_unowned1_event_handler_;
444 protocol::Session::EventHandler* session_unowned2_event_handler_; 444 protocol::Session::EventHandler* session_unowned2_event_handler_;
(...skipping 11 matching lines...) Expand all
456 456
457 // Returns the list of clients of the host_. 457 // Returns the list of clients of the host_.
458 std::list<ClientSession*>& get_clients_from_host() { 458 std::list<ClientSession*>& get_clients_from_host() {
459 return host_->clients_; 459 return host_->clients_;
460 } 460 }
461 461
462 const std::string& get_session_jid(int connection_index) { 462 const std::string& get_session_jid(int connection_index) {
463 return (connection_index == 0) ? session_jid1_ : session_jid2_; 463 return (connection_index == 0) ? session_jid1_ : session_jid2_;
464 } 464 }
465 465
466 MockVideoStub& get_video_stub(int connection_index) { 466 MockVideoSender& get_video_sender(int connection_index) {
467 return (connection_index == 0) ? video_stub1_ : video_stub2_; 467 return (connection_index == 0) ? video_sender1_ : video_sender2_;
468 } 468 }
469 }; 469 };
470 470
471 TEST_F(ChromotingHostTest, StartAndShutdown) { 471 TEST_F(ChromotingHostTest, StartAndShutdown) {
472 Expectation start = ExpectHostAndSessionManagerStart(); 472 Expectation start = ExpectHostAndSessionManagerStart();
473 EXPECT_CALL(host_status_observer_, OnShutdown()).After(start); 473 EXPECT_CALL(host_status_observer_, OnShutdown()).After(start);
474 474
475 host_->Start(xmpp_login_); 475 host_->Start(xmpp_login_);
476 ShutdownHost(); 476 ShutdownHost();
477 message_loop_.Run(); 477 message_loop_.Run();
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 ExpectClientDisconnected(0, true, video_packet_sent, 711 ExpectClientDisconnected(0, true, video_packet_sent,
712 InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost)); 712 InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost));
713 EXPECT_CALL(host_status_observer_, OnShutdown()); 713 EXPECT_CALL(host_status_observer_, OnShutdown());
714 714
715 host_->Start(xmpp_login_); 715 host_->Start(xmpp_login_);
716 SimulateClientConnection(0, true, false); 716 SimulateClientConnection(0, true, false);
717 message_loop_.Run(); 717 message_loop_.Run();
718 } 718 }
719 719
720 } // namespace remoting 720 } // namespace remoting
OLDNEW
« no previous file with comments | « no previous file | remoting/host/client_session.cc » ('j') | remoting/host/video_scheduler.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698