[webkit-dev] mod_pywebsocket for testing Web Socket implementation

Yuzo Fujishima yuzo at google.com
Mon Sep 7 22:41:28 PDT 2009


Hi, Maciej,

Thank you for your comment.

On Tue, Sep 8, 2009 at 2:18 PM, Maciej Stachowiak<mjs at apple.com> wrote:

> On Sep 7, 2009, at 10:00 PM, Mark Rowe wrote:



>> Python starting with v2.6 has reasonable built-in support for SSL
>> servers.
>>  This is the version that ships with Mac OS X 10.6.  Mac OS X 10.5 ships
>> with Python 2.5 (predating this built-in support) but includes pyOpenSSL.
>>  Mac OS X 10.4 ships with Python 2.3 and does not include
>> pyOpenSSL.  From
>> what I can see, Cygwin currently has Python 2.5 and does not appear to
>> support pyOpenSSL.

>> It seems that only a small portion of the WebSockets tests would need to
>> deal with SSL, while the majority of the tests would work fine on any
>> platform supporting Python 2.3.  For the SSL tests it would be
>> reasonable to
>> have tests that worked out of the box on only some platforms, especially
>> when those platforms are used by the majority of WebKit developers (Mac
>> OS X
>> >= 10.5 and Linux).  Doing this seems like a simpler approach than
>> requiring
>> two third-party Apache modules be built + configured on all platforms in
>> order to run even the basic tests.

> Building and installing some Apache modules doesn't seem like that big a
> deal to me, if it would really make testing more practical.

> However, it seems like using a premade websocket server implementation
> would
> make some forms of testing harder. In particular, it would be more
> difficult
> to test what happens in the face of malformed results from the server,
> which
> is a very important part of testing.

> So based on that, it probably makes more sense to do at least some of the
> testing and a lower level, so we can easily test invalid server responses.

Using mod_pywebsocket, we can write a server-side Web Socket handler
for a URL and put it in a corresponding directory under LayoutTests/...

A handler is a Python script and can send (or not send) arbitrary bytes,
malformed or not, to the browser.

A handler is called after Web Socket handshake. There is no way to send
malformed messages during handshake, as far as mod_pywebsocket is
functioning properly. We may need a different mechanism here.

How do you test a case where the Web server returns broken HTTP headers,
for example? Perhaps we can do similar for Web Sockets?

Yuzo


> Regards,
> Maciej






More information about the webkit-dev mailing list