####################
# set initial conditions
+# actual persons_per_slice is min(number_persons,number_persons_per_slice)
# actual nodes_per_slice is min(number_nodes,number_nodes_per_slice)
# this is to prevent quadractic test times on big tests
-def define_test (keys,sites,persons,nodes,slices,nodes_per_slice,fast_mode=None):
+def define_test (keys,sites,persons,nodes,slices,
+ nodes_per_slice,persons_per_slice,fast_mode=None):
global number_keys, number_sites, number_persons, number_nodes, number_slices
- global number_nodes_per_slice, fast_flag
+ global number_nodes_per_slice, number_persons_per_slice, fast_flag
number_keys=keys
number_sites = sites
number_persons=persons
number_nodes=nodes
number_slices=slices
number_nodes_per_slice=nodes_per_slice
+ number_persons_per_slice=persons_per_slice
if fast_mode is not None:
fast_flag=fast_mode
print 'Running locally on index %d'%local_index
def mini():
- define_test(1,1,1,1,1,1,True)
+ define_test(1,1,1,1,1,1,1,True)
def normal():
- define_test (keys=2,sites=4,persons=4,nodes=5,slices=4,nodes_per_slice=5,fast_mode=False)
+ define_test (keys=2,sites=4,persons=4,nodes=5,slices=4,nodes_per_slice=5,persons_per_slice=8,fast_mode=False)
# use only 1 key in this case
big_factor=4
except:
login_base=site_login_base(i,map_on_site(nn))
n=s[i].AddNode(a[i],login_base,{'hostname': nodename})
- print '%02d:== Added node %d %s'%(i,n,node_name(i,i))
+ print '%02d:== Added node %d %s'%(i,n,node_name(i,nn))
def test02_delnode (args=[1,2]):
for nn in myrange(number_nodes):
'instanciation':'plc-instantiated',
})
print '%02d:== created slice %d - max nodes=%d'%(i,slice_id,max_nodes)
- for np in myrange(number_persons):
+ actual_persons_per_slice = min (number_persons,number_persons_per_slice)
+ for np in myrange(actual_persons_per_slice):
email = person_name (i,np)
retcod = s[i].AddPersonToSlice (a[i], email, slicename)
print '%02d:== Attached person %s to slice %s'%(i,email,slicename)
message("END")
### ad hoc test sequences
+# we just create objects here so we can dump the DB
def populate ():
timer_start()
test_all_init()
timer_show()
test05_sa([1])
timer_show()
-# test00_refresh ("populate: refreshing peer 1",[1])
-# timer_show()
-# test04_slice_add_fnode([1])
-# timer_show()
-# test00_refresh("populate: refresh all")
+
+def populate_end():
+ test00_init()
+ test00_refresh ("populate: refreshing peer 1",[1])
+ timer_show()
+ test04_slice_add_fnode([1])
+ timer_show()
+ test00_refresh("populate: refresh all")
dump()
timer_show()
+ message("END")
# temporary - scratch as needed
def test_now ():
print "Usage: %s [-n] [-f]"%sys.argv[0]
print " -n runs test_now instead of test_all"
print " -p runs populate instead of test_all"
+ print " -e runs populate_end of test_all"
print " -m run in mini mode (1 instance of each class)"
print " -b performs big run (%d times as large as normal)"%big_factor
print " -H performs huge run (%d times as large as normal)"%huge_factor
def main ():
try:
- (o,a) = getopt.getopt(sys.argv[1:], "mnpbHl:")
+ (o,a) = getopt.getopt(sys.argv[1:], "emnpbHl:")
except:
usage()
func = test_all
elif opt=='-p':
print 'Running populate'
func = populate
+ elif opt=='-e':
+ print 'Running populate_end'
+ func = populate_end
elif opt=='-m':
mini()
elif opt=='-b':
PLC1=lurch.cs.princeton.edu
PLC2=planetlab-devbox.inria.fr
+PLC1SSH=root@$(PLC1)
+PLC2SSH=root@$(PLC2)
all:help
rsync -a -v -C ./planetlab4.sql ./PLC root@$(PLC2):$(CHROOT)$(APIDIR)/
####################
-DB=install-schema stop-clients clean-db restart-db
+DB=install-schema stop-clients db-drop restart-full-db
+DBI= 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)
+
+DBDUMP=planetlab4.dump
+
db-dump:
- chroot $(CHROOT) pg_dump -U pgsqluser planetlab4 > planetlab4.dump
+ chroot $(CHROOT) pg_dump -c -U pgsqluser planetlab4 > $(DBDUMP)
web: $(WEB)
@echo 'pkilling Shell.py'
@-pkill Shell.py
@echo stopping httpd
- @chroot $(CHROOT) /etc/plc.d/httpd stop
+ service plc stop httpd
+
+db-drop:
+ echo 'dropping db'
+ chroot $(CHROOT) psql -U postgres --port $(PORT) template1 -c 'drop database planetlab4'
-clean-db:
- @echo 'dropping db'
- @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
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
+UPGRADE=stop-clients down clean-plc up reconfig restart
upgrade: $(UPGRADE)
down:
cp $(SITEDIR)/$(SITE) .
rpm -e myplc
+clean-plc:
+ rm -rf /plc
up:
rpm -i $(RPM)
normalize = egrep -v "'expires':|^+++.*ellapsed"
TEST=run checkpoint diff
-run: nrun normalize
+run: run-n normalize
normalize: TestPeers-n.nout TestPeers-n.nref
-nrun:
- python -u ./TestPeers.py > TestPeers-n.out 2>&1
-mrun:
- python -u ./TestPeers.py -m > TestPeers-m.out 2>&1
-brun:
- python -u ./TestPeers.py -b > TestPeers-b.out 2>&1
-prun:
- python -u ./TestPeers.py -p > TestPeers-p.out 2>&1
-pbrun:
- python -u ./TestPeers.py -p -b > TestPeers-pb.out 2>&1
-phrun:
- python -u ./TestPeers.py -p -H > TestPeers-ph.phout 2>&1
-
%.nout: %.out
$(normalize) $*.out > $@
%.nref: %.ref
cp TestPeers-n.out TestPeers-n.ref
rm -f TestPeers-n.n???
-mdiff: TestPeers-m.nref TestPeers-m.nout
+# variant runs
+VARIANT-TESTS :=
+
+VARIANT-TESTS += run-n
+run-n:
+ python -u ./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
+VARIANT-TESTS += run-p run-pn
+run-p run-pn:
+ python -u ./TestPeers.py -p > TestPeers-p.out 2>&1
+VARIANT-TESTS += run-pb
+run-pb:
+ python -u ./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
-mckp:
+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???
+
+
+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
+
+VARIANT-DB += save-b
+save-b: DB1=populate-b-1.sql
+save-b: DB2=populate-b-2.sql
+save-b:save
+
+VARIANT-DB += save-h
+save-h: DB1=populate-h-1.sql
+save-h: DB2=populate-h-2.sql
+save-h:save
+
+save1:
+ ssh $(PLC1SSH) "make -C new_plc_api -f peers-test.mk DBDUMP=$(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"
+ 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
+
+VARIANT-DB += restore-b
+restore-b: DB1=populate-b-1.sql
+restore-b: DB2=populate-b-2.sql
+restore-b:restore
+
+VARIANT-DB += restore-h
+restore-h: DB1=populate-h-1.sql
+restore-h: DB2=populate-h-2.sql
+restore-h:restore
+
+restore1:
+ scp $(DB1) $(PLC1SSH):new_plc_api/
+ ssh $(PLC1SSH) "make -C new_plc_api -f peers-test.mk DBDUMP=$(DB1) dbi"
+restore2:
+ scp $(DB2) $(PLC2SSH):new_plc_api/
+ ssh $(PLC2SSH) "make -C new_plc_api -f peers-test.mk DBDUMP=$(DB2) dbi"
+
#######
-HELP=rpm db-dump http
+HELP=rpm db-dump restart-http
help:
@echo known targets:
@echo push: $(PUSH)
@echo db: $(DB)
+ @echo dbi: $(DBI)
+ @echo run: $(RUN)
@echo web: $(WEB)
@echo upgrade: $(UPGRADE)
@echo test: $(TEST)
- @echo run: $(RUN)
+ @echo other test targets: $(VARIANT-TESTS)
+ @echo save:$(SAVE)
+ @echo restore:$(RESTORE)
+ @echo db targets: $(VARIANT-DB)
@echo OTHERS: $(HELP)