Revision daac4017 snf-tools/synnefo_tools/burnin.py

b/snf-tools/synnefo_tools/burnin.py
569 569
        ipv6 = self._get_ipv6(server)
570 570
        self.assertEquals(IP(ipv6).version(), 6)
571 571

  
572
    # def test_006_server_responds_to_ping_IPv4(self):
573
    #     """Test server responds to ping on IPv4 address"""
574

  
575
    #     log.info("Testing if server responds to pings in IPv4")
576

  
577
    #     server = self.client.get_server_details(self.serverid)
578
    #     ip = self._get_ipv4(server)
579
    #     self._try_until_timeout_expires(self.action_timeout,
580
    #                                     self.action_timeout,
581
    #                                     "PING IPv4 to %s" % ip,
582
    #                                     self._ping_once,
583
    #                                     False, ip)
584

  
585
    # def test_007_server_responds_to_ping_IPv6(self):
586
    #     """Test server responds to ping on IPv6 address"""
587
    #     self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
588
    #     log.info("Testing if server responds to pings in IPv6")
589

  
590
    #     server = self.client.get_server_details(self.serverid)
591
    #     ip = self._get_ipv6(server)
592
    #     self._try_until_timeout_expires(self.action_timeout,
593
    #                                     self.action_timeout,
594
    #                                     "PING IPv6 to %s" % ip,
595
    #                                     self._ping_once,
596
    #                                     True, ip)
572
    def test_006_server_responds_to_ping_IPv4(self):
573
        """Test server responds to ping on IPv4 address"""
574

  
575
        log.info("Testing if server responds to pings in IPv4")
576

  
577
        server = self.client.get_server_details(self.serverid)
578
        ip = self._get_ipv4(server)
579
        self._try_until_timeout_expires(self.action_timeout,
580
                                        self.action_timeout,
581
                                        "PING IPv4 to %s" % ip,
582
                                        self._ping_once,
583
                                        False, ip)
584

  
585
    def test_007_server_responds_to_ping_IPv6(self):
586
        """Test server responds to ping on IPv6 address"""
587
        self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
588
        log.info("Testing if server responds to pings in IPv6")
589

  
590
        server = self.client.get_server_details(self.serverid)
591
        ip = self._get_ipv6(server)
592
        self._try_until_timeout_expires(self.action_timeout,
593
                                        self.action_timeout,
594
                                        "PING IPv6 to %s" % ip,
595
                                        self._ping_once,
596
                                        True, ip)
597 597

  
598 598
    def test_008_submit_shutdown_request(self):
599 599
        """Test submit request to shutdown server"""
......
625 625
                                         self.action_timeout,
626 626
                                         self.action_timeout)
627 627

  
628
    # def test_011a_server_responds_to_ping_IPv4(self):
629
    #     """Test server OS is actually up and running again"""
628
    def test_011a_server_responds_to_ping_IPv4(self):
629
        """Test server OS is actually up and running again"""
630 630

  
631
    #     log.info("Testing if server is actually up and running")
631
        log.info("Testing if server is actually up and running")
632 632

  
633
    #     self.test_006_server_responds_to_ping_IPv4()
633
        self.test_006_server_responds_to_ping_IPv4()
634 634

  
635
    # def test_012_ssh_to_server_IPv4(self):
636
    #     """Test SSH to server public IPv4 works, verify hostname"""
635
    def test_012_ssh_to_server_IPv4(self):
636
        """Test SSH to server public IPv4 works, verify hostname"""
637 637

  
638
    #     self._skipIf(self.is_windows, "only valid for Linux servers")
639
    #     server = self.client.get_server_details(self.serverid)
640
    #     self._insist_on_ssh_hostname(self._get_ipv4(server),
641
    #                                  self.username, self.passwd)
638
        self._skipIf(self.is_windows, "only valid for Linux servers")
639
        server = self.client.get_server_details(self.serverid)
640
        self._insist_on_ssh_hostname(self._get_ipv4(server),
641
                                     self.username, self.passwd)
642 642

  
643
    # def test_013_ssh_to_server_IPv6(self):
