summaryrefslogtreecommitdiff
path: root/tests/multimaster/regen.sh
blob: b790329aff03b1c8e88a4dcc40be885043194b2d (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#! /bin/bash

. ../testlib.sh

../zstop.sh

v='-v'

# bulkloader method
meth=0

src_db_list="src1 src2"
dst_db_list="dst"
db_list="$src_db_list $dst_db_list"
kdb_list=`echo $db_list | sed 's/ /,/g'`

#( cd ../..; make -s install )

echo " * create configs * "

# create ticker conf
cat > conf/pgqd.ini <<EOF
[pgqd]
database_list = $kdb_list
logfile = log/pgqd.log
pidfile = pid/pgqd.pid
EOF

# londiste configurations
for db in $src_db_list; do

# londiste on source
cat > conf/londiste_$db.ini << EOF
[londiste3]
job_name = londiste_$db
db = dbname=$db
queue_name = replika_$db
logfile = log/%(job_name)s.log
pidfile = pid/%(job_name)s.pid
EOF

# londiste on source to target
for dst in $dst_db_list; do
cat > conf/londiste_${db}_${dst}.ini << EOF
[londiste3]
job_name = londiste_${db}_${dst}
db = dbname=$dst
queue_name = replika_$db
logfile = log/%(job_name)s.log
pidfile = pid/%(job_name)s.pid
EOF

done
done

for db in $db_list; do
  cleardb $db
done

clearlogs

set -e

msg "Install londiste3 and initialize nodes"

for db in $src_db_list; do
run londiste3 $v conf/londiste_$db.ini create-root $db "dbname=$db"
for dst in $dst_db_list; do
run londiste3 $v conf/londiste_${db}_${dst}.ini create-leaf $dst "dbname=$dst" --provider="dbname=$db"
done
done

for db in $db_list; do
  run_sql $db "update pgq.queue set queue_ticker_idle_period='5 secs'"
done

msg "Run ticker"
run pgqd -d conf/pgqd.ini
run sleep 5

msg "See topology"
for db in $src_db_list; do
run londiste3 $v conf/londiste_$db.ini status
done

msg "Run londiste3 daemon for each node"
for db in $src_db_list; do
run londiste3 $v -d conf/londiste_$db.ini worker
for dst in $dst_db_list; do
run londiste3 $v -d conf/londiste_${db}_${dst}.ini worker
done
done

for db in $dst_db_list; do
    run createlang -d $db plpythonu
    run psql $db -f ../../sql/conflicthandler/merge_on_time.sql
done

msg "Create table on root nodes, fill couple of rows and register"
for db in $src_db_list; do
run_sql $db "create table mytable (id int4 primary key, data text, tstamp timestamptz default now())"
for n in 1 2 3; do
  run_sql $db "insert into mytable values ($n, 'row$n')"
done
run londiste3 $v conf/londiste_$db.ini add-table mytable
done

sleep 10

msg "Register table on dst node with creation"
#run londiste3 $v conf/londiste_src1_dst.ini add-table mytable --create --no-merge --handler=applyfn --handler-arg="func_name=merge_on_time" --handler-arg="func_conf=timefield=tstamp"
run londiste3 $v conf/londiste_src1_dst.ini add-table mytable --create --handler=multimaster --handler-arg="timefield=tstamp"
sleep 10
#run londiste3 $v conf/londiste_src2_dst.ini add-table mytable --expect-sync --no-merge --handler=applyfn --handler-arg="func_name=merge_on_time" --handler-arg="func_conf=timefield=tstamp"
run londiste3 $v conf/londiste_src2_dst.ini add-table mytable --expect-sync --handler=multimaster --handler-arg="timefield=tstamp"


for db in $src_db_list; do
for n in 4 5 6; do
  run_sql $db "insert into mytable values ($n, 'row$n::$db')"
done
sleep 3
done


for n in 2 3 4; do
    run_sql src1 "update mytable set data = 'ok', tstamp = now() where id = $n"
done

for n in 1 5 6; do
    run_sql src2 "update mytable set data = 'ok', tstamp = now() where id = $n"
done

run sleep 10

for dst in $dst_db_list; do
run_sql $dst "select * from mytable"
done

../zcheck.sh