annotate schema/run_tests.sh @ 4431:8fcabb6f971e

Fix operator support functions Operators used in an operator class should not be based on SQL functions, which might be inlined, thus preventing index usage based on the operator. Schema qualify functions called inside functions to make the outer function work independendly from search_path setting. This makes it possible to use the operators using the 'OPERATOR(<schema>.<opname>)' syntax. Most importantly, it fixes the usage of isrs_diff() during autovacuum.
author Tom Gottfried <tom@intevation.de>
date Wed, 18 Sep 2019 17:26:28 +0200
parents 5e38667f740c
children 0f2c3cb139cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
172
a422471db08a Automate running DB-tests with an extra database
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
1 #!/bin/sh -e
1303
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
2 # This is Free Software under GNU Affero General Public License v >= 3.0
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
3 # without warranty, see README.md and license for details.
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
4 #
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
5 # SPDX-License-Identifier: AGPL-3.0-or-later
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
6 # License-Filename: LICENSES/AGPL-3.0.txt
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
7 #
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
8 # Copyright (C) 2018, 2019 by via donau
1303
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
9 # – Österreichische Wasserstraßen-Gesellschaft mbH
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
10 # Software engineering by Intevation GmbH
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
11 #
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
12 # Author(s):
a8d1f2897c42 repair schema install scripts
Bernhard Reiter <bernhard@intevation.de>
parents: 1301
diff changeset
13 # * Tom Gottfried <tom@intevation.de>
172
a422471db08a Automate running DB-tests with an extra database
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
14
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
15 ME=`basename "$0"`
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
16 BASEDIR=`dirname "$0"`
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
17
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
18 usage()
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
19 {
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
20 cat <<EOF
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
21 $ME [OPTION]...
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
22
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
23 Options:
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
24 -d, --db=NAME create (and drop if exists) the database NAME.
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
25 Default: "gemma_test"
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
26 -p, --port=PORT connect do the postgresql cluster at PORT.
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
27 Default is the postgresql standard port 5432
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
28 --help display this help and exit
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
29
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
30 EOF
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
31 }
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
32
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
33 # Defaults:
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
34
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
35 db=gemma_test
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
36 port=5432
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
37
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
38 # Parse options:
246
299568ad3c37 Use database setup script for tests and Dockerfile
Tom Gottfried <tom@intevation.de>
parents: 234
diff changeset
39
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
40 OPTS=`getopt \
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
41 -l help,db:,port: \
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
42 -o d:p: -n "$ME" -- "$@"`
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
43 [ $? -eq 0 ] || { usage ; exit 1 ; }
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
44
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
45 eval set -- "$OPTS"
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
46
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
47 while true ; do
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
48 case "$1" in
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
49 --db|-d)
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
50 db="$2"
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
51 shift 2
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
52 ;;
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
53 --port|-p)
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
54 port="$2"
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
55 shift 2
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
56 ;;
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
57 --help)
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
58 { usage ; exit 0 ; }
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
59 ;;
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
60 --)
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
61 shift
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
62 break
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
63 ;;
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
64 esac
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
65 done
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
66
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
67 dropdb --if-exists -p "$port" "$db"
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
68
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
69 ./install-db.sh -d "$db" -p "$port"
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
70 psql -qv ON_ERROR_STOP= -c 'CREATE EXTENSION pgtap' -d "$db" -p "$port"
172
a422471db08a Automate running DB-tests with an extra database
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
71
224
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
72 # Collect test roles to be dropped
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
73 # Concatenate with dummy role to prevent syntax error if there is no test role
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
74 TEST_ROLES=$(psql -d "$db" -p "$port" -qtc \
224
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
75 "SELECT concat_ws(',', 'test', string_agg(rolname, ',')) FROM pg_roles
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
76 WHERE rolname LIKE 'test%'")
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
77
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
78 # Drop test roles, add test data and run tests
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
79 psql -qXv ON_ERROR_STOP= -v -d "$db" -p "$port" \
324
8bacd556ea39 Remove noisy NOTICEs between test output
Tom Gottfried <tom@intevation.de>
parents: 319
diff changeset
80 -c 'SET client_min_messages TO WARNING' \
224
57dfab80973c By convention, prefix all test users with 'test'
Tom Gottfried <tom@intevation.de>
parents: 223
diff changeset
81 -c "DROP ROLE IF EXISTS $TEST_ROLES" \
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
82 -f "$BASEDIR"/tap_tests_data.sql \
4431
8fcabb6f971e Fix operator support functions
Tom Gottfried <tom@intevation.de>
parents: 4389
diff changeset
83 -c "SELECT plan(75 + (
3024
5470aa3ffb9a Fix privileges for GeoServer views
Tom Gottfried <tom@intevation.de>
parents: 2912
diff changeset
84 SELECT count(*)::int
5470aa3ffb9a Fix privileges for GeoServer views
Tom Gottfried <tom@intevation.de>
parents: 2912
diff changeset
85 FROM information_schema.tables
5470aa3ffb9a Fix privileges for GeoServer views
Tom Gottfried <tom@intevation.de>
parents: 2912
diff changeset
86 WHERE table_schema = 'waterway'))" \
4116
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
87 -f "$BASEDIR"/gemma_tests.sql \
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
88 -f "$BASEDIR"/isrs_tests.sql \
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
89 -f "$BASEDIR"/auth_tests.sql \
3cec90587ff9 Make port and database configurable
Tom Gottfried <tom@intevation.de>
parents: 3665
diff changeset
90 -f "$BASEDIR"/manage_users_tests.sql \
4126
52f7264265bb Bulk-delete tracked entries per table
Tom Gottfried <tom@intevation.de>
parents: 4118
diff changeset
91 -f "$BASEDIR"/import_tests.sql \
222
cfde876fbaf9 Try to DROP ROLEs before creating them and keep test results
Tom Gottfried <tom@intevation.de>
parents: 207
diff changeset
92 -c 'SELECT * FROM finish()'