#!/bin/bash # # Copyright 2016 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set -e set -u APACHE_SERVER="$1" APACHE_SLURP_ORIGIN_PORT="$2" APACHE_SLURP_PORT="$3" WGET="$4" TMP_SLURP_DIR="$5" PAGESPEED_TEST_HOST="$6" this_dir=$(dirname "${BASH_SOURCE[0]}") source "$this_dir/../pagespeed/automatic/system_test_helpers.sh" \ "$APACHE_SERVER" EXTEND_CACHE_URL="http://www.modpagespeed.com/extend_cache.html" DEVEL_DIR="$(dirname "${BASH_SOURCE[0]}")" start_test "Testing slurping (read only, via proxy)" http_proxy="$APACHE_SERVER" "$WGET" -q -O /dev/null \ "$EXTEND_CACHE_URL?PageSpeedFilters=extend_cache" # TODO(sligocki): Use something like fetch_until rather than # always waiting 2 seconds :/ sleep 2 OUT="$(http_proxy="$APACHE_SERVER" "$WGET" -q -O - \ "$EXTEND_CACHE_URL?PageSpeedFilters=extend_cache")" check_from "$OUT" fgrep "images/Puzzle.jpg.pagespeed.ce." OUT="$(http_proxy="$APACHE_SERVER" "$WGET" -q -O - \ "$EXTEND_CACHE_URL?PageSpeed=off")" check_from "$OUT" fgrep '"images/Puzzle.jpg"' start_test "Testing slurping (dns mode, mimicing webpagetest)" OUT="$("$WGET" --header="Host: www.modpagespeed.com" -q -O - --save-headers \ "$EXTEND_CACHE_URL?PageSpeedFilters=extend_cache")" check_from "$OUT" grep -q 'HTTP/1.[01] 200 OK' start_test "Testing slurping http://www.example.com expecting index.html ..." echo "rewrite will not happen" OUT="$(http_proxy="$APACHE_SERVER" "$WGET" -q -O - http://www.example.com/)" check_from "$OUT" fgrep "example.com expected body" start_test "Connection-close stripping:" echo 'First check we get "Connection:close"' echo "straight from the origin -- no proxy." rm -rf "$TMP_SLURP_DIR" slurp_origin_url="http://localhost:$APACHE_SLURP_ORIGIN_PORT" slurp_origin_url+="/close_connection/close_connection.html" OUT="$("$WGET" --no-proxy -q --save-headers -O - --header="Connection:" \ "$slurp_origin_url")" check_from "$OUT" fgrep "Connection: close" echo "Now check that Connection:close is stripped from a writing slurp." OUT=$(http_proxy=localhost:$APACHE_SLURP_PORT "$WGET" -q --save-headers -O - \ --header="Connection:" "$slurp_origin_url" || true) check_not_from "$OUT" fgrep -q "Connection: close" start_test "Testing slurp-proxying of a POST" rm -rf "$TMP_SLURP_DIR" OUT="$(http_proxy=localhost:$APACHE_SLURP_PORT "$WGET" -q -O - \ --post-data="a=b&c=d" \ http://$PAGESPEED_TEST_HOST/do_not_modify/cgi/verify_post.cgi)" check_from "$OUT" grep "PASS"