54 |
54 |
TEST_ALL = False
|
55 |
55 |
|
56 |
56 |
cnf = Config()
|
57 |
|
global_username = cnf.get('global', 'account')
|
58 |
|
token = cnf.get('global', 'token')
|
|
57 |
global_username = None
|
|
58 |
token = None
|
|
59 |
|
|
60 |
|
|
61 |
def _init_cnf():
|
|
62 |
global cnf
|
|
63 |
global global_username
|
|
64 |
global_username = cnf.get('test', 'account') or\
|
|
65 |
cnf.get('global', 'account')
|
|
66 |
global token
|
|
67 |
token = cnf.get('test', 'token') or cnf.get('global', 'token')
|
59 |
68 |
|
60 |
69 |
|
61 |
70 |
class testAstakos(unittest.TestCase):
|
62 |
71 |
def setUp(self):
|
|
72 |
_init_cnf()
|
63 |
73 |
global cnf
|
64 |
|
url = cnf.get('astakos', 'url')
|
|
74 |
url = cnf.get('test', 'astakos_url') or cnf.get('astakos', 'url')
|
65 |
75 |
global token
|
|
76 |
print('init a client with %s and %s' % (url, token))
|
66 |
77 |
self.client = astakos(url, token)
|
67 |
78 |
|
68 |
79 |
def tearDown(self):
|
... | ... | |
83 |
94 |
|
84 |
95 |
class testImage(unittest.TestCase):
|
85 |
96 |
def setUp(self):
|
|
97 |
_init_cnf()
|
86 |
98 |
global cnf
|
87 |
99 |
cyclades_url = cnf.get('compute', 'url')
|
88 |
100 |
url = cnf.get('image', 'url')
|
... | ... | |
262 |
274 |
"""Set up a Cyclades thorough test"""
|
263 |
275 |
def setUp(self):
|
264 |
276 |
"""okeanos"""
|
265 |
|
url = 'https://cyclades.okeanos.grnet.gr/api/v1.1'
|
|
277 |
_init_cnf()
|
|
278 |
global cnf
|
|
279 |
url = cnf.get('compute', 'url')
|
266 |
280 |
global token
|
267 |
281 |
global global_username
|
268 |
282 |
self.img = 'b2dffe52-64a4-48c3-8a4c-8214cc3165cf'
|
... | ... | |
272 |
286 |
u'name': u'Debian Base',
|
273 |
287 |
u'created': u'2012-10-16T09:03:12+00:00',
|
274 |
288 |
u'progress': 100,
|
275 |
|
u'id': 'b2dffe52-64a4-48c3-8a4c-8214cc3165cf',
|
|
289 |
u'id': self.img,
|
276 |
290 |
u'metadata': {
|
277 |
291 |
u'values': {
|
278 |
292 |
u'kernel': u'2.6.32',
|
... | ... | |
294 |
308 |
self.PROFILES = ('ENABLED', 'DISABLED', 'PROTECTED')
|
295 |
309 |
|
296 |
310 |
"""okeanos.io"""
|
297 |
|
#url = 'https://cyclades.okeanos.io/api/v1.1'
|
298 |
|
#global token
|
299 |
|
#self.img = '43cc8497-61c3-4c46-ae8d-3e33861f8527'
|
300 |
|
#self.img_details= {
|
301 |
|
# u'status': u'ACTIVE',
|
302 |
|
# u'updated': u'2012-08-21T12:57:39+00:00',
|
303 |
|
# u'name': u'Debian Base',
|
304 |
|
# u'created': u'2012-08-21T12:56:53+00:00',
|
305 |
|
# u'progress': 100,
|
306 |
|
# u'id': u'43cc8497-61c3-4c46-ae8d-3e33861f8527',
|
307 |
|
# u'metadata': {
|
308 |
|
# u'values': {
|
309 |
|
# u'kernel': u'2.6.32',
|
310 |
|
# u'osfamily': u'linux',
|
311 |
|
# u'users': u'root',
|
312 |
|
# u'gui': u'No GUI',
|
313 |
|
# u'sortorder': u'1',
|
314 |
|
# u'os': u'debian',
|
315 |
|
# u'root_partition':
|
316 |
|
# u'1', u'description':
|
317 |
|
# u'Debian Squeeze Base System'}
|
318 |
|
# }
|
319 |
|
# }
|
320 |
|
#flavorid = 1
|
|
311 |
"""
|
|
312 |
self.img = 'b3e68235-3abd-4d60-adfe-1379a4f8d3fe'
|
|
313 |
self.img_details = {
|
|
314 |
u'status': u'ACTIVE',
|
|
315 |
u'updated': u'2012-11-19T15:29:51+00:00',
|
|
316 |
u'name': u'Debian Base',
|
|
317 |
u'created': u'2012-11-19T14:54:57+00:00',
|
|
318 |
u'progress': 100,
|
|
319 |
u'id': self.img,
|
|
320 |
u'metadata': {
|
|
321 |
u'values': {
|
|
322 |
u'kernel': u'2.6.32',
|
|
323 |
u'osfamily': u'linux',
|
|
324 |
u'users': u'root',
|
|
325 |
u'gui': u'No GUI',
|
|
326 |
u'sortorder': u'1',
|
|
327 |
u'os': u'debian',
|
|
328 |
u'root_partition': u'1',
|
|
329 |
u'description': u'Debian 6.0.6 (Squeeze) Base System'}
|
|
330 |
}
|
|
331 |
}
|
|
332 |
"""
|
321 |
333 |
|
322 |
334 |
self.servers = {}
|
323 |
335 |
self.now = time.mktime(time.gmtime())
|
... | ... | |
339 |
351 |
self._delete_network(netid)
|
340 |
352 |
if 0 >= len(self.servers):
|
341 |
353 |
return
|
342 |
|
there_are_servers_running = True
|
343 |
|
deleted_servers = {}
|
344 |
|
waitime = 0
|
345 |
354 |
print('-> Found %s servers to delete' % len(self.servers))
|
346 |
|
while there_are_servers_running:
|
347 |
|
there_are_servers_running = False
|
348 |
|
if waitime > 0:
|
349 |
|
c = ['|', '/', '-', '\\']
|
350 |
|
suffix = ''
|
351 |
|
sys.stdout.write('\t. . . wait %s seconds: ' % waitime)
|
352 |
|
for i in range(4 * waitime):
|
353 |
|
oldlen = len(suffix)
|
354 |
|
suffix = '%ss %s' % (i / 4, c[i % 4])
|
355 |
|
sys.stdout.write(oldlen * '\b' + suffix)
|
356 |
|
sys.stdout.flush()
|
357 |
|
time.sleep(0.25)
|
358 |
|
oldlen = len(': ' + suffix)
|
359 |
|
print(oldlen * '\b' + oldlen * ' ')
|
360 |
|
sys.stdout.flush()
|
361 |
|
waitime += 3
|
362 |
|
dservers = self.client.list_servers(detail=True)
|
363 |
|
for server in dservers:
|
364 |
|
if server['name'] in self.servers.keys():
|
365 |
|
there_are_servers_running = True
|
366 |
|
sys.stdout.write('\t%s status:%s '\
|
367 |
|
% (server['name'], server['status']))
|
368 |
|
if server['status'] == 'BUILD':
|
369 |
|
print('\twait...')
|
370 |
|
else:
|
371 |
|
print('\tDELETE %s' % server['name'])
|
372 |
|
self._delete_server(server['id'])
|
373 |
|
self.servers.pop(server['name'])
|
374 |
|
deleted_servers[server['name']] = 0
|
375 |
|
waitime = 0
|
376 |
|
elif server['name'] in deleted_servers.keys():
|
377 |
|
there_are_servers_running = True
|
378 |
|
sys.stdout.write('\t%s status:%s '\
|
379 |
|
% (server['name'], server['status']))
|
380 |
|
retries = deleted_servers[server['name']]
|
381 |
|
if retries > 10:
|
382 |
|
print('\tretry DELETE %s'\
|
383 |
|
% server['name'])
|
384 |
|
self._delete_server(server['id'])
|
385 |
|
retries = 0
|
386 |
|
waitime = 0
|
387 |
|
else:
|
388 |
|
print('\tnot deleted yet ...')
|
389 |
|
deleted_servers[server['name']] = retries + 1
|
|
355 |
for server in self.servers.values():
|
|
356 |
self._delete_server(server['id'])
|
390 |
357 |
|
391 |
358 |
def _create_server(self, servername, flavorid, imageid, personality=None):
|
392 |
359 |
server = self.client.create_server(servername,
|
... | ... | |
397 |
364 |
return server
|
398 |
365 |
|
399 |
366 |
def _delete_server(self, servid):
|
|
367 |
try:
|
|
368 |
current_state = self.client.get_server_details(servid)
|
|
369 |
current_state = current_state['status']
|
|
370 |
if current_state == 'DELETED':
|
|
371 |
return
|
|
372 |
except:
|
|
373 |
return
|
400 |
374 |
self.client.delete_server(servid)
|
|
375 |
self._wait_for_status(servid, current_state)
|
401 |
376 |
|
402 |
377 |
def _create_network(self, netname, **kwargs):
|
403 |
378 |
net = self.client.create_network(netname, **kwargs)
|
... | ... | |
699 |
674 |
yield
|
700 |
675 |
yield
|
701 |
676 |
|
|
677 |
time.sleep(0.5)
|
702 |
678 |
self.client.wait_server(servid, status, wait_cb=progress_gen)
|
703 |
679 |
wait_bar.finish()
|
704 |
680 |
|
... | ... | |
1002 |
978 |
def _test_set_firewall_profile(self):
|
1003 |
979 |
|
1004 |
980 |
self._wait_for_status(self.server1['id'], 'BUILD')
|
1005 |
|
PROFILES = ['DISABLED', 'ENABLED', 'DISABLED', 'PROTECTED']
|
|
981 |
PROFILES = ['DISABLED', 'ENABLED', 'PROTECTED']
|
1006 |
982 |
fprofile = self.client.get_firewall_profile(self.server1['id'])
|
1007 |
983 |
print('')
|
|
984 |
count_success = 0
|
1008 |
985 |
for counter, fprofile in enumerate(PROFILES):
|
1009 |
|
start = fprofile
|
1010 |
986 |
npos = counter + 1
|
1011 |
|
nprofile = PROFILES[npos] if npos < len(PROFILES) else PROFILES[0]
|
|
987 |
try:
|
|
988 |
nprofile = PROFILES[npos]
|
|
989 |
except IndexError:
|
|
990 |
nprofile = PROFILES[0]
|
1012 |
991 |
print('\tprofile swap %s: %s -> %s' % (npos, fprofile, nprofile))
|
1013 |
992 |
self.client.set_firewall_profile(self.server1['id'], nprofile)
|
1014 |
|
wait = 3
|
1015 |
|
c = ['|', '/', '-', '\\']
|
1016 |
|
while fprofile != nprofile:
|
1017 |
|
if wait % 10 == 0:
|
1018 |
|
self.client.set_firewall_profile(self.server1['id'],
|
1019 |
|
nprofile)
|
1020 |
|
self.assertEqual(fprofile, start)
|
1021 |
|
sys.stdout.write('\t profile is %s, wait %ss '\
|
1022 |
|
% (fprofile, wait))
|
1023 |
|
for i in range(4 * wait):
|
1024 |
|
sys.stdout.write('\b%s' % c[i % 4])
|
1025 |
|
sys.stdout.flush()
|
1026 |
|
time.sleep(0.25)
|
1027 |
|
wait += 3
|
1028 |
|
print('\b ')
|
1029 |
|
fprofile = self.client.get_firewall_profile(self.server1['id'])
|
|
993 |
time.sleep(0.5)
|
|
994 |
self.client.reboot_server(self.server1['id'], hard=True)
|
|
995 |
time.sleep(1)
|
|
996 |
self._wait_for_status(self.server1['id'], 'REBOOT')
|
|
997 |
time.sleep(0.5)
|
|
998 |
changed = self.client.get_firewall_profile(self.server1['id'])
|
|
999 |
try:
|
|
1000 |
self.assertEqual(changed, nprofile)
|
|
1001 |
except AssertionError as err:
|
|
1002 |
if count_success:
|
|
1003 |
print('\tFAIL in swap #%s' % npos)
|
|
1004 |
break
|
|
1005 |
else:
|
|
1006 |
raise err
|
|
1007 |
count_success += 1
|
1030 |
1008 |
|
1031 |
1009 |
@if_not_all
|
1032 |
1010 |
def test_get_server_stats(self):
|
... | ... | |
1057 |
1035 |
ids = [net['id'] for net in r]
|
1058 |
1036 |
names = [net['name'] for net in r]
|
1059 |
1037 |
self.assertTrue('1' in ids)
|
1060 |
|
self.assertTrue('public' in names)
|
|
1038 |
#self.assertTrue('public' in names)
|
1061 |
1039 |
self.assertTrue(self.network1['id'] in ids)
|
1062 |
1040 |
self.assertTrue(self.network1['name'] in names)
|
1063 |
1041 |
|
... | ... | |
1222 |
1200 |
class testPithos(unittest.TestCase):
|
1223 |
1201 |
"""Set up a Pithos+ thorough test"""
|
1224 |
1202 |
def setUp(self):
|
1225 |
|
"""
|
1226 |
|
url = 'http://127.0.0.1:8000/v1'
|
1227 |
|
global token
|
1228 |
|
account = 'admin@adminland.com'
|
1229 |
|
"""
|
1230 |
|
|
|
1203 |
_init_cnf()
|
1231 |
1204 |
global cnf
|
1232 |
1205 |
url = cnf.get('store', 'url')
|
1233 |
1206 |
|