644
    #     """Test SSH to server public IPv6 works, verify hostname"""
645
    #     self._skipIf(self.is_windows, "only valid for Linux servers")
646
    #     self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
643
    def test_013_ssh_to_server_IPv6(self):
644
        """Test SSH to server public IPv6 works, verify hostname"""
645
        self._skipIf(self.is_windows, "only valid for Linux servers")
646
        self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
647 647

  
648
    #     server = self.client.get_server_details(self.serverid)
649
    #     self._insist_on_ssh_hostname(self._get_ipv6(server),
650
    #                                  self.username, self.passwd)
648
        server = self.client.get_server_details(self.serverid)
649
        self._insist_on_ssh_hostname(self._get_ipv6(server),
650
                                     self.username, self.passwd)
651 651

  
652
    # def test_014_rdp_to_server_IPv4(self):
653
    #     "Test RDP connection to server public IPv4 works"""
654
    #     self._skipIf(not self.is_windows, "only valid for Windows servers")
655
    #     server = self.client.get_server_details(self.serverid)
656
    #     ipv4 = self._get_ipv4(server)
657
    #     sock = _insist_on_tcp_connection(socket.AF_INET, ipv4, 3389)
652
    def test_014_rdp_to_server_IPv4(self):
653
        "Test RDP connection to server public IPv4 works"""
654
        self._skipIf(not self.is_windows, "only valid for Windows servers")
655
        server = self.client.get_server_details(self.serverid)
656
        ipv4 = self._get_ipv4(server)
657
        sock = _insist_on_tcp_connection(socket.AF_INET, ipv4, 3389)
658 658

  
659
    #     # No actual RDP processing done. We assume the RDP server is there
660
    #     # if the connection to the RDP port is successful.
661
    #     # FIXME: Use rdesktop, analyze exit code? see manpage [costasd]
662
    #     sock.close()
659
        # No actual RDP processing done. We assume the RDP server is there
660
        # if the connection to the RDP port is successful.
661
        # FIXME: Use rdesktop, analyze exit code? see manpage [costasd]
662
        sock.close()
663 663

  
664
    # def test_015_rdp_to_server_IPv6(self):
665
    #     "Test RDP connection to server public IPv6 works"""
666
    #     self._skipIf(not self.is_windows, "only valid for Windows servers")
667
    #     self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
664
    def test_015_rdp_to_server_IPv6(self):
665
        "Test RDP connection to server public IPv6 works"""
666
        self._skipIf(not self.is_windows, "only valid for Windows servers")
667
        self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
668 668

  
669
    #     server = self.client.get_server_details(self.serverid)
670
    #     ipv6 = self._get_ipv6(server)
671
    #     sock = _get_tcp_connection(socket.AF_INET6, ipv6, 3389)
669
        server = self.client.get_server_details(self.serverid)
670
        ipv6 = self._get_ipv6(server)
671
        sock = _get_tcp_connection(socket.AF_INET6, ipv6, 3389)
672 672

  
673
    #     # No actual RDP processing done. We assume the RDP server is there
674
    #     # if the connection to the RDP port is successful.
675
    #     sock.close()
673
        # No actual RDP processing done. We assume the RDP server is there
674
        # if the connection to the RDP port is successful.
675
        sock.close()
676 676

  
677
    # def test_016_personality_is_enforced(self):
678
    #     """Test file injection for personality enforcement"""
679
    #     self._skipIf(self.is_windows, "only implemented for Linux servers")
680
    #     self._skipIf(self.personality == None, "No personality file selected")
677
    def test_016_personality_is_enforced(self):
678
        """Test file injection for personality enforcement"""
679
        self._skipIf(self.is_windows, "only implemented for Linux servers")
680
        self._skipIf(self.personality == None, "No personality file selected")
681 681

  
682
    #     log.info("Trying to inject file for personality enforcement")
682
        log.info("Trying to inject file for personality enforcement")
683 683

  
684
    #     server = self.client.get_server_details(self.serverid)
684
        server = self.client.get_server_details(self.serverid)
