Skip to content

Commit bb2cd50

Browse files
author
alexander popov
committed
tests: add new tests
1 parent c23c5e1 commit bb2cd50

File tree

4 files changed

+265
-0
lines changed

4 files changed

+265
-0
lines changed

Makefile.tests

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,103 @@ run_builds:
66

77
run_functional_tests:
88
docker run -v "$(WORKDIR)":/var/tmp centos:7 /bin/bash -ex "/var/tmp/tests/check.sh"
9+
10+
local_test:run_local_test_pg9.5 run_local_test_pg9.6 run_local_test_pg10 run_local_test_pg11 run_local_test_pg12 run_local_test_pg13
11+
12+
clean_local_tests: clean_local_test_pg9.5 clean_local_test_pg9.6 clean_local_test_pg10 clean_local_test_pg11 clean_local_test_pg12 clean_local_test_pg13
13+
14+
run_local_test_pg9.5:
15+
docker run -it -d \
16+
--name pg9.5 \
17+
-e POSTGRES_PASSWORD="111111" \
18+
-e POSTGRES_HOST_AUTH_METHOD=trust \
19+
-v "$(WORKDIR)":/var/tmp/mamonsu \
20+
postgres:9.5 /bin/bash /docker-entrypoint.sh postgres
21+
sleep 2
22+
docker exec -i pg9.5 bash -c '/var/tmp/mamonsu/tests/local_tests.sh'
23+
docker stop pg9.5
24+
docker rm pg9.5
25+
26+
run_local_test_pg9.6:
27+
docker run -it -d \
28+
--name pg9.6 \
29+
-e POSTGRES_PASSWORD="111111" \
30+
-e POSTGRES_HOST_AUTH_METHOD=trust \
31+
-v "$(WORKDIR)":/var/tmp/mamonsu \
32+
postgres:9.6 /bin/bash /docker-entrypoint.sh postgres
33+
sleep 2
34+
docker exec -i pg9.6 bash -c '/var/tmp/mamonsu/tests/local_tests.sh'
35+
docker stop pg9.6
36+
docker rm pg9.6
37+
38+
run_local_test_pg10:
39+
docker run -it -d \
40+
--name pg10 \
41+
-e POSTGRES_PASSWORD="111111" \
42+
-e POSTGRES_HOST_AUTH_METHOD=trust \
43+
-v "$(WORKDIR)":/var/tmp/mamonsu \
44+
postgres:10 /bin/bash /docker-entrypoint.sh postgres
45+
sleep 2
46+
docker exec -i pg10 bash -c '/var/tmp/mamonsu/tests/local_tests.sh'
47+
docker stop pg10
48+
docker rm pg10
49+
50+
run_local_test_pg11:
51+
docker run -it -d \
52+
--name pg11 \
53+
-e POSTGRES_PASSWORD="111111" \
54+
-e POSTGRES_HOST_AUTH_METHOD=trust \
55+
-v "$(WORKDIR)":/var/tmp/mamonsu \
56+
postgres:11 /bin/bash /docker-entrypoint.sh postgres
57+
sleep 2
58+
docker exec -i pg11 bash -c '/var/tmp/mamonsu/tests/local_tests.sh'
59+
docker stop pg11
60+
docker rm pg11
61+
62+
run_local_test_pg12:
63+
docker run -it -d \
64+
--name pg12 \
65+
-e POSTGRES_PASSWORD="111111" \
66+
-e POSTGRES_HOST_AUTH_METHOD=trust \
67+
-v "$(WORKDIR)":/var/tmp/mamonsu \
68+
postgres:12 /bin/bash /docker-entrypoint.sh postgres
69+
sleep 2
70+
docker exec -i pg12 bash -c '/var/tmp/mamonsu/tests/local_tests.sh'
71+
docker stop pg12
72+
docker rm pg12
73+
74+
run_local_test_pg13:
75+
docker run -it -d \
76+
--name pg13 \
77+
-e POSTGRES_PASSWORD="111111" \
78+
-e POSTGRES_HOST_AUTH_METHOD=trust \
79+
-v "$(WORKDIR)":/var/tmp/mamonsu \
80+
postgres:13 /bin/bash /docker-entrypoint.sh postgres
81+
sleep 2
82+
docker exec -i pg13 bash -c '/var/tmp/mamonsu/tests/local_tests.sh'
83+
docker stop pg13
84+
docker rm pg13
85+
86+
clean_local_test_pg9.5:
87+
docker stop pg9.5 | true
88+
docker rm pg9.5 | true
89+
90+
clean_local_test_pg9.6:
91+
docker stop pg9.6 | true
92+
docker rm pg9.6 | true
93+
94+
clean_local_test_pg10:
95+
docker stop pg10 | true
96+
docker rm pg10 | true
97+
98+
clean_local_test_pg11:
99+
docker stop pg11 | true
100+
docker rm pg11 | true
101+
102+
clean_local_test_pg12:
103+
docker stop pg12 | true
104+
docker rm pg12 | true
105+
106+
clean_local_test_pg13:
107+
docker stop pg13 | true
108+
docker rm pg13 | true

