@@ -3,8 +3,14 @@ set -euxo pipefail
3
3
4
4
TAG=" ${TAG:- " master" } "
5
5
IMAGE2TEST=" registry.gitlab.com/postgres-ai/database-lab/dblab-server:${TAG} "
6
+ DLE_SERVER_NAME=" dblab_server_test"
6
7
7
8
# Environment variables for replacement rules
9
+ export DLE_TEST_MOUNT_DIR=" /var/lib/test/dblab"
10
+ export DLE_TEST_POOL_NAME=" test_dblab_pool"
11
+ export DLE_SERVER_PORT=${DLE_SERVER_PORT:- 12345}
12
+ export DLE_PORT_POOL_FROM=${DLE_PORT_POOL_FROM:- 9000}
13
+ export DLE_PORT_POOL_TO=${DLE_PORT_POOL_TO:- 9100}
8
14
export POSTGRES_VERSION=" ${POSTGRES_VERSION:- 13} "
9
15
export SOURCE_DBNAME=" ${SOURCE_DBNAME:- " test" } "
10
16
export SOURCE_USERNAME=" ${SOURCE_USERNAME:- " test_user" } "
@@ -38,11 +44,17 @@ yq eval -i '
38
44
.global.debug = true |
39
45
.global.telemetry.enabled = false |
40
46
.localUI.enabled = false |
47
+ .server.port = env(DLE_SERVER_PORT) |
48
+ .poolManager.mountDir = env(DLE_TEST_MOUNT_DIR) |
49
+ .provision.portPool.from = env(DLE_PORT_POOL_FROM) |
50
+ .provision.portPool.to = env(DLE_PORT_POOL_TO) |
41
51
.databaseContainer.dockerImage = "postgresai/extended-postgres:" + strenv(POSTGRES_VERSION) |
52
+ .retrieval.spec.logicalDump.options.dumpLocation = env(DLE_TEST_MOUNT_DIR) + "/" + env(DLE_TEST_POOL_NAME) + "/dump" |
42
53
.retrieval.spec.logicalDump.options.source.connection.dbname = strenv(SOURCE_DBNAME) |
43
54
.retrieval.spec.logicalDump.options.source.connection.username = strenv(SOURCE_USERNAME) |
44
55
.retrieval.spec.logicalDump.options.source.rdsIam.awsRegion = strenv(AWS_REGION) |
45
- .retrieval.spec.logicalDump.options.source.rdsIam.dbInstanceIdentifier = strenv(RDS_DB_IDENTIFIER)
56
+ .retrieval.spec.logicalDump.options.source.rdsIam.dbInstanceIdentifier = strenv(RDS_DB_IDENTIFIER) |
57
+ .retrieval.spec.logicalRestore.options.dumpLocation = env(DLE_TEST_MOUNT_DIR) + "/" + env(DLE_TEST_POOL_NAME) + "/dump"
46
58
' " ${configDir} /server.yml"
47
59
48
60
# Download AWS RDS certificate
@@ -51,15 +63,16 @@ curl https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \
51
63
52
64
# # Run Database Lab Engine
53
65
sudo docker run \
54
- --name dblab_server \
66
+ --name ${DLE_SERVER_NAME} \
55
67
--label dblab_control \
68
+ --label dblab_test \
56
69
--privileged \
57
- --publish 2345:2345 \
70
+ --publish ${DLE_SERVER_PORT} : ${DLE_SERVER_PORT} \
58
71
--volume " ${configDir} " :/home/dblab/configs:ro \
59
72
--volume " ${metaDir} " :/home/dblab/meta \
60
- --volume /var/lib/dblab/dblab_pool/dump:/var/lib/dblab/dblab_pool/dump \
73
+ --volume ${DLE_TEST_MOUNT_DIR} /${DLE_TEST_POOL_NAME} /dump:${DLE_TEST_MOUNT_DIR} /${DLE_TEST_POOL_NAME} /dump \
74
+ --volume ${DLE_TEST_MOUNT_DIR} :${DLE_TEST_MOUNT_DIR} /:rshared \
61
75
--volume /var/run/docker.sock:/var/run/docker.sock \
62
- --volume /var/lib/dblab:/var/lib/dblab/:rshared \
63
76
--volume /sys/kernel/debug:/sys/kernel/debug:rw \
64
77
--volume /lib/modules:/lib/modules:ro \
65
78
--volume /proc:/host_proc:ro \
@@ -71,11 +84,11 @@ sudo docker run \
71
84
" ${IMAGE2TEST} "
72
85
73
86
# Check the Database Lab Engine logs
74
- sudo docker logs dblab_server -f 2>&1 | awk ' {print "[CONTAINER dblab_server]: "$0}' &
87
+ sudo docker logs ${DLE_SERVER_NAME} -f 2>&1 | awk ' {print "[CONTAINER dblab_server]: "$0}' &
75
88
76
89
# ## Waiting for the Database Lab Engine initialization.
77
90
for i in {1..30}; do
78
- curl http://localhost:2345 > /dev/null 2>&1 && break || echo " dblab is not ready yet"
91
+ curl http://localhost:${DLE_SERVER_PORT} > /dev/null 2>&1 && break || echo " dblab is not ready yet"
79
92
sleep 10
80
93
done
81
94
@@ -91,7 +104,7 @@ dblab --version
91
104
# Initialize CLI configuration
92
105
dblab init \
93
106
--environment-id=test \
94
- --url=http://localhost:2345 \
107
+ --url=http://localhost:${DLE_SERVER_PORT} \
95
108
--token=secret_token \
96
109
--insecure
97
110
@@ -107,14 +120,14 @@ dblab clone create \
107
120
108
121
# Connect to a clone and check the available table
109
122
PGPASSWORD=secret_password psql \
110
- " host=localhost port=6000 user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' \dt+'
123
+ " host=localhost port=${DLE_PORT_POOL_FROM} user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' \dt+'
111
124
112
125
# Drop table
113
126
PGPASSWORD=secret_password psql \
114
- " host=localhost port=6000 user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' drop table pgbench_accounts'
127
+ " host=localhost port=${DLE_PORT_POOL_FROM} user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' drop table pgbench_accounts'
115
128
116
129
PGPASSWORD=secret_password psql \
117
- " host=localhost port=6000 user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' \dt+'
130
+ " host=localhost port=${DLE_PORT_POOL_FROM} user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' \dt+'
118
131
119
132
# # Reset clone
120
133
dblab clone reset testclone
@@ -124,11 +137,14 @@ dblab clone status testclone
124
137
125
138
# Check the database objects (everything should be the same as when we started)
126
139
PGPASSWORD=secret_password psql \
127
- " host=localhost port=6000 user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' \dt+'
140
+ " host=localhost port=${DLE_PORT_POOL_FROM} user=dblab_user_1 dbname=${SOURCE_DBNAME} " -c ' \dt+'
128
141
129
142
# ## Step 4. Destroy clone
130
143
dblab clone destroy testclone
131
144
dblab clone list
132
145
146
+ # # Stop DLE.
147
+ sudo docker stop ${DLE_SERVER_NAME}
148
+
133
149
# ## Finish. clean up
134
150
source " ${DIR} /_cleanup.sh"
0 commit comments