Documenting and cleaning test scripts in /testbeds/iotlab/tests.
[sfa.git] / testbeds / iotlab / tests / sfi_client_tests.py
1 #!/usr/bin/env python
2 import sys
3 import os
4 from sfa.iotlab.LDAPapi import LDAPapi
5 from difflib import SequenceMatcher
6
7 def parse_options():
8
9     #arguments supplied
10     if len(sys.argv) > 1 :
11         options_list = sys.argv[1:]
12         print options_list
13         rspec_rep = options_list[0]
14         return rspec_rep
15     else:
16         print "Must supply Rspecs directory ",  sys.argv[1:]
17         return
18
19
20 rspec_dir = parse_options()
21 print "DIRECTORY SUPPLIED" , rspec_dir
22 rspec_filename_list = ['firexp_avakian_slice_iotlab.rspec',
23 'firexp_iotlab_slice_iotlab.rspec',
24 'iotlab_avakian_slice_iotlab2.rspec',
25 'iotlab_avakian_slice_plab.rspec',
26 'firexp_iotlab_slice_all.rspec',
27 'iotlab_avakian_slice_all.rspec',
28 'iotlab_avakian_slice_iotlab.rspec',
29 'iotlab_user_slice_iotlab.rspec',
30 'test_delete_all_leases.rspec']
31
32 rspec_filename_dict = {
33         ('iotlab_avakian', 'iotlab', 'allocate' ):
34                 "sfi.py allocate iotlab.avakian_slice " + rspec_dir + \
35                         'iotlab_avakian_slice_iotlab.rspec',
36
37         ('iotlab_avakian', 'iotlab2', 'allocate'):
38                 "sfi.py allocate iotlab.avakian_slice " + rspec_dir + \
39                 'iotlab_avakian_slice_iotlab2.rspec',
40
41         ('firexp_user','iotlab', 'allocate'):
42                 "sfi.py allocate firexp.flab.iotlab_slice " + rspec_dir + \
43                         'firexp_iotlab_slice_iotlab.rspec',
44
45         ('firexp_user', 'all', 'allocate'):
46                         "sfi.py allocate firexp.flab.iotlab_slice "+ rspec_dir + \
47                                 'firexp_iotlab_slice_all.rspec',
48
49         ('iotlab_user', 'iotlab', 'allocate'):
50                 "sfi.py allocate iotlab.user_slice "+ rspec_dir + \
51                         'iotlab_user_slice_iotlab.rspec',
52
53         ('firexp_avakian','iotlab', 'allocate'):
54                 "sfi.py allocate firexp.flab.avakian_slice " + rspec_dir + \
55                         'firexp_avakian_slice_iotlab.rspec',
56
57         ('iotlab_avakian', 'plab', 'allocate') :
58                         "sfi.py allocate iotlab.avakian_slice " + rspec_dir + \
59                                 'iotlab_avakian_slice_plab.rspec',
60
61         ('iotlab_avakian', 'all', 'allocate') :
62          "sfi.py allocate iotlab.avakian_slice " + rspec_dir + \
63                 'iotlab_avakian_slice_all.rspec',
64
65     ('iotlab_avakian', 'iotlab', 'provision' ):
66         "sfi.py provision iotlab.avakian_slice \
67                             iotlab_avakian_slice_iotlab.rspec",
68
69     ('iotlab_avakian', 'iotlab2', 'provision'):
70         "sfi.py provision iotlab.avakian_slice \
71                             iotlab_avakian_slice_iotlab2.rspec",
72
73     ('firexp_user','iotlab', 'provision'):
74         "sfi.py provision firexp.flab.iotlab_slice firexp_iotlab_slice_iotlab.rspec",
75
76     ('firexp_user', 'all', 'provision'):
77             "sfi.py provision firexp.flab.iotlab_slice firexp_iotlab_slice_all.rspec",
78
79     ('iotlab_user', 'iotlab', 'provision'):
80         "sfi.py provision iotlab.user_slice iotlab_user_slice_iotlab.rspec",
81
82     ('firexp_avakian','iotlab', 'provision'):
83         "sfi.py provision firexp.flab.avakian_slice firexp_avakian_slice_iotlab.rspec",
84
85     ('iotlab_avakian', 'plab', 'provision') :
86             "sfi.py provision iotlab.avakian_slice iotlab_avakian_slice_plab.rspec",
87
88     ('iotlab_avakian', 'all', 'provision') :
89      "sfi.py provision iotlab.avakian_slice iotlab_avakian_slice_all.rspec",
90
91     ('iotlab_avakian', 'iotlab', 'describe' ):
92         "sfi.py describe iotlab.avakian_slice iotlab_avakian_slice_iotlab.rspec",
93
94     ('iotlab_avakian', 'iotlab2', 'describe'):
95         "sfi.py describe iotlab.avakian_slice iotlab_avakian_slice_iotlab2.rspec",
96
97     ('firexp_user','iotlab', 'describe'):
98         "sfi.py describe firexp.flab.iotlab_slice firexp_iotlab_slice_iotlab.rspec",
99
100     ('firexp_user', 'all', 'describe'):
101             "sfi.py describe firexp.flab.iotlab_slice firexp_iotlab_slice_all.rspec",
102
103     ('iotlab_user', 'iotlab', 'describe'):
104         "sfi.py describe iotlab.user_slice iotlab_user_slice_iotlab.rspec",
105
106     ('firexp_avakian','iotlab', 'describe'):
107         "sfi.py describe firexp.flab.avakian_slice firexp_avakian_slice_iotlab.rspec",
108
109     ('iotlab_avakian', 'plab', 'describe') :
110             "sfi.py describe iotlab.avakian_slice iotlab_avakian_slice_plab.rspec",
111
112     ('iotlab_avakian', 'all', 'describe') :
113      "sfi.py describe iotlab.avakian_slice iotlab_avakian_slice_all.rspec"
114         }
115
116 print rspec_filename_dict
117 # check if the firexp user (uid user) is already in LDAP
118 # in this is the case, delete it :
119 ldap_server = LDAPapi()
120 dn = 'uid=' + 'user' + ',' + ldap_server.baseDN
121 result = ldap_server.LdapSearch('(uid=user)', [])
122
123 if result != []:
124         retval = ldap_server.LdapDelete(dn)
125         print "deleting firexp user : ", retval
126
127 # Change the sfi config file to be able to start the experiment on the federated
128 # testbed with another identity and another slice
129 print "config sfi"
130 with open ("/root/.sfi/sfi_config", "r") as sfi_config:
131         sfi_config_txt = [line for line in sfi_config]
132
133 with open("/root/.sfi/sfi_config_iotlab", "r") as sfi_config_iotlab:
134         sfi_config_iotlab_txt = [line for line in sfi_config_iotlab]
135
136 with open("/root/.sfi/sfi_config_firexp", "r") as sfi_config_firexp:
137         sfi_config_firexp_txt  =  [line for line in sfi_config_firexp]
138 # check that we are using the iotlab sfi configuration
139 result1 = SequenceMatcher(None, sfi_config_txt, sfi_config_iotlab_txt)
140
141 result2 = SequenceMatcher(None, sfi_config_txt, sfi_config_firexp_txt)
142
143 if result1.ratio() != 1.0:
144         os.system('cp /root/.sfi/sfi_config_iotlab /root/.sfi/sfi_config')
145
146 os.system('cat /root/.sfi/sfi_config')
147 os.system('rm /root/tests_rspecs/iotlab_devlille_OUTPUT.rspec')
148
149 print " =================    SFI.PY LIST IOTLAB        ============="
150 os.system('sfi.py list iotlab')
151
152
153 print " =================    SFI.PY RESOURCES          ============="
154 raw_input("Press Enter to continue...")
155 os.system('sfi.py resources')
156
157
158 print " ================= SFI.PY RESOURCES -R IOTLAB        ============="
159 raw_input("Press Enter to continue...")
160 os.system('sfi.py resources -r iotlab')
161
162
163 print " =================    SFI.PY RESOURCES -L ALL      ============="
164 raw_input("Press Enter to continue...")
165 os.system('sfi.py resources -l all')
166
167 print " ================= SFI.PY RESOURCES -R IOTLAB -L ALL ============="
168 raw_input("Press Enter to continue...")
169 os.system('sfi.py resources -r iotlab -l all')
170
171 # print " ================= SFI.PY RESOURCES -O  output rspec ==========="
172 # os.system('sfi.py resources -o /root/tests_rspecs/iotlab_devlille_OUTPUT.rspec')
173
174 print " ================= SFI.PY RESOURCES -L LEASES  ============="
175 raw_input("Press Enter to continue...")
176 os.system('sfi.py resources -l leases')
177
178
179 print " =================    SFI.PY SHOW USER   ============="
180 raw_input("Press Enter to continue...")
181 os.system('sfi.py show iotlab.avakian')
182
183 print " =================    SFI.PY SHOW NODE   ============="
184 os.system('sfi.py show iotlab.m3-3.devgrenoble.iot-lab.info')
185
186
187
188 print " =================    SFI.PY STATUS SLICE   ============="
189 os.system('sfi.py status iotlab.avakian_slice')
190
191 print " =================    SFI.PY ALLOCATE SLICE  on iotlab only  ============="
192 raw_input("Press Enter to continue...")
193 os.system( rspec_filename_dict[('iotlab_avakian','iotlab' , 'allocate')])
194
195
196 print " =================    SFI.PY PROVISION SLICE  on iotlab only  ============="
197 raw_input("Press Enter to continue...")
198 os.system( rspec_filename_dict[('iotlab_avakian','iotlab' , 'provision')])
199
200
201 print " =================    SFI.PY DESCRIBE SLICE  on iotlab only  ============="
202 raw_input("Press Enter to continue...")
203 os.system( rspec_filename_dict[('iotlab_avakian','iotlab' , 'describe')])
204
205
206 print " ================= SFI.PY RESOURCES -l all iotlab.avakian_slice ============="
207 raw_input("Press Enter to continue...")
208 os.system('sfi.py resources -l all iotlab.avakian_slice')
209
210
211 print " =================    SFI.PY DELETE SLICE   ============="
212 raw_input("Press Enter to continue...")
213 os.system('sfi.py delete iotlab.avakian_slice')
214
215
216 print " =================    SFI.PY ALLOCATE SLICE  on iotlab and firexp  ============="
217 raw_input("Press Enter to continue...")
218 os.system(rspec_filename_dict[('iotlab_avakian','all', 'allocate')])
219
220
221 print " ================= SFI.PY RESOURCES -l all -r iotlab iotlab.avakian_slice ============="
222 raw_input("Press Enter to continue...")
223 os.system('sfi.py resources -l all -r iotlab iotlab.avakian_slice')
224
225
226 print " =================SFI.PY RESOURCES -L LEASES -R IOTLAB ============== "
227 os.system('sfi.py resources -r iotlab -l leases')
228
229
230 print " =================    SFI.PY DELETE SLICE   ============="
231 raw_input("Press Enter to continue...")
232 os.system('sfi.py delete iotlab.avakian_slice')
233
234 print "\r\n \r\n"
235
236 print " *********changing to firexp sfi config ***************"
237 os.system('cp /root/.sfi/sfi_config_firexp /root/.sfi/sfi_config')
238
239
240
241 print " =================    SFI.PY ALLOCATE SLICE  on iotlab and firexp  ============="
242 raw_input("Press Enter to continue...")
243 os.system(rspec_filename_dict[('firexp_user','all', 'allocate')])
244
245 print " =================    SFI.PY DESCRIBE SLICE  on iotlab and firexp  ============="
246 raw_input("Press Enter to continue...")
247 os.system(rspec_filename_dict[('firexp_user','all', 'describe')])
248
249 print " =================    SFI.PY PROVISION SLICE  on iotlab and firexp  ============="
250 raw_input("Press Enter to continue...")
251 os.system(rspec_filename_dict[('firexp_user','all', 'provision')])
252
253
254 print " =================    SFI.PY SHOW SLICE   ============="
255 raw_input("Press Enter to continue...")
256 os.system('sfi.py show firexp.flab.iotlab_slice')
257
258
259 print " ================= SFI.PY RESOURCES -l leases firexp.flab.iotlab_slice ============="
260 raw_input("Press Enter to continue...")
261 os.system('sfi.py resources -l leases firexp.flab.iotlab_slice')
262
263
264 print " ================= SFI.PY RESOURCES firexp.flab.iotlab_slice  ============="
265 raw_input("Press Enter to continue...")
266 os.system('sfi.py resources firexp.flab.iotlab_slice')
267
268
269
270