tests/bootstrap.sh

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
#!/bin/bash -ex
2+
3+
# bootstrap test
4+
# Требования:
5+
# запуск psql от пользователя postgres psql -U postgres
6+
# в pg_hba долвны быть разрешения для всех пользователей trust
7+
8+
MAMONSU_FULL_VER=`mamonsu --version`
9+
IFS=' ' read -ra MAMONSU_VERSION_ARRAY <<<$MAMONSU_FULL_VER
10+
export MAMONSU_VERSION=${MAMONSU_VERSION_ARRAY[1]}
11+
12+
export PGSUPERUSER=postgres
13+
export PSQL="psql -U $PGSUPERUSER"
14+
WHOAMI=`whoami`
15+
if [[ "$WHOAMI" != "postgres" ]]
16+
then
17+
$PSQL -U postgres -c "create user $WHOAMI superuser"
18+
$PSQL -U postgres -c "create database $WHOAMI owner $WHOAMI"
19+
export PGSUPERUSER=$WHOAMI
20+
export PSQL="psql -U $PGSUPERUSER"
21+
fi
22+
echo "PGSUPERUSER=$PGSUPERUSER"
23+
echo "PSQL=$PSQL"
24+
25+
function check_db_objects() {
26+
MAMONSU_USER=$1
27+
MAMONSU_DB=$2
28+
PG_SERVER_VERSION=`$PSQL $DB -c "show server_version_num" -t -A`
29+
WALXLOG=nodata
30+
if [[ $PG_SERVER_VERSION -lt "100000" ]]
31+
then
32+
WALXLOG=xlog
33+
fi
34+
if [[ $PG_SERVER_VERSION -gt "100000" ]]
35+
then
36+
WALXLOG=wal
37+
fi
38+
39+
if [[ $MAMONSU_DB ]]
40+
then
41+
DB="-d $MAMONSU_DB"
42+
MAMONSU_DB=$MAMONSU_DB
43+
else
44+
DB=""
45+
MAMONSU_DB=$PGSUPERUSER
46+
fi
47+
echo "MAMONSU_USER = $MAMONSU_USER, MAMONSU_DB = $MAMONSU_DB, DB= $DB"
48+
49+
$PSQL $DB -c "\dt mamonsu_config" | grep "mamonsu_config.*table.*$MAMONSU_USER" || exit 11
50+
MAMONSU_TIMESTAMP_NAME=`echo $MAMONSU_VERSION | sed 's/\./\_/g'`
51+
$PSQL $DB -c "\dt mamonsu_timestamp_master_$MAMONSU_TIMESTAMP_NAME" | grep "mamonsu_timestamp_master_$MAMONSU_TIMESTAMP_NAME.*table.*$MAMONSU_USER" || exit 11
52+
$PSQL $DB -c "\df mamonsu_timestamp_master_update" | grep "mamonsu_timestamp_master_update" || exit 11
53+
$PSQL $DB -c "\df mamonsu_timestamp_get" | grep "mamonsu_timestamp_get" || exit 11
54+
$PSQL $DB -c "\df mamonsu_count_autovacuum" | grep "mamonsu_count_autovacuum" || exit 11
55+
$PSQL $DB -c "\df mamonsu_get_oldest_xid" | grep "mamonsu_get_oldest_xid" || exit 11
56+
$PSQL $DB -c "\df mamonsu_get_oldest_transaction" | grep "mamonsu_get_oldest_transaction" || exit 11
57+
echo "WALXLOG $WALXLOG"
58+
$PSQL $DB -c "\df mamonsu_count_"$WALXLOG"_files" | grep "mamonsu_count_"$WALXLOG"_files" || exit 11
59+
$PSQL $DB -c "\df mamonsu_buffer_cache" | grep "mamonsu_buffer_cache" || exit 11
60+
$PSQL $DB -c "\df mamonsu_archive_command_files" | grep "mamonsu_archive_command_files" || exit 11
61+
$PSQL $DB -c "\df mamonsu_archive_stat" | grep "mamonsu_archive_stat" || exit 11
62+
$PSQL $DB -c "\df mamonsu_get_sys_param" | grep "mamonsu_get_sys_param" || exit 11
63+
$PSQL $DB -c "\df mamonsu_get_connections_states" | grep "mamonsu_get_connections_states" || exit 11
64+
$PSQL $DB -c "\df mamonsu_prepared_transaction" | grep "mamonsu_prepared_transaction" || exit 11
65+
$PSQL $DB -c "\df mamonsu_count_"$WALXLOG"_lag_lsn" | grep "mamonsu_count_"$WALXLOG"_lag_lsn" || exit 11
66+
}
67+
68+
function pg_drop_database() {
69+
DB=$1
70+
$PSQL -c "select pg_cancel_backend(pid) from pg_stat_activity where datname = '$DB'"
71+
$PSQL -c "drop DATABASE if exists $DB"
72+
}
73+
74+
function pg_drop_user() {
75+
PG_USER=$1
76+
77+
USER_EXISTS=`$PSQL -c "select 1 from pg_user where usename = '$PG_USER'" -t -A`
78+
if [[ $USER_EXISTS ]]
79+
then
80+
DBS=`psql -c "select datname from pg_database where datname not in ('template0','template1')" -t -A`
81+
82+
for DB in $DBS
83+
do
84+
$PSQL -d $DB -c "REASSIGN OWNED BY $PG_USER TO $PGSUPERUSER"
85+
$PSQL -d $DB -c "DROP OWNED BY $PG_USER"
86+
done
87+
88+
$PSQL -c "drop user $PG_USER"
89+
else
90+
echo "user $PG_USER do not exists"
91+
fi
92+
}
93+
94+
## test 1
95+
echo test 1
96+
### preparation
97+
pg_drop_user mamonsu
98+
$PSQL -c "create user mamonsu"
99+
100+
## test
101+
mamonsu bootstrap -M mamonsu
102+
##check
103+
check_db_objects mamonsu
104+
105+
106+
## test 2
107+
echo test 2
108+
### preparation
109+
pg_drop_user mamonsu
110+
pg_drop_database mamonsu
111+
$PSQL -c "create user mamonsu"
112+
$PSQL -c "create database mamonsu owner mamonsu"
113+
## test
114+
mamonsu bootstrap -M mamonsu -d mamonsu
115+
check_db_objects mamonsu mamonsu
116+
117+
## test 3
118+
echo test 3
119+
pg_drop_user mamonsu
120+
pg_drop_database mamonsu
121+
pg_drop_user pgsuper_user
122+
pg_drop_database pgsuper_user
123+
124+
$PSQL -c "create user mamonsu"
125+
$PSQL -c "create database mamonsu"
126+
$PSQL -c "create user pgsuper_user superuser"
127+
$PSQL -c "create database pgsuper_user "
128+
129+
mamonsu bootstrap -M mamonsu -U pgsuper_user
130+
131+
check_db_objects mamonsu pgsuper_user
132+
133+
## test 4
134+
echo test 4
135+
pg_drop_user mamonsu
136+
pg_drop_database mamonsu
137+
pg_drop_user pgsuper_user
138+
pg_drop_database pgsuper_user
139+
140+
$PSQL -c "create user mamonsu"
141+
$PSQL -c "create database mamonsu"
142+
$PSQL -c "create user pgsuper_user superuser"
143+
$PSQL -c "create database pgsuper_user "
144+
145+
mamonsu bootstrap -M mamonsu -U pgsuper_user -h localhost -p 5432
146+
147+
check_db_objects mamonsu pgsuper_user
148+
149+
exit 0

tests/local_install_mamonsu.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash -ex
2+
3+
apt-get -y update
4+
apt-get -y install python3
5+
apt-get -y install python3-setuptools
6+
7+
cd /var/tmp/mamonsu
8+
python3 setup.py build
9+
python3 setup.py install
10+
11+
exit 0

tests/local_tests.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash -ex
2+
3+
/var/tmp/mamonsu/tests/local_install_mamonsu.sh
4+
/var/tmp/mamonsu/tests/bootstrap.sh
5+
exit 0

0 commit comments

Comments
 (0)