685 685

  
686
    #     for inj_file in self.personality:
687
    #         equal_files = self._check_file_through_ssh(self._get_ipv4(server),
688
    #                                                    inj_file['owner'],
689
    #                                                    self.passwd,
690
    #                                                    inj_file['path'],
691
    #                                                    inj_file['contents'])
692
    #         self.assertTrue(equal_files)
686
        for inj_file in self.personality:
687
            equal_files = self._check_file_through_ssh(self._get_ipv4(server),
688
                                                       inj_file['owner'],
689
                                                       self.passwd,
690
                                                       inj_file['path'],
691
                                                       inj_file['contents'])
692
            self.assertTrue(equal_files)
693 693

  
694 694
    def test_017_submit_delete_request(self):
695 695
        """Test submit request to delete server"""
......
901 901

  
902 902
        while True:
903 903

  
904
            netsA=[x['network_id'] for x in self.client.get_server_details(self.serverid['A'])['attachments']['values']]
905
            netsB=[x['network_id'] for x in self.client.get_server_details(self.serverid['B'])['attachments']['values']]
904
            netsA = [x['network_id'] for x in self.client.get_server_details(self.serverid['A'])['attachments']['values']]
905
            netsB = [x['network_id'] for x in self.client.get_server_details(self.serverid['B'])['attachments']['values']]
906 906

  
907 907
            if (self.networkid in netsA) and (self.networkid in netsB):
908 908
                conn_exists = True
......
911 911
                self.assertLess(time.time(), fail_tmout)
912 912
            else:
913 913
                time.sleep(self.query_interval)
914
                
915
        #Adding private IPs to class attributes
916
        cls = type(self)
917
        cls.priv_ip = dict()
918

  
919
        nicsA = self.client.get_server_details(self.serverid['A'])['attachments']['values']
920
        nicsB = self.client.get_server_details(self.serverid['B'])['attachments']['values']
921

  
922
        if conn_exists:
923
            for nic in nicsA:
924
                if nic["network_id"] == self.networkid:
925
                    cls.priv_ip["A"] = nic["ipv4"]
926

  
927
            for nic in nicsB:
928
                if nic["network_id"] == self.networkid:
929
                    cls.priv_ip["B"] = nic["ipv4"]
914 930

  
915 931
        self.assertTrue(conn_exists)
916 932

  
......
947 963

  
948 964
        self.assertTrue(active)
949 965

  
950
    # def test_002b_ping_server_A(self):
951
    #     "Test if server A responds to IPv4 pings"
966
    def test_002b_ping_server_A(self):
967
        "Test if server A responds to IPv4 pings"
952 968

  
953
    #     log.info("Testing if server A responds to IPv4 pings ")
969
        log.info("Testing if server A responds to IPv4 pings ")
954 970

  
955
    #     server = self.client.get_server_details(self.serverid['A'])
956
    #     ip = self._get_ipv4(server)
971
        server = self.client.get_server_details(self.serverid['A'])
972
        ip = self._get_ipv4(server)
957 973

  
958
    #     fail_tmout = time.time() + self.action_timeout
974
        fail_tmout = time.time() + self.action_timeout
959 975

  
960
    #     s = False
976
        s = False
961 977

  
962
    #     while True:
978
        while True:
963 979

  
964
    #         if self._ping_once(ip):
965
    #             s = True
966
    #             break
980
            if self._ping_once(ip):
981
                s = True
982
                break
967 983

  
968
    #         elif time.time() > fail_tmout:
969
    #             self.assertLess(time.time(), fail_tmout)
984
            elif time.time() > fail_tmout:
985
                self.assertLess(time.time(), fail_tmout)
970 986

  
971
    #         else:
972
    #             time.sleep(self.query_interval)
987
            else:
988
                time.sleep(self.query_interval)
973 989

  
974
    #     self.assertTrue(s)
990
        self.assertTrue(s)
975 991

  
976 992
    def test_002c_reboot(self):
977 993
        """Reboot server B"""
......
1006 1022

  
1007 1023
        self.assertTrue(active)
