4 SITEDIR=/etc/planetlab/configs
6 RPM=$(shell ls -rt /root/myplc*rpm | tail -1)
7 APIDIR=/usr/share/plc_api
9 PLC1=lurch.cs.princeton.edu
10 PLC2=planetlab-devbox.inria.fr
19 PUSH=pclean pplc2 papi2 pplc1 papi1
20 EXTRA-PUSHS= ./Shell.py ./TestPeers.py ./planetlab4.sql ./dummy-config ./peers-test.mk ./person-password.sh
24 papi: pclean papi1 papi2
25 pplc: pclean pplc1 pplc2
28 -find . '(' -name '*.pyc' -o -name '*~' ')' | xargs rm
30 rsync -a -v -C ./ root@$(PLC1):new_plc_api/
32 rsync -a -v -C $(EXTRA-PUSHS) ./PLC root@$(PLC1):$(CHROOT)$(APIDIR)/
34 rsync -a -v -C ./ root@$(PLC2):new_plc_api/
36 rsync -a -v -C $(EXTRA-PUSHS) ./PLC root@$(PLC2):$(CHROOT)$(APIDIR)/
39 DB=install-schema stop-clients db-drop restart-full-db
40 DBI= stop-clients db-drop restart-db db-restore restart-http
41 WEB=install-api restart
47 @echo Restored $(DBDUMP) on $(shell hostname) at $(shell date)
49 DBDUMP=planetlab4.dump
52 chroot $(CHROOT) pg_dump -c -U pgsqluser planetlab4 > $(DBDUMP)
57 @echo 'installing schema'
58 @rsync -a -v planetlab4.sql $(CHROOT)$(APIDIR)/planetlab4.sql
61 find . -name '*.py' | xargs tar cf - | ( cd $(CHROOT)$(APIDIR) ; tar xf -)
62 -find $(CHROOT)$(APIDIR) -name '*pyc' | xargs rm
67 @echo 'pkilling Shell.py'
70 service plc stop httpd
74 chroot $(CHROOT) psql -U postgres --port $(PORT) template1 -c 'drop database planetlab4'
77 echo Restoring $(DBDUMP)
78 rm -f $(DBDUMP).rest-log $(DBDUMP).rest-err
79 chroot $(CHROOT) psql -U postgres --port $(PORT) -d planetlab4 < $(DBDUMP) > $(DBDUMP).rest-log 2> $(DBDUMP).rest-err
80 ls -l $(DBDUMP).rest-log $(DBDUMP).rest-err
83 @echo 'restarting db only'
84 service plc stop postgresql
85 service plc start postgresql
88 @echo 'restarting full db'
89 service plc stop db postgresql httpd
90 service plc start httpd postgresql db
93 @echo 'Restarting PLC'
94 @chroot $(CHROOT) service plc restart
97 @echo 'Restarting httpd'
98 service plc stop httpd
99 service plc start httpd
102 UPGRADE=stop-clients down clean-plc up reconfig restart
107 @echo latest rpm is $(RPM)
110 cp $(SITEDIR)/$(SITE) .
120 cp $(SITE) $(SITEDIR)
121 (echo w; echo q) | chroot $(CHROOT) plc-config-tty
126 chroot $(CHROOT) /usr/share/plc_api/Shell.py
129 chroot $(CHROOT) psql -U pgsqluser planetlab4
132 emacs /plc/data/var/log/httpd/error_log /plc/data/var/log/boot.log
135 # remove time/delay dependent output
136 normalize = egrep -v "'expires':|^+++.*ellapsed"
138 TEST=run diff checkpoint
142 $(normalize) $*.out > $@
144 $(normalize) $*.ref > $@
146 diff: TestPeers-n.nref TestPeers-n.nout
148 diff TestPeers-n.nref TestPeers-n.nout
151 @echo adopting latest run as reference
152 cp TestPeers-n.out TestPeers-n.ref
153 rm -f TestPeers-n.n???
158 VARIANT-TESTS += run-n
160 $(PY) ./TestPeers.py > TestPeers-n.out 2>&1
161 VARIANT-TESTS += run-m
163 $(PY) ./TestPeers.py -m > TestPeers-m.out 2>&1
164 VARIANT-TESTS += run-b
166 $(PY) ./TestPeers.py -b > TestPeers-b.out 2>&1
167 VARIANT-TESTS += run-p run-pn
169 $(PY) ./TestPeers.py -p > TestPeers-pn.out 2>&1
170 VARIANT-TESTS += run-pb
172 $(PY) ./TestPeers.py -p -b > TestPeers-pb.out 2>&1
173 VARIANT-TESTS += run-ph
175 $(PY) ./TestPeers.py -p -H > TestPeers-ph.out 2>&1
176 VARIANT-TESTS += run-e run-en
178 $(PY) ./TestPeers.py -e > TestPeers-en.out 2>&1
179 VARIANT-TESTS += run-eb
181 $(PY) ./TestPeers.py -e -b > TestPeers-eb.out 2>&1
182 VARIANT-TESTS += run-eh
184 $(PY) ./TestPeers.py -e -H > TestPeers-eh.out 2>&1
186 VARIANT-TESTS += diff-m
187 diff-m: TestPeers-m.nref TestPeers-m.nout
188 diff TestPeers-m.nref TestPeers-m.nout
189 VARIANT-TESTS += ckp-m
191 cp TestPeers-m.out TestPeers-m.ref
192 rm -f TestPeers-m.n???
194 VARIANT-TESTS += diff-p
195 diff-p: TestPeers-pn.nref TestPeers-pn.nout
196 diff TestPeers-pn.nref TestPeers-pn.nout
197 VARIANT-TESTS += ckp-p
199 cp TestPeers-pn.out TestPeers-pn.ref
200 rm -f TestPeers-pn.n???
202 VARIANT-TESTS += diff-eh
203 diff-eh: TestPeers-eh.nref TestPeers-eh.nout
204 diff TestPeers-eh.nref TestPeers-eh.nout
205 VARIANT-TESTS += ckp-eh
207 cp TestPeers-eh.out TestPeers-eh.ref
208 rm -f TestPeers-eh.n???
210 ### need to run in installed plc for gaining direct access (psycopg2 broken)
211 VARIANT-TESTS += run-lpn-1
213 chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpn-1
215 $(PY) TestPeers.py -n -p -l 1 -f 8 > TestPeers-pn-1.out
216 VARIANT-TESTS += run-lpn-2
218 chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpn-2
220 $(PY) TestPeers.py -n -p -l 2 -f 8 > TestPeers-pn-2.out
222 VARIANT-TESTS += run-lpb-1
224 chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpb-1
226 $(PY) TestPeers.py -b -p -l 1 > TestPeers-pb-1.out
227 VARIANT-TESTS += run-lpb-2
229 chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpb-2
231 $(PY) TestPeers.py -b -p -l 2 > TestPeers-pb-2.out
233 VARIANT-TESTS += run-lph-1
235 chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lph-1
237 $(PY) TestPeers.py -H -p -l 1 > TestPeers-ph-1.out
238 VARIANT-TESTS += run-lph-1
240 chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lph-2
242 $(PY) TestPeers.py -H -p -l 2 > TestPeers-ph-2.out
251 save-n: save-n-1 save-n-2
252 save-n-1: DB1=populate-n-1.sql
254 save-n-2: DB2=populate-n-2.sql
258 save-b: save-b-1 save-b-2
259 save-b-1: DB1=populate-b-1.sql
261 save-b-2: DB2=populate-b-2.sql
265 save-h: save-h-1 save-h-2
266 save-h-1: DB1=populate-h-1.sql
268 save-h-2: DB2=populate-h-2.sql
272 ssh $(PLC1SSH) make -C new_plc_api -f peers-test.mk DBDUMP=$(DB1) db-dump
273 scp $(PLC1SSH):new_plc_api/$(DB1) .
275 ssh $(PLC2SSH) make -C new_plc_api -f peers-test.mk DBDUMP=$(DB2) db-dump
276 scp $(PLC2SSH):new_plc_api/$(DB2) .
278 VARIANT-DB += restore-n
279 restore-n: restore-n-1 restore-n-2
280 restore-n-1: DB1=populate-n-1.sql
281 restore-n-1: restore1
282 restore-n-2: DB2=populate-n-2.sql
285 VARIANT-DB += restore-b
286 restore-b: restore-b-1 restore-b-2
287 restore-b-1: DB1=populate-b-1.sql
288 restore-b-1: restore1
289 restore-b-2: DB2=populate-b-2.sql
292 VARIANT-DB += restore-h
293 restore-h: restore-h-1 restore-h-2
294 restore-h-1: DB1=populate-h-1.sql
295 restore-h-1: restore1
296 restore-h-2: DB2=populate-h-2.sql
300 scp $(DB1) $(PLC1SSH):new_plc_api/
301 ssh $(PLC1SSH) make -C new_plc_api -f peers-test.mk DBDUMP=$(DB1) dbi
303 scp $(DB2) $(PLC2SSH):new_plc_api/
304 ssh $(PLC2SSH) make -C new_plc_api -f peers-test.mk DBDUMP=$(DB2) dbi
307 HELP=rpm db-dump restart-http
316 @echo upgrade: $(UPGRADE)
318 @echo other test targets: $(VARIANT-TESTS)
319 @echo db targets: $(VARIANT-DB)
320 @echo OTHERS: $(HELP)