+ global expected_slivers
+ if expected_slivers is None:
+ expected_slivers=0
+ actual_nodes_per_slice = min (number_nodes,number_nodes_per_slice)
+ for ns in myrange(number_slices):
+ slice_range = [ map_on_node (n+ns) for n in range(actual_nodes_per_slice)]
+ if 1 in slice_range:
+ expected_slivers += 1
+ return expected_slivers+system_slivers()
+
+####################
+# 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 (sites,persons,nodes,slices,
+ keys_per_person,nodes_per_slice,persons_per_slice,fast_mode=None):
+ global number_sites, number_persons, number_nodes, number_slices
+ global number_keys_per_person, number_nodes_per_slice, number_persons_per_slice, fast_flag
+ number_sites = sites
+ number_persons=persons
+ number_nodes=nodes
+ number_slices=slices
+ number_keys_per_person=keys_per_person
+ number_nodes_per_slice=nodes_per_slice
+ number_persons_per_slice=persons_per_slice
+ if fast_mode is not None:
+ fast_flag=fast_mode
+
+# when we run locally on a given peer
+local_peer=None
+
+def show_test():
+ print '%d sites, %d persons, %d nodes & %d slices'%(
+ number_sites,number_persons,number_nodes,number_slices)
+ print '%d keys/person, %d nodes/slice & %d persons/slice'%(
+ number_keys_per_person,number_nodes_per_slice,number_persons_per_slice)
+ print 'fast_flag',fast_flag
+ if local_peer is not None:
+ print 'Running locally on index %d'%local_peer
+
+def mini():
+ define_test(1,1,1,1,1,1,1,True)
+
+def normal():
+ define_test (sites=4,persons=4,nodes=5,slices=4,
+ keys_per_person=2,nodes_per_slice=3,persons_per_slice=6,fast_mode=False)
+
+def apply_factor (factor):
+ global number_sites, number_persons, number_nodes, number_slices
+ [number_sites, number_persons, number_nodes, number_slices] = \
+ [factor*x for x in [number_sites, number_persons, number_nodes, number_slices]]
+
+
+# use only 1 key in this case
+big_factor=4
+def big():
+ global number_sites, number_persons, number_nodes, number_slices
+ number_sites=200
+ number_persons=500
+ number_nodes=350
+ number_slices=500
+ global nodes_per_slice
+ nodes_per_slice=3
+ global number_keys_per_person
+ number_keys_per_person=1
+ global number_persons_per_slice
+ number_persons_per_slice=3
+
+#huge_factor=1000
+def huge():
+ global number_sites, number_persons, number_nodes, number_slices
+ number_sites=1000
+ number_persons=2000
+ number_nodes=3000
+ number_slices=2000
+ global nodes_per_slice
+ nodes_per_slice=3
+ global number_keys_per_person
+ number_keys_per_person=1
+ global number_persons_per_slice
+ number_persons_per_slice=3
+
+# use mini test by default in interactive mode
+mini()
+#normal()
+
+####################
+# argh, for login_name that doesn't accept digits
+plain_numbers=['zero','one','two','three','four','five','six','seven','eight','nine','ten',
+ 'eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen','twenty']
+plain_digits=['a','b','c','d','e','f','g','h','i','j']
+####################
+plc[1]={ 'plcname':'Thierry plc1',
+ 'hostname':'planetlab-devbox.inria.fr',
+ 'url-format':'https://%s:443/PLCAPI/',
+ 'builtin-admin-id':'root@plc1.org',
+ 'builtin-admin-password':'root',
+ 'peer-admin-name':'peer1@planet-lab.org',
+ 'peer-admin-password':'peer',
+ 'node-format':'n1-%03d.plc1.org',
+ 'plainname' : 'one',
+ 'site-format':'one%s',
+ 'person-format' : 'user1-%d@plc1.org',
+ 'key-format':'ssh-rsa 11key4plc11 user%d-key%d',
+ 'person-password' : 'password1',
+ 'gpg-keyring':'gpg_plc2.pub',
+ 'api-cacert':'api_plc2.crt',
+ }
+plc[2]={ 'plcname':'Thierry plc2',
+ 'hostname':'lurch.cs.princeton.edu',
+ 'url-format':'https://%s:443/PLCAPI/',
+ 'builtin-admin-id':'root@plc2.org',
+ 'builtin-admin-password':'root',
+ 'peer-admin-name':'peer2@planet-lab.org',
+ 'peer-admin-password':'peer',
+ 'node-format':'n2-%03d.plc2.org',
+ 'plainname' : 'two',
+ 'site-format':'two%s',
+ 'person-format' : 'user2-%d@plc2.org',
+ 'key-format':'ssh-rsa 22key4plc22 user%d-key%d',
+ 'person-password' : 'password2',
+ 'gpg-keyring':'gpg_plc1.pub',
+ 'api-cacert':'api_plc1.crt',
+ }