Revision 66eba2cf snf-tools/synnefo_tools/burnin.py

b/snf-tools/synnefo_tools/burnin.py
71 71
    import unittest
72 72

  
73 73

  
74
class BurninTestResult(unittest.TextTestResult):
75
    def addSuccess(self, test):
76
        super(BurninTestResult, self).addSuccess(test)
77
        if self.showAll:
78
            if test.result_dict:
79
                run_details = test.result_dict
80

  
81
                self.stream.write("\n")
82
                for i in run_details:
83
                    self.stream.write("%s : %s \n" % (i, run_details[i]))
84
                self.stream.write("\n")
85

  
86
        elif self.dots:
87
            self.stream.write('.')
88
            self.stream.flush() 
89
            
90
    def addError(self, test, err):
91
        super(BurninTestResult, self).addError(test, err)
92
        if self.showAll:
93
            self.stream.writeln("ERROR")
94

  
95
            run_details = test.result_dict
96

  
97
            self.stream.write("\n")
98
            for i in run_details:
99
                self.stream.write("%s : %s \n" % (i, run_details[i]))
100
            self.stream.write("\n")
101

  
102
        elif self.dots:
103
            self.stream.write('E')
104
            self.stream.flush()
105

  
106
    def addFailure(self, test, err):
107
        super(BurninTestResult, self).addFailure(test, err)
108
        if self.showAll:
109
            self.stream.writeln("FAIL")
110

  
111
            run_details = test.result_dict
112

  
113
            self.stream.write("\n")
114
            for i in run_details:
115
                self.stream.write("%s : %s \n" % (i, run_details[i]))
116
            self.stream.write("\n")
117

  
118
        elif self.dots:
119
            self.stream.write('F')
120
            self.stream.flush()
121

  
122

  
123

  
74 124
API = None
75 125
TOKEN = None
76 126
DEFAULT_API = "https://cyclades.okeanos.grnet.gr/api/v1.1"
......
125 175

  
126 176

  
127 177
class UnauthorizedTestCase(unittest.TestCase):
178

  
179
    @classmethod
180
    def setUpClass(cls):
181
        cls.result_dict = dict()
182

  
128 183
    def test_unauthorized_access(self):
129 184
        """Test access without a valid token fails"""
130 185
        log.info("Authentication test")
......
148 203
        cls.plankton = ImageClient(PLANKTON, TOKEN)
149 204
        cls.images = cls.plankton.list_public()
150 205
        cls.dimages = cls.plankton.list_public(detail=True)
206
        cls.result_dict = dict()
151 207

  
152 208
    def test_001_list_images(self):
153 209
        """Test image list actually returns images"""
......
188 244
        cls.client = ComputeClient(API, TOKEN)
189 245
        cls.flavors = cls.client.list_flavors()
190 246
        cls.dflavors = cls.client.list_flavors(detail=True)
247
        cls.result_dict = dict()
191 248

  
192 249
    def test_001_list_flavors(self):
193 250
        """Test flavor list actually returns flavors"""
......
230 287
        cls.client = ComputeClient(API, TOKEN)
231 288
        cls.servers = cls.client.list_servers()
232 289
        cls.dservers = cls.client.list_servers(detail=True)
290
        cls.result_dict = dict()
233 291

  
234 292
    # def test_001_list_servers(self):
235 293
    #     """Test server list actually returns servers"""
......
256 314
        log.info("Spawning server for image `%s'" %cls.imagename)
257 315
        cls.client = ComputeClient(API, TOKEN)
258 316
        cls.cyclades = CycladesClient(API, TOKEN)
317
        cls.result_dict = dict()
259 318

  
260 319
    def _get_ipv4(self, server):
261 320
        """Get the public IPv4 of a server from the detailed server info"""
......
440 499
        cls.username = None
441 500
        cls.passwd = server["adminPass"]
442 501

  
502
        self.result_dict["Server ID"] = str(server["id"])
503
        self.result_dict["Password"] = str(server["adminPass"])
504

  
443 505
    def test_002a_server_is_building_in_list(self):
444 506
        """Test server is in BUILD state, in server list"""
445 507
        log.info("Server in BUILD state in server list")
446 508

  
509
        self.result_dict.clear()
510

  
447 511
        servers = self.client.list_servers(detail=True)
448 512
        servers = filter(lambda x: x["name"] == self.servername, servers)
449 513
        self.assertEqual(len(servers), 1)
......
549 613

  
550 614
        log.info("Validate server's IPv4")
551 615

  
616

  
552 617
        server = self.client.get_server_details(self.serverid)
553 618
        ipv4 = self._get_ipv4(server)
619

  
620
        self.result_dict.clear()
621
        self.result_dict["IPv4"] = str(ipv4)
622

  
554 623
        self.assertEquals(IP(ipv4).version(), 4)
555 624

  
556 625
    def test_005_server_has_ipv6(self):
......
561 630

  
562 631
        server = self.client.get_server_details(self.serverid)
563 632
        ipv6 = self._get_ipv6(server)
633

  
634
        self.result_dict.clear()
635
        self.result_dict["IPv6"] = str(ipv6)
636

  
564 637
        self.assertEquals(IP(ipv6).version(), 6)
565 638

  
566 639
    def test_006_server_responds_to_ping_IPv4(self):
567 640
        """Test server responds to ping on IPv4 address"""
