OLD | NEW |
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 "net/websockets/websocket_job.h" | 5 #include "net/websockets/websocket_job.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
800 // OrderedSocketData provide socket level verifiation by checking out-going | 800 // OrderedSocketData provide socket level verifiation by checking out-going |
801 // packets in comparison with the MockWrite array and emulating in-coming | 801 // packets in comparison with the MockWrite array and emulating in-coming |
802 // packets with MockRead array. | 802 // packets with MockRead array. |
803 | 803 |
804 void WebSocketJobTest::TestConnectByWebSocket(ThrottlingOption throttling) { | 804 void WebSocketJobTest::TestConnectByWebSocket(ThrottlingOption throttling) { |
805 // This is a test for verifying cooperation between WebSocketJob and | 805 // This is a test for verifying cooperation between WebSocketJob and |
806 // SocketStream. If |throttling| was |THROTTLING_OFF|, it test basic | 806 // SocketStream. If |throttling| was |THROTTLING_OFF|, it test basic |
807 // situation. If |throttling| was |THROTTLING_ON|, throttling limits the | 807 // situation. If |throttling| was |THROTTLING_ON|, throttling limits the |
808 // latter connection. | 808 // latter connection. |
809 MockWrite writes[] = { | 809 MockWrite writes[] = { |
810 MockWrite(true, | 810 MockWrite(ASYNC, |
811 kHandshakeRequestWithoutCookie, | 811 kHandshakeRequestWithoutCookie, |
812 kHandshakeRequestWithoutCookieLength, | 812 kHandshakeRequestWithoutCookieLength, |
813 1), | 813 1), |
814 MockWrite(true, | 814 MockWrite(ASYNC, |
815 kDataHello, | 815 kDataHello, |
816 kDataHelloLength, | 816 kDataHelloLength, |
817 3) | 817 3) |
818 }; | 818 }; |
819 MockRead reads[] = { | 819 MockRead reads[] = { |
820 MockRead(true, | 820 MockRead(ASYNC, |
821 kHandshakeResponseWithoutCookie, | 821 kHandshakeResponseWithoutCookie, |
822 kHandshakeResponseWithoutCookieLength, | 822 kHandshakeResponseWithoutCookieLength, |
823 2), | 823 2), |
824 MockRead(true, | 824 MockRead(ASYNC, |
825 kDataWorld, | 825 kDataWorld, |
826 kDataWorldLength, | 826 kDataWorldLength, |
827 4), | 827 4), |
828 MockRead(false, 0, 5) // EOF | 828 MockRead(SYNCHRONOUS, 0, 5) // EOF |
829 }; | 829 }; |
830 data_.reset(new OrderedSocketData( | 830 data_.reset(new OrderedSocketData( |
831 reads, arraysize(reads), writes, arraysize(writes))); | 831 reads, arraysize(reads), writes, arraysize(writes))); |
832 | 832 |
833 GURL url("ws://example.com/demo"); | 833 GURL url("ws://example.com/demo"); |
834 MockSocketStreamDelegate delegate; | 834 MockSocketStreamDelegate delegate; |
835 WebSocketJobTest* test = this; | 835 WebSocketJobTest* test = this; |
836 if (throttling == THROTTLING_ON) | 836 if (throttling == THROTTLING_ON) |
837 delegate.SetOnStartOpenConnection( | 837 delegate.SetOnStartOpenConnection( |
838 base::Bind(&WebSocketJobTest::DoSync, base::Unretained(test))); | 838 base::Bind(&WebSocketJobTest::DoSync, base::Unretained(test))); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
873 } | 873 } |
874 | 874 |
875 void WebSocketJobTest::TestConnectBySpdy( | 875 void WebSocketJobTest::TestConnectBySpdy( |
876 SpdyOption spdy, ThrottlingOption throttling) { | 876 SpdyOption spdy, ThrottlingOption throttling) { |
877 // This is a test for verifying cooperation between WebSocketJob and | 877 // This is a test for verifying cooperation between WebSocketJob and |
878 // SocketStream in the situation we have SPDY session to the server. If | 878 // SocketStream in the situation we have SPDY session to the server. If |
879 // |throttling| was |THROTTLING_ON|, throttling limits the latter connection. | 879 // |throttling| was |THROTTLING_ON|, throttling limits the latter connection. |
880 // If you enabled spdy, you should specify |spdy| as |SPDY_ON|. Expected | 880 // If you enabled spdy, you should specify |spdy| as |SPDY_ON|. Expected |
881 // results depend on its configuration. | 881 // results depend on its configuration. |
882 MockWrite writes_websocket[] = { | 882 MockWrite writes_websocket[] = { |
883 MockWrite(true, | 883 MockWrite(ASYNC, |
884 kHandshakeRequestWithoutCookie, | 884 kHandshakeRequestWithoutCookie, |
885 kHandshakeRequestWithoutCookieLength, | 885 kHandshakeRequestWithoutCookieLength, |
886 1), | 886 1), |
887 MockWrite(true, | 887 MockWrite(ASYNC, |
888 kDataHello, | 888 kDataHello, |
889 kDataHelloLength, | 889 kDataHelloLength, |
890 3) | 890 3) |
891 }; | 891 }; |
892 MockRead reads_websocket[] = { | 892 MockRead reads_websocket[] = { |
893 MockRead(true, | 893 MockRead(ASYNC, |
894 kHandshakeResponseWithoutCookie, | 894 kHandshakeResponseWithoutCookie, |
895 kHandshakeResponseWithoutCookieLength, | 895 kHandshakeResponseWithoutCookieLength, |
896 2), | 896 2), |
897 MockRead(true, | 897 MockRead(ASYNC, |
898 kDataWorld, | 898 kDataWorld, |
899 kDataWorldLength, | 899 kDataWorldLength, |
900 4), | 900 4), |
901 MockRead(false, 0, 5) // EOF | 901 MockRead(SYNCHRONOUS, 0, 5) // EOF |
902 }; | 902 }; |
903 | 903 |
904 const spdy::SpdyStreamId kStreamId = 1; | 904 const spdy::SpdyStreamId kStreamId = 1; |
905 scoped_ptr<spdy::SpdyFrame> request_frame( | 905 scoped_ptr<spdy::SpdyFrame> request_frame( |
906 ConstructSpdyWebSocketHandshakeRequestFrame( | 906 ConstructSpdyWebSocketHandshakeRequestFrame( |
907 kHandshakeRequestForSpdy, | 907 kHandshakeRequestForSpdy, |
908 arraysize(kHandshakeRequestForSpdy) / 2, | 908 arraysize(kHandshakeRequestForSpdy) / 2, |
909 kStreamId, | 909 kStreamId, |
910 MEDIUM)); | 910 MEDIUM)); |
911 scoped_ptr<spdy::SpdyFrame> response_frame( | 911 scoped_ptr<spdy::SpdyFrame> response_frame( |
(...skipping 14 matching lines...) Expand all Loading... |
926 kDataWorldLength, | 926 kDataWorldLength, |
927 kStreamId, | 927 kStreamId, |
928 false)); | 928 false)); |
929 MockWrite writes_spdy[] = { | 929 MockWrite writes_spdy[] = { |
930 CreateMockWrite(*request_frame.get(), 1), | 930 CreateMockWrite(*request_frame.get(), 1), |
931 CreateMockWrite(*data_hello_frame.get(), 3), | 931 CreateMockWrite(*data_hello_frame.get(), 3), |
932 }; | 932 }; |
933 MockRead reads_spdy[] = { | 933 MockRead reads_spdy[] = { |
934 CreateMockRead(*response_frame.get(), 2), | 934 CreateMockRead(*response_frame.get(), 2), |
935 CreateMockRead(*data_world_frame.get(), 4), | 935 CreateMockRead(*data_world_frame.get(), 4), |
936 MockRead(false, 0, 5) // EOF | 936 MockRead(SYNCHRONOUS, 0, 5) // EOF |
937 }; | 937 }; |
938 | 938 |
939 if (spdy == SPDY_ON) | 939 if (spdy == SPDY_ON) |
940 data_.reset(new OrderedSocketData( | 940 data_.reset(new OrderedSocketData( |
941 reads_spdy, arraysize(reads_spdy), | 941 reads_spdy, arraysize(reads_spdy), |
942 writes_spdy, arraysize(writes_spdy))); | 942 writes_spdy, arraysize(writes_spdy))); |
943 else | 943 else |
944 data_.reset(new OrderedSocketData( | 944 data_.reset(new OrderedSocketData( |
945 reads_websocket, arraysize(reads_websocket), | 945 reads_websocket, arraysize(reads_websocket), |
946 writes_websocket, arraysize(writes_websocket))); | 946 writes_websocket, arraysize(writes_websocket))); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1085 | 1085 |
1086 TEST_F(WebSocketJobTest, ThrottlingSpdySpdyEnabled) { | 1086 TEST_F(WebSocketJobTest, ThrottlingSpdySpdyEnabled) { |
1087 WebSocketJob::set_websocket_over_spdy_enabled(true); | 1087 WebSocketJob::set_websocket_over_spdy_enabled(true); |
1088 TestConnectBySpdy(SPDY_ON, THROTTLING_ON); | 1088 TestConnectBySpdy(SPDY_ON, THROTTLING_ON); |
1089 } | 1089 } |
1090 | 1090 |
1091 // TODO(toyoshim): Add tests to verify throttling, SPDY stream limitation. | 1091 // TODO(toyoshim): Add tests to verify throttling, SPDY stream limitation. |
1092 // TODO(toyoshim,yutak): Add tests to verify closing handshake. | 1092 // TODO(toyoshim,yutak): Add tests to verify closing handshake. |
1093 | 1093 |
1094 } // namespace net | 1094 } // namespace net |
OLD | NEW |