- modified insert_new_item to support multiple value insert in single sql statement
[plcapi.git] / peers-test.mk
1 ### -*-Makefile-*-
2 CHROOT=/plc/root
3 PORT=5432
4 SITEDIR=/etc/planetlab/configs
5 SITE=site.xml
6 RPM=$(shell ls -rt /root/myplc*rpm | tail -1)
7 APIDIR=/usr/share/plc_api
8
9 PLC1=lurch.cs.princeton.edu
10 PLC2=planetlab-devbox.inria.fr
11 PLC1SSH=root@$(PLC1)
12 PLC2SSH=root@$(PLC2)
13
14 all:help
15
16 ####################
17 PUSH=pclean pplc2 papi2 pplc1 papi1
18
19 push:$(PUSH)
20
21 papi: pclean papi1 papi2
22 pplc: pclean pplc1 pplc2
23
24 pclean:
25         -find . '(' -name '*.pyc' -o -name '*~' ')' | xargs rm
26 papi1:
27         rsync -a -v -C ./ root@$(PLC1):new_plc_api/
28 pplc1:
29         rsync -a -v -C ./planetlab4.sql ./PLC root@$(PLC1):$(CHROOT)$(APIDIR)/
30 papi2:
31         rsync -a -v -C ./ root@$(PLC2):new_plc_api/
32 pplc2:
33         rsync -a -v -C ./planetlab4.sql ./PLC root@$(PLC2):$(CHROOT)$(APIDIR)/
34
35 ####################
36 DB=install-schema stop-clients db-drop restart-full-db
37 DBI= stop-clients db-drop restart-db db-restore restart-http
38 WEB=install-api restart
39
40 db: $(DB)
41         @date
42
43 dbi: $(DBI)
44         @echo Restored $(DBDUMP) on $(shell hostname) at $(shell date)
45
46 DBDUMP=planetlab4.dump
47
48 db-dump:
49         chroot $(CHROOT) pg_dump -c -U pgsqluser planetlab4 > $(DBDUMP)
50
51 web: $(WEB)
52
53 install-schema:
54         @echo 'installing schema'
55         @rsync -a -v planetlab4.sql $(CHROOT)$(APIDIR)/planetlab4.sql
56
57 install-api:
58         find . -name '*.py' | xargs tar cf - | ( cd $(CHROOT)$(APIDIR) ; tar xf -)
59         -find $(CHROOT)$(APIDIR) -name '*pyc' | xargs rm
60
61 stop-clients:
62         @echo 'pkilling psql'
63         @-pkill psql
64         @echo 'pkilling Shell.py'
65         @-pkill Shell.py
66         @echo stopping httpd
67         service plc stop httpd
68
69 db-drop:
70         echo 'dropping db'
71         chroot $(CHROOT) psql -U postgres --port $(PORT) template1 -c 'drop database planetlab4'
72
73 db-restore: 
74         echo Restoring $(DBDUMP)
75         rm -f $(DBDUMP).rest-log  $(DBDUMP).rest-err
76         chroot $(CHROOT) psql -U postgres --port $(PORT) -d planetlab4 < $(DBDUMP) > $(DBDUMP).rest-log 2> $(DBDUMP).rest-err
77         ls -l $(DBDUMP).rest-log  $(DBDUMP).rest-err
78
79 restart-db:
80         @echo 'restarting db only'
81         service plc stop postgresql
82         service plc start postgresql
83
84 restart-full-db:
85         @echo 'restarting full db'
86         service plc stop db postgresql httpd
87         service plc start httpd postgresql db
88
89 restart:
90         @echo 'Restarting PLC'
91         @chroot $(CHROOT) service plc restart
92
93 restart-http:
94         @echo 'Restarting httpd'
95         service plc stop httpd
96         service plc start httpd
97
98 ####################
99 UPGRADE=stop-clients down clean-plc up reconfig restart
100
101 upgrade: $(UPGRADE)
102
103 rpm:
104         @echo latest rpm is $(RPM)
105
106 down:
107         cp $(SITEDIR)/$(SITE) .
108         rpm -e myplc
109 clean-plc:
110         rm -rf /plc
111 up:
112         rpm -i $(RPM)
113
114 reconfig:
115         service plc mount
116         mkdir -p $(SITEDIR)
117         cp $(SITE) $(SITEDIR)
118         (echo w; echo q) | chroot $(CHROOT) plc-config-tty
119
120 ####################
121 RUN=api sql log
122 api:
123         chroot $(CHROOT) /usr/share/plc_api/Shell.py
124
125 sql:
126         chroot $(CHROOT) psql -U pgsqluser planetlab4
127
128 log:
129         emacs /plc/data/var/log/httpd/error_log /plc/data/var/log/boot.log
130
131 ####################
132 # remove time/delay dependent output
133 normalize       = egrep -v "'expires':|^+++.*ellapsed"
134
135 TEST=run checkpoint diff
136 run: run-n normalize 
137 normalize: TestPeers-n.nout TestPeers-n.nref
138
139 %.nout: %.out
140         $(normalize) $*.out > $@
141 %.nref: %.ref
142         $(normalize) $*.ref > $@
143
144 diff: normalize
145         @echo '<< REF OUT>>'
146         diff TestPeers-n.ref TestPeers-n.out
147
148 ckp checkpoint:
149         @echo adopting latest run as reference
150         cp TestPeers-n.out TestPeers-n.ref
151         rm -f TestPeers-n.n???
152
153 # variant runs
154 VARIANT-TESTS :=
155
156 VARIANT-TESTS += run-n
157 run-n: 
158         python -u ./TestPeers.py > TestPeers-n.out 2>&1
159 VARIANT-TESTS += run-m
160 run-m:
161         python -u ./TestPeers.py -m > TestPeers-m.out 2>&1
162 VARIANT-TESTS += run-b
163 run-b:
164         python -u ./TestPeers.py -b > TestPeers-b.out 2>&1
165 VARIANT-TESTS += run-p run-pn
166 run-p run-pn:
167         python -u ./TestPeers.py -p > TestPeers-p.out 2>&1
168 VARIANT-TESTS += run-pb
169 run-pb:
170         python -u ./TestPeers.py -p -b > TestPeers-pb.out 2>&1
171 VARIANT-TESTS += run-ph
172 run-ph:
173         python -u ./TestPeers.py -p -H > TestPeers-ph.out 2>&1
174 VARIANT-TESTS += run-e run-en
175 run-e run-en:
176         python -u ./TestPeers.py -e > TestPeers-e.out 2>&1
177 VARIANT-TESTS += run-eb
178 run-eb:
179         python -u ./TestPeers.py -e -b > TestPeers-eb.out 2>&1
180 VARIANT-TESTS += run-eh
181 run-eh:
182         python -u ./TestPeers.py -e -H > TestPeers-eh.out 2>&1
183
184 VARIANT-TESTS += diff-m
185 diff-m: TestPeers-m.nref TestPeers-m.nout 
186         diff TestPeers-m.nref TestPeers-m.nout
187 VARIANT-TESTS += ckp-m
188 ckp-m:
189         cp TestPeers-m.out TestPeers-m.ref
190         rm -f TestPeers-m.n???
191
192 VARIANT-TESTS += diff-p
193 diff-p: TestPeers-p.nref TestPeers-p.nout 
194         diff TestPeers-p.nref TestPeers-p.nout
195 VARIANT-TESTS += ckp-p
196 ckp-p:
197         cp TestPeers-p.out TestPeers-p.ref
198         rm -f TestPeers-p.n???
199
200
201 VARIANTS-DB := 
202
203 DB1=populate-1.sql
204 DB2=populate-2.sql
205
206 SAVE=save1 save2
207 VARIANT-DB += save
208 save: $(SAVE)
209
210 VARIANT-DB += save-n
211 save-n: DB1=populate-n-1.sql
212 save-n: DB2=populate-n-2.sql
213 save-n:save
214
215 VARIANT-DB += save-b
216 save-b: DB1=populate-b-1.sql
217 save-b: DB2=populate-b-2.sql
218 save-b:save
219
220 VARIANT-DB += save-h
221 save-h: DB1=populate-h-1.sql
222 save-h: DB2=populate-h-2.sql
223 save-h:save
224
225 save1:
226         ssh $(PLC1SSH) "make -C new_plc_api -f peers-test.mk DBDUMP=$(DB1) db-dump"
227         scp $(PLC1SSH):new_plc_api/$(DB1) .
228 save2:
229         ssh $(PLC2SSH) "make -C new_plc_api -f peers-test.mk DBDUMP=$(DB2) db-dump"
230         scp $(PLC2SSH):new_plc_api/$(DB2) .
231
232 RESTORE=restore1 restore2
233 VARIANT-DB += restore
234 restore:$(RESTORE)
235
236 VARIANT-DB += restore-n
237 restore-n: DB1=populate-n-1.sql
238 restore-n: DB2=populate-n-2.sql
239 restore-n:restore
240
241 VARIANT-DB += restore-b
242 restore-b: DB1=populate-b-1.sql
243 restore-b: DB2=populate-b-2.sql
244 restore-b:restore
245
246 VARIANT-DB += restore-h
247 restore-h: DB1=populate-h-1.sql
248 restore-h: DB2=populate-h-2.sql
249 restore-h:restore
250
251 restore1:
252         scp $(DB1) $(PLC1SSH):new_plc_api/
253         ssh $(PLC1SSH) "make -C  new_plc_api -f peers-test.mk DBDUMP=$(DB1) dbi"
254 restore2:
255         scp $(DB2) $(PLC2SSH):new_plc_api/
256         ssh $(PLC2SSH) "make -C  new_plc_api -f peers-test.mk DBDUMP=$(DB2) dbi"
257
258 #######
259 HELP=rpm db-dump restart-http
260
261 help:
262         @echo known targets:
263         @echo push: $(PUSH) 
264         @echo db: $(DB) 
265         @echo dbi: $(DBI) 
266         @echo run: $(RUN)
267         @echo web: $(WEB) 
268         @echo upgrade: $(UPGRADE)
269         @echo test: $(TEST)
270         @echo other test targets: $(VARIANT-TESTS)
271         @echo save:$(SAVE)
272         @echo restore:$(RESTORE)
273         @echo db targets: $(VARIANT-DB)
274         @echo OTHERS: $(HELP)
275