568 641

  
569 642
        log.info("Testing if server responds to pings in IPv4")
643
        self.result_dict.clear()
570 644

  
571 645
        server = self.client.get_server_details(self.serverid)
572 646
        ip = self._get_ipv4(server)
......
730 804
        cls.password = dict()
731 805
        cls.is_windows = cls.imagename.lower().find("windows") >= 0
732 806

  
807
        cls.result_dict = dict()
808

  
733 809
    def _skipIf(self, condition, msg):
734 810
        if condition:
735 811
            self.skipTest(msg)
......
786 862
        log.info("Server A id:" + str(serverA["id"]))
787 863
        log.info("Server password " + (self.password['A']))
788 864

  
865
        self.result_dict["Server A ID"] = str(serverA["id"])
866
        self.result_dict["Server A password"] = serverA["adminPass"]
867
        
789 868
    def test_00001b_serverA_becomes_active(self):
790 869
        """Test server becomes ACTIVE"""
791 870

  
792 871
        log.info("Waiting until test server A becomes ACTIVE")
872
        self.result_dict.clear()
793 873

  
794 874
        fail_tmout = time.time() + self.action_timeout
795 875
        while True:
......
809 889
        """Test submit create server request"""
810 890

  
811 891
        log.info("Creating test server B")
812

  
892
        
813 893
        serverB = self.client.create_server(self.servername, self.flavorid,
814 894
                                            self.imageid, personality=None)
815 895

  
......
826 906
        log.info("Server B id: " + str(serverB["id"]))
827 907
        log.info("Password " + (self.password['B']))
828 908

  
909
        self.result_dict.clear()
910
        self.result_dict["Server B ID"] = str(serverB["id"])
911
        self.result_dict["Server B password"] = serverB["adminPass"]
912

  
829 913
    def test_00002b_serverB_becomes_active(self):
830 914
        """Test server becomes ACTIVE"""
831 915

  
832 916
        log.info("Waiting until test server B becomes ACTIVE")
917
        self.result_dict.clear()
833 918

  
834 919
        fail_tmout = time.time() + self.action_timeout
835 920
        while True:
......
849 934
        """Test submit create network request"""
850 935

  
851 936
        log.info("Submit new network request")
852

  
937
        self.result_dict.clear()
938
                
853 939
        name = SNF_TEST_PREFIX + TEST_RUN_ID
854 940
        previous_num = len(self.client.list_networks())
855 941
        network = self.client.create_network(name)
......
865 951
        #Test if new network is created
866 952
        self.assertTrue(len(networks) > previous_num)
867 953

  
954
        self.result_dict["Private network ID"] = str(network['id'])
955

  
868 956
    def test_002_connect_to_network(self):
869 957
        """Test connect VMs to network"""
870 958

  
871 959
        log.info("Connect VMs to private network")
960
        self.result_dict.clear()
872 961

  
873 962
        self.client.connect_server(self.serverid['A'], self.networkid)
874 963
        self.client.connect_server(self.serverid['B'], self.networkid)
......
927 1016
        "Test if server A responds to IPv4 pings"
928 1017

  
929 1018
        log.info("Testing if server A responds to IPv4 pings ")
1019
        self.result_dict.clear()
930 1020

  
931 1021
        server = self.client.get_server_details(self.serverid['A'])
932 1022
        ip = self._get_ipv4(server)
......
934 1024
        fail_tmout = time.time() + self.action_timeout
935 1025

  
936 1026
        s = False
1027
        
1028
        self.result_dict["Server A public IP"] = str(ip)
937 1029

  
938 1030
        while True:
939 1031

  
......
953 1045
        """Reboot server B"""
954 1046

  
955 1047
        log.info("Rebooting server B")
1048
        self.result_dict.clear()
956 1049

  
957 1050
        self.client.shutdown_server(self.serverid['B'])
958 1051

  
......
986 1079
        """Test if server B responds to IPv4 pings"""
987 1080

  
988 1081
        log.info("Testing if server B responds to IPv4 pings")
1082
        self.result_dict.clear()
1083
        
989 1084
        server = self.client.get_server_details(self.serverid['B'])
990 1085
        ip = self._get_ipv4(server)
991 1086

  
......
993 1088

  
994 1089
        s = False
995 1090

  
1091
        self.result_dict["Server B public IP"] = str(ip)
1092

  
996 1093
        while True:
997 1094
            if self._ping_once(ip):
998 1095
                s = True
......
1012 1109
        self._skipIf(self.is_windows, "only valid for Linux servers")
1013 1110

  
1014 1111
        log.info("Setting up interface eth1 for server A")
1112
        self.result_dict.clear()
1015 1113

  
1016 1114
        server = self.client.get_server_details(self.serverid['A'])
1017 1115
        image = self.client.get_image_details(self.imageid)
......
1703 1801
            error = open(error_file, "w")
1704 1802

  
1705 1803
            suite = unittest.TestLoader().loadTestsFromTestCase(case)
1706
            runner = unittest.TextTestRunner(f, verbosity=2, failfast=True)
1804
            runner = unittest.TextTestRunner(f, verbosity=2, failfast=True, resultclass=BurninTestResult)
1707 1805
            result = runner.run(suite)
1708 1806

  
1709 1807
            for res in result.errors:

Also available in: Unified diff