Skip to content

Instantly share code, notes, and snippets.

@oschaaf
Last active August 29, 2015 14:16
Show Gist options
  • Save oschaaf/992d8a1adc2e386227ec to your computer and use it in GitHub Desktop.
Save oschaaf/992d8a1adc2e386227ec to your computer and use it in GitHub Desktop.
testing psol request header input to options
import re
import pytest
import config
import test_helpers as helpers
filters = [
("add_instrumentation","ai"),
("canonicalize_javascript_libraries","ij"),
("collapse_whitespace","cw"),
("combine_css","cc"),
("combine_heads","ch"),
]
def inspect_via_debug_filter(url, filter_name, filter_code, headers = None):
resp, body = helpers.get_primary(url, headers = headers)
# Debug filter enabled
assert body.count("#NumFlushes") == 1
# normalize line endings
body = body.replace("\r","")
assert resp.status == 200
# debug filter emits the enabled filters
pattern = r'Filters:\n(.*?)\n\n'
match = re.search(pattern, body, re.DOTALL)
# Validate that the debug filter states the specified filter was enabled.
assert match
print match.group(1)
expect = "%s\t" % filter_code
assert match.group(1).count(expect) == 1
def inspect_via_rewriting(url, filter_name, filter_code, headers = None):
# Now compare the passthrough output to the output with the filter enabled
# As all examples are supposed to be doing something, there should be a
# difference.
url_passthrough = ("%s/%s.html?PageSpeedFilters=" %
(config.EXAMPLE_ROOT, filter_name))
passthrough_resp, passthrough_body = helpers.get_primary(url_passthrough)
assert passthrough_resp.status == 200
# No debug filter enabled
assert passthrough_body.count("#NumFlushes") == 0
# Next, we'll do a blocking fetch with the specified filter enabled.
# As all examples are supposed to do domething, the output should be
# different.
if headers == None:
headers = {}
headers["X-PSA-Blocking-Rewrite"] = "psatest"
resp, body = helpers.get_primary(url, headers = headers)
# No debug filter enabled
assert body.count("#NumFlushes") == 0
assert body != passthrough_body
def test_pagespeed_query_input():
for filter_name, filter_code in filters:
url = ("%s/%s.html?PageSpeedFilters=debug,%s"
% (config.EXAMPLE_ROOT, filter_name, filter_name))
inspect_via_debug_filter(url, filter_name, filter_code)
url = ("%s/%s.html?PageSpeedFilters=%s"
% (config.EXAMPLE_ROOT, filter_name, filter_name))
inspect_via_rewriting(url, filter_name, filter_code)
def test_modpagespeed_query_input():
for filter_name, filter_code in filters:
url = ("%s/%s.html?ModPagespeedFilters=debug,%s"
% (config.EXAMPLE_ROOT, filter_name, filter_name))
inspect_via_debug_filter(url, filter_name, filter_code)
url = ("%s/%s.html?ModPagespeedFilters=%s"
% (config.EXAMPLE_ROOT, filter_name, filter_name))
inspect_via_rewriting(url, filter_name, filter_code)
def test_pagespeed_request_header_input():
for filter_name, filter_code in filters:
url = "%s/%s.html" % (config.EXAMPLE_ROOT, filter_name)
headers = {"PageSpeedFilters" : "debug,%s" % filter_name}
inspect_via_debug_filter(url, filter_name, filter_code, headers)
headers = {"PageSpeedFilters" : "%s" % filter_name}
inspect_via_rewriting(url, filter_name, filter_code, headers)
def test_modpagespeed_request_header_input():
for filter_name, filter_code in filters:
url = "%s/%s.html" % (config.EXAMPLE_ROOT, filter_name)
headers = {"ModPagespeedFilters" : "debug,%s" % filter_name}
inspect_via_debug_filter(url, filter_name, filter_code, headers)
headers = {"ModPagespeedFilters" : "%s" % filter_name}
inspect_via_rewriting(url, filter_name, filter_code, headers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment