Make timestamp the last column again.
Add debug logs for stream types.
Add more extensive comments for POST data parsing and streams.
Return original formData without modification, if the POST
data is not parseable into key=value form.
Remove missing onload handler in the post data test.
Add test for parsing file uploads.
Add test for sending base64 encoded data.
Incorporated some code from: https://github.com/redline13/selenium-jmeter
Handle various content encodings for the POST data (encType).
This includes `text/plain`, `application/x-www-form-urlencoded` and
`multipart/form-data`.
Store "request headers from upload stream" in the database.
We add additional headers from POST body to existin headers column.
Discard OCSP (POST) requests to prevent noise.
Add tests for form submissions with different encodings by JavaScript.
Add tests for making POST requests with AJAX (jQuery) and FormData.
Add test for byte array POST data.
Handle exception when looking up the `Content-Type` response header.
Add shared/utils.js file. We can add common test functions to this file.
Fix some style inconsistencies.
Read the python modules to be tested from requirements.txt
Add tests to make sure firefox-bin directory and the Firefox
binary within exist.
Fix some PEP8 warnings in the test code.
Remove unused imports.
Log table name for DB inserts to terminal.
Update terminal colors used in the manual test to be more readable.
Switch to test directory before starting the web server.
Regenerate openwpm.xpi.
proxy instrumentation.
The naming of sql tables and browser params have been updated to reflect
that the extension HTTP instrumentation is preferred to the proxy. A few other
notable changes:
(1) Extension HTTP instrumentation is preferred, but still off-by-default
(2) The proxy is now off-by-default and shouldn't be used.
(3) browser_params['save_javascript'] uses the extension, proxy-based
javascript saving is controlled with browser_params['save_javascript_proxy']
(4) The "post processing pipeline" (which was only used to parse HTTP
cookies) has been removed and the TaskManager::close API updated.
Added a bunch of new tests to ensure Object.defineProperty still works
as expected after our instrumentation runs and removes Selenium's
webdriver property. Other tests refactored to better handle a few
conditions.
The document attribute is removed with a DOMAttrModified eventListener
that removes itself after the first call. The navigator attribute is
prevented from being set by altering Object.defineProperty until
Selenium attempts to set the attribute (at which point the alteration is
reversed).
Also includes automated tests. It seems the order of content script
execution is non-deterministic. Sometimes selenium will run first and
sometimes openwpm's will run first. We should be able to handle this by
monitoring the DOM for changes, but need to confirm the performance
degredation isn't too high.
Add a test for parse_http_stack_trace_str.
Add a test for http stackstrace instrumentation where we use different
methods to inject an element to trigger a request (appendChild and
innerHTML).
Test http stackstrace with an external script.
Combine http stackstrace tests in a single page.
Use a stack trace format similar to the javascript instrumentation.
Add a function to parse HTTP stack trace strings.
Add a test for the HTTP callstack instrumentation.
Conflicts:
automation/platform_utils.py
I chose to use `dill` instead of `pickle` for additional flexibility
in inline functions. Python's built-in `multiprocessing` library uses
`pickle`, so it was still a bottleneck. In particular functions defined
within class methods (e.g. within a test method) couldn't be pickled.
`multiprocess` is a fork of `multiprocessing` which mainly differs in
replacing `pickle` with `dill`. It's maintained by the same developers
as `dill`, so it seems like a safe replacement.
Conflicts:
test/expected.py
Install pytest for Travis tests.
Move python dependencies to requirements.txt.
Use mmh3 instead of pyhash
pyhash cannot be installed on Travis due to an outdated check
for libboost_python.so. mmh3 seems to be better maintained and
more widely used.