1008 1024

  
1009
    # def test_002d_ping_server_B(self):
1010
    #     """Test if server B responds to IPv4 pings"""
1025
    def test_002d_ping_server_B(self):
1026
        """Test if server B responds to IPv4 pings"""
1011 1027

  
1012
    #     log.info("Testing if server B responds to IPv4 pings")
1013
    #     server = self.client.get_server_details(self.serverid['B'])
1014
    #     ip = self._get_ipv4(server)
1028
        log.info("Testing if server B responds to IPv4 pings")
1029
        server = self.client.get_server_details(self.serverid['B'])
1030
        ip = self._get_ipv4(server)
1015 1031

  
1016
    #     fail_tmout = time.time() + self.action_timeout
1032
        fail_tmout = time.time() + self.action_timeout
1017 1033

  
1018
    #     s = False
1034
        s = False
1019 1035

  
1020
    #     while True:
1021
    #         if self._ping_once(ip):
1022
    #             s = True
1023
    #             break
1036
        while True:
1037
            if self._ping_once(ip):
1038
                s = True
1039
                break
1024 1040

  
1025
    #         elif time.time() > fail_tmout:
1026
    #             self.assertLess(time.time(), fail_tmout)
1041
            elif time.time() > fail_tmout:
1042
                self.assertLess(time.time(), fail_tmout)
1027 1043

  
1028
    #         else:
1029
    #             time.sleep(self.query_interval)
1044
            else:
1045
                time.sleep(self.query_interval)
1030 1046

  
1031
    #     self.assertTrue(s)
1047
        self.assertTrue(s)
1032 1048

  
1033
    # def test_003a_setup_interface_A(self):
1034
    #     """Set up eth1 for server A"""
1049
    def test_003a_setup_interface_A(self):
1050
        """Set up eth1 for server A"""
1035 1051

  
1036
    #     self._skipIf(self.is_windows, "only valid for Linux servers")
1052
        self._skipIf(self.is_windows, "only valid for Linux servers")
1037 1053

  
1038
    #     log.info("Setting up interface eth1 for server A")
1054
        log.info("Setting up interface eth1 for server A")
1039 1055

  
1040
    #     server = self.client.get_server_details(self.serverid['A'])
1041
    #     image = self.client.get_image_details(self.imageid)
1042
    #     os = image['metadata']['values']['os']
1056
        server = self.client.get_server_details(self.serverid['A'])
1057
        image = self.client.get_image_details(self.imageid)
1058
        os = image['metadata']['values']['os']
1043 1059

  
1044
    #     users = image["metadata"]["values"].get("users", None)
1045
    #     userlist = users.split()
1060
        users = image["metadata"]["values"].get("users", None)
1061
        userlist = users.split()
1046 1062

  
1047
    #     if "root" in userlist:
1048
    #         loginname = "root"
1049
    #     elif users == None:
1050
    #         loginname = self._connect_loginname(os)
1051
    #     else:
1052
    #         loginname = choice(userlist)
1063
        if "root" in userlist:
1064
            loginname = "root"
1065
        elif users == None:
1066
            loginname = self._connect_loginname(os)
1067
        else:
1068
            loginname = choice(userlist)
1053 1069

  
1054
    #     hostip = self._get_ipv4(server)
1055
    #     myPass = self.password['A']
1070
        hostip = self._get_ipv4(server)
1071
        myPass = self.password['A']
1056 1072

  
1057
    #     log.info("SSH in server A as %s/%s" % (loginname, myPass))
1073
        log.info("SSH in server A as %s/%s" % (loginname, myPass))
1058 1074

  
1059
    #     res = False
1075
        res = False
1060 1076

  
1061
    #     if loginname != "root":
1062
    #         with settings(
1063
    #             hide('warnings', 'running'),
1064
    #             warn_only=True,
1065
    #             host_string=hostip,
1066
    #             user=loginname, password=myPass
1067
    #             ):
1077
        if loginname != "root":
1078
            with settings(
1079
                hide('warnings', 'running'),
1080
                warn_only=True,
1081
                host_string=hostip,
1082
                user=loginname, password=myPass
1083
                ):
