Revision 91de9b55 snf-cyclades-app/synnefo/tools/burnin.py
b/snf-cyclades-app/synnefo/tools/burnin.py | ||
---|---|---|
607 | 607 |
|
608 | 608 |
images = cls.compute.list_images(detail = True) |
609 | 609 |
flavors = cls.compute.list_flavors(detail = True) |
610 |
imageid = choice([im['id'] for im in images]) |
|
611 |
flavorid = choice([f["id"] for f in flavors if f["disk"] >= 20]) |
|
610 |
|
|
611 |
is_windows = imagename.lower().find("windows") >= 0 |
|
612 |
|
|
613 |
cls.imageid = choice([im['id'] for im in images] if not is_windows) |
|
614 |
cls.flavorid = choice([f['id'] for f in flavors if f['disk'] >= 20]) |
|
612 | 615 |
|
613 | 616 |
for image in images: |
614 | 617 |
if image['id'] == imageid: |
615 | 618 |
imagename = image['name'] |
616 | 619 |
|
617 |
servername = "%s%s for %s" % (SNF_TEST_PREFIX, TEST_RUN_ID, imagename) |
|
618 |
is_windows = imagename.lower().find("windows") >= 0 |
|
620 |
cls.servername = "%s%s for %s" % (SNF_TEST_PREFIX, TEST_RUN_ID, imagename) |
|
619 | 621 |
|
620 |
#Run testcases for server spawning in order to ensure it is done right |
|
621 |
setupCase = _spawn_server_test_case(imageid=str(imageid), flavorid=flavorid, |
|
622 |
imagename=imagename, |
|
623 |
personality=None, |
|
624 |
servername=servername, |
|
625 |
is_windows=is_windows, |
|
626 |
action_timeout=200, |
|
627 |
build_warning=1200, |
|
628 |
build_fail=500, |
|
629 |
query_interval=3) |
|
630 |
|
|
631 |
#Using already implemented tests for server list population |
|
632 |
suite = unittest.TestSuite() |
|
633 |
suite.addTest(setupCase('test_001_submit_create_server')) |
|
634 |
suite.addTest(setupCase('test_002a_server_is_building_in_list')) |
|
635 |
suite.addTest(setupCase('test_002b_server_is_building_in_details')) |
|
636 |
suite.addTest(setupCase('test_003_server_becomes_active')) |
|
637 |
unittest.TextTestRunner(verbosity=2).run(suite) |
|
638 |
unittest.TextTestRunner(verbosity=2).run(suite) |
|
622 |
#Dictionary initialization for the vms credentials |
|
623 |
cls.serverid = dict() |
|
624 |
cls.username = dict() |
|
625 |
cls.password = dict() |
|
626 |
|
|
627 |
def test_0001_submit_create_server_A(self): |
|
628 |
"""Test submit create server request""" |
|
629 |
serverA = self.client.create_server(self.servername, self.flavorid, |
|
630 |
self.imageid, personality=None) |
|
631 |
|
|
632 |
self.assertEqual(server["name"], self.servername) |
|
633 |
self.assertEqual(server["flavorRef"], self.flavorid) |
|
634 |
self.assertEqual(server["imageRef"], self.imageid) |
|
635 |
self.assertEqual(server["status"], "BUILD") |
|
636 |
|
|
637 |
# Update class attributes to reflect data on building server |
|
638 |
cls = type(self) |
|
639 |
cls.serverid['A'] = server["id"] |
|
640 |
cls.username['A'] = None |
|
641 |
cls.password['A'] = server["adminPass"] |
|
642 |
|
|
643 |
|
|
644 |
def test_0001_submit_create_server_B(self): |
|
645 |
"""Test submit create server request""" |
|
646 |
serverA = self.client.create_server(self.servername, self.flavorid, |
|
647 |
self.imageid, personality=None) |
|
648 |
|
|
649 |
self.assertEqual(server["name"], self.servername) |
|
650 |
self.assertEqual(server["flavorRef"], self.flavorid) |
|
651 |
self.assertEqual(server["imageRef"], self.imageid) |
|
652 |
self.assertEqual(server["status"], "BUILD") |
|
653 |
|
|
654 |
# Update class attributes to reflect data on building server |
|
655 |
cls = type(self) |
|
656 |
cls.serverid['B'] = server["id"] |
|
657 |
cls.username['B'] = None |
|
658 |
cls.password['B'] = server["adminPass"] |
|
659 |
|
|
660 |
def test_0001_serverA_becomes_active(self): |
|
661 |
"""Test server becomes ACTIVE""" |
|
662 |
|
|
663 |
fail_tmout = time.time()+self.action_timeout |
|
664 |
while True: |
|
665 |
d = self.client.get_server_details(self.serverid['A']) |
|
666 |
status = d['status'] |
|
667 |
if status == 'ACTIVE': |
|
668 |
active = True |
|
669 |
break |
|
670 |
elif time.time() > fail_tmout: |
|
671 |
self.assertLess(time.time(), fail_tmout) |
|
672 |
else: |
|
673 |
time.sleep(self.query_interval) |
|
674 |
|
|
675 |
self.assertTrue(active) |
|
676 |
|
|
677 |
def test_0001_serverB_becomes_active(self): |
|
678 |
"""Test server becomes ACTIVE""" |
|
679 |
|
|
680 |
fail_tmout = time.time()+self.action_timeout |
|
681 |
while True: |
|
682 |
d = self.client.get_server_details(self.serverid['B']) |
|
683 |
status = d['status'] |
|
684 |
if status == 'ACTIVE': |
|
685 |
active = True |
|
686 |
break |
|
687 |
elif time.time() > fail_tmout: |
|
688 |
self.assertLess(time.time(), fail_tmout) |
|
689 |
else: |
|
690 |
time.sleep(self.query_interval) |
|
691 |
|
|
692 |
self.assertTrue(active) |
|
639 | 693 |
|
640 | 694 |
|
641 | 695 |
def test_001_create_network(self): |
... | ... | |
658 | 712 |
|
659 | 713 |
def test_002_connect_to_network(self): |
660 | 714 |
"""Test connect VM to network""" |
661 |
servers = self.compute.list_servers() |
|
662 |
|
|
663 |
#Pick a server created only for the test |
|
664 |
server = choice([s for s in servers if s['name'].startswith(SNF_TEST_PREFIX)]) |
|
665 |
self.client.connect_server(server['id'], self.networkid) |
|
666 |
|
|
667 |
#Update class attributes |
|
668 |
cls = type(self) |
|
669 |
cls.serverid = server['id'] |
|
670 | 715 |
|
716 |
self.client.connect_server(self.serverid['A'], self.networkid) |
|
717 |
self.client.connect_server(self.serverid['B'], self.networkid) |
|
718 |
|
|
671 | 719 |
#Insist on connecting until action timeout |
672 | 720 |
fail_tmout = time.time()+self.action_timeout |
673 | 721 |
|
674 | 722 |
while True: |
675 | 723 |
connected = (self.client.get_network_details(self.networkid)) |
676 | 724 |
connections = connected['servers']['values'] |
677 |
if (self.serverid in connections): |
|
725 |
if (self.serverid['A'] in connections) and (self.serverid['B'] in connections):
|
|
678 | 726 |
conn_exists = True |
679 | 727 |
break |
680 | 728 |
elif time.time() > fail_tmout: |
... | ... | |
689 | 737 |
prev_state = self.client.get_network_details(self.networkid) |
690 | 738 |
prev_conn = len(prev_state['servers']['values']) |
691 | 739 |
|
692 |
self.client.disconnect_server(self.serverid, self.networkid) |
|
693 |
time.sleep(15)
|
|
740 |
self.client.disconnect_server(self.serverid['A'], self.networkid)
|
|
741 |
self.client.disconnect_server(self.serverid['B'], self.networkid)
|
|
694 | 742 |
|
695 | 743 |
#Insist on deleting until action timeout |
696 | 744 |
fail_tmout = time.time()+self.action_timeout |
... | ... | |
698 | 746 |
while True: |
699 | 747 |
connected = (self.client.get_network_details(self.networkid)) |
700 | 748 |
connections = connected['servers']['values'] |
701 |
if (self.serverid not in connections): |
|
749 |
if (self.serverid['A'] not in connections) and (self.serverid['B'] not in connections):
|
|
702 | 750 |
conn_exists = False |
703 | 751 |
break |
704 | 752 |
elif time.time() > fail_tmout: |
... | ... | |
721 | 769 |
|
722 | 770 |
def test_005_cleanup_servers(self): |
723 | 771 |
"""Cleanup servers created for this test""" |
724 |
self.compute.delete_server(self.serverid) |
|
772 |
self.compute.delete_server(self.serverid['A']) |
|
773 |
self.compute.delete_server(self.serverid['B']) |
|
774 |
|
|
725 | 775 |
fail_tmout = time.time()+self.action_timeout |
726 | 776 |
|
727 | 777 |
#Ensure server gets deleted |
778 |
status = dict() |
|
779 |
|
|
728 | 780 |
while True: |
729 |
details = self.compute.get_server_details(self.serverid) |
|
730 |
status = details['status'] |
|
731 |
if status == 'DELETED': |
|
781 |
details = self.compute.get_server_details(self.serverid['A']) |
|
782 |
status['A'] = details['status'] |
|
783 |
details = self.compute.get_server_details(self.serverid['B']) |
|
784 |
status['B'] = details['status'] |
|
785 |
if (status['A'] == 'DELETED') and (status['B'] == 'DELETED'): |
|
732 | 786 |
deleted = True |
733 | 787 |
break |
734 | 788 |
elif time.time() > fail_tmout: |
... | ... | |
742 | 796 |
"""A distinct process used to execute part of the tests in parallel""" |
743 | 797 |
def __init__(self, **kw): |
744 | 798 |
Process.__init__(self, **kw) |
745 |
kwargs = kw["kwargs"] |
|
799 |
kwargs = kw["kwargs"]x
|
|
746 | 800 |
self.testq = kwargs["testq"] |
747 | 801 |
self.runner = kwargs["runner"] |
748 | 802 |
|
Also available in: Unified diff