# # macro: apache_test_module_start_apache -- start apache with specified modules loaded # # usage: apache_test_module_start_apache -m module_list [-i include_list] [-r document_root] # # module_list: colon separated list of module names to be loaded with test run # search path: %{buildroot} tree # %{apache_libexecdir}-prefork # %{apache_libexecdir} # [example value: asn:dbd] # include_list: colon separated list of names of apache configuration files # to be included (path relative to current dir) # search path %{buildroot}%{apache_sysconfdir} tree # $PWD tree # [example value: mod_asn.conf] # document_root: document root of the test server, # [default value: $PWD/test/htdocs] # # %apache_test_module_start_apache(m:,i:,r:) \ # constants \ TEST_DIR='test' \ TEST_MPM='prefork' \ TEST_USER='abuild' \ TEST_GROUP='abuild' \ TEST_PORT='60080' \ # arguments \ # modules to load, from BUILD tree or system \ MODULES=$(echo %{-m:%{-m*}} | tr ':' ' ') \ if [ -z "$MODULES" ]; then \ echo "ERROR: Missing -m argument in %%apache_test_module macro call." \ exit 1 \ fi \ # configs to include \ CONFIGS="%{-i:%{-i*}}" \ # document root of the test server \ DOCUMENT_ROOT="%{-r:%{-r*}}" \ if [ -z "$DOCUMENT_ROOT" ]; then \ DOCUMENT_ROOT=$PWD/$TEST_DIR/htdocs \ fi \ # helpers \ APACHE_BRANCH=$(echo %{apache_branch} | tr -d '.') \ # begin \ echo "-----------------------------------------------------------" \ echo "APACHE MODULE TEST" \ echo \ echo "modules to load: $MODULES" \ echo "configs to include: $CONFIGS" \ # create test \ mkdir -p $TEST_DIR \ # create document root if not exist \ mkdir -p $DOCUMENT_ROOT \ # create test/httpd-test.conf \ TEST_CONF_FILE="$TEST_DIR/httpd-test.conf" \ SYSTEM_MODULE_PATH="%{apache_libexecdir}-$TEST_MPM" \ echo "ServerName test" > $TEST_CONF_FILE \ echo "User $TEST_USER" >> $TEST_CONF_FILE \ echo "Group $TEST_GROUP" >> $TEST_CONF_FILE \ echo "Listen $TEST_PORT" >> $TEST_CONF_FILE \ echo "PidFile $PWD/$TEST_DIR/pid" >> $TEST_CONF_FILE \ echo "ErrorLog $PWD/$TEST_DIR/error_log" >> $TEST_CONF_FILE \ echo "LoadModule dir_module $SYSTEM_MODULE_PATH/mod_dir.so" >> $TEST_CONF_FILE \ echo "LoadModule auth_basic_module $SYSTEM_MODULE_PATH/mod_auth_basic.so" >> $TEST_CONF_FILE \ if [ $APACHE_BRANCH -ge 24 ]; then \ echo "LoadModule authz_core_module $SYSTEM_MODULE_PATH/mod_authz_core.so" >> $TEST_CONF_FILE \ fi \ echo "LoadModule authz_host_module $SYSTEM_MODULE_PATH/mod_authz_host.so" >> $TEST_CONF_FILE \ for m in $(echo $MODULES | tr ':' ' '); do \ module_path=$(find %{buildroot} %{apache_libexecdir}-$TEST_MPM %{apache_libexecdir} -name "mod_$m.so" | tail -n 1) \ if [ -z "$module_path" ]; then \ echo "ERROR: Module $m not found." \ exit 1 \ fi \ echo "Will load ${m}_module $module_path" \ echo "LoadModule ${m}_module $module_path" >> $TEST_CONF_FILE \ done \ for c in $(echo $CONFIGS | tr ':' ' '); do \ include_path=$(find %{buildroot}%{apache_sysconfdir} $PWD -name "$c" 2>/dev/null | tail -n 1) \ if [ -z "$include_path" ]; then \ echo "ERROR: Config file $c not found." \ exit 1 \ fi \ echo "Will include $include_path" \ echo "Include $include_path" >> $TEST_CONF_FILE \ done \ echo "DocumentRoot $DOCUMENT_ROOT" >> $TEST_CONF_FILE \ echo "DirectoryIndex index.html" >> $TEST_CONF_FILE \ echo "" >> $TEST_CONF_FILE \ if [ $APACHE_BRANCH -ge 24 ]; then \ echo " Require local" >> $TEST_CONF_FILE \ else \ echo " Order deny,allow" >> $TEST_CONF_FILE \ echo " Deny from all" >> $TEST_CONF_FILE \ echo " Allow from localhost" >> $TEST_CONF_FILE \ fi \ echo "" >> $TEST_CONF_FILE \ # run apache \ CMD=$(ls %{_sbindir}/httpd*-$TEST_MPM | head -n 1) \ echo -n "Starting Apache ... " \ $CMD -f $PWD/$TEST_CONF_FILE -k start \ # wait to be sure apache finished start \ sleep 2 \ if [ ! -f $TEST_DIR/pid ]; then \ echo "FAILED:" \ cat $TEST_DIR/error_log \ echo "See $PWD/$TEST_DIR for details" \ exit 1 \ fi \ echo "SUCCESS" \ %nil # # macro: apache_test_module_stop_apache -- stops apache previously started with *_start_apache # # usage: apache_test_module_stop_apache # %apache_test_module_stop_apache() \ # stop apache \ echo "Stopping Apache ..." \ kill -TERM `cat $TEST_DIR/pid` \ echo "Done." \ echo "-----------------------------------------------------------" \ %nil # # macro: apache_test_module_load -- tests that module(s) can be loaded # # usage: apache_test_module_load -m module_list [-i include_list] # # module_list: colon separated list of module names to be loaded with test run # search path: %{buildroot} tree # %{apache_libexecdir}-prefork # %{apache_libexecdir} # [example value: asn:dbd] # include_list: colon separated list of names of apache configuration files # to be included (path relative to current dir) # search path %{buildroot}%{apache_sysconfdir} tree # $PWD tree # [example value: mod_asn.conf] # %apache_test_module_load(m:,i:) \ %apache_test_module_start_apache %{-m:-m %{-m*}} %{-i:-i %{-i*}} \ %apache_test_module_stop_apache \ %nil