Revision 91de9b55

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