Re: [hybi] interop tests - fragments

Greg Wilkins <gregw@intalio.com> Mon, 14 March 2011 13:39 UTC

Return-Path: <gregw@intalio.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D53203A6D18 for <hybi@core3.amsl.com>; Mon, 14 Mar 2011 06:39:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.371
X-Spam-Level:
X-Spam-Status: No, score=-2.371 tagged_above=-999 required=5 tests=[AWL=0.006, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_34=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3RHLN190zjXp for <hybi@core3.amsl.com>; Mon, 14 Mar 2011 06:39:34 -0700 (PDT)
Received: from mail-vw0-f44.google.com (mail-vw0-f44.google.com [209.85.212.44]) by core3.amsl.com (Postfix) with ESMTP id 2CF823A6958 for <hybi@ietf.org>; Mon, 14 Mar 2011 06:39:31 -0700 (PDT)
Received: by vws12 with SMTP id 12so2969144vws.31 for <hybi@ietf.org>; Mon, 14 Mar 2011 06:40:54 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.175.104 with SMTP id bz8mr7670768vdc.143.1300110054020; Mon, 14 Mar 2011 06:40:54 -0700 (PDT)
Received: by 10.52.169.39 with HTTP; Mon, 14 Mar 2011 06:40:53 -0700 (PDT)
In-Reply-To: <AANLkTimV5iCRr5fQ=hmwyPN90TovL4nv-FrdiSMgWAfY@mail.gmail.com>
References: <1299520117.2606.130.camel@ds9.ducksong.com> <4D7552FD.9090002@warmcat.com> <AANLkTi=x-9hJCiB2dCk=N4YK2xo8x46_mp3zCJGN2afP@mail.gmail.com> <AANLkTimV5iCRr5fQ=hmwyPN90TovL4nv-FrdiSMgWAfY@mail.gmail.com>
Date: Tue, 15 Mar 2011 00:40:53 +1100
Message-ID: <AANLkTi==Qauczy=NY1L9OH9V8HaPRSWchxtuUsxHtNEh@mail.gmail.com>
From: Greg Wilkins <gregw@intalio.com>
To: hybi <hybi@ietf.org>
Content-Type: text/plain; charset="ISO-8859-1"
Subject: Re: [hybi] interop tests - fragments
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Mar 2011 13:39:35 -0000

Since not everybody doing interop will be familiar with Java,  I
thought I'd post some more explicit instructions of how to run the
jetty test client/server, plus descriptions of the test protocols that
they are using.

You can get the latest jetty aggregate jar with:
  wget -O jetty-all.jar
https://oss.sonatype.org/content/groups/jetty-with-staging/org/eclipse/jetty/aggregate/jetty-all/7.3.2-SNAPSHOT/jetty-all-7.3.2-20110314.133648-9.jar

you also need a servlet jar:
  wget --user-agent=something
http://repo2.maven.org/maven2/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar


The server can then be run with

  java -cp jetty-all.jar:servlet-api-2.5.jar
org.eclipse.jetty.websocket.TestServer --port 8080


And the client with:

  java -cp jetty-all.jar:servlet-api-2.5.jar
org.eclipse.jetty.websocket.TestClient --help
  ERROR: [--help]
  USAGE: java -cp CLASSPATH class
org.eclipse.jetty.websocket.TestClient [ OPTIONS ]
    -h|--host HOST  (default localhost)
    -p|--port PORT  (default 8080)
    -b|--binary
    -v|--verbose
    -c|--count n    (default 10)
    -s|--size n     (default 64)
    -f|--fragment n (default 4000)
    -P|--protocol echo|echo-assemble|echo-fragment|echo-broadcast


The protocols supported are the ones I proposed earlier:

    org.ietf.websocket.test-echo
        Websocket messages are sent by the client and the server will
echo every frame.

    org.ietf.websocket.test-echo-broadcast
        Websocket messages are sent by the client and the server will
echo every frame to every connection.

    org.ietf.websocket.test-echo-assemble
        Websocket messages are sent by the client and the server will
echo assembled messages as a single frame.

    org.ietf.websocket.test-echo-fragment
        Websocket messages are sent and the server will echo each
message fragmented into 2 frames.


If there is no interest in making these common, then I'll drom the
org.ietf prefix

An example of running the test client is

[558] java -cp jetty-all.jar:servlet-api-2.5.jar
org.eclipse.jetty.websocket.TestClient --port 8080 --binary --count 3
--size 120 --fragment 40 --protocol echo-fragment
Jetty WebSocket PING localhost:8080 (localhost/127.0.0.1:8080) 120
bytes of data.
handshake OK for protocol 'org.ietf.websocket.test-echo-fragment'
120 bytes from localhost: frames=2 req=1 time=52.0ms opcode=0x05
120 bytes from localhost: frames=2 req=2 time=38.2ms opcode=0x05
120 bytes from localhost: frames=2 req=3 time=37.4ms opcode=0x05
--- localhost websocket ping statistics using 1 connection ---
9 frames transmitted, 6 received, 3 messages transmitted, 3 received,
time 3009ms
rtt min/ave/max = 37.448/42.534/51.974 ms

So 3x120B binary messages were sent in 3x40B fragments, for a total of
9 frames sent.  The echo-fragment protocol received these 3 messages
and echoed each back in 2 fragments, for 6 frames received.


cheers