try to work around the broken gethostbyaddr more thoroughly
[tests.git] / system / TestPlc.py
index 3510430..57543d1 100644 (file)
@@ -24,6 +24,8 @@ from PlcapiUrlScanner import PlcapiUrlScanner
 
 from TestBonding import TestBonding
 
+from gethostbyaddr import workaround_gethostbyaddr
+
 has_sfa_cache_filename="sfa-cache"
 
 # step methods must take (self) and return a boolean (options is a member of the class)
@@ -245,7 +247,7 @@ class TestPlc:
         # warning, we're now building 'sface' so let's be a bit more picky
         # full builds are expected to return with 0 here
         utils.header("Checking if build provides SFA package...")
-        retcod = utils.system("curl --silent {}/ | grep -q sfa-".format(rpms_url)) == 0
+        retcod = utils.system("curl --silent {}/ | grep -q sfa-4".format(rpms_url)) == 0
         encoded = 'yes' if retcod else 'no'
         with open(has_sfa_cache_filename,'w') as cache:
             cache.write(encoded)
@@ -359,7 +361,7 @@ class TestPlc:
         return self.dnf_check_installed(rpms)
 
     def pip3_install(self, package):
-        return self.run_in_guest("pip3 install {}".format(package)) == 0
+        return self.run_in_guest(f"pip3 install {package} || pip install {package}") == 0
 
     def auth_root(self):
         return {'Username'   : self.plc_spec['settings']['PLC_ROOT_USER'],
@@ -712,13 +714,12 @@ class TestPlc:
         script_options += " -f {}".format(self.options.fcdistro)
         script_options += " -r {}".format(repo_url)
         vserver_name = self.vservername
-        try:
-            vserver_hostname = socket.gethostbyaddr(self.vserverip)[0]
-            script_options += " -n {}".format(vserver_hostname)
-        except:
+        vserver_hostname = workaround_gethostbyaddr(self.vserverip)
+        if not vserver_hostname:
             print("Cannot reverse lookup {}".format(self.vserverip))
             print("This is considered fatal, as this might pollute the test results")
             return False
+        script_options += " -n {}".format(vserver_hostname)
         create_vserver="{build_dir}/{script} {script_options} {vserver_name}".format(**locals())
         return self.run_in_host(create_vserver) == 0
 
@@ -1522,13 +1523,13 @@ class TestPlc:
     def install_pip2(self):
 
         replacements = [
-            "https://acc.dl.osdn.jp/storage/g/u/un/unitedrpms/32/x86_64/python2-pip-19.1.1-7.fc32.noarch.rpm",
+            "http://mirror.onelab.eu/third-party/python2-pip-19.1.1-7.fc33.noarch.rpm",
         ]
 
         return (
                self.run_in_guest("pip2 --version") == 0
             or self.run_in_guest("dnf install python2-pip") == 0
-            or self.run_in_guest("dnf localinstall -y " + " ".join(replacements)))
+            or self.run_in_guest("dnf localinstall -y " + " ".join(replacements)) == 0)
 
 
     def install_m2crypto(self):
@@ -1540,21 +1541,17 @@ class TestPlc:
         # an install from sources and that's quite awkward
 
         replacements = [
-            "http://mirror.onelab.eu/fedora/releases/31/Everything/x86_64/os/Packages/p/python2-typing-3.6.2-5.fc31.noarch.rpm",
-            "http://mirror.onelab.eu/fedora/releases/31/Everything/x86_64/os/Packages/p/python2-m2crypto-0.35.2-2.fc31.x86_64.rpm",
+            # no longer on our mirror
+            "https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Everything/x86_64/os/Packages/p/python2-typing-3.6.2-5.fc31.noarch.rpm",
+            "https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Everything/x86_64/os/Packages/p/python2-m2crypto-0.35.2-2.fc31.x86_64.rpm",
         ]
 
         return (
-               self.run_in_guest('python2 -c "import M2Crypto"', backslash=True)
+               self.run_in_guest('python2 -c "import M2Crypto"', backslash=True) == 0
             or self.run_in_guest("pip2 install python2-m2crypto") == 0
             or self.run_in_guest("dnf localinstall -y " + " ".join(replacements)) == 0)
 
-        return attempt
-
-        # about pip2:
-        # we can try and use
-        # that qould then need to be mirrored
-        # so the logic goes like this
+        # about pip2: the logic goes like this
         # check for pip2 command
         # if not, try dnf install python2-pip
         # if still not, dnf localinstall the above
@@ -1572,6 +1569,7 @@ class TestPlc:
             'lxml',
             'python-dateutil',
             'psycopg2-binary',
+            'pyOpenSSL',
         ]
 
         return (