Revision 81e8cbf6
b/snf-cyclades-app/synnefo/tools/burnin.py | ||
---|---|---|
90 | 90 |
class UnauthorizedTestCase(unittest.TestCase): |
91 | 91 |
def test_unauthorized_access(self): |
92 | 92 |
"""Test access without a valid token fails""" |
93 |
log.info("Authentication test") |
|
94 |
|
|
93 | 95 |
falseToken = '12345' |
94 | 96 |
c=ComputeClient(API, falseToken) |
95 | 97 |
|
... | ... | |
386 | 388 |
server = self.client.create_server(self.servername, self.flavorid, |
387 | 389 |
self.imageid, self.personality) |
388 | 390 |
|
391 |
log.info("Server id: " + str(server["id"])) |
|
392 |
log.info("Server password: " + server["adminPass"]) |
|
393 |
|
|
389 | 394 |
self.assertEqual(server["name"], self.servername) |
390 | 395 |
self.assertEqual(server["flavorRef"], self.flavorid) |
391 | 396 |
self.assertEqual(server["imageRef"], self.imageid) |
... | ... | |
397 | 402 |
cls.username = None |
398 | 403 |
cls.passwd = server["adminPass"] |
399 | 404 |
|
405 |
|
|
406 |
|
|
400 | 407 |
def test_002a_server_is_building_in_list(self): |
401 | 408 |
"""Test server is in BUILD state, in server list""" |
402 | 409 |
|
... | ... | |
431 | 438 |
loginname = image["metadata"]["values"].get("users", None) |
432 | 439 |
self.client.update_server_metadata(self.serverid, OS=os) |
433 | 440 |
|
441 |
userlist = loginname.split() |
|
442 |
|
|
434 | 443 |
# Determine the username to use for future connections |
435 | 444 |
# to this host |
436 | 445 |
cls = type(self) |
437 |
cls.username = loginname |
|
438 |
if not cls.username: |
|
446 |
|
|
447 |
if "root" in userlist: |
|
448 |
cls.username = "root" |
|
449 |
elif users == None: |
|
439 | 450 |
cls.username = self._connect_loginname(os) |
451 |
else: |
|
452 |
cls.username = choice(userlist) |
|
453 |
|
|
440 | 454 |
self.assertIsNotNone(cls.username) |
441 | 455 |
|
442 | 456 |
def test_002d_verify_server_metadata(self): |
... | ... | |
446 | 460 |
|
447 | 461 |
servermeta = self.client.get_server_metadata(self.serverid) |
448 | 462 |
imagemeta = self.client.get_image_metadata(self.imageid) |
463 |
|
|
449 | 464 |
self.assertEqual(servermeta["OS"], imagemeta["os"]) |
450 | 465 |
|
451 | 466 |
def test_003_server_becomes_active(self): |
... | ... | |
498 | 513 |
def test_004_server_has_ipv4(self): |
499 | 514 |
"""Test active server has a valid IPv4 address""" |
500 | 515 |
|
501 |
log.info("Testing server's IPv4")
|
|
516 |
log.info("Validate server's IPv4")
|
|
502 | 517 |
|
503 | 518 |
server = self.client.get_server_details(self.serverid) |
504 | 519 |
ipv4 = self._get_ipv4(server) |
... | ... | |
507 | 522 |
def test_005_server_has_ipv6(self): |
508 | 523 |
"""Test active server has a valid IPv6 address""" |
509 | 524 |
|
510 |
log.info("Testing server's IPv6")
|
|
525 |
log.info("Validate server's IPv6")
|
|
511 | 526 |
|
512 | 527 |
server = self.client.get_server_details(self.serverid) |
513 | 528 |
ipv6 = self._get_ipv6(server) |
... | ... | |
726 | 741 |
self.username['A'] = None |
727 | 742 |
self.password['A'] = serverA["adminPass"] |
728 | 743 |
|
729 |
log.info("Created new server A:")
|
|
730 |
log.info("Password " + (self.password['A']) + '\n')
|
|
744 |
log.info("Server A id:" + str(serverA["id"]))
|
|
745 |
log.info("Server password " + (self.password['A']))
|
|
731 | 746 |
|
732 | 747 |
|
733 | 748 |
|
... | ... | |
770 | 785 |
self.username['B'] = None |
771 | 786 |
self.password['B'] = serverB["adminPass"] |
772 | 787 |
|
773 |
log.info("Created new server B:")
|
|
774 |
log.info("Password " + (self.password['B']) + '\n')
|
|
788 |
log.info("Server B id: " + str(serverB["id"]))
|
|
789 |
log.info("Password " + (self.password['B'])) |
|
775 | 790 |
|
776 | 791 |
|
777 | 792 |
|
... | ... | |
846 | 861 |
|
847 | 862 |
log.info("Rebooting server A") |
848 | 863 |
|
849 |
self.client.reboot_server(self.serverid['A'])
|
|
864 |
self.client.shutdown_server(self.serverid['A'])
|
|
850 | 865 |
|
851 | 866 |
fail_tmout = time.time()+self.action_timeout |
852 | 867 |
while True: |
853 | 868 |
d = self.client.get_server_details(self.serverid['A']) |
854 | 869 |
status = d['status'] |
870 |
if status == 'STOPPED': |
|
871 |
break |
|
872 |
elif time.time() > fail_tmout: |
|
873 |
self.assertLess(time.time(), fail_tmout) |
|
874 |
else: |
|
875 |
time.sleep(self.query_interval) |
|
876 |
|
|
877 |
self.client.start_server(self.serverid['A']) |
|
878 |
|
|
879 |
while True: |
|
880 |
d = self.client.get_server_details(self.serverid['A']) |
|
881 |
status = d['status'] |
|
855 | 882 |
if status == 'ACTIVE': |
856 | 883 |
active = True |
857 | 884 |
break |
... | ... | |
859 | 886 |
self.assertLess(time.time(), fail_tmout) |
860 | 887 |
else: |
861 | 888 |
time.sleep(self.query_interval) |
889 |
|
|
890 |
|
|
862 | 891 |
|
863 | 892 |
self.assertTrue(active) |
864 | 893 |
|
... | ... | |
895 | 924 |
|
896 | 925 |
log.info("Rebooting server B") |
897 | 926 |
|
898 |
self.client.reboot_server(self.serverid['B'])
|
|
927 |
self.client.shutdown_server(self.serverid['B'])
|
|
899 | 928 |
|
900 | 929 |
fail_tmout = time.time()+self.action_timeout |
901 | 930 |
while True: |
902 | 931 |
d = self.client.get_server_details(self.serverid['B']) |
903 | 932 |
status = d['status'] |
933 |
if status == 'STOPPED': |
|
934 |
break |
|
935 |
elif time.time() > fail_tmout: |
|
936 |
self.assertLess(time.time(), fail_tmout) |
|
937 |
else: |
|
938 |
time.sleep(self.query_interval) |
|
939 |
|
|
940 |
self.client.start_server(self.serverid['B']) |
|
941 |
|
|
942 |
while True: |
|
943 |
d = self.client.get_server_details(self.serverid['B']) |
|
944 |
status = d['status'] |
|
904 | 945 |
if status == 'ACTIVE': |
905 | 946 |
active = True |
906 | 947 |
break |
... | ... | |
960 | 1001 |
hostip = self._get_ipv4(server) |
961 | 1002 |
myPass = self.password['A'] |
962 | 1003 |
|
963 |
log.info("SSH in server A: \n") |
|
964 |
log.info("Username: " + loginname + '\n') |
|
965 |
log.info("Password " + myPass + '\n') |
|
1004 |
log.info("SSH in server A as %s/%s" % (loginname,myPass)) |
|
966 | 1005 |
|
967 | 1006 |
res = False |
968 | 1007 |
|
... | ... | |
996 | 1035 |
|
997 | 1036 |
log.info("Setting up interface eth1 for server B") |
998 | 1037 |
|
1038 |
|
|
999 | 1039 |
server = self.client.get_server_details(self.serverid['B']) |
1000 | 1040 |
image = self.client.get_image_details(self.imageid) |
1001 | 1041 |
os = image['metadata']['values']['os'] |
... | ... | |
1013 | 1053 |
hostip = self._get_ipv4(server) |
1014 | 1054 |
myPass = self.password['B'] |
1015 | 1055 |
|
1016 |
log.info("SSH in server A: \n") |
|
1017 |
log.info("Username: " + loginname + '\n') |
|
1018 |
log.info("Password " + myPass + '\n') |
|
1056 |
log.info("SSH in server B as %s/%s" % (loginname,myPass)) |
|
1019 | 1057 |
|
1020 | 1058 |
res = False |
1021 | 1059 |
|
... | ... | |
1430 | 1468 |
else: |
1431 | 1469 |
test_images = filter(lambda x: x["id"] == opts.force_imageid, DIMAGES) |
1432 | 1470 |
|
1471 |
|
|
1472 |
#New folder for log per image |
|
1473 |
os.mkdir(TEST_RUN_ID) |
|
1474 |
|
|
1433 | 1475 |
for image in test_images: |
1434 | 1476 |
imageid = str(image["id"]) |
1435 |
flavorid = choice([f["id"] for f in DFLAVORS if f["disk"] >= 20]) |
|
1477 |
|
|
1478 |
if opts.force_flavorid: |
|
1479 |
flavorid = opts.force_flavorid |
|
1480 |
else: |
|
1481 |
flavorid = choice([f["id"] for f in DFLAVORS if f["disk"] >= 20]) |
|
1482 |
|
|
1436 | 1483 |
imagename = image["name"] |
1437 | 1484 |
|
1438 | 1485 |
#Personality dictionary for file injection test |
... | ... | |
1455 | 1502 |
is_windows = imagename.lower().find("windows") >= 0 |
1456 | 1503 |
|
1457 | 1504 |
|
1458 |
ServerTestCase = _spawn_server_test_case(imageid=imageid, flavorid=flavorid, |
|
1459 |
imagename=imagename, |
|
1460 |
personality=personality, |
|
1461 |
servername=servername, |
|
1462 |
is_windows=is_windows, |
|
1463 |
action_timeout=opts.action_timeout, |
|
1464 |
build_warning=opts.build_warning, |
|
1465 |
build_fail=opts.build_fail, |
|
1466 |
query_interval=opts.query_interval, |
|
1467 |
) |
|
1505 |
ServerTestCase = _spawn_server_test_case(imageid=imageid, flavorid=flavorid,
|
|
1506 |
imagename=imagename,
|
|
1507 |
personality=personality,
|
|
1508 |
servername=servername,
|
|
1509 |
is_windows=is_windows,
|
|
1510 |
action_timeout=opts.action_timeout,
|
|
1511 |
build_warning=opts.build_warning,
|
|
1512 |
build_fail=opts.build_fail,
|
|
1513 |
query_interval=opts.query_interval,
|
|
1514 |
)
|
|
1468 | 1515 |
|
1469 | 1516 |
|
1470 |
NetworkTestCase = _spawn_network_test_case(action_timeout = opts.action_timeout, |
|
1471 |
imageid = imageid, |
|
1472 |
flavorid = flavorid, |
|
1473 |
imagename=imagename, |
|
1474 |
query_interval = opts.query_interval, |
|
1475 |
) |
|
1517 |
NetworkTestCase = _spawn_network_test_case(action_timeout = opts.action_timeout,
|
|
1518 |
imageid = imageid,
|
|
1519 |
flavorid = flavorid,
|
|
1520 |
imagename=imagename,
|
|
1521 |
query_interval = opts.query_interval,
|
|
1522 |
)
|
|
1476 | 1523 |
|
1477 | 1524 |
|
1478 |
seq_cases = [UnauthorizedTestCase, ImagesTestCase, FlavorsTestCase, ServersTestCase, ServerTestCase] |
|
1479 |
|
|
1480 |
# seq_cases = [NetworkTestCase] |
|
1481 |
|
|
1482 |
|
|
1483 |
os.mkdir(TEST_RUN_ID) |
|
1484 |
|
|
1485 |
for case in seq_cases: |
|
1486 |
log_file = TEST_RUN_ID+'/'+'details_'+(case.__name__)+"_"+TEST_RUN_ID+'.log' |
|
1487 |
fail_file = TEST_RUN_ID+'/'+'failed_'+(case.__name__)+"_"+TEST_RUN_ID+'.log' |
|
1488 |
error_file = TEST_RUN_ID+'/'+'error_'+(case.__name__)+"_"+TEST_RUN_ID+'.log' |
|
1489 |
|
|
1490 |
f = open(log_file, "w") |
|
1491 |
fail = open(fail_file, "w") |
|
1492 |
error = open(error_file, "w") |
|
1493 |
|
|
1494 |
suite = unittest.TestLoader().loadTestsFromTestCase(case) |
|
1495 |
runner = unittest.TextTestRunner(f, verbosity=2) |
|
1496 |
result = runner.run(suite) |
|
1525 |
# seq_cases = [UnauthorizedTestCase, ImagesTestCase, FlavorsTestCase, ServersTestCase, ServerTestCase] |
|
1526 |
seq_cases = [NetworkTestCase] |
|
1527 |
|
|
1528 |
# seq_cases = [UnauthorizedTestCase] |
|
1529 |
|
|
1530 |
#folder for each image |
|
1531 |
image_folder = TEST_RUN_ID + '/' + imageid |
|
1532 |
os.mkdir(image_folder) |
|
1533 |
|
|
1534 |
for case in seq_cases: |
|
1535 |
log_file = image_folder+'/'+'details_'+(case.__name__)+"_"+TEST_RUN_ID+'.log' |
|
1536 |
fail_file = image_folder+'/'+'failed_'+(case.__name__)+"_"+TEST_RUN_ID+'.log' |
|
1537 |
error_file = image_folder+'/'+'error_'+(case.__name__)+"_"+TEST_RUN_ID+'.log' |
|
1538 |
|
|
1539 |
f = open(log_file, "w") |
|
1540 |
fail = open(fail_file, "w") |
|
1541 |
error = open(error_file, "w") |
|
1542 |
|
|
1543 |
suite = unittest.TestLoader().loadTestsFromTestCase(case) |
|
1544 |
runner = unittest.TextTestRunner(f, verbosity=2) |
|
1545 |
result = runner.run(suite) |
|
1497 | 1546 |
|
1498 |
error.write("Testcases errors: \n\n") |
|
1499 |
for res in result.errors: |
|
1500 |
error.write(str(res[0])+'\n') |
|
1501 |
error.write(str(res[0].__doc__) + '\n') |
|
1502 |
error.write('\n') |
|
1547 |
error.write("Testcases errors: \n\n")
|
|
1548 |
for res in result.errors:
|
|
1549 |
error.write(str(res[0])+'\n')
|
|
1550 |
error.write(str(res[0].__doc__) + '\n')
|
|
1551 |
error.write('\n')
|
|
1503 | 1552 |
|
1504 | 1553 |
|
1505 |
fail.write("Testcases failures: \n\n") |
|
1506 |
for res in result.failures: |
|
1507 |
fail.write(str(res[0])+'\n') |
|
1508 |
fail.write(str(res[0].__doc__) + '\n') |
|
1509 |
fail.write('\n') |
|
1554 |
fail.write("Testcases failures: \n\n")
|
|
1555 |
for res in result.failures:
|
|
1556 |
fail.write(str(res[0])+'\n')
|
|
1557 |
fail.write(str(res[0].__doc__) + '\n')
|
|
1558 |
fail.write('\n')
|
|
1510 | 1559 |
|
1511 | 1560 |
|
1512 | 1561 |
|
Also available in: Unified diff