1068 1084

  
1069
    #             if len(sudo('ifconfig eth1 10.0.0.5')) == 0:
1070
    #                 res = True
1085
                if len(sudo('ifconfig eth1 %s' % self.priv_ip["A"])) == 0:
1086
                    res = True
1071 1087

  
1072
    #     else:
1073
    #         with settings(
1074
    #             hide('warnings', 'running'),
1075
    #             warn_only=True,
1076
    #             host_string=hostip,
1077
    #             user=loginname, password=myPass
1078
    #             ):
1088
        else:
1089
            with settings(
1090
                hide('warnings', 'running'),
1091
                warn_only=True,
1092
                host_string=hostip,
1093
                user=loginname, password=myPass
1094
                ):
1079 1095

  
1080
    #             if len(run('ifconfig eth1 10.0.0.5')) == 0:
1081
    #                 res = True
1096
                if len(run('ifconfig eth1 %s' % self.priv_ip["A"])) == 0:
1097
                    res = True
1082 1098

  
1083
    #     self.assertTrue(res)
1099
        self.assertTrue(res)
1084 1100

  
1085
    # def test_003b_setup_interface_B(self):
1086
    #     """Setup eth1 for server B"""
1101
    def test_003b_setup_interface_B(self):
1102
        """Setup eth1 for server B"""
1087 1103

  
1088
    #     self._skipIf(self.is_windows, "only valid for Linux servers")
1104
        self._skipIf(self.is_windows, "only valid for Linux servers")
1089 1105

  
1090
    #     log.info("Setting up interface eth1 for server B")
1106
        log.info("Setting up interface eth1 for server B")
1091 1107

  
1092
    #     server = self.client.get_server_details(self.serverid['B'])
1093
    #     image = self.client.get_image_details(self.imageid)
1094
    #     os = image['metadata']['values']['os']
1108
        server = self.client.get_server_details(self.serverid['B'])
1109
        image = self.client.get_image_details(self.imageid)
1110
        os = image['metadata']['values']['os']
1095 1111

  
1096
    #     users = image["metadata"]["values"].get("users", None)
1097
    #     userlist = users.split()
1112
        users = image["metadata"]["values"].get("users", None)
1113
        userlist = users.split()
1098 1114

  
1099
    #     if "root" in userlist:
1100
    #         loginname = "root"
1101
    #     elif users == None:
1102
    #         loginname = self._connect_loginname(os)
1103
    #     else:
1104
    #         loginname = choice(userlist)
1115
        if "root" in userlist:
1116
            loginname = "root"
1117
        elif users == None:
1118
            loginname = self._connect_loginname(os)
1119
        else:
1120
            loginname = choice(userlist)
1105 1121

  
1106
    #     hostip = self._get_ipv4(server)
1107
    #     myPass = self.password['B']
1122
        hostip = self._get_ipv4(server)
1123
        myPass = self.password['B']
1108 1124

  
1109
    #     log.info("SSH in server B as %s/%s" % (loginname, myPass))
1125
        log.info("SSH in server B as %s/%s" % (loginname, myPass))
1110 1126

  
1111
    #     res = False
1127
        res = False
1112 1128

  
1113
    #     if loginname != "root":
1114
    #         with settings(
1115
    #             hide('warnings', 'running'),
1116
    #             warn_only=True,
1117
    #             host_string=hostip,
1118
    #             user=loginname, password=myPass
1119
    #             ):
1129
        if loginname != "root":
1130
            with settings(
1131
                hide('warnings', 'running'),
1132
                warn_only=True,
1133
                host_string=hostip,
1134
                user=loginname, password=myPass
1135
                ):
1120 1136

  
1121
    #             if len(sudo('ifconfig eth1 10.0.0.6')) == 0:
1122
    #                 res = True
1137
                if len(sudo('ifconfig eth1 %s' % self.priv_ip["B"])) == 0:
1138
                    res = True
1123 1139

  
1124
    #     else:
1125
    #         with settings(
1126
    #             hide('warnings', 'running'),
