| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2011 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 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 } | 555 } |
| 556 | 556 |
| 557 void CreateStreams() override { | 557 void CreateStreams() override { |
| 558 client_stream_ = | 558 client_stream_ = |
| 559 new SSLDummyStreamTLS(this, "c2s", &client_buffer_, &server_buffer_); | 559 new SSLDummyStreamTLS(this, "c2s", &client_buffer_, &server_buffer_); |
| 560 server_stream_ = | 560 server_stream_ = |
| 561 new SSLDummyStreamTLS(this, "s2c", &server_buffer_, &client_buffer_); | 561 new SSLDummyStreamTLS(this, "s2c", &server_buffer_, &client_buffer_); |
| 562 } | 562 } |
| 563 | 563 |
| 564 // Test data transfer for TLS | 564 // Test data transfer for TLS |
| 565 void TestTransfer(int size) override { | 565 virtual void TestTransfer(int size) { |
| 566 LOG(LS_INFO) << "Starting transfer test with " << size << " bytes"; | 566 LOG(LS_INFO) << "Starting transfer test with " << size << " bytes"; |
| 567 // Create some dummy data to send. | 567 // Create some dummy data to send. |
| 568 size_t received; | 568 size_t received; |
| 569 | 569 |
| 570 send_stream_.ReserveSize(size); | 570 send_stream_.ReserveSize(size); |
| 571 for (int i = 0; i < size; ++i) { | 571 for (int i = 0; i < size; ++i) { |
| 572 char ch = static_cast<char>(i); | 572 char ch = static_cast<char>(i); |
| 573 send_stream_.Write(&ch, 1, NULL, NULL); | 573 send_stream_.Write(&ch, 1, NULL, NULL); |
| 574 } | 574 } |
| 575 send_stream_.Rewind(); | 575 send_stream_.Rewind(); |
| 576 | 576 |
| 577 // Prepare the receive stream. | 577 // Prepare the receive stream. |
| 578 recv_stream_.ReserveSize(size); | 578 recv_stream_.ReserveSize(size); |
| 579 | 579 |
| 580 // Start sending | 580 // Start sending |
| 581 WriteData(); | 581 WriteData(); |
| 582 | 582 |
| 583 // Wait for the client to close | 583 // Wait for the client to close |
| 584 EXPECT_TRUE_WAIT(server_ssl_->GetState() == rtc::SS_CLOSED, 10000); | 584 EXPECT_TRUE_WAIT(server_ssl_->GetState() == rtc::SS_CLOSED, 10000); |
| 585 | 585 |
| 586 // Now check the data | 586 // Now check the data |
| 587 recv_stream_.GetSize(&received); | 587 recv_stream_.GetSize(&received); |
| 588 | 588 |
| 589 EXPECT_EQ(static_cast<size_t>(size), received); | 589 EXPECT_EQ(static_cast<size_t>(size), received); |
| 590 EXPECT_EQ(0, memcmp(send_stream_.GetBuffer(), | 590 EXPECT_EQ(0, memcmp(send_stream_.GetBuffer(), |
| 591 recv_stream_.GetBuffer(), size)); | 591 recv_stream_.GetBuffer(), size)); |
| 592 } | 592 } |
| 593 | 593 |
| 594 void WriteData() override { | 594 void WriteData() { |
| 595 size_t position, tosend, size; | 595 size_t position, tosend, size; |
| 596 rtc::StreamResult rv; | 596 rtc::StreamResult rv; |
| 597 size_t sent; | 597 size_t sent; |
| 598 char block[kBlockSize]; | 598 char block[kBlockSize]; |
| 599 | 599 |
| 600 send_stream_.GetSize(&size); | 600 send_stream_.GetSize(&size); |
| 601 if (!size) | 601 if (!size) |
| 602 return; | 602 return; |
| 603 | 603 |
| 604 for (;;) { | 604 for (;;) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 620 } | 620 } |
| 621 } else { | 621 } else { |
| 622 // Now close | 622 // Now close |
| 623 LOG(LS_INFO) << "Wrote " << position << " bytes. Closing"; | 623 LOG(LS_INFO) << "Wrote " << position << " bytes. Closing"; |
| 624 client_ssl_->Close(); | 624 client_ssl_->Close(); |
| 625 break; | 625 break; |
| 626 } | 626 } |
| 627 } | 627 } |
| 628 }; | 628 }; |
| 629 | 629 |
| 630 void ReadData(rtc::StreamInterface *stream) override { | 630 virtual void ReadData(rtc::StreamInterface *stream) { |
| 631 char buffer[1600]; | 631 char buffer[1600]; |
| 632 size_t bread; | 632 size_t bread; |
| 633 int err2; | 633 int err2; |
| 634 rtc::StreamResult r; | 634 rtc::StreamResult r; |
| 635 | 635 |
| 636 for (;;) { | 636 for (;;) { |
| 637 r = stream->Read(buffer, sizeof(buffer), &bread, &err2); | 637 r = stream->Read(buffer, sizeof(buffer), &bread, &err2); |
| 638 | 638 |
| 639 if (r == rtc::SR_ERROR || r == rtc::SR_EOS) { | 639 if (r == rtc::SR_ERROR || r == rtc::SR_EOS) { |
| 640 // Unfortunately, errors are the way that the stream adapter | 640 // Unfortunately, errors are the way that the stream adapter |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 684 packet_size_(1000), count_(0), sent_(0) { | 684 packet_size_(1000), count_(0), sent_(0) { |
| 685 } | 685 } |
| 686 | 686 |
| 687 void CreateStreams() override { | 687 void CreateStreams() override { |
| 688 client_stream_ = | 688 client_stream_ = |
| 689 new SSLDummyStreamDTLS(this, "c2s", &client_buffer_, &server_buffer_); | 689 new SSLDummyStreamDTLS(this, "c2s", &client_buffer_, &server_buffer_); |
| 690 server_stream_ = | 690 server_stream_ = |
| 691 new SSLDummyStreamDTLS(this, "s2c", &server_buffer_, &client_buffer_); | 691 new SSLDummyStreamDTLS(this, "s2c", &server_buffer_, &client_buffer_); |
| 692 } | 692 } |
| 693 | 693 |
| 694 void WriteData() override { | 694 virtual void WriteData() { |
| 695 unsigned char *packet = new unsigned char[1600]; | 695 unsigned char *packet = new unsigned char[1600]; |
| 696 | 696 |
| 697 while (sent_ < count_) { | 697 while (sent_ < count_) { |
| 698 unsigned int rand_state = sent_; | 698 unsigned int rand_state = sent_; |
| 699 packet[0] = sent_; | 699 packet[0] = sent_; |
| 700 for (size_t i = 1; i < packet_size_; i++) { | 700 for (size_t i = 1; i < packet_size_; i++) { |
| 701 // This is a simple LC PRNG. Keep in synch with identical code below. | 701 // This is a simple LC PRNG. Keep in synch with identical code below. |
| 702 rand_state = (rand_state * 251 + 19937) >> 7; | 702 rand_state = (rand_state * 251 + 19937) >> 7; |
| 703 packet[i] = rand_state & 0xff; | 703 packet[i] = rand_state & 0xff; |
| 704 } | 704 } |
| 705 | 705 |
| 706 size_t sent; | 706 size_t sent; |
| 707 rtc::StreamResult rv = client_ssl_->Write(packet, packet_size_, &sent, 0); | 707 rtc::StreamResult rv = client_ssl_->Write(packet, packet_size_, &sent, 0); |
| 708 if (rv == rtc::SR_SUCCESS) { | 708 if (rv == rtc::SR_SUCCESS) { |
| 709 LOG(LS_VERBOSE) << "Sent: " << sent_; | 709 LOG(LS_VERBOSE) << "Sent: " << sent_; |
| 710 sent_++; | 710 sent_++; |
| 711 } else if (rv == rtc::SR_BLOCK) { | 711 } else if (rv == rtc::SR_BLOCK) { |
| 712 LOG(LS_VERBOSE) << "Blocked..."; | 712 LOG(LS_VERBOSE) << "Blocked..."; |
| 713 break; | 713 break; |
| 714 } else { | 714 } else { |
| 715 ADD_FAILURE(); | 715 ADD_FAILURE(); |
| 716 break; | 716 break; |
| 717 } | 717 } |
| 718 } | 718 } |
| 719 | 719 |
| 720 delete [] packet; | 720 delete [] packet; |
| 721 } | 721 } |
| 722 | 722 |
| 723 void ReadData(rtc::StreamInterface *stream) override { | 723 virtual void ReadData(rtc::StreamInterface *stream) { |
| 724 unsigned char buffer[2000]; | 724 unsigned char buffer[2000]; |
| 725 size_t bread; | 725 size_t bread; |
| 726 int err2; | 726 int err2; |
| 727 rtc::StreamResult r; | 727 rtc::StreamResult r; |
| 728 | 728 |
| 729 for (;;) { | 729 for (;;) { |
| 730 r = stream->Read(buffer, 2000, &bread, &err2); | 730 r = stream->Read(buffer, 2000, &bread, &err2); |
| 731 | 731 |
| 732 if (r == rtc::SR_ERROR) { | 732 if (r == rtc::SR_ERROR) { |
| 733 // Unfortunately, errors are the way that the stream adapter | 733 // Unfortunately, errors are the way that the stream adapter |
| (...skipping 15 matching lines...) Expand all Loading... |
| 749 unsigned int rand_state = packet_num; | 749 unsigned int rand_state = packet_num; |
| 750 for (size_t i = 1; i < packet_size_; i++) { | 750 for (size_t i = 1; i < packet_size_; i++) { |
| 751 // This is a simple LC PRNG. Keep in synch with identical code above. | 751 // This is a simple LC PRNG. Keep in synch with identical code above. |
| 752 rand_state = (rand_state * 251 + 19937) >> 7; | 752 rand_state = (rand_state * 251 + 19937) >> 7; |
| 753 ASSERT_EQ(rand_state & 0xff, buffer[i]); | 753 ASSERT_EQ(rand_state & 0xff, buffer[i]); |
| 754 } | 754 } |
| 755 received_.insert(packet_num); | 755 received_.insert(packet_num); |
| 756 } | 756 } |
| 757 } | 757 } |
| 758 | 758 |
| 759 void TestTransfer(int count) override { | 759 virtual void TestTransfer(int count) { |
| 760 count_ = count; | 760 count_ = count; |
| 761 | 761 |
| 762 WriteData(); | 762 WriteData(); |
| 763 | 763 |
| 764 EXPECT_TRUE_WAIT(sent_ == count_, 10000); | 764 EXPECT_TRUE_WAIT(sent_ == count_, 10000); |
| 765 LOG(LS_INFO) << "sent_ == " << sent_; | 765 LOG(LS_INFO) << "sent_ == " << sent_; |
| 766 | 766 |
| 767 if (damage_) { | 767 if (damage_) { |
| 768 WAIT(false, 2000); | 768 WAIT(false, 2000); |
| 769 EXPECT_EQ(0U, received_.size()); | 769 EXPECT_EQ(0U, received_.size()); |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)))); | 1158 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)))); |
| 1159 INSTANTIATE_TEST_CASE_P( | 1159 INSTANTIATE_TEST_CASE_P( |
| 1160 SSLStreamAdapterTestsDTLS, | 1160 SSLStreamAdapterTestsDTLS, |
| 1161 SSLStreamAdapterTestDTLS, | 1161 SSLStreamAdapterTestDTLS, |
| 1162 Combine(Values(rtc::KeyParams::RSA(1024, 65537), | 1162 Combine(Values(rtc::KeyParams::RSA(1024, 65537), |
| 1163 rtc::KeyParams::RSA(1152, 65537), | 1163 rtc::KeyParams::RSA(1152, 65537), |
| 1164 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)), | 1164 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)), |
| 1165 Values(rtc::KeyParams::RSA(1024, 65537), | 1165 Values(rtc::KeyParams::RSA(1024, 65537), |
| 1166 rtc::KeyParams::RSA(1152, 65537), | 1166 rtc::KeyParams::RSA(1152, 65537), |
| 1167 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)))); | 1167 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)))); |
| OLD | NEW |