From 80c3a9c9f87bd77f48a6dcfc0f0d04cb07f15d53 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 29 Apr 2012 17:38:41 +1200 Subject: README -> README.mkd --- README | 140 ------------------------------------------------------------- README.mkd | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+), 140 deletions(-) delete mode 100644 README create mode 100644 README.mkd diff --git a/README b/README deleted file mode 100644 index 3e25d581..00000000 --- a/README +++ /dev/null @@ -1,140 +0,0 @@ - -Pathod -====== - -Pathod is a pathological HTTP/S daemon, useful for testing and torturing client -software. At Pathod's core is a small, terse language for crafting HTTP -responses. The simplest way to use Pathod is to fire up the daemon, and specify -the respnse behaviour you want in the request URL, like this: - - http://localhost:9999/p/200 - -Everything below the magic "/p/" path component is a response specifier - in -this case we're just specifying a vanilly 200 OK response, see the docs below -to get fancier. You can also add anchors to the Pathod server that serve a -fixed response whenever a path matching a specified URL is requested: - - pathod --anchor /foo=200 - -Here, the part before the "=" is a regex specifying the anchor path, and the -part after is again a response specifier. - -Pathod has a nifty web interface built in, which exposes activity logs, online -help and various other goodies. Try it by visiting the server root: - - http://localhost:9999 - - - -Specifying Responses -==================== - -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. By default for a 200 response code, this is just "OK", but we can -change it like this: - - 200"YAY" - -The quoted string above is an example of a value specifier, a syntax that is -used pervasively in the Pathod response specification language. In this case, -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 below. - -Following the response code specifier is a colon-separateed 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 -shorcut 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:p120,50 - -If that's not long enough, we can tell Pathod to hang forever: - - 200:b@1m:p120,f - -Or to send all data, and then hang without disconnecting: - - 200:b@1m:p120,a - -We can also ask Pathod to hang randomly: - - 200:b@1m:pr,a - -Pathod has a similar mechanism for simply dropping a connection 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, -then hangs: - - 200:b@1m:p10,10:p20,10:d5000 - - -Features -======== - - hVALUE=VALUE Set header - bVALUE Set body - cVALUE Set Content-Type header - lVALUE Set Location header - - dOFF|r Disconnect after OFF bytes, measured from the beginning of the response. - pNUM|f,OFF|r|a Pause for NUM seconds after OFF bytes. - - -Value Specifiers ----------------- - - @500k - 500k of random data - @500k,utf8 - 500k of utf8. Other specifiers: utf8,alphanum,alpha,printable - "foo" - literal -