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

Side by Side Diff: remoting/protocol/jingle_session_unittest.cc

Issue 9568041: Fix flakiness of the TestFailedChannelAuth unittest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 8 years, 9 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 | « no previous file | no next file » | no next file with comments »
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 "remoting/protocol/jingle_session.h" 5 #include "remoting/protocol/jingle_session.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 // Send 100 messages 1024 bytes each. UDP messages are sent with 10ms delay 45 // Send 100 messages 1024 bytes each. UDP messages are sent with 10ms delay
46 // between messages (about 1 second for 100 messages). 46 // between messages (about 1 second for 100 messages).
47 const int kMessageSize = 1024; 47 const int kMessageSize = 1024;
48 const int kMessages = 100; 48 const int kMessages = 100;
49 const char kChannelName[] = "test_channel"; 49 const char kChannelName[] = "test_channel";
50 50
51 void QuitCurrentThread() { 51 void QuitCurrentThread() {
52 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 52 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure());
53 } 53 }
54 54
55 ACTION(QuitThread) {
56 QuitCurrentThread();
57 }
58
55 ACTION_P(QuitThreadOnCounter, counter) { 59 ACTION_P(QuitThreadOnCounter, counter) {
56 --(*counter); 60 --(*counter);
57 EXPECT_GE(*counter, 0); 61 EXPECT_GE(*counter, 0);
58 if (*counter == 0) 62 if (*counter == 0)
59 QuitCurrentThread(); 63 QuitCurrentThread();
60 } 64 }
61 65
62 class MockSessionManagerListener : public SessionManager::Listener { 66 class MockSessionManagerListener : public SessionManager::Listener {
63 public: 67 public:
64 MOCK_METHOD0(OnSessionManagerReady, void()); 68 MOCK_METHOD0(OnSessionManagerReady, void());
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 227
224 client_session_ = client_server_->Connect( 228 client_session_ = client_server_->Connect(
225 kHostJid, authenticator.Pass(), 229 kHostJid, authenticator.Pass(),
226 CandidateSessionConfig::CreateDefault(), 230 CandidateSessionConfig::CreateDefault(),
227 base::Bind(&MockSessionCallback::OnStateChange, 231 base::Bind(&MockSessionCallback::OnStateChange,
228 base::Unretained(&client_connection_callback_))); 232 base::Unretained(&client_connection_callback_)));
229 233
230 message_loop_->RunAllPending(); 234 message_loop_->RunAllPending();
231 } 235 }
232 236
233 void CreateChannel(bool expect_fail) { 237 void CreateChannel() {
234 client_session_->CreateStreamChannel(kChannelName, base::Bind( 238 client_session_->CreateStreamChannel(kChannelName, base::Bind(
235 &JingleSessionTest::OnClientChannelCreated, base::Unretained(this))); 239 &JingleSessionTest::OnClientChannelCreated, base::Unretained(this)));
236 host_session_->CreateStreamChannel(kChannelName, base::Bind( 240 host_session_->CreateStreamChannel(kChannelName, base::Bind(
237 &JingleSessionTest::OnHostChannelCreated, base::Unretained(this))); 241 &JingleSessionTest::OnHostChannelCreated, base::Unretained(this)));
238 242
239 int counter = 2; 243 int counter = 2;
240 EXPECT_CALL(client_channel_callback_, OnDone(_)) 244 EXPECT_CALL(client_channel_callback_, OnDone(_))
241 .WillOnce(QuitThreadOnCounter(&counter)); 245 .WillOnce(QuitThreadOnCounter(&counter));
242 EXPECT_CALL(host_channel_callback_, OnDone(_)) 246 EXPECT_CALL(host_channel_callback_, OnDone(_))
243 .WillOnce(QuitThreadOnCounter(&counter)); 247 .WillOnce(QuitThreadOnCounter(&counter));
244 message_loop_->Run(); 248 message_loop_->Run();
245 249
246 if (expect_fail) { 250 EXPECT_TRUE(client_socket_.get());
247 // At least one socket should fail to connect. 251 EXPECT_TRUE(host_socket_.get());
248 EXPECT_TRUE((!client_socket_.get()) || (!host_socket_.get()));
249 } else {
250 EXPECT_TRUE(client_socket_.get());
251 EXPECT_TRUE(host_socket_.get());
252 }
253 } 252 }
254 253
255 scoped_ptr<JingleThreadMessageLoop> message_loop_; 254 scoped_ptr<JingleThreadMessageLoop> message_loop_;
256 255
257 scoped_ptr<FakeSignalStrategy> host_signal_strategy_; 256 scoped_ptr<FakeSignalStrategy> host_signal_strategy_;
258 scoped_ptr<FakeSignalStrategy> client_signal_strategy_; 257 scoped_ptr<FakeSignalStrategy> client_signal_strategy_;
259 258
260 scoped_ptr<JingleSessionManager> host_server_; 259 scoped_ptr<JingleSessionManager> host_server_;
261 MockSessionManagerListener host_server_listener_; 260 MockSessionManagerListener host_server_listener_;
262 scoped_ptr<JingleSessionManager> client_server_; 261 scoped_ptr<JingleSessionManager> client_server_;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 CreateSessionManagers(3, FakeAuthenticator::REJECT); 343 CreateSessionManagers(3, FakeAuthenticator::REJECT);
345 InitiateConnection(3, FakeAuthenticator::ACCEPT, true); 344 InitiateConnection(3, FakeAuthenticator::ACCEPT, true);
346 } 345 }
347 346
348 // Verify that data can be sent over stream channel. 347 // Verify that data can be sent over stream channel.
349 TEST_F(JingleSessionTest, TestStreamChannel) { 348 TEST_F(JingleSessionTest, TestStreamChannel) {
350 CreateSessionManagers(1, FakeAuthenticator::ACCEPT); 349 CreateSessionManagers(1, FakeAuthenticator::ACCEPT);
351 ASSERT_NO_FATAL_FAILURE( 350 ASSERT_NO_FATAL_FAILURE(
352 InitiateConnection(1, FakeAuthenticator::ACCEPT, false)); 351 InitiateConnection(1, FakeAuthenticator::ACCEPT, false));
353 352
354 ASSERT_NO_FATAL_FAILURE(CreateChannel(false)); 353 ASSERT_NO_FATAL_FAILURE(CreateChannel());
355 354
356 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), 355 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(),
357 kMessageSize, kMessages); 356 kMessageSize, kMessages);
358 tester.Start(); 357 tester.Start();
359 message_loop_->Run(); 358 message_loop_->Run();
360 tester.CheckResults(); 359 tester.CheckResults();
361 } 360 }
362 361
363 // Verify that we can connect channels with multistep auth. 362 // Verify that we can connect channels with multistep auth.
364 TEST_F(JingleSessionTest, TestMultistepAuthStreamChannel) { 363 TEST_F(JingleSessionTest, TestMultistepAuthStreamChannel) {
365 CreateSessionManagers(3, FakeAuthenticator::ACCEPT); 364 CreateSessionManagers(3, FakeAuthenticator::ACCEPT);
366 ASSERT_NO_FATAL_FAILURE( 365 ASSERT_NO_FATAL_FAILURE(
367 InitiateConnection(3, FakeAuthenticator::ACCEPT, false)); 366 InitiateConnection(3, FakeAuthenticator::ACCEPT, false));
368 367
369 ASSERT_NO_FATAL_FAILURE(CreateChannel(false)); 368 ASSERT_NO_FATAL_FAILURE(CreateChannel());
370 369
371 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), 370 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(),
372 kMessageSize, kMessages); 371 kMessageSize, kMessages);
373 tester.Start(); 372 tester.Start();
374 message_loop_->Run(); 373 message_loop_->Run();
375 tester.CheckResults(); 374 tester.CheckResults();
376 } 375 }
377 376
378 // Verify that we shutdown properly when channel authentication fails. 377 // Verify that we shutdown properly when channel authentication fails.
379 TEST_F(JingleSessionTest, TestFailedChannelAuth) { 378 TEST_F(JingleSessionTest, TestFailedChannelAuth) {
380 CreateSessionManagers(1, FakeAuthenticator::ACCEPT); 379 CreateSessionManagers(1, FakeAuthenticator::REJECT_CHANNEL);
381 ASSERT_NO_FATAL_FAILURE( 380 ASSERT_NO_FATAL_FAILURE(
382 InitiateConnection(1, FakeAuthenticator::REJECT_CHANNEL, false)); 381 InitiateConnection(1, FakeAuthenticator::ACCEPT, false));
383 382
384 ASSERT_NO_FATAL_FAILURE(CreateChannel(true)); 383 client_session_->CreateStreamChannel(kChannelName, base::Bind(
384 &JingleSessionTest::OnClientChannelCreated, base::Unretained(this)));
385 host_session_->CreateStreamChannel(kChannelName, base::Bind(
386 &JingleSessionTest::OnHostChannelCreated, base::Unretained(this)));
387
388 // Terminate the message loop when we get rejection notification
389 // from the host.
390 EXPECT_CALL(host_channel_callback_, OnDone(NULL))
391 .WillOnce(QuitThread());
392 EXPECT_CALL(client_channel_callback_, OnDone(_))
393 .Times(AtMost(1));
394
395 message_loop_->Run();
396
397 EXPECT_TRUE(!host_socket_.get());
385 } 398 }
386 399
387 } // namespace protocol 400 } // namespace protocol
388 } // namespace remoting 401 } // namespace remoting
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698