-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile
71 lines (60 loc) · 3.25 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# The help target prints out all targets with their descriptions organized
# beneath their categories. The categories are represented by '##@' and the
# target descriptions by '##'. The awk commands is responsible for reading the
# entire set of makefiles included in this invocation, looking for lines of the
# file as xyz: ## something, and then pretty-format the target and help. Then,
# if there's a line with ##@ something, that gets pretty-printed as a category.
# More info on the usage of ANSI control characters for terminal formatting:
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
# More info on the awk command:
# http://linuxcommand.org/lc3_adv_awk.php
help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
build: ## Build containers.
docker-compose build --force-rm --pull
start: ## Start containers.
docker-compose up -d
wait: ## Wait for databases to be ready.
timeout 90s bash -c "until docker exec pglogical-poc-pgprovider-1 pg_isready ; do sleep 5 ; done"
timeout 90s bash -c "until docker exec pglogical-poc-pgsubscriber-1 pg_isready ; do sleep 5 ; done"
init: wait ## Init databases.
docker exec -it pglogical-poc-pgprovider-1 \
pgbench -U postgres -d pg_logical_replication -i
docker exec -it pglogical-poc-pgsubscriber-1 \
pgbench -U postgres -d pg_logical_replication_results -i
reset: wait ## Reset databases.
docker exec -it pglogical-poc-pgprovider-1 \
psql -U postgres -d pg_logical_replication \
-c 'DROP TABLE IF EXISTS pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers CASCADE'
docker exec -it pglogical-poc-pgsubscriber-1 \
psql -U postgres -d pg_logical_replication_results \
-c 'DROP TABLE IF EXISTS pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers CASCADE'
docker exec -it pglogical-poc-pgsubscriber-1 \
psql -U postgres -d pg_logical_replication_results -f /drop-subscription.sql
docker exec -it pglogical-poc-pgprovider-1 \
psql -U postgres -d pg_logical_replication -f /drop-replication-set.sql
replicate: wait ## Run replication.
docker exec -it pglogical-poc-pgprovider-1 \
psql -U postgres -d pg_logical_replication -f /create-replication-set.sql
docker exec -it pglogical-poc-pgsubscriber-1 \
psql -U postgres -d pg_logical_replication_results -f /create-subscription.sql
docker exec -it pglogical-poc-pgprovider-1 \
pgbench -U postgres -d pg_logical_replication -c 10 -T 60 -r > pgresult && \
echo "\nhead\n" && \
head -n 22 pgresult && \
echo "\ntail\n" && \
tail -n 22 pgresult && \
rm pgresult
docker exec -it pglogical-poc-pgprovider-1 \
psql -U postgres -d pg_logical_replication \
-c 'SELECT COUNT(*) FROM pgbench_history WHERE tid = 1;'
docker exec -it pglogical-poc-pgsubscriber-1 \
psql -U postgres -d pg_logical_replication_results \
-c 'SELECT COUNT(*) FROM pgbench_history WHERE tid = 1;'
run: start init replicate ## Start containers, init databases and run replication.
list: # List running containers.
docker-compose ps
stop: ## Stop containers.
docker-compose down
clean: ## Clean up containers.
docker-compose rm --force --stop