commit ed70fa743fd5a05a56c2623c8191c0ace8f019c0 Author: aagbsn aagbsn@extc.org Date: Mon Apr 6 14:31:30 2015 +0000
Add draft of lantern test specification --- test-specs/ts-012-lantern.md | 111 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+)
diff --git a/test-specs/ts-012-lantern.md b/test-specs/ts-012-lantern.md new file mode 100644 index 0000000..51d41e8 --- /dev/null +++ b/test-specs/ts-012-lantern.md @@ -0,0 +1,111 @@ +# Specification version number + +2015-04-03-000 + +# Specification name + +Lantern Test + +# Test preconditions + +Downloaded or compiled the "lantern_linux" binary and made executable and in +the users PATH environment variable. + +# Expected impact + +Ability to measure whether Lantern is working from the given network vantage point. + +# Expected inputs + +A single URL to fetch, supplied by command line argument "--url (-u)". To test +Lantern, it must be a URL from the whitelisted set. +See: https://github.com/getlantern/flashlight/blob/master/genconfig/proxiedsites/ + +# Test description + +This test launches Lantern in --headless mode, and parses output to determine +if it has bootstrapped. After bootstrap, it fetches the URL supplied by the +--url option using Lanterns http proxy interface listening on 127.0.0.1.8787. + +The specific string used to determine bootstrap from Lantern output in version +"0.0.1" is "client (http) proxy at" from standard output. + +# Expected output + +## Parent data format + +None. + +## Required output data + +bootstrapped: +**boolean** The bootstrap status of Lantern (success or failure). + +lantern_linux --headless: +**dictionary** the parent key of Lanterns output that contains the keys stdout and stderr + +stdout: +**string** Output produced by Lanterns standard output. + +stderr: +**string** Error produced by Lanterns standard error. + +body: +**string** The page body of a successful HTTP request. + +failure: +**string** If failure, then the corresponding failure message. + + +## Data specification version number + +## Semantics + +'bootstrapped' - True or False - whether Lantern has bootstrapped. +'body' - http page body if successfully requested. +'failure' - optional, present if there is a failure. +'lantern_linux --headless': + 'stdout' - Contents of standard output produced by Lantern. + 'stderr' - Contents of standard error produced by Lantern. + + +## Possible conclusions + +We can determine whether or not Lantern is able to bootstrap, according to its output. +We can determine whether or not a given URL is reachable via Lantern. + +## Example output sample +``` +--- +input_hashes: [] +options: [-u, google.com] +probe_asn: AS1234 +probe_cc: US +probe_city: null +probe_ip: 127.0.0.1 +software_name: ooniprobe +software_version: 1.2.3-rc1 +start_time: 1428344311.0 +test_name: lantern_circumvention_tool_test +test_version: 0.0.1 +... +--- +body: "<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"\ + >\n<TITLE>301 Moved</TITLE></HEAD><BODY>\n<H1>301 Moved</H1>\nThe document has moved\n\ + <A HREF="http://www.google.com/%5C%22%3Ehere</A>.\r\n</BODY></HTML>\r\n" +bootstrapped: true +input: null +lantern_linux --headless: {exit_reason: process_done, stderr: '', stdout: ''} +``` + +## Expected Post-processing efforts + +# Privacy considerations + +Lantern does not seek to provide anonymity. Lantern contains tracking analytics +software and may connect directly to Lantern-provided proxy endpoints, or use +fronted domains via Content Delivery Networks (CDNs) as a data channel. + +# Packet capture considerations + +This test does not capture packets by default.