blob: 16fc6b63541aa77f4d2eb8c7584291dd3f85773b [file] [log] [blame]
# This makefile includes various integration tests, and is meant to be usable
# in both development and deployment settings.
#
# Its interface is as follows:
# Exports:
# apache_system_tests
# apache_vm_system_tests (includes tests that can be run on VMs)
# Imports:
# apache_install_conf (should read OPTIONS)
# stop, start (to stop and start Apache)
# apache_debug_restart
# apache_debug_stop
# apache_debug_leak_test, apache_debug_proxy_test, apache_debug_slurp_test
# APACHE_PORT
# APACHE_HTTPS_PORT
# APACHE_DEBUG_PAGESPEED_CONF
# MOD_PAGESPEED_CACHE
# GIT_SRC
# INSTALL_DATA_DIR
# RCPORT
# We want order of dependencies honored..
.NOTPARALLEL :
# Want |& support; and /bin/sh doesn't provide it at least on Ubuntu 11.04
SHELL=/bin/bash
# Make conf, log, and cache file locations accessible to apache/system_test.sh
export APACHE_DEBUG_PAGESPEED_CONF
export APACHE_LOG
export APACHE_DOC_ROOT
export MOD_PAGESPEED_CACHE
# TODO(jmarantz): replace MOD_PAGESPEED_CACHE with FILE_CACHE everywhere.
export FILE_CACHE = $(MOD_PAGESPEED_CACHE)
export APACHE_SECONDARY_PORT
export APACHE_TERTIARY_PORT
export SERVER_NAME = apache
PAGESPEED_DIR = $(GIT_SRC)/pagespeed
apache_vm_system_tests : setup_doc_root
$(MAKE) FAST_RESTART=1 apache_debug_smoke_test
$(MAKE) FAST_RESTART=1 apache_debug_downstream_caching_test
$(MAKE) FAST_RESTART=1 apache_debug_per_vhost_stats_test
$(MAKE) FAST_RESTART=1 apache_debug_memcached_test
$(MAKE) FAST_RESTART=1 apache_debug_redis_test
$(MAKE) FAST_RESTART=1 apache_debug_leak_test
$(MAKE) FAST_RESTART=1 apache_debug_rewrite_test
$(MAKE) FAST_RESTART=1 apache_debug_proxy_test
$(MAKE) FAST_RESTART=1 apache_debug_slurp_test
$(MAKE) FAST_RESTART=1 apache_debug_speling_test
$(MAKE) FAST_RESTART=1 apache_debug_gzip_test
$(MAKE) FAST_RESTART=1 apache_debug_controller_test
$(MAKE) FAST_RESTART=1 apache_debug_process_scope_test
$(MAKE) FAST_RESTART=1 apache_debug_remote_config_test
$(MAKE) FAST_RESTART=1 apache_debug_experiment_test
$(MAKE) FAST_RESTART=1 apache_debug_vhost_only_test
$(MAKE) FAST_RESTART=1 apache_debug_global_off_test
$(MAKE) FAST_RESTART=1 apache_debug_shared_mem_locks_sanity_test
$(MAKE) apache_debug_https_fetch_test
$(MAKE) FAST_RESTART=1 apache_debug_stats_logging_test
$(MAKE) FAST_RESTART=1 apache_debug_all_directives_test
$(MAKE) FAST_RESTART=1 apache_debug_unplugged_test
$(MAKE) apache_install_conf
# 'apache_install_conf' should always be last, to leave your debug
# Apache server in a consistent state.
# apache_debug_serf_empty_header_test fails when testing on VMs for
# release builds. This appears to be due to the complicated proxy
# setup.
# TODO(jmarantz): fix this.
apache_system_tests : apache_vm_system_tests
$(MAKE) FAST_RESTART=1 apache_debug_serf_empty_header_test
$(MAKE) apache_install_conf
$(MAKE) FAST_RESTART=1 apache_debug_restart
APACHE_HOST = localhost
ifeq ($(APACHE_PORT),80)
APACHE_SERVER = $(APACHE_HOST)
else
APACHE_SERVER = $(APACHE_HOST):$(APACHE_PORT)
endif
APACHE_SECONDARY_SERVER = $(APACHE_HOST):$(APACHE_SECONDARY_PORT)
WGET = wget
WGET_PROXY = http_proxy=$(APACHE_SERVER) $(WGET) -q -O -
WGET_NO_PROXY = $(WGET) --no-proxy
export WGET
ifeq ($(APACHE_HTTPS_PORT),)
APACHE_HTTPS_SERVER =
else ifeq ($(APACHE_HTTPS_PORT),443)
APACHE_HTTPS_SERVER = localhost
else
APACHE_HTTPS_SERVER = localhost:$(APACHE_HTTPS_PORT)
endif
EXAMPLE = $(APACHE_SERVER)/mod_pagespeed_example
EXAMPLE_IMAGE = $(EXAMPLE)/images/Puzzle.jpg.pagespeed.ce.91_WewrLtP.jpg
EXAMPLE_COMBINE_CSS = $(EXAMPLE)/combine_css.html
TEST_ROOT = $(APACHE_SERVER)/mod_pagespeed_test
APACHE_SYSTEM_TEST = $(PAGESPEED_DIR)/apache/system_test.sh
APACHE_REMOTE_CONFIG_TEST = $(PAGESPEED_DIR)/system/remote_config_test.sh
INSTALL_DIR = $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
CLEAN_SLATE_FOR_TESTS = $(INSTALL_DIR)/clean_slate_for_tests.sh
clean_slate_for_tests :
$(CLEAN_SLATE_FOR_TESTS)
# Installs debug configuration and runs a smoke test against it.
# This will blow away your existing pagespeed.conf,
# and clear the cache. It will also run with statistics off at the end,
# restoring it at the end
apache_debug_smoke_test : apache_install_conf apache_debug_install
@echo '***' System-test with cold cache
$(MAKE) stop
$(CLEAN_SLATE_FOR_TESTS)
$(MAKE) start
CACHE_FLUSH_TEST=on \
FIRST_RUN=true \
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
#
@echo '***' System-test with warm cache
CACHE_FLUSH_TEST=on \
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
@echo '***' System-test with statistics off
mv $(APACHE_DEBUG_PAGESPEED_CONF) $(APACHE_DEBUG_PAGESPEED_CONF).save
sed -e "s/# ModPagespeedStatistics off/ModPagespeedStatistics off/" \
< $(APACHE_DEBUG_PAGESPEED_CONF).save \
> $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) stop
$(MAKE) start
CACHE_FLUSH_TEST=on \
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
#
# Restore config
mv $(APACHE_DEBUG_PAGESPEED_CONF).save $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) apache_debug_stop
[ -z "`grep leaked_rewrite_drivers $(APACHE_LOG)`" ]
@echo PASS
apache_debug_remote_config_test :
@echo '***' Remote-config test
$(MAKE) stop
$(CLEAN_SLATE_FOR_TESTS)
mv $(APACHE_DEBUG_PAGESPEED_CONF) $(APACHE_DEBUG_PAGESPEED_CONF).save
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) REMOTE_CONFIG_TEST=1"
$(MAKE) start
CACHE_FLUSH_TEST=on \
RCPORT=$(RCPORT) \
SECONDARY_HOSTNAME=localhost:$(APACHE_SECONDARY_PORT) \
FIRST_RUN=true \
$(APACHE_REMOTE_CONFIG_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
#
# Restore config
mv $(APACHE_DEBUG_PAGESPEED_CONF).save $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) apache_debug_stop
[ -z "`grep leaked_rewrite_drivers $(APACHE_LOG)`" ]
@echo PASS
apache_debug_rewrite_test : rewrite_test_prepare apache_install_conf \
apache_debug_restart
sleep 2
$(WGET_NO_PROXY) -q -O - --save-headers $(EXAMPLE_IMAGE) \
| head -16 | grep "Content-Type: image/jpeg"
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/mod_pagespeed_statistics \
| grep cache_hits
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/shortcut.html \
| grep "Filter Examples"
rewrite_test_prepare :
$(eval OPTIONS+=REWRITE_TEST=1)
$(CLEAN_SLATE_FOR_TESTS)
apache_debug_process_scope_test :
@echo '***' Process-scope test
$(MAKE) stop
$(CLEAN_SLATE_FOR_TESTS)
mv $(APACHE_DEBUG_PAGESPEED_CONF) $(APACHE_DEBUG_PAGESPEED_CONF).save
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) PROCESS_SCOPE_TEST=1"
$(MAKE) start
SECONDARY_HOSTNAME=localhost:$(APACHE_SECONDARY_PORT) \
$(PAGESPEED_DIR)/apache/process_scope_test.sh \
$(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
#
# Restore config
mv $(APACHE_DEBUG_PAGESPEED_CONF).save $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) apache_debug_stop
[ -z "`grep leaked_rewrite_drivers $(APACHE_LOG)`" ]
@echo PASS
# This test checks that when mod_speling is enabled we handle the
# resource requests properly by nulling out request->filename. If
# we fail to do that then mod_speling rewrites the result to be a 300
# (multiple choices).
apache_debug_speling_test : speling_test_prepare apache_install_conf \
apache_debug_restart
@echo Testing compatibility with mod_speling:
$(WGET_NO_PROXY) -O /dev/null --save-headers $(EXAMPLE_IMAGE) 2>&1 \
| head | grep "HTTP request sent, awaiting response... 200 OK"
speling_test_prepare :
$(eval OPTIONS+=SPELING_TEST=1)
rm -f "$(APACHE_LOG)"
$(CLEAN_SLATE_FOR_TESTS)
apache_debug_memcached_test :
$(CLEAN_SLATE_FOR_TESTS)
# run_program_with_memcached.sh exports $$MEMCACHED_PORT which is
# needed by apache_install_conf so pagespeed.conf gets the
# right ModPagespeedMemcachedServers setup. MEMCACHED_PORT will
# be different on each run, which makes it easier for people to
# run system-tests and unit-tests in parallel with one another.
$(INSTALL_DATA_DIR)/run_program_with_memcached.sh \
$(MAKE) apache_debug_memcached_test_run
$(MAKE) apache_debug_stop
[ -z "`grep leaked_rewrite_drivers $(APACHE_LOG)`" ]
@echo PASS
apache_debug_memcached_test_run :
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) MEMCACHED_TEST=1"
$(MAKE) apache_debug_restart
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
CACHE_FLUSH_TEST=on \
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
apache_debug_redis_test :
$(CLEAN_SLATE_FOR_TESTS)
# run_program_with_redis.sh exports $$REDIS_PORT which is
# needed by apache_install_conf so pagespeed.conf gets the
# right redis server config. REDIS_PORT will be different
# on each run, which makes it easier for people to run
# system-tests and unit-tests in parallel with one another.
$(INSTALL_DATA_DIR)/run_program_with_redis.sh \
$(MAKE) apache_debug_redis_test_run
$(MAKE) apache_debug_stop
[ -z "`grep leaked_rewrite_drivers $(APACHE_LOG)`" ]
@echo PASS
apache_debug_redis_test_run :
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) REDIS_TEST=1"
$(MAKE) apache_debug_restart
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
CACHE_FLUSH_TEST=on \
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
apache_debug_controller_test :
rm -rf $(MOD_PAGESPEED_CACHE)/*
$(MAKE) apache_debug_controller_test_run
$(MAKE) apache_debug_stop
[ -z "`grep leaked_rewrite_drivers $(APACHE_LOG)`" ]
@echo PASS
apache_debug_controller_test_run :
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) CONTROLLER_TEST=1"
$(MAKE) apache_debug_restart
SECONDARY_HOSTNAME=localhost:$(APACHE_SECONDARY_PORT) \
RUN_CONTROLLER_TEST=on \
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
# This test checks that when ModPagespeedFetchWithGzip is enabled we
# fetch resources from origin with the gzip flag. Note that big.css
# uncompressed is 4307 bytes. As of Jan 2012 we get 339 bytes, but
# the compression is done by mod_deflate which might change. So we
# do a cumbersome range-check that the 4307 bytes gets compressed to
# somewhere between 200 and 500 bytes.
#
# We run the measurement proxy test here as well, as that also requires
# gzip to be on.
apache_debug_gzip_test : gzip_test_prepare apache_install_conf \
apache_debug_restart
SECONDARY_HOSTNAME=localhost:$(APACHE_SECONDARY_PORT) \
$(PAGESPEED_DIR)/apache/gzip_test.sh \
$(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
gzip_test_prepare :
$(eval OPTIONS+=GZIP_TEST=1)
$(CLEAN_SLATE_FOR_TESTS)
# Test to make sure the experiment framework is sending its headers.
# TODO(nforman): Make this run multiple times and make sure we don't *always*
# get the same result.
apache_debug_experiment_test :
$(MAKE) apache_debug_experiment_ga_test
$(MAKE) apache_debug_experiment_no_ga_test
apache_debug_experiment_ga_test : experiment_ga_test_prepare \
apache_install_conf apache_debug_restart
$(INSTALL_DATA_DIR)/apache_experiment_ga_test.sh $(APACHE_SERVER)
apache_debug_experiment_no_ga_test : experiment_no_ga_test_prepare \
apache_install_conf apache_debug_restart
$(INSTALL_DATA_DIR)/apache_experiment_no_ga_test.sh $(APACHE_SERVER)
experiment_ga_test_prepare :
$(eval OPTIONS+=EXPERIMENT_GA_TEST=1)
$(CLEAN_SLATE_FOR_TESTS)
experiment_no_ga_test_prepare :
$(eval OPTIONS+=EXPERIMENT_NO_GA_TEST=1)
$(CLEAN_SLATE_FOR_TESTS)
apache_debug_downstream_caching_test :
$(CLEAN_SLATE_FOR_TESTS)
$(MAKE) apache_install_conf apache_debug_restart
$(INSTALL_DATA_DIR)/apache_downstream_caching_test.sh $(APACHE_SERVER)
# Test to make sure we don't crash if we're off for global but on for vhosts.
# We use the stress test config as a base for that, as it has the vhosts all
# setup nicely; we just need to turn off ourselves for the global scope.
apache_debug_vhost_only_test :
$(MAKE) apache_install_conf \
OPTIONS="$(OPTIONS) LOADTEST_TEST=1 STRESS_TEST=1"
echo 'ModPagespeed off' >> $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) apache_debug_restart
$(WGET_NO_PROXY) -O /dev/null --save-headers $(EXAMPLE) 2>&1 \
| head | grep "HTTP request sent, awaiting response... 200 OK"
# Regression test for serf fetching something with an empty header.
# We use a slurp-serving server to produce that.
EMPTY_HEADER_URL=http://www.modpagespeed.com/empty_header.html
apache_debug_serf_empty_header_test :
$(MAKE) apache_install_conf \
OPTIONS="$(OPTIONS) LOADTEST_TEST=1 STRESS_TEST=1" \
SLURP_DIR=$(INSTALL_DATA_DIR)/mod_pagespeed_test/slurp
$(MAKE) apache_debug_restart
# Make sure we can fetch a URL with empty header correctly..
$(WGET_PROXY) $(EMPTY_HEADER_URL) > /dev/null
# Test to make sure we don't crash due to uninitialized statistics if we
# are off by default but turned on in some place.
apache_debug_global_off_test :
$(MAKE) apache_install_conf
echo 'ModPagespeed off' >> $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) apache_debug_restart
$(WGET_NO_PROXY) -O /dev/null --save-headers $(EXAMPLE)?PageSpeed=on 2>&1 \
| head | grep "HTTP request sent, awaiting response... 200 OK"
# Test to make sure HTTPS fetching works.
apache_debug_https_fetch_test :
$(MAKE) apache_install_conf
$(MAKE) apache_debug_restart
$(INSTALL_DATA_DIR)/apache_https_fetch_test.sh \
$(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
# Sanity-check that enabling shared-memory locks don't cause the
# system to crash, and a rewrite does successfully happen.
apache_debug_shared_mem_locks_sanity_test : shared_mem_locks_test_prepare \
apache_install_conf apache_debug_restart
$(WGET_NO_PROXY) -q -O /dev/null \
$(EXAMPLE_COMBINE_CSS)?PageSpeedFilters=combine_css
sleep 1
$(WGET_NO_PROXY) -q -O - \
$(EXAMPLE_COMBINE_CSS)?PageSpeedFilters=combine_css \
| grep "\.pagespeed\.cc\."
shared_mem_locks_test_prepare :
$(eval OPTIONS+=SHARED_MEM_LOCKS_TEST=1)
$(MAKE) stop
# "Directory not empty" failures were observed here, so add sleep to
# wait for pending cache-writes to finish.
sleep 2
$(CLEAN_SLATE_FOR_TESTS)
$(MAKE) start
sleep 2
# Test that all directives are accepted by the options parser.
apache_debug_all_directives_test :
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) ALL_DIRECTIVES_TEST=1"
$(MAKE) apache_debug_restart
# Test to make sure that per-vhost stats work.
STATS = mod_pagespeed_statistics
GLOBAL_STATS = mod_pagespeed_global_statistics
TRIM_PATH = \
"mod_pagespeed_example/trim_urls.html?PageSpeedFilters=trim_urls"
apache_debug_per_vhost_stats_test :
$(MAKE) apache_install_conf \
OPTIONS="$(OPTIONS) PER_VHOST_STATS_TEST=1 NO_PER_VHOST_STATS_TEST=0"
$(MAKE) apache_debug_restart
@echo Fetch a trim URL example from VHost: 8080 -- that should bump
@echo the stat for that there + global but not on :8083
$(WGET_NO_PROXY) -q -O /dev/null $(APACHE_SERVER)/$(TRIM_PATH)
$(WGET_NO_PROXY) -q -O - $(APACHE_SERVER)/$(STATS) \
| grep url_trims | grep -w 1
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/$(STATS) \
| grep url_trims | grep -w 0
$(WGET_NO_PROXY) -q -O - $(APACHE_SERVER)/$(GLOBAL_STATS) \
| grep url_trims | grep -w 1
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/$(GLOBAL_STATS) \
| grep url_trims | grep -w 1
@echo Now on :8083 as well.
$(WGET_NO_PROXY) -q -O /dev/null $(APACHE_SECONDARY_SERVER)/$(TRIM_PATH)
$(WGET_NO_PROXY) -q -O - $(APACHE_SERVER)/$(STATS) \
| grep url_trims | grep -w 1
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/$(STATS) \
| grep url_trims | grep -w 1
$(WGET_NO_PROXY) -q -O - $(APACHE_SERVER)/$(GLOBAL_STATS) \
| grep url_trims | grep -w 2
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/$(GLOBAL_STATS) \
| grep url_trims | grep -w 2
# Without per-vhost stats.
$(MAKE) apache_install_conf \
OPTIONS="$(OPTIONS) PER_VHOST_STATS_TEST=0 NO_PER_VHOST_STATS_TEST=1"
$(MAKE) apache_debug_restart
@echo Now try without global stats -- both should update at once.
$(WGET_NO_PROXY) -q -O /dev/null $(APACHE_SERVER)/$(TRIM_PATH)
$(WGET_NO_PROXY) -q -O - $(APACHE_SERVER)/$(STATS) \
| grep url_trims | grep -w 1
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/$(STATS) \
| grep url_trims | grep -w 1
$(WGET_NO_PROXY) -q -O /dev/null $(APACHE_SECONDARY_SERVER)/$(TRIM_PATH)
$(WGET_NO_PROXY) -q -O - $(APACHE_SERVER)/$(STATS) \
| grep url_trims | grep -w 2
$(WGET_NO_PROXY) -q -O - $(APACHE_SECONDARY_SERVER)/$(STATS) \
| grep url_trims | grep -w 2
# Test that statistics logging works.
apache_debug_stats_logging_test :
$(MAKE) apache_install_conf OPTIONS="$(OPTIONS) STATS_LOGGING_TEST=1"
$(MAKE) apache_debug_restart
$(APACHE_SYSTEM_TEST) $(APACHE_SERVER) $(APACHE_HTTPS_SERVER)
# Tests that setting the root configuration 'unplugged' can't be overridden
# with a query-param, but can be overridden with an explicit vhost setting.
EXAMPLE_INDEX = mod_pagespeed_example/index.html
apache_debug_unplugged_test : apache_install_conf apache_debug_restart
$(MAKE) stop
mv $(APACHE_DEBUG_PAGESPEED_CONF) $(APACHE_DEBUG_PAGESPEED_CONF).save
# Note - there are multiple occurrences of "ModPagespeed on" in our
# debug pagespeed.conf. This article shows how to replace only the
# first one with sed: http://stackoverflow.com/questions/148451/
# how-to-use-sed-to-replace-only-the-first-occurrence-in-a-file
sed -e '0,/ModPagespeed on/{s/ModPagespeed on/ModPagespeed unplugged/}' \
< $(APACHE_DEBUG_PAGESPEED_CONF).save \
> $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) start
# Fetching from the root should be off, even if we try to turn it on.
[ -z "`$(WGET) -q --save-headers -O - \
$(APACHE_SERVER)/$(EXAMPLE_INDEX)?ModPagespeed=on | \
grep X-Mod-Pagespeed`" ]
# Fetching from the secondary host should be on.
http_proxy=$(APACHE_SECONDARY_SERVER) $(WGET) -q --save-headers -O - \
http://secondary.example.com/$(EXAMPLE_INDEX) | \
grep X-Mod-Pagespeed
#
# Restore config
mv $(APACHE_DEBUG_PAGESPEED_CONF).save $(APACHE_DEBUG_PAGESPEED_CONF)
$(MAKE) apache_debug_stop
@echo PASS
# Target used to populate the docroot for a webserver, including the
# read-only mod_pagespeed_example, mod_pagespeed_test, and do_not_modify,
# plus the read/write areas for cache purging and flush tests. The
# read-only directories are symlinked in for speed, and the read/write
# directories are deep-copied, but they are small.
setup_doc_root :
mkdir -p $(APACHE_DOC_ROOT)
ln -Tsf "$(realpath $(INSTALL_DATA_DIR))/mod_pagespeed_example" \
$(APACHE_DOC_ROOT)/mod_pagespeed_example
ln -Tsf "$(realpath $(INSTALL_DATA_DIR))/mod_pagespeed_test" \
$(APACHE_DOC_ROOT)/mod_pagespeed_test
ln -Tsf "$(realpath $(INSTALL_DATA_DIR))/do_not_modify" \
$(APACHE_DOC_ROOT)/do_not_modify
rm -rf "$(APACHE_DOC_ROOT)/cache_flush"
cp -r "$(INSTALL_DATA_DIR)/mod_pagespeed_test/cache_flush" \
$(APACHE_DOC_ROOT)
rm -rf "$(APACHE_DOC_ROOT)/purge"
cp -r "$(INSTALL_DATA_DIR)/mod_pagespeed_test/purge" $(APACHE_DOC_ROOT)