- modified fix_row(): skip records in person_keys table marked as deleted
[plcapi.git] / peers-test.mk
index a2cbaaa..d58b58e 100644 (file)
@@ -6,15 +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 ./dummy-config ./peers-test.mk ./person-password.sh ./plcsh
 
 push:$(PUSH)
 
@@ -26,27 +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 db-drop restart-full-db
-DBI= stop-clients db-drop restart-db db-restore restart-http
+DBRESTORE= stop-clients db-drop restart-db db-restore restart-http
 WEB=install-api restart
 
 db: $(DB)
        @date
 
-dbi: $(DBI)
-       @echo Restored $(DBDUMP) on $(shell hostname) at $(shell date)
+dbrestore: $(DBRESTORE)
+       @echo Restored $(DBDUMPFILE) on $(shell hostname) at $(shell date)
 
-DBDUMP=planetlab4.dump
+DBDUMPFILE=planetlab4.dump
 
 db-dump:
-       chroot $(CHROOT) pg_dump -c -U pgsqluser planetlab4 > $(DBDUMP)
+       chroot $(CHROOT) pg_dump -c -U pgsqluser planetlab4 > $(DBDUMPFILE)
 
 web: $(WEB)
 
@@ -71,10 +75,10 @@ db-drop:
        chroot $(CHROOT) psql -U postgres --port $(PORT) template1 -c 'drop database planetlab4'
 
 db-restore: 
-       echo Restoring $(DBDUMP)
-       rm -f $(DBDUMP).rest-log  $(DBDUMP).rest-err
-       chroot $(CHROOT) psql -U postgres --port $(PORT) -d planetlab4 < $(DBDUMP) > $(DBDUMP).rest-log 2> $(DBDUMP).rest-err
-       ls -l $(DBDUMP).rest-log  $(DBDUMP).rest-err
+       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 only'
@@ -95,6 +99,41 @@ restart-http:
        service plc stop httpd
        service plc start httpd
 
+####################
+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/
+peer-push-cacert-2:
+       scp $(PLC2SSH):/etc/planetlab/api_ca_ssl.crt ./api_plc2.crt
+       scp ./api_plc2.crt $(PLC1SSH):/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
 
@@ -120,7 +159,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
@@ -132,128 +171,194 @@ log:
 # remove time/delay dependent output
 normalize      = egrep -v "'expires':|^+++.*ellapsed"
 
-TEST=run checkpoint diff
-run: run-n normalize 
-normalize: TestPeers-n.nout TestPeers-n.nref
+TEST=run diff ckp
+run: run-en 
+diff: diff-en
+ckp: ckp-en
 
 %.nout: %.out
        $(normalize) $*.out > $@
 %.nref: %.ref
        $(normalize) $*.ref > $@
 
-diff: normalize
-       @echo '<< REF OUT>>'
-       diff TestPeers-n.ref TestPeers-n.out
-
-ckp checkpoint:
-       @echo adopting latest run as reference
-       cp TestPeers-n.out TestPeers-n.ref
-       rm -f TestPeers-n.n???
-
 # 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: 
-       python -u ./TestPeers.py > TestPeers-n.out 2>&1
+       $(PY) ./TestPeers.py > testpeers-n.out 2>&1
 VARIANT-TESTS += run-m
 run-m:
-       python -u ./TestPeers.py -m > TestPeers-m.out 2>&1
-VARIANT-TESTS += run-b
-run-b:
-       python -u ./TestPeers.py -b > TestPeers-b.out 2>&1
+       $(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-p run-pn:
-       python -u ./TestPeers.py -p > TestPeers-p.out 2>&1
+run-pn:
+       $(PY) ./TestPeers.py -p > testpeers-pn.out 2>&1
 VARIANT-TESTS += run-pb
 run-pb:
-       python -u ./TestPeers.py -p -b > TestPeers-pb.out 2>&1
+       $(PY) ./TestPeers.py -p -b > testpeers-pb.out 2>&1
 VARIANT-TESTS += run-ph
 run-ph:
-       python -u ./TestPeers.py -p -H > TestPeers-ph.out 2>&1
-VARIANT-TESTS += run-e run-en
-run-e run-en:
-       python -u ./TestPeers.py -e > TestPeers-e.out 2>&1
-VARIANT-TESTS += run-eb
-run-eb:
-       python -u ./TestPeers.py -e -b > TestPeers-eb.out 2>&1
-VARIANT-TESTS += run-eh
-run-eh:
-       python -u ./TestPeers.py -e -H > TestPeers-eh.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???
-
-VARIANT-TESTS += diff-p
-diff-p: TestPeers-p.nref TestPeers-p.nout 
-       diff TestPeers-p.nref TestPeers-p.nout
-VARIANT-TESTS += ckp-p
-ckp-p:
-       cp TestPeers-p.out TestPeers-p.ref
-       rm -f TestPeers-p.n???
-
+       $(PY) ./TestPeers.py -p -H > testpeers-ph.out 2>&1
 
+##############################
 VARIANTS-DB := 
 
 DB1=populate-1.sql
 DB2=populate-2.sql
 
-SAVE=save1 save2
-VARIANT-DB += save
-save: $(SAVE)
-
 VARIANT-DB += save-n
-save-n: DB1=populate-n-1.sql
-save-n: DB2=populate-n-2.sql
-save-n:save
+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: DB1=populate-b-1.sql
-save-b: DB2=populate-b-2.sql
-save-b:save
+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: DB1=populate-h-1.sql
-save-h: DB2=populate-h-2.sql
-save-h:save
+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 DBDUMP=$(DB1) db-dump"
+       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 DBDUMP=$(DB2) db-dump"
+       ssh $(PLC2SSH) make -C new_plc_api -f peers-test.mk DBDUMPFILE=$(DB2) db-dump
        scp $(PLC2SSH):new_plc_api/$(DB2) .
 
-RESTORE=restore1 restore2
-VARIANT-DB += restore
-restore:$(RESTORE)
-
 VARIANT-DB += restore-n
-restore-n: DB1=populate-n-1.sql
-restore-n: DB2=populate-n-2.sql
-restore-n:restore
+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: DB1=populate-b-1.sql
-restore-b: DB2=populate-b-2.sql
-restore-b:restore
+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: DB1=populate-h-1.sql
-restore-h: DB2=populate-h-2.sql
-restore-h:restore
+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 DBDUMP=$(DB1) dbi"
+       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 DBDUMP=$(DB2) dbi"
+       ssh $(PLC2SSH) make -C  new_plc_api -f peers-test.mk DBDUMPFILE=$(DB2) dbrestore
 
 #######
 HELP=rpm db-dump restart-http
@@ -261,15 +366,14 @@ HELP=rpm db-dump restart-http
 help:
        @echo known targets:
        @echo push: $(PUSH) 
+       @echo peers: $(PEERS)
        @echo db: $(DB) 
-       @echo dbi: $(DBI
+       @echo dbrestore: $(DBRESTORE
        @echo run: $(RUN)
        @echo web: $(WEB) 
        @echo upgrade: $(UPGRADE)
        @echo test: $(TEST)
        @echo other test targets: $(VARIANT-TESTS)
-       @echo save:$(SAVE)
-       @echo restore:$(RESTORE)
        @echo db targets: $(VARIANT-DB)
        @echo OTHERS: $(HELP)