diff --git a/libpathod/templates/docs_pathod.html b/libpathod/templates/docs_pathod.html index 1c8f01c7c..c35d9ab83 100644 --- a/libpathod/templates/docs_pathod.html +++ b/libpathod/templates/docs_pathod.html @@ -32,97 +32,6 @@ various other goodies. Try it by visiting the server root:
http://localhost:9999-
The general form of a response is as follows: - -
code[MESSAGE]:[colon-separated list of features]- -
Here's the simplest possible response specification, returning just an HTTP 200 - OK message with no headers and no content: - -
200- -
We can embellish this a bit by specifying an optional custom HTTP response - message (if we don't, pathod automatically creates an appropriate one). By - default for a 200 response code the message is "OK", but we can change it like - this:
- -200"YAY"- -
The quoted string here is an example of a Value - Specifier, a syntax that is used throughout the pathod response - specification language. In this case, the quotes mean we're specifying a - literal string, but there are many other fun things we can do. For example, we - can tell pathod to generate 100k of random ASCII letters instead:
- -200:@100k,ascii_letters- -
Full documentation on the value specification syntax can be found in the next - section. - - Following the response code specifier is a colon-separated list of features. - For instance, this specifies a response with a body consisting of 1 megabyte of - random data:
- -200:b@1m- -
And this is the same response with an ETag header added:
- -200:b@1m:h"Etag"="foo"- -
Both the header name and the header value are full value specifiers. Here's the - same response again, but with a 1k randomly generated header name:
- -200:b@1m:h@1k,ascii_letters="foo"- -
A few specific headers have shortcuts, because they're used so often. The - shortcut for the content-type header is "c":
- -200:b@1m:c"text/json"- -
That's it for the basic response definition. Now we can start mucking with the - responses to break clients. One common hard-to-test circumstance is hangs or - slow responses. pathod has a pause operator that you can use to define - precisely when and how long the server should hang. Here, for instance, we hang - for 120 seconds after sending 50 bytes (counted from the first byte of the HTTP - response):
- -200:b@1m:p50,120- -
If that's not long enough, we can tell pathod to hang forever:
- -200:b@1m:pf,120- -
Or to send all data, and then hang without disconnecting:
- -200:b@1m:pa,120- -
We can also ask pathod to hang randomly:
- -200:b@1m:pr,10- -
There is a similar mechanism for dropping connections mid-response. So, we can - tell pathod to disconnect after sending 50 bytes:
- -200:b@1m:d50- -
Or randomly:
- -200:b@1m:dr- -
All of these features can be combined. Here's a response that pauses twice, - once at 10 bytes and once at 20, then disconnects at 5000:
- -200:b@1m:p10,10:p20,10:d5000- - - -
Check out the complete language docs. Here + are some examples to get you started:
+get:/ | Get path / | ||||||||||||||||||
get:/:b@100 | 100 random bytes as the body | ||||||||||||||||||
get:/:h"User-Agent"="';drop table browsers;" | Add a User-Agent header | ||||||||||||||||||
get:/:b@100:dr | Drop the connection randomly | ||||||||||||||||||
+ | + | ||||||||||||||||||
get:/:b@100,ascii:ir,@1 | 100 ASCII bytes as the body, and randomly inject a random byte | diff --git a/libpathod/templates/response_previewform.html b/libpathod/templates/response_previewform.html index 93d5960a1..3b664433b 100644 --- a/libpathod/templates/response_previewform.html +++ b/libpathod/templates/response_previewform.html @@ -13,38 +13,51 @@ {% endif %} -more examples... +Don't know what to type?
200 | A basic HTTP 200 response |
200:b@100 | 100 random bytes as the body |
200:b@100:h"Etag"="';drop table servers;" | Add a Server header |
200:b@100:dr | Drop the connection randomly |
200:b@100,ascii:ir,@1 | 100 ASCII bytes as the body, and randomly inject a random byte |
200:b@1k:c"text/json" | +1k of random bytes, with a text/json content type | +
200:b@1k:p50,120 | +1k of random bytes, pause for 120 seconds after 50 bytes | +
200:b@1k:pr,f | +1k of random bytes, but hang forever at a random location | +
+ 200:b@100:h@1k,ascii_letters='foo' + | +100 ASCII bytes as the body, randomly generated 100k header name, with the value 'foo'. | +