From 29bb540b4c49586c8ff5665aeba3b44379f29ab2e55651c6916735752a16b998 Mon Sep 17 00:00:00 2001 From: Petr Gajdos Date: Wed, 2 Sep 2015 10:28:28 +0000 Subject: [PATCH] Accepting request 328614 from Apache:Modules - bump version to 20150902 - added macros to test loading modules %apache_test_module_start_apache %apache_test_module_stop_apache %apache_test_module_load + macros.apache-module-test OBS-URL: https://build.opensuse.org/request/show/328614 OBS-URL: https://build.opensuse.org/package/show/Apache/apache-rpm-macros?expand=0&rev=14 --- apache-rpm-macros.changes | 14 ++++ apache-rpm-macros.spec | 5 +- macros.apache-module-test | 142 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 macros.apache-module-test diff --git a/apache-rpm-macros.changes b/apache-rpm-macros.changes index 9c02a05..e77e915 100644 --- a/apache-rpm-macros.changes +++ b/apache-rpm-macros.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Mon Aug 31 08:30:28 UTC 2015 - pgajdos@suse.com + +- bump version to 20150902 + +------------------------------------------------------------------- +Fri Aug 28 08:27:11 UTC 2015 - pgajdos@suse.com + +- added macros to test loading modules + %apache_test_module_start_apache + %apache_test_module_stop_apache + %apache_test_module_load + + macros.apache-module-test + ------------------------------------------------------------------- Tue Jul 28 12:01:08 UTC 2015 - pgajdos@suse.com diff --git a/apache-rpm-macros.spec b/apache-rpm-macros.spec index 13982ce..5dd8de3 100644 --- a/apache-rpm-macros.spec +++ b/apache-rpm-macros.spec @@ -43,12 +43,13 @@ %endif %define macros_file macros.apache Name: apache-rpm-macros -Version: 20150717 +Version: 20150831 Release: 0 Summary: Apache RPM Macros License: Apache-2.0 Group: Productivity/Networking/Web/Servers Url: http://httpd.apache.org/ +Source1: macros.apache-module-test BuildRequires: apache%{ap_major}-devel BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -75,6 +76,8 @@ cat << eom > %{macros_file} %%apache_user %{ap_user} %%apache_group %{ap_group} eom +echo >> %{macros_file} +cat %{SOURCE1} >> %{macros_file} %install mkdir -p %{buildroot}%{macros_dir} diff --git a/macros.apache-module-test b/macros.apache-module-test new file mode 100644 index 0000000..821cdef --- /dev/null +++ b/macros.apache-module-test @@ -0,0 +1,142 @@ +# +# 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 $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 | tail -n 1) \ + echo -n "Starting Apache ... " \ + $CMD -f $PWD/$TEST_CONF_FILE -k start || \ + { echo "FAILED:"; cat $TEST_DIR/error_log; echo "See $PWD/$TEST_DIR for details"; exit 1; } \ + 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 ..." \ + # wait to be sure apache finish start \ + sleep 2 \ + kill -TERM `cat $TEST_DIR/pid` \ + echo "Done." \ + echo "-----------------------------------------------------------" \ + # cleanup \ + rm -r $TEST_DIR \ + %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 +