On Wed, 20 Jan 2010, Chris Conroy wrote:
> As for unit tests, I probably spent far too long trying fighting the test
> framework to no avail. A lot of it is pretty protocol-centric and I'm not
> much of a perl hacker. At first I figured I could just crib from the HTTP
> tests and tell it to use RTSP instead, but it turns out the test backend
> doesn't quite work that way..
The test suite pretty much works like this:
A raw and basic server for the prtocol is started. It is there to respond to
basic commands and to allow itself to get controlled to change behavior in
order to provide various test aspects. The test script then runs a given
command that uses this server, and then in the end it verifies that the
outputs and protocol parts etc all matched the way the test case says they
should look like.
For HTTP we have the 'sws' server to server simple HTTP. In order to support
somewhat complex things such as PUT, POST and multi-pass authentications it
has some specific HTTP knowledge but otherwise it mostly just serves the exact
content the test case tells it to.
> Unless I'm missing something, it seems like the SWS code will need to be
> modified to support RTSP. However, perhaps the more general ping-pong
> framework would suffice?
Given that RTSP is more like HTTP than the pingpong protocols (FTP, IMAP,
POP3, SMTP) I would assume that extending sws to provide an RTSP-mode would be
the appropriate route forward.
If extending or building on top of sws to create a dual-protocol server turns
out too nasty code-wise, I don't see any problems with simply making a version
of sws into a separate "rtspd" for RTSP and then basicaly handicraft that to
just do RTSP for the test suite purposes.
> P.S. While I'm on the subject. My autotools-fu is not that great, and in
> trying to make some test cases I found that to add one to the project I
> need to make distclean, buildconf, make curl, then make test. Is there
> any way to just re-run the buildconf for the tests/ directory only?
Let me give you the lengty explanation here too:
In order to just add a test case that uses the curl command line tool, you
just need to add a "test/data/testXXXX" file and then you can run the test
with "cd tests && ./runtests.pl XXXX". No need to make or buildconf anything.
I tend to just 'cd tests' and then run the individual tests in there while
working with specific tests or protocols to make sure that each works fine.
If you do a libcurl-test in the libtest/ dir, then you need to make sure that
is built before you can run it and then of course you need to 'make' to get it
If you modify the test server code or have change the libcurl code and wants
to re-run all tests, then you 'make' in the tests dir before you ./runtests.pl
In general, if you use configure's --enable-maintainer-mode among the
configure options you will also see that 'make' will rerun the autotool magic
pretty much automatically when you've modified the autotool input files.
List admin: http://cool.haxx.se/list/listinfo/curl-library
Received on 2010-01-21