blob: 7aab52a062b2f254cbb099fb4e535f3e282c6eb3 [file] [log] [blame]
#!/bin/bash
#
# Runs system tests for system/ and automatic/.
#
# See automatic/system_test_helpers.sh for usage.
#
# Default to not running the controller, unless specified to
# do so via an environment variable.
RUN_CONTROLLER_TEST=${RUN_CONTROLLER_TEST:-off}
IS_FILE_CACHE=false
if [ "${MEMCACHED_PORT:-0}" -eq 0 ] && [ "${REDIS_PORT:-0}" -eq 0 ]; then
IS_FILE_CACHE=true
fi
FIRST_RUN=${FIRST_RUN:-false}
# To fetch from the secondary test root, we must set
# http_proxy=${SECONDARY_HOSTNAME} during fetches.
SECONDARY_ROOT="http://secondary.example.com"
SECONDARY_TEST_ROOT="$SECONDARY_ROOT/mod_pagespeed_test"
# Run the automatic/ system tests.
#
# We need to know the directory this file is located in. Unfortunately,
# if we're 'source'd from a script in a different directory $(dirname $0) gives
# us the directory that *that* script is located in
this_dir=$(dirname "${BASH_SOURCE[0]}")
source "$this_dir/../automatic/system_test.sh" || exit 1
# TODO(jefftk): move all tests from apache/system_test.sh to here except the
# ones that actually are Apache-specific.
# Define a mechanism to start a test before the cache-flush and finish it
# after the cache-flush. This mechanism is preferable to flushing cache
# within a test as that requires waiting 5 seconds for the poll, so we'd
# like to limit the number of cache flushes and exploit it on behalf of
# multiple tests.
# Variable holding a space-separated lists of bash functions to run after
# flushing cache.
post_cache_flush_test=""
# Adds a new function to run after cache flush.
function on_cache_flush() {
post_cache_flush_test+=" $1"
}
# Called after cache-flush to run all the functions specified to
# on_cache_flush.
function run_post_cache_flush() {
for test in $post_cache_flush_test; do
$test
done
}
rm -rf $OUTDIR
mkdir -p $OUTDIR
# In Apache users can disable merging the global config into the vhost config.
# If we're running that way then apache_system_test will have set
# NO_VHOST_MERGE to "on".
NO_VHOST_MERGE="${NO_VHOST_MERGE:-off}"
SUDO=${SUDO:-}
SYSTEM_TEST_DIR="$(dirname "${BASH_SOURCE[0]}")/system_tests/"
run_test check_headers
run_test aris
run_test css_combining_authorization
run_test add_instrumentation
run_test cache_partial_html
run_test flush_subresources
run_test respect_custom_options
run_test load_from_file
run_test more_custom_headers
run_test modify_caching_headers
run_test combine_javascript
run_test map_proxy_domain
run_test instant_ipro
if [ "$RUN_CONTROLLER_TEST" = "on" ]; then
run_test controller
fi
run_test json_content_type
run_test shard_domain
run_test server_side_includes
run_test flush_handling
if [ $statistics_enabled = "1" ]; then
run_test resource_404_count
run_test statistics_are_local_only
run_test ipro_vary_cookie
run_test authorization_basic
run_test image_rewrite_locking
fi
run_test prioritize_critical_css
if [ "$SECONDARY_HOSTNAME" != "" ]; then
run_test ajax_overrides_experiments
# The broken_fetch test can only run with a file-cache, not with
# an external cache.
if $IS_FILE_CACHE; then
run_test broken_fetch_ipro_record
else
echo Skipping broken_fetch_ipro_record, which only runs with file cache.
fi
run_test query_params_dont_enable_core_filters
run_test optimize_for_bandwidth
run_test shm_cache
run_test max_cachable
run_test x_header_value
run_test domain_rewrite_hyperlinks
run_test static_asset_domain_rewrite
run_test url_valued_attributes
run_test ipro_load_from_file
run_test ipro_max_cachable
run_test experiment_device_types
run_test downstream_cache_integration_headers
run_test x_sendfile
run_test shared_cdn_host_header
run_test ipro_for_browser
run_test request_option_override
run_test ipro_caching
run_test client_domain_rewrite
run_test resize_rendered_dimensions
if [ -z "${DISABLE_PHP_TESTS:-}" ]; then
run_test cache_compression_pre_gzipping
fi
run_test downstream_cache_rebeaconing
run_test critical_image_beaconing
run_test no_critical_unauthorized_resources
run_test mapped_domain_relative_css
run_test forbid_filters
run_test embed_config
run_test preserve_urls
run_test no_transform
run_test respect_vary
run_test inline_unauth
run_test max_combined_css_bytes
run_test sane_connection_header
run_test handler_access_messages
fi
run_test show_cache
run_test message_history_colors
run_test large_html_files
run_test ipro_fixed_size
run_test bad_query_params_and_headers
run_test no_respect_vary
run_test cross_site_fetch
run_test source_maps
run_test resource_ext_corruption
run_test outline_javascript_limit
run_test retain_comment
run_test ipro_source_map
run_test ipro_noop
if [ "$CACHE_FLUSH_TEST" = "on" ]; then
run_test cache_purge
run_test rewrite_deadline_ipro
fi
run_test add_resource_headers
run_test long_url_handling
run_test controller_process_handling
run_test strip_subresources
run_test protocol_relative_urls