Return-Path: X-Original-To: apmail-couchdb-commits-archive@www.apache.org Delivered-To: apmail-couchdb-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D7454180AB for ; Wed, 29 Jul 2015 15:54:33 +0000 (UTC) Received: (qmail 58572 invoked by uid 500); 29 Jul 2015 15:54:32 -0000 Delivered-To: apmail-couchdb-commits-archive@couchdb.apache.org Received: (qmail 58181 invoked by uid 500); 29 Jul 2015 15:54:31 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 56778 invoked by uid 99); 29 Jul 2015 15:54:31 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Jul 2015 15:54:31 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 25451E681D; Wed, 29 Jul 2015 15:54:31 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: rnewson@apache.org To: commits@couchdb.apache.org Date: Wed, 29 Jul 2015 15:54:55 -0000 Message-Id: <25812a7a18ea4d98a19e04baf2b7258f@git.apache.org> In-Reply-To: <818a56360c6d422eaf771d3373f64e74@git.apache.org> References: <818a56360c6d422eaf771d3373f64e74@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [26/50] mochiweb commit: updated refs/heads/upstream to b66b68d end to end test with text frames (ssl is broken) Project: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/commit/0be75c24 Tree: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/tree/0be75c24 Diff: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/diff/0be75c24 Branch: refs/heads/upstream Commit: 0be75c24c70aa5b4714843f3953052345aea190e Parents: ffaa90a Author: Bob Ippolito Authored: Sun Jan 11 18:09:03 2015 +1300 Committer: Bob Ippolito Committed: Sun Jan 11 18:09:03 2015 +1300 ---------------------------------------------------------------------- src/mochiweb_websocket.erl | 11 +++-------- test/mochiweb_test_util.erl | 8 ++++++-- test/mochiweb_websocket_tests.erl | 26 +++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/blob/0be75c24/src/mochiweb_websocket.erl ---------------------------------------------------------------------- diff --git a/src/mochiweb_websocket.erl b/src/mochiweb_websocket.erl index cc3127e..b7a4a62 100644 --- a/src/mochiweb_websocket.erl +++ b/src/mochiweb_websocket.erl @@ -27,6 +27,9 @@ -export([loop/5, upgrade_connection/2, request/5]). -export([send/3]). +-ifdef(TEST). +-compile(export_all). +-endif. loop(Socket, Body, State, WsVersion, ReplyChannel) -> ok = mochiweb_socket:setopts(Socket, [{packet, 0}, {active, once}]), @@ -276,11 +279,3 @@ parse_hixie(<<255, Rest/binary>>, Buffer) -> {Buffer, Rest}; parse_hixie(<>, Buffer) -> parse_hixie(T, <>). - -%% -%% Tests -%% --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). --compile(export_all). --endif. http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/blob/0be75c24/test/mochiweb_test_util.erl ---------------------------------------------------------------------- diff --git a/test/mochiweb_test_util.erl b/test/mochiweb_test_util.erl index 690f134..0801ab5 100644 --- a/test/mochiweb_test_util.erl +++ b/test/mochiweb_test_util.erl @@ -35,7 +35,9 @@ sock_fun(Transport, Port) -> ({send, Data}) -> gen_tcp:send(Socket, Data); ({setopts, L}) -> - inet:setopts(Socket, L) + inet:setopts(Socket, L); + (get) -> + Socket end; ssl -> {ok, Socket} = ssl:connect("127.0.0.1", Port, [{ssl_imp, new} | Opts]), @@ -46,7 +48,9 @@ sock_fun(Transport, Port) -> ({send, Data}) -> ssl:send(Socket, Data); ({setopts, L}) -> - ssl:setopts(Socket, L) + ssl:setopts(Socket, L); + (get) -> + {ssl, Socket} end end. http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/blob/0be75c24/test/mochiweb_websocket_tests.erl ---------------------------------------------------------------------- diff --git a/test/mochiweb_websocket_tests.erl b/test/mochiweb_websocket_tests.erl index 20967fb..4ca404b 100644 --- a/test/mochiweb_websocket_tests.erl +++ b/test/mochiweb_websocket_tests.erl @@ -99,10 +99,13 @@ end_to_end_server(Req) -> fun end_to_end_ws_loop/3), ReentryWs(ok). -end_to_end_ws_loop(_Payload, State, _ReplyChannel) -> +end_to_end_ws_loop(Payload, State, ReplyChannel) -> + %% Echo server + lists:foreach(ReplyChannel, Payload), State. end_to_end_client(S) -> + %% Key and Accept per https://tools.ietf.org/html/rfc6455 UpgradeReq = string:join( ["GET / HTTP/1.1", "Host: localhost", @@ -123,6 +126,27 @@ end_to_end_client(S) -> {"Sec-Websocket-Accept", "s3pPLMBiTxaQ9kYGzzhZRbK+xOo="}])), ?assertEqual([], gb_trees:to_list(D)), ok = S({setopts, [{packet, raw}]}), + %% The first message sent over telegraph :) + SmallMessage = <<"What hath God wrought?">>, + ok = S({send, + << 1:1, %% Fin + 0:1, %% Rsv1 + 0:1, %% Rsv2 + 0:1, %% Rsv3 + 2:4, %% Opcode, 1 = text frame + 1:1, %% Mask on + (byte_size(SmallMessage)):7, %% Length, <125 case + 0:32, %% Mask (trivial) + SmallMessage/binary >>}), + {ok, WsFrames} = S(recv), + << 1:1, %% Fin + 0:1, %% Rsv1 + 0:1, %% Rsv2 + 0:1, %% Rsv3 + 1:4, %% Opcode, text frame (all mochiweb suports for now) + MsgSize:8, %% Expecting small size + SmallMessage/binary >> = WsFrames, + ?assertEqual(MsgSize, byte_size(SmallMessage)), ok. gb_from_list(L) ->