1127
    #             warn_only=True,
1128
    #             host_string=hostip,
1129
    #             user=loginname, password=myPass
1130
    #             ):
1140
        else:
1141
            with settings(
1142
                hide('warnings', 'running'),
1143
                warn_only=True,
1144
                host_string=hostip,
1145
                user=loginname, password=myPass
1146
                ):
1131 1147

  
1132
    #             if len(run('ifconfig eth1 10.0.0.6')) == 0:
1133
    #                 res = True
1148
                if len(run('ifconfig eth1 %s' % self.priv_ip["B"])) == 0:
1149
                    res = True
1134 1150

  
1135
    #     self.assertTrue(res)
1151
        self.assertTrue(res)
1136 1152

  
1137
    # def test_003c_test_connection_exists(self):
1138
    #     """Ping server B from server A to test if connection exists"""
1153
    def test_003c_test_connection_exists(self):
1154
        """Ping server B from server A to test if connection exists"""
1139 1155

  
1140
    #     self._skipIf(self.is_windows, "only valid for Linux servers")
1156
        self._skipIf(self.is_windows, "only valid for Linux servers")
1141 1157

  
1142
    #     log.info("Testing if server A is actually connected to server B")
1158
        log.info("Testing if server A is actually connected to server B")
1143 1159

  
1144
    #     server = self.client.get_server_details(self.serverid['A'])
1145
    #     image = self.client.get_image_details(self.imageid)
1146
    #     os = image['metadata']['values']['os']
1147
    #     hostip = self._get_ipv4(server)
1160
        server = self.client.get_server_details(self.serverid['A'])
1161
        image = self.client.get_image_details(self.imageid)
1162
        os = image['metadata']['values']['os']
1163
        hostip = self._get_ipv4(server)
1148 1164

  
1149
    #     users = image["metadata"]["values"].get("users", None)
1150
    #     userlist = users.split()
1165
        users = image["metadata"]["values"].get("users", None)
1166
        userlist = users.split()
1151 1167

  
1152
    #     if "root" in userlist:
1153
    #         loginname = "root"
1154
    #     elif users == None:
1155
    #         loginname = self._connect_loginname(os)
1156
    #     else:
1157
    #         loginname = choice(userlist)
1168
        if "root" in userlist:
1169
            loginname = "root"
1170
        elif users == None:
1171
            loginname = self._connect_loginname(os)
1172
        else:
1173
            loginname = choice(userlist)
1158 1174

  
1159
    #     myPass = self.password['A']
1175
        myPass = self.password['A']
1160 1176

  
1161
    #     try:
1162
    #         ssh = paramiko.SSHClient()
1163
    #         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
1164
    #         ssh.connect(hostip, username=loginname, password=myPass)
1165
    #     except socket.error:
1166
    #         raise AssertionError
1177
        try:
1178
            ssh = paramiko.SSHClient()
1179
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
1180
            ssh.connect(hostip, username=loginname, password=myPass)
1181
        except socket.error:
1182
            raise AssertionError
1167 1183

  
1168
    #     cmd = "if ping -c 2 -w 3 10.0.0.6 >/dev/null; \
1169
    #            then echo \'True\'; fi;"
1170
    #     stdin, stdout, stderr = ssh.exec_command(cmd)
1171
    #     lines = stdout.readlines()
1184
        cmd = "if ping -c 2 -w 3 %s >/dev/null; \
1185
               then echo \'True\'; fi;" % self.priv_ip["B"]
1186
        stdin, stdout, stderr = ssh.exec_command(cmd)
1187
        lines = stdout.readlines()
1172 1188

  
1173
    #     exists = False
1189
        exists = False
1174 1190

  
1175
    #     if 'True\n' in lines:
1176
    #         exists = True
1191
        if 'True\n' in lines:
1192
            exists = True
1177 1193

  
1178
    #     self.assertTrue(exists)
1194
        self.assertTrue(exists)
1179 1195

  
1180 1196
    def test_004_disconnect_from_network(self):
1181 1197
        "Disconnecting server A and B from network"

Also available in: Unified diff