blob: f8634f59ac3baafe5533de5b22c6277f02f89e74 [file] [log] [blame]
#!/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.
start_test MapProxyDomain for CDN setup
# Test transitive ProxyMapDomain. In this mode we have three hosts: cdn,
# proxy, and origin. Proxy runs MPS and fetches resources from origin,
# optimizes them, and rewrites them to CDN for serving. The CDN is dumb and
# has no caching so simply proxies all requests to proxy. Origin serves out
# images only.
echo "Rewrite HTML with reference to proxyable image on CDN."
PROXY_PM="http://proxy.pm.example.com"
URL="$PROXY_PM/transitive_proxy.html"
PDT_STATSDIR=$TESTTMP/stats
rm -rf $PDT_STATSDIR
mkdir -p $PDT_STATSDIR
PDT_OLDSTATS=$PDT_STATSDIR/blocking_rewrite_stats.old
PDT_NEWSTATS=$PDT_STATSDIR/blocking_rewrite_stats.new
PDT_PROXY_STATS_URL=$PROXY_PM/mod_pagespeed_statistics?PageSpeed=off
http_proxy=$SECONDARY_HOSTNAME \
$WGET_DUMP $PDT_PROXY_STATS_URL > $PDT_OLDSTATS
# The image should be proxied from origin, compressed, and rewritten to cdn.
http_proxy=$SECONDARY_HOSTNAME \
fetch_until -save -recursive $URL \
'fgrep -c cdn.pm.example.com/external/xPuzzle.jpg.pagespeed.ic' 1
check_file_size "$WGET_DIR/xPuzzle*" -lt 241260
# Make sure that the file was only rewritten once.
http_proxy=$SECONDARY_HOSTNAME \
$WGET_DUMP $PDT_PROXY_STATS_URL > $PDT_NEWSTATS
check_stat $PDT_OLDSTATS $PDT_NEWSTATS image_rewrites 1
# The js should be fetched locally and inlined.
http_proxy=$SECONDARY_HOSTNAME \
fetch_until -save -recursive $URL 'fgrep -c document.write' 1
# Save the image URL so we can try to reconstruct it later.
PDT_IMG_URL=`egrep -o \"[^\"]*xPuzzle[^\"]*\.pagespeed[^\"]*\" $FETCH_FILE | \
sed -e 's/\"//g'`
# This function will be called after the cache is flushed to test
# reconstruction.
function map_proxy_domain_cdn_reconstruct() {
rm -rf $PDT_STATSDIR
mkdir -p $PDT_STATSDIR
http_proxy=$SECONDARY_HOSTNAME \
$WGET_DUMP $PDT_PROXY_STATS_URL > $PDT_OLDSTATS
echo "Make sure we can reconstruct the image."
# Fetch the url until it is less than its original size (i.e. compressed).
http_proxy=$SECONDARY_HOSTNAME \
fetch_until $PDT_IMG_URL "wc -c" 241260 "" "-lt"
# Double check that we actually reconstructed.
http_proxy=$SECONDARY_HOSTNAME \
$WGET_DUMP $PDT_PROXY_STATS_URL > $PDT_NEWSTATS
check_stat $PDT_OLDSTATS $PDT_NEWSTATS image_rewrites 1
}
on_cache_flush map_proxy_domain_cdn_reconstruct