Revision 9e4682b5 snf-cyclades-app/synnefo/tools/burnin.py

b/snf-cyclades-app/synnefo/tools/burnin.py
1
#!/usr/bin/env python
1
 #!/usr/bin/env python
2 2

  
3 3
# Copyright 2011 GRNET S.A. All rights reserved.
4 4
#
......
567 567
        self.assertNotIn(self.serverid, [s["id"] for s in servers])
568 568

  
569 569

  
570
class NetworksTestCase(unittest.TestCase):
570
class NetworkTestCase(unittest.TestCase):
571 571
    """ Testing networking in cyclades """
572
    @classmethod
572 573
    def setUpClass(cls):
573 574
        "Initialize kamaki, get list of current networks"
574 575
        conf = Config()
575 576
        conf.set('compute_token', TOKEN)
576 577
        cls.client = CycladesClient(conf)
578
        cls.compute = ComputeClient(conf)
579

  
580
        images = cls.compute.list_images(detail = True)
581
        flavors = cls.compute.list_flavors(detail = True)
582
        imageid = choice([im['id'] for im in images])
583
        flavorid = choice([f["id"] for f in flavors if f["disk"] >= 20])
584

  
585
        for image in images:
586
            if image['id'] == imageid:
587
                imagename = image['name']
577 588

  
578
        #TODO: Create servers, insist until ACTIVE
579
        #cls.serverid = 
589
        servername = "%s%s for %s" % (SNF_TEST_PREFIX, TEST_RUN_ID, imagename)
590
        is_windows = imagename.lower().find("windows") >= 0
591
        setupCase =  _spawn_server_test_case(imageid=str(imageid), flavorid=flavorid,
592
                                             imagename=imagename,
593
                                             personality=None,
594
                                             servername=servername,
595
                                             is_windows=is_windows,
596
                                             action_timeout=200,
597
                                             build_warning=1200,
598
                                             build_fail=500,
599
                                             query_interval=3)
600

  
601
        #Using already implemented tests for serverlist population
602
        suite = unittest.TestSuite()
603
        suite.addTest(setupCase('test_001_submit_create_server'))
604
        suite.addTest(setupCase('test_002a_server_is_building_in_list'))
605
        suite.addTest(setupCase('test_002b_server_is_building_in_details'))        
606
        suite.addTest(setupCase('test_003_server_becomes_active'))
607
        unittest.TextTestRunner(verbosity=2).run(suite)
580 608

  
581
    def test_001_create_network():
609
    def test_001_create_network(self):
582 610
        """Test submit create network request"""
583 611
        name = SNF_TEST_PREFIX+TEST_RUN_ID
584
        network =  self.client.create_network(name)
612
        network =  self.client.create_network(name)        
613
        previous_num = len(self.client.list_networks())
614

  
615
        #Test if right name is assigned
585 616
        self.assertEqual(network['name'], name)
586 617
        
587
        # Update class attributes to reflect data on new network
618
        # Update class attributes
588 619
        cls = type(self)
589 620
        cls.networkid = network['id']
621
        networks = self.client.list_networks()
622

  
623
        #Test if new network is created
624
        self.assertTrue(len(networks) > previous_num)
625
        
590 626
    
591
    def test_002_connect_to_network():
627
    def test_002_connect_to_network(self):
592 628
        """Test VM to network connection"""
593
        self.client.connect_server(self.serverid, self.networkid)
629
        servers = self.compute.list_servers()
630
        server = choice(servers)
631
        self.client.connect_server(server['id'], self.networkid)
632
        
633
        #Update class attributes
634
        cls = type(self)
635
        cls.serverid = server['id']
636

  
637
        connected = (self.client.get_network_details(self.networkid))
638
        connections = len(connected['servers']['values'])
639
        
640
        time.sleep(60)
641

  
642
        #FIXME: Insist on new connection
643
        self.assertTrue(connections>=1)
644
        
645

  
646
    def test_003_disconnect_from_network(self):
647
        prev_state = (self.client.get_network_details(self.networkid))
648
        prev_conn = len(prev_state['servers']['values'])
594 649

  
595
    def test_003_disconnect_from_network():
596 650
        self.client.disconnect_server(self.serverid, self.networkid)
597
    
598
    def test_004_destroy_network():
651
        connected = (self.client.get_network_details(self.networkid))
652
        curr_conn = len(connected['servers']['values'])
653

  
654
        #FIXME: Insist on deleting
655
        self.assertTrue(curr_conn < prev_conn)
656

  
657
    def test_004_destroy_network(self):
599 658
        """Test submit delete network request"""
600 659
        self.client.delete_network(self.networkid)
660
        
661
        networks = self.client.list_networks()
662
        self.assertEqual(len(networks),1)
601 663

  
602
    
603
    
604 664

  
605 665
class TestRunnerProcess(Process):
606 666
    """A distinct process used to execute part of the tests in parallel"""
......
744 804
                      metavar="TIMEOUT",
745 805
                      help="Wait SECONDS seconds for a server action to " \
746 806
                           "complete, then the test is considered failed",
747
                      default=50)
807
                      default=100)
748 808
    parser.add_option("--build-warning",
749 809
                      action="store", type="int", dest="build_warning",
750 810
                      metavar="TIMEOUT",
......
866 926
        personality = None   # FIXME
867 927
        servername = "%s%s for %s" % (SNF_TEST_PREFIX, TEST_RUN_ID, imagename)
868 928
        is_windows = imagename.lower().find("windows") >= 0
929
        
869 930
        ServerTestCase = _spawn_server_test_case(imageid=imageid, flavorid=flavorid,
870
                                       imagename=imagename,
871
                                       perssonality=personality,
872
                                       servername=servername,
873
                                       is_windows=is_windows,
874
                                       action_timeout=opts.action_timeout,
875
                                       build_warning=opts.build_warning,
876
                                       build_fail=opts.build_fail,
877
                                       query_interval=opts.query_interval)
931
                                                 imagename=imagename,
932
                                                 personality=personality,
933
                                                 servername=servername,
934
                                                 is_windows=is_windows,
935
                                                 action_timeout=opts.action_timeout,
936
                                                 build_warning=opts.build_warning,
937
                                                 build_fail=opts.build_fail,
938
                                                 query_interval=opts.query_interval)
878 939

  
879 940

  
880 941
    #Running all the testcases sequentially
881
    seq_cases = [UnauthorizedTestCase, FlavorsTestCase, ImagesTestCase, ServerTestCase, NetworkTestCase]
942
    #seq_cases = [UnauthorizedTestCase, FlavorsTestCase, ImagesTestCase, ServerTestCase, NetworkTestCase]
943

  
944
    seq_cases = [NetworkTestCase]
882 945
    for case in seq_cases:
883 946
        suite = unittest.TestLoader().loadTestsFromTestCase(case)
884 947
        unittest.TextTestRunner(verbosity=2).run(suite)

Also available in: Unified diff