2
2
set -euxo pipefail
3
3
4
4
DIR=${0%/* }
5
- IMAGE2TEST=" registry.gitlab.com/postgres-ai/database-lab/dblab-server:v2-0"
6
- POSTGRES_VERSION=" ${POSTGRES_VERSION:- 10} "
5
+
6
+ IMAGE_TAG=" ${IMAGE_TAG:- " master" } "
7
+ IMAGE2TEST=" registry.gitlab.com/postgres-ai/database-lab/dblab-server:${IMAGE_TAG} "
8
+ POSTGRES_VERSION=" ${POSTGRES_VERSION:- 13} "
9
+
7
10
# ## Step 1. Prepare a machine with two disks, Docker and ZFS.
8
11
9
- source " ${DIR} /_prerequisites.ubuntu.sh"
12
+ # source "${DIR}/_prerequisites.ubuntu.sh"
10
13
source " ${DIR} /_zfs.file.sh"
11
14
12
15
# ## Step 2. Prepare database data directory.
13
16
sudo docker run \
14
17
--name dblab_pg_initdb \
15
18
--label dblab_control \
16
- --env PGDATA=/var/lib/dblab/data \
19
+ --label dblab_test \
20
+ --env PGDATA=/var/lib/dle/test/data \
17
21
--env POSTGRES_HOST_AUTH_METHOD=trust \
18
- --volume /var/lib/dblab :/var/lib/dblab \
22
+ --volume /var/lib/dle/test :/var/lib/dle/test \
19
23
--detach \
20
24
postgres:${POSTGRES_VERSION} -alpine
21
25
22
26
for i in {1..300}; do
23
- sudo docker exec -it dblab_pg_initdb psql -U postgres -c ' select' > /dev/null 2>&1 && break || echo " test database is not ready yet"
27
+ sudo docker exec dblab_pg_initdb psql -U postgres -c ' select' > /dev/null 2>&1 && break || echo " test database is not ready yet"
24
28
sleep 1
25
29
done
26
30
27
31
sleep 10
28
- sudo docker exec -it dblab_pg_initdb psql -U postgres -c ' create database test'
32
+ sudo docker exec dblab_pg_initdb psql -U postgres -c ' create database test'
29
33
30
34
# 1,000,000 accounts, ~0.14 GiB of data.
31
- sudo docker exec -it dblab_pg_initdb pgbench -U postgres -i -s 10 test
35
+ sudo docker exec dblab_pg_initdb pgbench -U postgres -i -s 10 test
32
36
33
37
sudo docker stop dblab_pg_initdb
34
38
sudo docker rm dblab_pg_initdb
35
39
40
+
41
+
36
42
# ## Step 3. Configure and launch the Database Lab server.
37
43
mkdir -p ~ /.dblab
38
44
cp ./configs/config.example.physical_generic.yml ~ /.dblab/server_test.yml
39
45
sed -ri ' s/^(\s*)(host:.*$)/\1host: ""/' ~ /.dblab/server_test.yml
40
46
sed -ri ' s/^(\s*)(port: 2345$)/\1port: 12345/' ~ /.dblab/server_test.yml
47
+ sed -ri ' s/^(\s*)(from: 6000$)/\1from: 16000/' ~ /.dblab/server_test.yml
48
+ sed -ri ' s/^(\s*)(mountDir: "\/var\/lib\/dblab"$)/\1mountDir: "\/var\/lib\/dle\/test"/' ~ /.dblab/server_test.yml
49
+ sed -ri ' s/^(\s*)(clonesMountDir: \/var\/lib\/dblab\/clones$)/\1clonesMountDir: "\/var\/lib\/dle\/test\/clones"/' ~ /.dblab/server_test.yml
50
+ sed -ri ' s/^(\s*)(unixSocketDir: \/var\/lib\/dblab\/sockets$)/\1unixSocketDir: "\/var\/lib\/dle\/test\/sockets"/' ~ /.dblab/server_test.yml
51
+ sed -ri ' s/^(\s*)(to: 6100$)/\1to: 16100/' ~ /.dblab/server_test.yml
41
52
sed -ri ' s/^(\s*)(debug:.*$)/\1debug: true/' ~ /.dblab/server_test.yml
42
53
sed -ri ' s/^(\s*)(pool:.*$)/\1pool: "test_pool"/' ~ /.dblab/server_test.yml
54
+ sed -ri ' s/^(\s*)(enabled: true$)/\1enabled: false/' ~ /.dblab/server_test.yml
43
55
sed -ri ' s/^(\s*)(- physicalRestore$)/\1/' ~ /.dblab/server_test.yml
56
+ sed -ri ' s/^(\s*)(PGUSER: "postgres"$)/\1/' ~ /.dblab/server_test.yml
57
+ sed -ri ' s/^(\s*)(PGPASSWORD: "postgres"$)/\1/' ~ /.dblab/server_test.yml
58
+ sed -ri ' s/^(\s*)(PGHOST: "source.hostname"$)/\1/' ~ /.dblab/server_test.yml
59
+ sed -ri ' s/^(\s*)(PGPORT: 5432$)/\1/' ~ /.dblab/server_test.yml
44
60
45
61
# replace postgres version
46
62
sed -ri " s/:12/:${POSTGRES_VERSION} /g" ~ /.dblab/server_test.yml
@@ -49,10 +65,11 @@ sudo docker run \
49
65
--detach \
50
66
--name dblab_test \
51
67
--label dblab_control \
68
+ --label dblab_test \
52
69
--privileged \
53
70
--publish 12345:12345 \
54
71
--volume /var/run/docker.sock:/var/run/docker.sock \
55
- --volume /var/lib/dblab :/var/lib/dblab :rshared \
72
+ --volume /var/lib/dle/test :/var/lib/dle/test :rshared \
56
73
--volume ~ /.dblab/server_test.yml:/home/dblab/configs/config.yml \
57
74
" ${IMAGE2TEST} "
58
75
@@ -65,7 +82,7 @@ for i in {1..30}; do
65
82
done
66
83
67
84
# ## Step 4. Setup Database Lab CLI.
68
- curl https://gitlab.com/postgres-ai/database-lab/-/raw/master/scripts/cli_install.sh | bash
85
+ dblab --version > /dev/null 2>&1 || curl https://gitlab.com/postgres-ai/database-lab/-/raw/master/scripts/cli_install.sh | bash
69
86
dblab --version
70
87
dblab init --url http://localhost:12345 --token secret_token --environment-id test
71
88
dblab instance status
@@ -74,18 +91,20 @@ dblab instance status
74
91
dblab clone create --username testuser --password testuser --id testclone
75
92
dblab clone list
76
93
export PGPASSWORD=testuser
77
- psql " host=localhost port=6000 user=testuser dbname=test" -c ' \l'
94
+ psql " host=localhost port=16000 user=testuser dbname=test" -c ' \l'
78
95
79
96
# ## Step 6. Reset clone
80
- psql " host=localhost port=6000 user=testuser dbname=test" -c ' create database reset_database' ;
81
- psql " host=localhost port=6000 user=testuser dbname=test" -c ' \l'
97
+ psql " host=localhost port=16000 user=testuser dbname=test" -c ' create database reset_database' ;
98
+ psql " host=localhost port=16000 user=testuser dbname=test" -c ' \l'
82
99
dblab clone reset testclone
83
100
dblab clone status testclone
84
- psql " host=localhost port=6000 user=testuser dbname=test" -c ' \l'
101
+ psql " host=localhost port=16000 user=testuser dbname=test" -c ' \l'
85
102
dblab clone destroy testclone
86
103
87
104
# ## Step 7. Destroy clone
88
105
dblab clone create --username testuser --password testuser --id testclone2
89
106
dblab clone list
90
107
dblab clone destroy testclone2
91
108
dblab clone list
109
+
110
+ source " ${DIR} /_cleanup.sh"
0 commit comments