X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=peers-test.mk;h=96fe2f23cd51615974da3f11c3debc992318dd53;hb=4b502de7c2f76ac73b25321eceb07ddc33866fdf;hp=9e9458f56b063e7c79574a3ffadfb42e8c91ea75;hpb=865c7ad3dba34691309904e49cb5885e8d9cd5a1;p=plcapi.git diff --git a/peers-test.mk b/peers-test.mk index 9e9458f..96fe2f2 100644 --- a/peers-test.mk +++ b/peers-test.mk @@ -6,13 +6,19 @@ SITE=site.xml RPM=$(shell ls -rt /root/myplc*rpm | tail -1) APIDIR=/usr/share/plc_api -PLC1=lurch.cs.princeton.edu -PLC2=planetlab-devbox.inria.fr +PLC1=planetlab-devbox.inria.fr +PLC2=lurch.cs.princeton.edu +PLC1SSH=root@$(PLC1) +PLC2SSH=root@$(PLC2) + +PY=python -u all:help #################### -PUSH=pclean pplc2 papi2 pplc1 papi1 +PUSH=pclean pplc1 papi1 pplc2 papi2 +#EXTRA-PUSHS= ./Shell.py ./TestPeers.py ./planetlab4.sql ./dummy-config ./peers-test.mk ./person-password.sh +EXTRA-PUSHS= ./TestPeers.py ./planetlab4.sql ./peers-test.mk ./person-password.sh ./plcsh push:$(PUSH) @@ -24,21 +30,27 @@ pclean: papi1: rsync -a -v -C ./ root@$(PLC1):new_plc_api/ pplc1: - rsync -a -v -C ./planetlab4.sql ./PLC root@$(PLC1):$(CHROOT)$(APIDIR)/ + rsync -a -v -C $(EXTRA-PUSHS) ./PLC root@$(PLC1):$(CHROOT)$(APIDIR)/ papi2: rsync -a -v -C ./ root@$(PLC2):new_plc_api/ pplc2: - rsync -a -v -C ./planetlab4.sql ./PLC root@$(PLC2):$(CHROOT)$(APIDIR)/ + rsync -a -v -C $(EXTRA-PUSHS) ./PLC root@$(PLC2):$(CHROOT)$(APIDIR)/ #################### -DB=install-schema stop-clients clean-db restart-db +DB=install-schema stop-clients db-drop restart-full-db +DBRESTORE= stop-clients db-drop restart-db db-restore restart-http WEB=install-api restart db: $(DB) @date +dbrestore: $(DBRESTORE) + @echo Restored $(DBDUMPFILE) on $(shell hostname) at $(shell date) + +DBDUMPFILE=planetlab4.dump + db-dump: - chroot $(CHROOT) pg_dump -U pgsqluser planetlab4 > planetlab4.dump + chroot $(CHROOT) pg_dump -c -U pgsqluser planetlab4 > $(DBDUMPFILE) web: $(WEB) @@ -56,27 +68,76 @@ stop-clients: @echo 'pkilling Shell.py' @-pkill Shell.py @echo stopping httpd - @chroot $(CHROOT) /etc/plc.d/httpd stop + service plc stop httpd -clean-db: - @echo 'dropping db' - @chroot $(CHROOT) psql -U postgres --port $(PORT) template1 -c 'drop database planetlab4' +db-drop: + echo 'dropping db' + chroot $(CHROOT) psql -U postgres --port $(PORT) template1 -c 'drop database planetlab4' + +db-restore: + echo Restoring $(DBDUMPFILE) + rm -f $(DBDUMPFILE).rest-log $(DBDUMPFILE).rest-err + chroot $(CHROOT) psql -U postgres --port $(PORT) -d planetlab4 < $(DBDUMPFILE) > $(DBDUMPFILE).rest-log 2> $(DBDUMPFILE).rest-err + ls -l $(DBDUMPFILE).rest-log $(DBDUMPFILE).rest-err restart-db: - @echo 'restarting db' - @chroot $(CHROOT) service plc stop db postgresql httpd - @chroot $(CHROOT) service plc start httpd postgresql db + @echo 'restarting db only' + service plc stop postgresql + service plc start postgresql + +restart-full-db: + @echo 'restarting full db' + service plc stop db postgresql httpd + service plc start httpd postgresql db restart: @echo 'Restarting PLC' @chroot $(CHROOT) service plc restart -http: +restart-http: @echo 'Restarting httpd' - @chroot $(CHROOT) /etc/plc.d/httpd stop ; chroot $(CHROOT) /etc/plc.d/httpd start + service plc stop httpd + service plc start httpd #################### -UPGRADE=down up reconfig restart +PEERS= peer-gpg peer-push-gpg peer-push-cacert + +peers: $(PEERS) +peer-gpg: peer-gpg-1 peer-gpg-2 +peer-gpg-1: + ssh $(PLC1SSH) "gpg --homedir=/etc/planetlab --export --armor > /etc/planetlab/gpg_plc1.pub" +peer-gpg-2: + ssh $(PLC2SSH) "gpg --homedir=/etc/planetlab --export --armor > /etc/planetlab/gpg_plc2.pub" + +# directly scp'ing from one url to the other does not work, looks like +# first host tries to connect the second one +peer-push-gpg: peer-push-gpg-1 peer-push-gpg-2 +peer-push-gpg-1: + scp $(PLC1SSH):/etc/planetlab/gpg_plc1.pub ./ + scp ./gpg_plc1.pub $(PLC2SSH):/etc/planetlab/ +peer-push-gpg-2: + scp $(PLC2SSH):/etc/planetlab/gpg_plc2.pub ./ + scp ./gpg_plc2.pub $(PLC1SSH):/etc/planetlab/ + +peer-push-cacert: peer-push-cacert-1 peer-push-cacert-2 +peer-push-cacert-1: + scp $(PLC1SSH):/etc/planetlab/api_ca_ssl.crt ./api_plc1.crt + scp ./api_plc1.crt $(PLC2SSH):/etc/planetlab/ + scp ./api_plc1.crt $(PLC1SSH):/etc/planetlab/ +peer-push-cacert-2: + scp $(PLC2SSH):/etc/planetlab/api_ca_ssl.crt ./api_plc2.crt + scp ./api_plc2.crt $(PLC1SSH):/etc/planetlab/ + scp ./api_plc2.crt $(PLC2SSH):/etc/planetlab/ + +HELP += peers-clean +peers-clean: peers-clean-1 peers-clean-2 +peers-clean-1: + ssh $(PLC1SSH) "rm -f /etc/planetlab/*plc[12]*" +peers-clean-2: + ssh $(PLC1SSH) "rm -f /etc/planetlab/*plc[12]*" + +#################### +UPGRADE=stop-clients down clean-plc up reconfig restart upgrade: $(UPGRADE) @@ -86,6 +147,8 @@ rpm: down: cp $(SITEDIR)/$(SITE) . rpm -e myplc +clean-plc: + rm -rf /plc up: rpm -i $(RPM) @@ -98,7 +161,7 @@ reconfig: #################### RUN=api sql log api: - chroot $(CHROOT) /usr/share/plc_api/Shell.py + chroot $(CHROOT) /usr/bin/plcsh sql: chroot $(CHROOT) psql -U pgsqluser planetlab4 @@ -110,47 +173,209 @@ log: # remove time/delay dependent output normalize = egrep -v "'expires':|^+++.*ellapsed" -TEST=run checkpoint diff -run: run-only normalize -run-only: - python -u ./TestPeers.py > TestPeers.out 2>&1 - -normalize: TestPeers.out.nor TestPeers.ref.nor -TestPeers.out.nor: TestPeers.out - $(normalize) TestPeers.out > TestPeers.out.nor -TestPeers.ref.nor: TestPeers.ref - $(normalize) TestPeers.ref > TestPeers.ref.nor - -diff: normalize - @echo '<< REF OUT>>' - diff TestPeers.ref.nor TestPeers.out.nor - -checkpoint: - @echo adopting latest run as reference - cp TestPeers.out TestPeers.ref - cp TestPeers.out.nor TestPeers.ref.nor - -mrun: - python -u ./TestPeers.py -m > TestPeers.mout 2>&1 -brun: - python -u ./TestPeers.py -b > TestPeers.bout 2>&1 -prun: - python -u ./TestPeers.py -p > TestPeers.pout 2>&1 -pbrun: - python -u ./TestPeers.py -p -b > TestPeers.pbout 2>&1 -phrun: - python -u ./TestPeers.py -p -H > TestPeers.phout 2>&1 +TEST=run diff ckp +run: run-en +diff: diff-en +ckp: ckp-en + +%.nout: %.out + $(normalize) $*.out > $@ +%.nref: %.ref + $(normalize) $*.ref > $@ + +# variant runs +VARIANT-TESTS := + +# run end of test (after it was populated) with mini size +VARIANT-TESTS += run-em +run-em: + $(PY) ./TestPeers.py -e -m > testpeers-em.out 2>&1 +VARIANT-TESTS += run-en +run-en: + $(PY) ./TestPeers.py -e > testpeers-en.out 2>&1 +# big size +VARIANT-TESTS += run-eb +run-eb: + $(PY) ./TestPeers.py -e -b > testpeers-eb.out 2>&1 +# huge size +VARIANT-TESTS += run-eh +run-eh: + $(PY) ./TestPeers.py -e -H > testpeers-eh.out 2>&1 + +# normal size - performs diff and checkpoint (adopt result) +VARIANT-TESTS += diff-en +diff-en: testpeers-en.nref testpeers-en.nout + diff testpeers-en.nref testpeers-en.nout +VARIANT-TESTS += ckp-en +ckp-en: + cp testpeers-en.out testpeers-en.ref + rm -f testpeers-en.n??? + +VARIANT-TESTS += diff-eb +diff-eb: testpeers-eb.nref testpeers-eb.nout + diff testpeers-eb.nref testpeers-eb.nout +VARIANT-TESTS += ckp-eb +ckp-eb: + cp testpeers-eb.out testpeers-eb.ref + rm -f testpeers-eb.n??? + +VARIANT-TESTS += diff-eh +diff-eh: testpeers-eh.nref testpeers-eh.nout + diff testpeers-eh.nref testpeers-eh.nout +VARIANT-TESTS += ckp-eh +ckp-eh: + cp testpeers-eh.out testpeers-eh.ref + rm -f testpeers-eh.n??? + +### locally populate, various sizes +# need to run in installed plc for gaining direct access (psycopg2 broken) +VARIANT-TESTS += run-lpn-1 +run-lpm-1: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpm-1 +chroot-run-lpm-1: + $(PY) TestPeers.py -m -p -l 1 > testpeers-pm-1.out +VARIANT-TESTS += run-lpm-2 +run-lpm-2: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpm-2 +chroot-run-lpm-2: + $(PY) TestPeers.py -m -p -l 2 > testpeers-pm-2.out + +VARIANT-TESTS += run-lpn-1 +run-lpn-1: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpn-1 +chroot-run-lpn-1: + $(PY) TestPeers.py -p -l 1 > testpeers-pn-1.out +VARIANT-TESTS += run-lpn-2 +run-lpn-2: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpn-2 +chroot-run-lpn-2: + $(PY) TestPeers.py -p -l 2 > testpeers-pn-2.out + +VARIANT-TESTS += run-lpb-1 +run-lpb-1: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpb-1 +chroot-run-lpb-1: + $(PY) TestPeers.py -b -p -l 1 > testpeers-pb-1.out +VARIANT-TESTS += run-lpb-2 +run-lpb-2: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lpb-2 +chroot-run-lpb-2: + $(PY) TestPeers.py -b -p -l 2 > testpeers-pb-2.out + +VARIANT-TESTS += run-lph-1 +run-lph-1: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lph-1 +chroot-run-lph-1: + $(PY) TestPeers.py -H -p -l 1 > testpeers-ph-1.out +VARIANT-TESTS += run-lph-1 +run-lph-2: + chroot $(CHROOT) make -C $(APIDIR) -f peers-test.mk chroot-run-lph-2 +chroot-run-lph-2: + $(PY) TestPeers.py -H -p -l 2 > testpeers-ph-2.out + + +### old-fashioned all-in-one tests - too slow +VARIANT-TESTS += run-n +run-n: + $(PY) ./TestPeers.py > testpeers-n.out 2>&1 +VARIANT-TESTS += run-m +run-m: + $(PY) ./TestPeers.py -m > testpeers-m.out 2>&1 +VARIANT-TESTS += diff-m +diff-m: testpeers-m.nref testpeers-m.nout + diff testpeers-m.nref testpeers-m.nout +VARIANT-TESTS += ckp-m +ckp-m: + cp testpeers-m.out testpeers-m.ref + rm -f testpeers-m.n??? + +### populating only, but remotely - too slow too +VARIANT-TESTS += run-p run-pn +run-pn: + $(PY) ./TestPeers.py -p > testpeers-pn.out 2>&1 +VARIANT-TESTS += run-pb +run-pb: + $(PY) ./TestPeers.py -p -b > testpeers-pb.out 2>&1 +VARIANT-TESTS += run-ph +run-ph: + $(PY) ./TestPeers.py -p -H > testpeers-ph.out 2>&1 + +############################## +VARIANTS-DB := + +DB1=populate-1.sql +DB2=populate-2.sql + +VARIANT-DB += save-n +save-n: save-n-1 save-n-2 +save-n-1: DB1=populate-n-1.sql +save-n-1: save1 +save-n-2: DB2=populate-n-2.sql +save-n-2:save2 + +VARIANT-DB += save-b +save-b: save-b-1 save-b-2 +save-b-1: DB1=populate-b-1.sql +save-b-1: save1 +save-b-2: DB2=populate-b-2.sql +save-b-2:save2 + +VARIANT-DB += save-h +save-h: save-h-1 save-h-2 +save-h-1: DB1=populate-h-1.sql +save-h-1: save1 +save-h-2: DB2=populate-h-2.sql +save-h-2:save2 + +save1: + ssh $(PLC1SSH) make -C new_plc_api -f peers-test.mk DBDUMPFILE=$(DB1) db-dump + scp $(PLC1SSH):new_plc_api/$(DB1) . +save2: + ssh $(PLC2SSH) make -C new_plc_api -f peers-test.mk DBDUMPFILE=$(DB2) db-dump + scp $(PLC2SSH):new_plc_api/$(DB2) . + +VARIANT-DB += restore-n +restore-n: restore-n-1 restore-n-2 +restore-n-1: DB1=populate-n-1.sql +restore-n-1: restore1 +restore-n-2: DB2=populate-n-2.sql +restore-n-2:restore2 + +VARIANT-DB += restore-b +restore-b: restore-b-1 restore-b-2 +restore-b-1: DB1=populate-b-1.sql +restore-b-1: restore1 +restore-b-2: DB2=populate-b-2.sql +restore-b-2:restore2 + +VARIANT-DB += restore-h +restore-h: restore-h-1 restore-h-2 +restore-h-1: DB1=populate-h-1.sql +restore-h-1: restore1 +restore-h-2: DB2=populate-h-2.sql +restore-h-2:restore2 + +restore1: + scp $(DB1) $(PLC1SSH):new_plc_api/ + ssh $(PLC1SSH) make -C new_plc_api -f peers-test.mk DBDUMPFILE=$(DB1) dbrestore +restore2: + scp $(DB2) $(PLC2SSH):new_plc_api/ + ssh $(PLC2SSH) make -C new_plc_api -f peers-test.mk DBDUMPFILE=$(DB2) dbrestore ####### -HELP=rpm db-dump http +HELP=rpm db-dump restart-http help: @echo known targets: @echo push: $(PUSH) + @echo peers: $(PEERS) @echo db: $(DB) + @echo dbrestore: $(DBRESTORE) + @echo run: $(RUN) @echo web: $(WEB) @echo upgrade: $(UPGRADE) @echo test: $(TEST) - @echo run: $(RUN) + @echo other test targets: $(VARIANT-TESTS) + @echo db targets: $(VARIANT-DB) @echo OTHERS: $(HELP)