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

Side by Side Diff: webrtc/api/datachannel_unittest.cc

Issue 2413803002: DataChannel[Interface]::[message/bytes]_[sent/received]() added. (Closed)
Patch Set: Created 4 years, 2 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 | « webrtc/api/datachannel.cc ('k') | webrtc/api/datachannelinterface.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 /* 1 /*
2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 EXPECT_EQ(buffer.size(), webrtc_data_channel_->buffered_amount()); 188 EXPECT_EQ(buffer.size(), webrtc_data_channel_->buffered_amount());
189 EXPECT_EQ(1U, observer_->on_buffered_amount_change_count()); 189 EXPECT_EQ(1U, observer_->on_buffered_amount_change_count());
190 190
191 // Unblock the channel to send queued data again, there should be no crash. 191 // Unblock the channel to send queued data again, there should be no crash.
192 provider_->set_send_blocked(false); 192 provider_->set_send_blocked(false);
193 SetChannelReady(); 193 SetChannelReady();
194 EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount()); 194 EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount());
195 EXPECT_EQ(2U, observer_->on_buffered_amount_change_count()); 195 EXPECT_EQ(2U, observer_->on_buffered_amount_change_count());
196 } 196 }
197 197
198 // Tests that DataChannel::messages_sent() and DataChannel::bytes_sent() are
199 // correct, sending data both while unblocked and while blocked.
200 TEST_F(SctpDataChannelTest, VerifyMessagesAndBytesSent) {
201 AddObserver();
202 SetChannelReady();
203 std::vector<webrtc::DataBuffer> buffers({
204 webrtc::DataBuffer("message 1"),
205 webrtc::DataBuffer("msg 2"),
206 webrtc::DataBuffer("message three"),
207 webrtc::DataBuffer("quadra message"),
208 webrtc::DataBuffer("fifthmsg"),
209 webrtc::DataBuffer("message of the beast"),
210 });
211
212 // Send three buffers while not blocked.
213 provider_->set_send_blocked(false);
hta-webrtc 2016/10/12 17:25:28 check that messages_sent and bytes_sent are zero a
hbos 2016/10/12 18:25:07 Done. Did the same for messages_received and bytes
214 EXPECT_TRUE(webrtc_data_channel_->Send(buffers[0]));
215 EXPECT_TRUE(webrtc_data_channel_->Send(buffers[1]));
216 EXPECT_TRUE(webrtc_data_channel_->Send(buffers[2]));
217 size_t bytes_sent = buffers[0].size() + buffers[1].size() + buffers[2].size();
218 EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount());
hta-webrtc 2016/10/12 17:25:28 Is this 100% reliable, or do we need it to be EXPE
hbos 2016/10/12 18:25:07 Yes, but there are interfaces and stuff involved s
219 EXPECT_EQ(3U, webrtc_data_channel_->messages_sent());
220 EXPECT_EQ(bytes_sent, webrtc_data_channel_->bytes_sent());
221
222 // Send three buffers while blocked, queuing the buffers.
223 provider_->set_send_blocked(true);
224 EXPECT_TRUE(webrtc_data_channel_->Send(buffers[3]));
225 EXPECT_TRUE(webrtc_data_channel_->Send(buffers[4]));
226 EXPECT_TRUE(webrtc_data_channel_->Send(buffers[5]));
227 size_t bytes_queued =
228 buffers[3].size() + buffers[4].size() + buffers[5].size();
229 EXPECT_EQ(bytes_queued, webrtc_data_channel_->buffered_amount());
230 EXPECT_EQ(3U, webrtc_data_channel_->messages_sent());
231 EXPECT_EQ(bytes_sent, webrtc_data_channel_->bytes_sent());
232
233 // Unblock and make sure everything was sent.
234 provider_->set_send_blocked(false);
235 EXPECT_EQ_WAIT(0U, webrtc_data_channel_->buffered_amount(), 1000);
236 bytes_sent += bytes_queued;
237 EXPECT_EQ(6U, webrtc_data_channel_->messages_sent());
238 EXPECT_EQ(bytes_sent, webrtc_data_channel_->bytes_sent());
239 }
240
198 // Tests that the queued control message is sent when channel is ready. 241 // Tests that the queued control message is sent when channel is ready.
199 TEST_F(SctpDataChannelTest, OpenMessageSent) { 242 TEST_F(SctpDataChannelTest, OpenMessageSent) {
200 // Initially the id is unassigned. 243 // Initially the id is unassigned.
201 EXPECT_EQ(-1, webrtc_data_channel_->id()); 244 EXPECT_EQ(-1, webrtc_data_channel_->id());
202 245
203 SetChannelReady(); 246 SetChannelReady();
204 EXPECT_GE(webrtc_data_channel_->id(), 0); 247 EXPECT_GE(webrtc_data_channel_->id(), 0);
205 EXPECT_EQ(cricket::DMT_CONTROL, provider_->last_send_data_params().type); 248 EXPECT_EQ(cricket::DMT_CONTROL, provider_->last_send_data_params().type);
206 EXPECT_EQ(provider_->last_send_data_params().ssrc, 249 EXPECT_EQ(provider_->last_send_data_params().ssrc,
207 static_cast<uint32_t>(webrtc_data_channel_->id())); 250 static_cast<uint32_t>(webrtc_data_channel_->id()));
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 config.open_handshake_role = webrtc::InternalDataChannelInit::kNone; 410 config.open_handshake_role = webrtc::InternalDataChannelInit::kNone;
368 411
369 SetChannelReady(); 412 SetChannelReady();
370 rtc::scoped_refptr<DataChannel> dc = 413 rtc::scoped_refptr<DataChannel> dc =
371 DataChannel::Create(provider_.get(), cricket::DCT_SCTP, "test1", config); 414 DataChannel::Create(provider_.get(), cricket::DCT_SCTP, "test1", config);
372 415
373 EXPECT_EQ_WAIT(webrtc::DataChannelInterface::kOpen, dc->state(), 1000); 416 EXPECT_EQ_WAIT(webrtc::DataChannelInterface::kOpen, dc->state(), 1000);
374 EXPECT_EQ(0U, provider_->last_send_data_params().ssrc); 417 EXPECT_EQ(0U, provider_->last_send_data_params().ssrc);
375 } 418 }
376 419
420 // Tests that DataChannel::messages_received() and DataChannel::bytes_received()
421 // are correct, receiving data both while blocked and while unblocked.
422 TEST_F(SctpDataChannelTest, VerifyMessagesAndBytesReceived) {
423 AddObserver();
424 std::vector<webrtc::DataBuffer> buffers({
425 webrtc::DataBuffer("message 1"),
426 webrtc::DataBuffer("msg 2"),
427 webrtc::DataBuffer("message three"),
428 webrtc::DataBuffer("quadra message"),
429 webrtc::DataBuffer("fifthmsg"),
430 webrtc::DataBuffer("message of the beast"),
431 });
432
433 webrtc_data_channel_->SetSctpSid(1);
434 cricket::ReceiveDataParams params;
435 params.ssrc = 1;
436
437 // Receive three buffers while blocked.
438 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[0].data);
439 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[1].data);
440 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[2].data);
441 EXPECT_EQ(0U, observer_->messages_received());
442 EXPECT_EQ(0U, webrtc_data_channel_->messages_received());
443 EXPECT_EQ(0U, webrtc_data_channel_->bytes_received());
444
445 // Unblock and make sure everything was received.
446 SetChannelReady();
447 size_t bytes_received =
448 buffers[0].size() + buffers[1].size() + buffers[2].size();
449 EXPECT_EQ(3U, observer_->messages_received());
450 EXPECT_EQ(3U, webrtc_data_channel_->messages_received());
451 EXPECT_EQ(bytes_received, webrtc_data_channel_->bytes_received());
452
453 // Receive three buffers while unblocked.
454 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[3].data);
455 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[4].data);
456 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[5].data);
457 bytes_received += buffers[3].size() + buffers[4].size() + buffers[5].size();
458 EXPECT_EQ(6U, observer_->messages_received());
459 EXPECT_EQ(6U, webrtc_data_channel_->messages_received());
460 EXPECT_EQ(bytes_received, webrtc_data_channel_->bytes_received());
461 }
462
377 // Tests that OPEN_ACK message is sent if the datachannel is created from an 463 // Tests that OPEN_ACK message is sent if the datachannel is created from an
378 // OPEN message. 464 // OPEN message.
379 TEST_F(SctpDataChannelTest, OpenAckSentIfCreatedFromOpenMessage) { 465 TEST_F(SctpDataChannelTest, OpenAckSentIfCreatedFromOpenMessage) {
380 webrtc::InternalDataChannelInit config; 466 webrtc::InternalDataChannelInit config;
381 config.id = 1; 467 config.id = 1;
382 config.negotiated = true; 468 config.negotiated = true;
383 config.open_handshake_role = webrtc::InternalDataChannelInit::kAcker; 469 config.open_handshake_role = webrtc::InternalDataChannelInit::kAcker;
384 470
385 SetChannelReady(); 471 SetChannelReady();
386 rtc::scoped_refptr<DataChannel> dc = 472 rtc::scoped_refptr<DataChannel> dc =
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); 668 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
583 EXPECT_EQ(even_id, allocated_id); 669 EXPECT_EQ(even_id, allocated_id);
584 670
585 // Verifies that used higher ids are not reused. 671 // Verifies that used higher ids are not reused.
586 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id)); 672 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id));
587 EXPECT_EQ(odd_id + 6, allocated_id); 673 EXPECT_EQ(odd_id + 6, allocated_id);
588 674
589 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); 675 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
590 EXPECT_EQ(even_id + 6, allocated_id); 676 EXPECT_EQ(even_id + 6, allocated_id);
591 } 677 }
OLDNEW
« no previous file with comments | « webrtc/api/datachannel.cc ('k') | webrtc/api/datachannelinterface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698