!12 add postgresql-test-rpm-macros
Merge pull request !12 from daidai_is_here/dqw_test
This commit is contained in:
commit
9573836a5a
9
macros.postgresql
Normal file
9
macros.postgresql
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Macros from this file should exist on system only once, so it package
|
||||||
|
# maintainer's responsibility to guarantee that all packages which install
|
||||||
|
# these macros collide, or that (during package-build time) only one such
|
||||||
|
# package is installed (e.g. similarly to %%scl macro defined installed by
|
||||||
|
# *-build subpackage).
|
||||||
|
|
||||||
|
%postgresql_major 10
|
||||||
|
|
||||||
|
%postgresql_module_requires Requires: postgresql-server(:MODULE_COMPAT_10)
|
||||||
18
macros.postgresql-test
Normal file
18
macros.postgresql-test
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Initialize the PostgreSQL tests environment. This is supposed to be invoked
|
||||||
|
# in prep/build/install (where you plan to run the testsuite), while it defines
|
||||||
|
# several useful shell variables and provies useful commands. Effect of this
|
||||||
|
# command end with shell exit.
|
||||||
|
%postgresql_tests_init . "/usr/share/postgresql-setup/postgresql_pkg_tests.sh"
|
||||||
|
|
||||||
|
# Start the testing postgresql server, setting the actual unix user to be the
|
||||||
|
# PostgreSQL admin. The $PGHOST/$PGPORT are set appropriately, so psql is able
|
||||||
|
# to run without passwords. This also sets shell exit trap callback so that if
|
||||||
|
# something goes wrong and package build fails, the temporary database is
|
||||||
|
# automatically cleaned up.
|
||||||
|
%postgresql_tests_start pgtests_start
|
||||||
|
|
||||||
|
# Initialize database and run server in one step, if this works well-enough.
|
||||||
|
%postgresql_tests_run %postgresql_tests_init ; %postgresql_tests_start
|
||||||
|
|
||||||
|
%pgtests_init echo 2>&1 WARN: macro pgtests_init will be removed, use postgresql_tests_init ; %postgresql_tests_init
|
||||||
|
%pgtests_start echo 2>&1 WARN: macro pgtests_start will be removed, use postgresql_tests_start ; %postgresql_tests_start
|
||||||
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Name: postgresql
|
Name: postgresql
|
||||||
Version: 10.5
|
Version: 10.5
|
||||||
Release: 13
|
Release: 14
|
||||||
Summary: PostgreSQL client programs
|
Summary: PostgreSQL client programs
|
||||||
License: PostgreSQL
|
License: PostgreSQL
|
||||||
URL: http://www.postgresql.org/
|
URL: http://www.postgresql.org/
|
||||||
@ -19,6 +19,9 @@ Source8: postgresql-setup
|
|||||||
Source9: postgresql.service
|
Source9: postgresql.service
|
||||||
# https://github.com/devexp-db/postgresql-setup/blob/master/share/postgresql-setup/library.sh.in
|
# https://github.com/devexp-db/postgresql-setup/blob/master/share/postgresql-setup/library.sh.in
|
||||||
Source10: library.sh
|
Source10: library.sh
|
||||||
|
Source11: macros.postgresql
|
||||||
|
Source12: macros.postgresql-test
|
||||||
|
Source13: postgresql_pkg_tests.sh
|
||||||
|
|
||||||
Patch0000: 0000-postgresql-var-run-socket.patch
|
Patch0000: 0000-postgresql-var-run-socket.patch
|
||||||
Patch0001: 0000-rpm-pgsql.patch
|
Patch0001: 0000-rpm-pgsql.patch
|
||||||
@ -139,6 +142,15 @@ Requires: %{name}-server = %{version}-%{release} %{name}-devel = %{version}-%{re
|
|||||||
The postgresql-test package contains files needed for various tests for the
|
The postgresql-test package contains files needed for various tests for the
|
||||||
PostgreSQL database management system, including regression tests and benchmarks.
|
PostgreSQL database management system, including regression tests and benchmarks.
|
||||||
|
|
||||||
|
%package test-rpm-macros
|
||||||
|
Summary: Convenience RPM macros for build-time testing against PostgreSQL server
|
||||||
|
Requires: %{name}-server = %{version}-%{release}
|
||||||
|
|
||||||
|
%description test-rpm-macros
|
||||||
|
This package is meant to be added as BuildRequires: dependency of other packages
|
||||||
|
that want to run build-time testsuite against running PostgreSQL server.
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
(
|
(
|
||||||
cd "$(dirname "%{SOURCE0}")"
|
cd "$(dirname "%{SOURCE0}")"
|
||||||
@ -257,6 +269,9 @@ install -D %{SOURCE7} $RPM_BUILD_ROOT%{_libexecdir}/postgresql-check-db-dir
|
|||||||
install %{SOURCE8} $RPM_BUILD_ROOT%{_bindir}/postgresql-setup
|
install %{SOURCE8} $RPM_BUILD_ROOT%{_bindir}/postgresql-setup
|
||||||
install -Dm 0644 %{SOURCE9} $RPM_BUILD_ROOT%{_unitdir}/postgresql.service
|
install -Dm 0644 %{SOURCE9} $RPM_BUILD_ROOT%{_unitdir}/postgresql.service
|
||||||
install -D %{SOURCE10} $RPM_BUILD_ROOT%{_datadir}/postgresql-setup/library.sh
|
install -D %{SOURCE10} $RPM_BUILD_ROOT%{_datadir}/postgresql-setup/library.sh
|
||||||
|
install -Dm 0644 %{SOURCE11} $RPM_BUILD_ROOT%{macrosdir}/macros.postgresql
|
||||||
|
install -m 0644 %{SOURCE12} $RPM_BUILD_ROOT%{macrosdir}/macros.postgresql-test
|
||||||
|
install %{SOURCE13} $RPM_BUILD_ROOT%{_datadir}/postgresql-setup/postgresql_pkg_tests.sh
|
||||||
|
|
||||||
install -d $RPM_BUILD_ROOT%{_libdir}/pgsql/test
|
install -d $RPM_BUILD_ROOT%{_libdir}/pgsql/test
|
||||||
cp -a src/test/regress $RPM_BUILD_ROOT%{_libdir}/pgsql/test
|
cp -a src/test/regress $RPM_BUILD_ROOT%{_libdir}/pgsql/test
|
||||||
@ -385,11 +400,15 @@ find_lang_bins pltcl.lst pltcl
|
|||||||
%{_bindir}/{ecpg,pg_config}
|
%{_bindir}/{ecpg,pg_config}
|
||||||
%{_libdir}/{pgsql/pgxs/,pkgconfig/*.pc}
|
%{_libdir}/{pgsql/pgxs/,pkgconfig/*.pc}
|
||||||
%{_libdir}/{libecpg,libecpg_compat,libpgtypes,libpq}.so
|
%{_libdir}/{libecpg,libecpg_compat,libpgtypes,libpq}.so
|
||||||
|
%{macrosdir}/macros.postgresql
|
||||||
|
|
||||||
%files static
|
%files static
|
||||||
%{_libdir}/libpgcommon.a
|
%{_libdir}/libpgcommon.a
|
||||||
%{_libdir}/libpgport.a
|
%{_libdir}/libpgport.a
|
||||||
|
|
||||||
|
%files test-rpm-macros
|
||||||
|
%{_datadir}/postgresql-setup/postgresql_pkg_tests.sh
|
||||||
|
%{macrosdir}/macros.postgresql-test
|
||||||
|
|
||||||
%files plperl -f plperl.lst
|
%files plperl -f plperl.lst
|
||||||
%{_datadir}/pgsql/extension/plperl*
|
%{_datadir}/pgsql/extension/plperl*
|
||||||
@ -409,6 +428,10 @@ find_lang_bins pltcl.lst pltcl
|
|||||||
%attr(-,postgres,postgres) %{_libdir}/pgsql/test
|
%attr(-,postgres,postgres) %{_libdir}/pgsql/test
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 08 2020 daiqianwen <daiqianwen@huawei.com> - 10.5-14
|
||||||
|
- Type: enhancement
|
||||||
|
- DESC: add postgresql-test-rpm-macros
|
||||||
|
|
||||||
* Tue Apr 07 2020 daiqianwen <daiqianwen@huawei.com> - 10.5-13
|
* Tue Apr 07 2020 daiqianwen <daiqianwen@huawei.com> - 10.5-13
|
||||||
- Type: enhancement
|
- Type: enhancement
|
||||||
- DESC: delete unseless tarball
|
- DESC: delete unseless tarball
|
||||||
|
|||||||
193
postgresql_pkg_tests.sh
Normal file
193
postgresql_pkg_tests.sh
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Do some "integration" testing against running PostgreSQL server.
|
||||||
|
|
||||||
|
# This file is to be sourced.
|
||||||
|
|
||||||
|
try_random_port ()
|
||||||
|
{
|
||||||
|
_port=$RANDOM
|
||||||
|
if test -n "$_port" && eval '_port=$(( $_port + 32000 ))' 2>/dev/null; then
|
||||||
|
echo "$_port"
|
||||||
|
elif test -x /usr/bin/shuf; then
|
||||||
|
/usr/bin/shuf -r -n 1 -i 32000-64767
|
||||||
|
else
|
||||||
|
echo 54321
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
: ${PGTESTS_DATADIR=`pwd`/datadir}
|
||||||
|
: ${PGTESTS_ADMIN=`id -u -n`}
|
||||||
|
: ${PGTESTS_ADMINDB=$PGTESTS_ADMIN}
|
||||||
|
: ${PGTESTS_ADMINPASS=$PGTESTS_ADMIN}
|
||||||
|
: ${PGTESTS_PORT=`try_random_port`}
|
||||||
|
: ${PGTESTS_SOCKETDIR=/tmp}
|
||||||
|
: ${PGTESTS_USERS=test:test}
|
||||||
|
: ${PGTESTS_DATABASES=test:test}
|
||||||
|
|
||||||
|
# Stop the old cluster and/or remove it's data.
|
||||||
|
: ${PGTESTS_STARTCLEANUP=:}
|
||||||
|
|
||||||
|
# Cleanup once we exit the script.
|
||||||
|
: ${PGTESTS_CLEANUP=:}
|
||||||
|
|
||||||
|
# Cleanup once we exit the script.
|
||||||
|
: ${PGTESTS_CLEANUP=:}
|
||||||
|
|
||||||
|
export PGPORT=$PGTESTS_PORT
|
||||||
|
export PGHOST=$PGTESTS_SOCKETDIR
|
||||||
|
|
||||||
|
:
|
||||||
|
|
||||||
|
warning ()
|
||||||
|
{
|
||||||
|
echo >&2 " ! $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__trap_cb ()
|
||||||
|
{
|
||||||
|
IFS=' '
|
||||||
|
for __func in $__TRAP_ACTIONS
|
||||||
|
do
|
||||||
|
$__func
|
||||||
|
done
|
||||||
|
}
|
||||||
|
trap __trap_cb EXIT
|
||||||
|
|
||||||
|
|
||||||
|
__pgtests_initdb ()
|
||||||
|
{
|
||||||
|
initdb "$PGTESTS_DATADIR" -U "$PGTESTS_ADMIN" \
|
||||||
|
--auth-local=peer --auth-host=md5 \
|
||||||
|
${PGTESTS_LOCALE+--locale="$PGTESTS_LOCALE"}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__pgtests_start ()
|
||||||
|
{
|
||||||
|
pg_ctl -D "$PGTESTS_DATADIR" -l "$PGTESTS_DATADIR"/start.log start \
|
||||||
|
-o "-k $PGTESTS_SOCKETDIR -p $PGTESTS_PORT" -w || {
|
||||||
|
cat >&2 "$PGTESTS_DATADIR"/start.log
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__pgtests_create_admins_db ()
|
||||||
|
{
|
||||||
|
createdb -h "$PGTESTS_SOCKETDIR" "$PGTESTS_ADMINDB" --owner "$PGTESTS_ADMIN" -p "$PGTESTS_PORT"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__pgtests_passwd()
|
||||||
|
{
|
||||||
|
psql -d postgres --set=user="$1" --set=pass="$2" -tA \
|
||||||
|
<<<"ALTER USER :\"user\" WITH ENCRYPTED PASSWORD :'pass';"
|
||||||
|
}
|
||||||
|
|
||||||
|
pgtests_start ()
|
||||||
|
{
|
||||||
|
unset __TRAP_ACTIONS
|
||||||
|
|
||||||
|
if $PGTESTS_STARTCLEANUP; then
|
||||||
|
# We don't plan to be serious here. This pgtests_* effort is just to
|
||||||
|
# ease _testing_ against running postgresql server without too much
|
||||||
|
# writing.
|
||||||
|
if test -f "$PGTESTS_DATADIR"/postmaster.pid; then
|
||||||
|
# Give it a try.
|
||||||
|
warning "Seems like server works, trying to stop."
|
||||||
|
pg_ctl stop -D "$PGTESTS_DATADIR" -w
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cleanup testing directory
|
||||||
|
if test -e "$PGTESTS_DATADIR"; then
|
||||||
|
warning "Removing old data directory."
|
||||||
|
rm -r "$PGTESTS_DATADIR"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
__pgtests_initdb
|
||||||
|
__TRAP_ACTIONS="pgtests_cleanup $__TRAP_ACTIONS"
|
||||||
|
__pgtests_start
|
||||||
|
__TRAP_ACTIONS="pgtests_stop $__TRAP_ACTIONS"
|
||||||
|
__pgtests_create_admins_db
|
||||||
|
|
||||||
|
__pgtests_passwd "$PGTESTS_ADMIN" "$PGTESTS_ADMINPASS"
|
||||||
|
|
||||||
|
|
||||||
|
for _pgt_user in $PGTESTS_USERS
|
||||||
|
do
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=:
|
||||||
|
_user=
|
||||||
|
_pass=
|
||||||
|
for _part in $_pgt_user
|
||||||
|
do
|
||||||
|
if test -z "$_user"; then
|
||||||
|
_user=$_part
|
||||||
|
else
|
||||||
|
_pass=$_part
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
createuser "$_user"
|
||||||
|
__pgtests_passwd "$_user" "$_pass"
|
||||||
|
IFS=$save_IFS
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
for _pgt_db in $PGTESTS_DATABASES
|
||||||
|
do
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=:
|
||||||
|
_db=
|
||||||
|
_user=
|
||||||
|
for _part in $_pgt_db
|
||||||
|
do
|
||||||
|
if test -z "$_user"; then
|
||||||
|
_user=$_part
|
||||||
|
else
|
||||||
|
_db=$_part
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
createdb "$_db" --owner "$_part"
|
||||||
|
|
||||||
|
IFS=$save_IFS
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__clean_trap_action ()
|
||||||
|
{
|
||||||
|
__new_actions=
|
||||||
|
for __action in $__TRAP_ACTIONS
|
||||||
|
do
|
||||||
|
if test "$__action" = "$1"; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
__new_actions="$__action $__new_actions"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
__TRAP_ACTIONS=$__new_actions
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pgtests_cleanup ()
|
||||||
|
{
|
||||||
|
if $PGTESTS_CLEANUP && $PGTESTS_AUTOSTOP; then
|
||||||
|
rm -r "$PGTESTS_DATADIR"
|
||||||
|
fi
|
||||||
|
__clean_trap_action pgtests_cleanup
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pgtests_stop ()
|
||||||
|
{
|
||||||
|
if $PGTESTS_AUTOSTOP; then
|
||||||
|
pg_ctl stop -D "$PGTESTS_DATADIR" -w
|
||||||
|
fi
|
||||||
|
__clean_trap_action pgtests_stop
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user