コード例 #1
0
    def _get_update_status(self):
        try:
            client_version = self._manager.get_version()
            latest_version = self.get_latest_compatible_version()
            # TO_REVIEW What the need for that
            self.get_server_min_version(client_version)
            server_version = self.min_server_version
            client_min_version = self.min_client_version
            server_min_version = self.min_server_version
            if client_version == latest_version:
                log.debug(
                    "Client version %s is up-to-date regarding server" " version %s.",
                    client_version,
                    self.min_server_version,
                )
                return (UPDATE_STATUS_UP_TO_DATE, None)

            if version_compare(client_version, client_min_version) < 0:
                log.info(
                    "Client version %s is lighter than %s, the minimum"
                    " version compatible with the server version %s."
                    " An upgrade to version %s is needed.",
                    client_version,
                    client_min_version,
                    server_version,
                    latest_version,
                )
                return (UPDATE_STATUS_UPGRADE_NEEDED, latest_version)

            if (
                version_compare(server_version, server_min_version) < 0
                or version_compare(latest_version, client_version) < 0
            ):
                log.info(
                    "Server version %s is lighter than %s, the minimum"
                    " version compatible with the client version %s."
                    " A downgrade to version %s is needed.",
                    server_version,
                    server_min_version,
                    client_version,
                    latest_version,
                )
                return (UPDATE_STATUS_DOWNGRADE_NEEDED, latest_version)

            log.info(
                "Client version %s is compatible with server version %s," " yet an update is available: version %s.",
                client_version,
                server_version,
                latest_version,
            )
            return (UPDATE_STATUS_UPDATE_AVAILABLE, latest_version)
        except UnavailableUpdateSite as e:
            log.error(e)
            return (UPDATE_STATUS_UNAVAILABLE_SITE, None)
        except MissingUpdateSiteInfo as e:
            log.warning(e)
            return (UPDATE_STATUS_MISSING_INFO, None)
        except MissingCompatibleVersion as e:
            log.warning(e)
            return (UPDATE_STATUS_MISSING_VERSION, None)
コード例 #2
0
    def _get_update_status(self):
        try:
            client_version = self._manager.get_version()
            latest_version = self.get_latest_compatible_version()
            # TO_REVIEW What the need for that
            self.get_server_min_version(client_version)
            server_version = self.min_server_version
            client_min_version = self.min_client_version
            server_min_version = self.min_server_version
            if (client_version == latest_version):
                log.debug(
                    "Client version %s is up-to-date regarding server"
                    " version %s.", client_version, self.min_server_version)
                return (UPDATE_STATUS_UP_TO_DATE, None)

            if version_compare(client_version, client_min_version) < 0:
                log.info(
                    "Client version %s is lighter than %s, the minimum"
                    " version compatible with the server version %s."
                    " An upgrade to version %s is needed.", client_version,
                    client_min_version, server_version, latest_version)
                return (UPDATE_STATUS_UPGRADE_NEEDED, latest_version)

            if (version_compare(server_version, server_min_version) < 0
                    or version_compare(latest_version, client_version) < 0):
                log.info(
                    "Server version %s is lighter than %s, the minimum"
                    " version compatible with the client version %s."
                    " A downgrade to version %s is needed.", server_version,
                    server_min_version, client_version, latest_version)
                return (UPDATE_STATUS_DOWNGRADE_NEEDED, latest_version)

            log.info(
                "Client version %s is compatible with server version %s,"
                " yet an update is available: version %s.", client_version,
                server_version, latest_version)
            return (UPDATE_STATUS_UPDATE_AVAILABLE, latest_version)
        except UnavailableUpdateSite as e:
            log.error(e)
            return (UPDATE_STATUS_UNAVAILABLE_SITE, None)
        except MissingUpdateSiteInfo as e:
            log.warning(e)
            return (UPDATE_STATUS_MISSING_INFO, None)
        except MissingCompatibleVersion as e:
            log.warning(e)
            return (UPDATE_STATUS_MISSING_VERSION, None)
コード例 #3
0
 def compute_common_versions(self):
     # Get the max minimal client version
     # Get the min minimal server version
     self.min_client_version = None
     self.min_server_version = None
     for engine in self._manager.get_engines().values():
         server_version = engine.get_server_version()
         if server_version is None:
             continue
         if self.min_server_version is None:
             self.min_server_version = server_version
         if version_compare(self.min_server_version, server_version) > 0:
             self.min_server_version = server_version
         client_version = self._get_client_min_version(server_version)
         if self.min_client_version is None:
             self.min_client_version = client_version
             continue
         # Get the maximal "minimum"
         if version_compare(self.min_client_version, client_version) < 0:
             self.min_client_version = client_version
コード例 #4
0
ファイル: updater.py プロジェクト: RavinderSharp/nuxeo-drive
 def compute_common_versions(self):
     # Get the max minimal client version
     # Get the min minimal server version
     self.min_client_version = None
     self.min_server_version = None
     for engine in self._manager.get_engines().values():
         server_version = engine.get_server_version()
         if server_version is None:
             continue
         if self.min_server_version is None:
             self.min_server_version = server_version
         if version_compare(self.min_server_version, server_version) > 0:
             self.min_server_version = server_version
         client_version = self._get_client_min_version(server_version)
         if self.min_client_version is None:
             self.min_client_version = client_version
             continue
         # Get the maximal "minimum"
         if version_compare(self.min_client_version, client_version) < 0:
             self.min_client_version = client_version
コード例 #5
0
ファイル: updater.py プロジェクト: ssdi-drive/nuxeo-drive
 def get_latest_compatible_version(self):
     self.compute_common_versions()
     latest_version = None
     for client_version in self.find_versions():
         if version_compare_client(self.min_client_version, client_version) < 1:
             server_min_version = self.get_server_min_version(
                                                 client_version)
             if version_compare(server_min_version, self.min_server_version) < 1:
                 latest_version = client_version
     if latest_version is None:
         raise MissingCompatibleVersion(
                 "No client version compatible with server version %s"
                 " available in update site '%s'" % (
                             self.min_server_version, self.update_site))
     return latest_version
コード例 #6
0
ファイル: updater.py プロジェクト: jresende/nuxeo-drive
 def get_latest_compatible_version(self):
     self.compute_common_versions()
     latest_version = None
     for client_version in self.find_versions():
         if version_compare_client(self.min_client_version, client_version) < 1:
             server_min_version = self.get_server_min_version(
                                                 client_version)
             if version_compare(server_min_version, self.min_server_version) < 1:
                 latest_version = client_version
     if latest_version is None:
         raise MissingCompatibleVersion(
                 "No client version compatible with server version %s"
                 " available in update site '%s'" % (
                             self.min_server_version, self.update_site))
     return latest_version
コード例 #7
0
ファイル: __init__.py プロジェクト: Bindupriya/nuxeo-drive
 def os_version_above(version):
     return version_compare(AbstractOSIntegration.get_os_version(), version) > 0
コード例 #8
0
ファイル: __init__.py プロジェクト: Bindupriya/nuxeo-drive
 def os_version_below(version):
     return version_compare(AbstractOSIntegration.get_os_version(), version) < 0
コード例 #9
0
ファイル: __init__.py プロジェクト: jresende/nuxeo-drive
 def os_version_above(version):
     return version_compare(AbstractOSIntegration.get_os_version(), version) > 0
コード例 #10
0
ファイル: __init__.py プロジェクト: jresende/nuxeo-drive
 def os_version_below(version):
     return version_compare(AbstractOSIntegration.get_os_version(), version) < 0
コード例 #11
0
    def test_version_compare(self):
        # Compare server versions
        # Releases
        self.assertEquals(version_compare('5.9.3', '5.9.3'), 0)
        self.assertEquals(version_compare('5.9.3', '5.9.2'), 1)
        self.assertEquals(version_compare('5.9.2', '5.9.3'), -1)
        self.assertEquals(version_compare('5.9.3', '5.8'), 1)
        self.assertEquals(version_compare('5.8', '5.6.0'), 1)
        self.assertEquals(version_compare('5.9.1', '5.9.0.1'), 1)
        self.assertEquals(version_compare('6.0', '5.9.3'), 1)
        self.assertEquals(version_compare('5.10', '5.1.2'), 1)

        # Date-based
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.9.4-I20140415_0120'), 0)
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.9.4-I20140410_0120'), 1)
        self.assertEquals(
            version_compare('5.9.4-I20140515_0120', '5.9.4-I20140415_0120'), 1)
        self.assertEquals(
            version_compare('5.9.4-I20150102_0120', '5.9.4-I20143112_0120'), 1)
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.9.3-I20140415_0120'), 1)

        # Releases and date-based
        self.assertEquals(version_compare('5.9.4-I20140415_0120', '5.9.3'), 1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120', '5.9.4'), -1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120', '5.9.5'), -1)

        self.assertEquals(version_compare('5.9.3', '5.9.4-I20140415_0120'), -1)
        self.assertEquals(version_compare('5.9.4', '5.9.4-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.9.5', '5.9.4-I20140415_0120'), 1)

        # Snapshots
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.4-SNAPSHOT'),
                          0)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.3-SNAPSHOT'),
                          1)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.8-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.9.3-SNAPSHOT', '5.9.4-SNAPSHOT'),
                          -1)
        self.assertEquals(version_compare('5.8-SNAPSHOT', '5.9.4-SNAPSHOT'),
                          -1)

        # Releases and snapshots
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.3'), 1)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.4'), -1)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.5'), -1)

        self.assertEquals(version_compare('5.9.3', '5.9.4-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.4', '5.9.4-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.9.5', '5.9.4-SNAPSHOT'), 1)

        # Date-based and snapshots
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.9.3-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.9.5-SNAPSHOT'), -1)
        self.assertEquals(
            version_compare('5.9.3-SNAPSHOT', '5.9.4-I20140415_0120'), -1)
        self.assertEquals(
            version_compare('5.9.5-SNAPSHOT', '5.9.4-I20140415_0120'), 1)
        # Can't decide, consider as equal
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.9.4-SNAPSHOT'), 0)
        self.assertEquals(
            version_compare('5.9.4-SNAPSHOT', '5.9.4-I20140415_0120'), 0)

        # Hotfixes
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-HF14'), 0)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-HF13'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-HF15'), -1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.6.0-HF35'), 1)
        self.assertEquals(version_compare('5.6.0-H35', '5.8.0-HF14'), -1)

        # Releases and hotfixes
        self.assertEquals(version_compare('5.8.0-HF14', '5.6'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.9.1'), -1)

        self.assertEquals(version_compare('5.6', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.9.1', '5.8.0-HF14'), 1)

        # Date-based and hotfixes
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.8.0-HF14'), 1)
        self.assertEquals(
            version_compare('5.8.1-I20140415_0120', '5.8.0-HF14'), 1)
        self.assertEquals(
            version_compare('5.8.0-I20140415_0120', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8-I20140415_0120', '5.8.0-HF14'),
                          -1)
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.10.0-HF01'), -1)

        self.assertEquals(
            version_compare('5.8.0-HF14', '5.9.4-I20140415_0120'), -1)
        self.assertEquals(
            version_compare('5.8.0-HF14', '5.8.1-I20140415_0120'), -1)
        self.assertEquals(
            version_compare('5.8.0-HF14', '5.8.0-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8-I20140415_0120'),
                          1)
        self.assertEquals(
            version_compare('5.10.0-HF01', '5.9.4-I20140415_0120'), 1)

        # Snaphsots and hotfixes
        self.assertEquals(version_compare('5.8.0-HF14', '5.7.1-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.9.1-SNAPSHOT'), -1)

        self.assertEquals(version_compare('5.7.1-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8.0-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.9.1-SNAPSHOT', '5.8.0-HF14'), 1)

        # Snapshot hotfixes
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-HF14-SNAPSHOT'), 0)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-HF13-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-HF15-SNAPSHOT'), -1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.6.0-HF35-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.6.0-H35-SNAPSHOT', '5.8.0-HF14-SNAPSHOT'), -1)

        # Releases and snapshot hotfixes
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.6'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.8'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.9.1'), -1)

        self.assertEquals(version_compare('5.6', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.8', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.1', '5.8.0-HF14-SNAPSHOT'), 1)

        # Date-based and snapshot hotfixes
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.8.0-HF14-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.8.0-I20140415_0120', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(
            version_compare('5.9.4-I20140415_0120', '5.10.0-HF01-SNAPSHOT'),
            -1)

        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.9.4-I20140415_0120'), -1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-I20140415_0120'), 1)
        self.assertEquals(
            version_compare('5.10.0-HF01-SNAPSHOT', '5.9.4-I20140415_0120'), 1)

        # Snaphsots and snapshot hotfixes
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.7.1-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.8-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-SNAPSHOT'), 1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.9.1-SNAPSHOT'), -1)

        self.assertEquals(
            version_compare('5.7.1-SNAPSHOT', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(
            version_compare('5.8-SNAPSHOT', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(
            version_compare('5.8.0-SNAPSHOT', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(
            version_compare('5.9.1-SNAPSHOT', '5.8.0-HF14-SNAPSHOT'), 1)

        # Hotfixes and snapshot hotfixes
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.6.0-HF35'),
                          1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-HF13'),
                          1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-HF14'),
                          -1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.8.0-HF15'),
                          -1)
        self.assertEquals(
            version_compare('5.8.0-HF14-SNAPSHOT', '5.10.0-HF01'), -1)

        # Compare client versions
        self.assertEquals(version_compare('0.1', '1.0'), -1)
        self.assertEquals(version_compare('1.0', '1.0'), 0)
        self.assertEquals(version_compare('1.3.0424', '1.3.0424'), 0)
        self.assertEquals(version_compare('1.3.0524', '1.3.0424'), 1)
        self.assertEquals(version_compare('1.4', '1.3.0524'), 1)
        self.assertEquals(version_compare('1.4.0622', '1.3.0524'), 1)
        self.assertEquals(version_compare('1.10', '1.1.2'), 1)
        self.assertEquals(version_compare('2.1.0528', '1.10'), 1)
        self.assertEquals(version_compare('2.0.0626', '2.0.806'), -1)
        self.assertEquals(version_compare('2.0.0805', '2.0.806'), -1)
        self.assertEquals(version_compare('2.0.0905', '2.0.806'), 1)
        self.assertEquals(version_compare('2.0.805', '2.0.1206'), -1)
コード例 #12
0
    def test_version_compare(self):
        # Compare server versions
        # Releases
        self.assertEqual(version_compare('5.9.3', '5.9.3'), 0)
        self.assertEqual(version_compare('5.9.3', '5.9.2'), 1)
        self.assertEqual(version_compare('5.9.2', '5.9.3'), -1)
        self.assertEqual(version_compare('5.9.3', '5.8'), 1)
        self.assertEqual(version_compare('5.8', '5.6.0'), 1)
        self.assertEqual(version_compare('5.9.1', '5.9.0.1'), 1)
        self.assertEqual(version_compare('6.0', '5.9.3'), 1)
        self.assertEqual(version_compare('5.10', '5.1.2'), 1)

        # Date-based
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.9.4-I20140415_0120'), 0)
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.9.4-I20140410_0120'), 1)
        self.assertEqual(version_compare('5.9.4-I20140515_0120',
                                         '5.9.4-I20140415_0120'), 1)
        self.assertEqual(version_compare('5.9.4-I20150102_0120',
                                         '5.9.4-I20143112_0120'), 1)
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.9.3-I20140415_0120'), 1)

        # Releases and date-based
        self.assertEqual(version_compare('5.9.4-I20140415_0120', '5.9.3'), 1)
        self.assertEqual(version_compare('5.9.4-I20140415_0120', '5.9.4'), -1)
        self.assertEqual(version_compare('5.9.4-I20140415_0120', '5.9.5'), -1)

        self.assertEqual(version_compare('5.9.3', '5.9.4-I20140415_0120'), -1)
        self.assertEqual(version_compare('5.9.4', '5.9.4-I20140415_0120'), 1)
        self.assertEqual(version_compare('5.9.5', '5.9.4-I20140415_0120'), 1)

        # Snapshots
        self.assertEqual(version_compare('5.9.4-SNAPSHOT', '5.9.4-SNAPSHOT'),
                         0)
        self.assertEqual(version_compare('5.9.4-SNAPSHOT', '5.9.3-SNAPSHOT'),
                         1)
        self.assertEqual(version_compare('5.9.4-SNAPSHOT', '5.8-SNAPSHOT'),
                         1)
        self.assertEqual(version_compare('5.9.3-SNAPSHOT', '5.9.4-SNAPSHOT'),
                         -1)
        self.assertEqual(version_compare('5.8-SNAPSHOT', '5.9.4-SNAPSHOT'),
                         -1)

        # Releases and snapshots
        self.assertEqual(version_compare('5.9.4-SNAPSHOT', '5.9.3'), 1)
        self.assertEqual(version_compare('5.9.4-SNAPSHOT', '5.9.4'), -1)
        self.assertEqual(version_compare('5.9.4-SNAPSHOT', '5.9.5'), -1)

        self.assertEqual(version_compare('5.9.3', '5.9.4-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.9.4', '5.9.4-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.9.5', '5.9.4-SNAPSHOT'), 1)

        # Date-based and snapshots
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.9.3-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.9.5-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.9.3-SNAPSHOT',
                                         '5.9.4-I20140415_0120'), -1)
        self.assertEqual(version_compare('5.9.5-SNAPSHOT',
                                         '5.9.4-I20140415_0120'), 1)
        # Can't decide, consider as equal
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.9.4-SNAPSHOT'), 0)
        self.assertEqual(version_compare('5.9.4-SNAPSHOT',
                                         '5.9.4-I20140415_0120'), 0)

        # Hotfixes
        self.assertEqual(version_compare('5.8.0-HF14', '5.8.0-HF14'), 0)
        self.assertEqual(version_compare('5.8.0-HF14', '5.8.0-HF13'), 1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.8.0-HF15'), -1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.6.0-HF35'), 1)
        self.assertEqual(version_compare('5.6.0-H35', '5.8.0-HF14'), -1)

        # Releases and hotfixes
        self.assertEqual(version_compare('5.8.0-HF14', '5.6'), 1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.8'), 1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.9.1'), -1)

        self.assertEqual(version_compare('5.6', '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.8', '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.9.1', '5.8.0-HF14'), 1)

        # Date-based and hotfixes
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.8.0-HF14'), 1)
        self.assertEqual(version_compare('5.8.1-I20140415_0120',
                                         '5.8.0-HF14'), 1)
        self.assertEqual(version_compare('5.8.0-I20140415_0120',
                                         '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.8-I20140415_0120',
                                         '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.10.0-HF01'), -1)

        self.assertEqual(version_compare('5.8.0-HF14',
                                         '5.9.4-I20140415_0120'), -1)
        self.assertEqual(version_compare('5.8.0-HF14',
                                         '5.8.1-I20140415_0120'), -1)
        self.assertEqual(version_compare('5.8.0-HF14',
                                         '5.8.0-I20140415_0120'), 1)
        self.assertEqual(version_compare('5.8.0-HF14',
                                         '5.8-I20140415_0120'), 1)
        self.assertEqual(version_compare('5.10.0-HF01',
                                         '5.9.4-I20140415_0120'), 1)

        # Snaphsots and hotfixes
        self.assertEqual(version_compare('5.8.0-HF14', '5.7.1-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.8.0-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.8-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14', '5.9.1-SNAPSHOT'), -1)

        self.assertEqual(version_compare('5.7.1-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.8.0-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.8-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.9.1-SNAPSHOT', '5.8.0-HF14'), 1)

        # Snapshot hotfixes
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-HF14-SNAPSHOT'), 0)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-HF13-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-HF15-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.6.0-HF35-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.6.0-H35-SNAPSHOT',
                                         '5.8.0-HF14-SNAPSHOT'), -1)

        # Releases and snapshot hotfixes
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT', '5.6'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT', '5.8'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT', '5.9.1'), -1)

        self.assertEqual(version_compare('5.6', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.8', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.9.1', '5.8.0-HF14-SNAPSHOT'), 1)

        # Date-based and snapshot hotfixes
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.8.0-HF14-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-I20140415_0120',
                                         '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.9.4-I20140415_0120',
                                         '5.10.0-HF01-SNAPSHOT'), -1)

        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.9.4-I20140415_0120'), -1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-I20140415_0120'), 1)
        self.assertEqual(version_compare('5.10.0-HF01-SNAPSHOT',
                                         '5.9.4-I20140415_0120'), 1)

        # Snaphsots and snapshot hotfixes
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.7.1-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-SNAPSHOT'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.9.1-SNAPSHOT'), -1)

        self.assertEqual(version_compare('5.7.1-SNAPSHOT',
                                         '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.8-SNAPSHOT',
                                         '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.8.0-SNAPSHOT',
                                         '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEqual(version_compare('5.9.1-SNAPSHOT',
                                         '5.8.0-HF14-SNAPSHOT'), 1)

        # Hotfixes and snapshot hotfixes
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.6.0-HF35'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-HF13'), 1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-HF14'), -1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.8.0-HF15'), -1)
        self.assertEqual(version_compare('5.8.0-HF14-SNAPSHOT',
                                         '5.10.0-HF01'), -1)

        # Compare client versions
        self.assertEqual(version_compare_client('0.1', '1.0'), -1)
        self.assertEqual(version_compare_client('1.0', '1.0'), 0)
        self.assertEqual(version_compare_client('1.3.0424', '1.3.0424'), 0)
        self.assertEqual(version_compare_client('1.3.0524', '1.3.0424'), 1)
        self.assertEqual(version_compare_client('1.4', '1.3.0524'), 1)
        self.assertEqual(version_compare_client('1.4.0622', '1.3.0524'), 1)
        self.assertEqual(version_compare_client('1.10', '1.1.2'), 1)
        self.assertEqual(version_compare_client('2.1.0528', '1.10'), 1)
        self.assertEqual(version_compare_client('2.0.0626', '2.0.806'), -1)
        self.assertEqual(version_compare_client('2.0.0805', '2.0.806'), -1)
        self.assertEqual(version_compare_client('2.0.0905', '2.0.806'), 1)
        self.assertEqual(version_compare_client('2.0.805', '2.0.1206'), -1)

        # Compare client versions using semantic versioning
        self.assertEqual(version_compare_client('2.0.805', '2.4.0'), -1)
        self.assertEqual(version_compare_client('2.1.1130', '2.4.0b1'), -1)
        self.assertEqual(version_compare_client('2.4.0b1', '2.4.0b2'), -1)
        self.assertEqual(version_compare_client('2.4.0b10', '2.4.0b1'), 1)
        self.assertEqual(version_compare_client('2.4.0b1', '2.4.0b1'), 0)
        self.assertEqual(version_compare_client('2.4.2b1', '2.4.2'), -1)

        # Compare to None
        self.assertEqual(version_compare('8.10-HF37', None), 1)
        self.assertEqual(version_compare(None, '8.10-HF37'), -1)
        self.assertEqual(version_compare(None, None), 0)
        self.assertEqual(version_compare_client('2.0.805', None), 1)
        self.assertEqual(version_compare_client(None, '2.0.805'), -1)
        self.assertEqual(version_compare_client(None, None), 0)
コード例 #13
0
    def test_version_compare(self):
        # Compare server versions
        # Releases
        self.assertEquals(version_compare('5.9.3', '5.9.3'), 0)
        self.assertEquals(version_compare('5.9.3', '5.9.2'), 1)
        self.assertEquals(version_compare('5.9.2', '5.9.3'), -1)
        self.assertEquals(version_compare('5.9.3', '5.8'), 1)
        self.assertEquals(version_compare('5.8', '5.6.0'), 1)
        self.assertEquals(version_compare('5.9.1', '5.9.0.1'), 1)
        self.assertEquals(version_compare('6.0', '5.9.3'), 1)
        self.assertEquals(version_compare('5.10', '5.1.2'), 1)

        # Date-based
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.9.4-I20140415_0120'), 0)
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.9.4-I20140410_0120'), 1)
        self.assertEquals(version_compare('5.9.4-I20140515_0120',
                                          '5.9.4-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.9.4-I20150102_0120',
                                          '5.9.4-I20143112_0120'), 1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.9.3-I20140415_0120'), 1)

        # Releases and date-based
        self.assertEquals(version_compare('5.9.4-I20140415_0120', '5.9.3'), 1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120', '5.9.4'), -1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120', '5.9.5'), -1)

        self.assertEquals(version_compare('5.9.3', '5.9.4-I20140415_0120'), -1)
        self.assertEquals(version_compare('5.9.4', '5.9.4-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.9.5', '5.9.4-I20140415_0120'), 1)

        # Snapshots
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.4-SNAPSHOT'),
                          0)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.3-SNAPSHOT'),
                          1)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.8-SNAPSHOT'),
                          1)
        self.assertEquals(version_compare('5.9.3-SNAPSHOT', '5.9.4-SNAPSHOT'),
                          -1)
        self.assertEquals(version_compare('5.8-SNAPSHOT', '5.9.4-SNAPSHOT'),
                          -1)

        # Releases and snapshots
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.3'), 1)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.4'), -1)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT', '5.9.5'), -1)

        self.assertEquals(version_compare('5.9.3', '5.9.4-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.4', '5.9.4-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.9.5', '5.9.4-SNAPSHOT'), 1)

        # Date-based and snapshots
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.9.3-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.9.5-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.3-SNAPSHOT',
                                          '5.9.4-I20140415_0120'), -1)
        self.assertEquals(version_compare('5.9.5-SNAPSHOT',
                                          '5.9.4-I20140415_0120'), 1)
        # Can't decide, consider as equal
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.9.4-SNAPSHOT'), 0)
        self.assertEquals(version_compare('5.9.4-SNAPSHOT',
                                          '5.9.4-I20140415_0120'), 0)

        # Hotfixes
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-HF14'), 0)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-HF13'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-HF15'), -1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.6.0-HF35'), 1)
        self.assertEquals(version_compare('5.6.0-H35', '5.8.0-HF14'), -1)

        # Releases and hotfixes
        self.assertEquals(version_compare('5.8.0-HF14', '5.6'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.9.1'), -1)

        self.assertEquals(version_compare('5.6', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.9.1', '5.8.0-HF14'), 1)

        # Date-based and hotfixes
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.8.0-HF14'), 1)
        self.assertEquals(version_compare('5.8.1-I20140415_0120',
                                          '5.8.0-HF14'), 1)
        self.assertEquals(version_compare('5.8.0-I20140415_0120',
                                          '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8-I20140415_0120',
                                          '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.10.0-HF01'), -1)

        self.assertEquals(version_compare('5.8.0-HF14',
                                          '5.9.4-I20140415_0120'), -1)
        self.assertEquals(version_compare('5.8.0-HF14',
                                          '5.8.1-I20140415_0120'), -1)
        self.assertEquals(version_compare('5.8.0-HF14',
                                          '5.8.0-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.8.0-HF14',
                                          '5.8-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.10.0-HF01',
                                          '5.9.4-I20140415_0120'), 1)

        # Snaphsots and hotfixes
        self.assertEquals(version_compare('5.8.0-HF14', '5.7.1-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8.0-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.8-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14', '5.9.1-SNAPSHOT'), -1)

        self.assertEquals(version_compare('5.7.1-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8.0-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8-SNAPSHOT', '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.9.1-SNAPSHOT', '5.8.0-HF14'), 1)

        # Snapshot hotfixes
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-HF14-SNAPSHOT'), 0)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-HF13-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-HF15-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.6.0-HF35-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.6.0-H35-SNAPSHOT',
                                          '5.8.0-HF14-SNAPSHOT'), -1)

        # Releases and snapshot hotfixes
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.6'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.8'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT', '5.9.1'), -1)

        self.assertEquals(version_compare('5.6', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.8', '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.1', '5.8.0-HF14-SNAPSHOT'), 1)

        # Date-based and snapshot hotfixes
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.8.0-HF14-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-I20140415_0120',
                                          '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.4-I20140415_0120',
                                          '5.10.0-HF01-SNAPSHOT'), -1)

        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.9.4-I20140415_0120'), -1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-I20140415_0120'), 1)
        self.assertEquals(version_compare('5.10.0-HF01-SNAPSHOT',
                                          '5.9.4-I20140415_0120'), 1)

        # Snaphsots and snapshot hotfixes
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.7.1-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-SNAPSHOT'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.9.1-SNAPSHOT'), -1)

        self.assertEquals(version_compare('5.7.1-SNAPSHOT',
                                          '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.8-SNAPSHOT',
                                          '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.8.0-SNAPSHOT',
                                          '5.8.0-HF14-SNAPSHOT'), -1)
        self.assertEquals(version_compare('5.9.1-SNAPSHOT',
                                          '5.8.0-HF14-SNAPSHOT'), 1)

        # Hotfixes and snapshot hotfixes
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.6.0-HF35'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-HF13'), 1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-HF14'), -1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.8.0-HF15'), -1)
        self.assertEquals(version_compare('5.8.0-HF14-SNAPSHOT',
                                          '5.10.0-HF01'), -1)

        # Compare client versions
        self.assertEquals(version_compare('0.1', '1.0'), -1)
        self.assertEquals(version_compare('1.0', '1.0'), 0)
        self.assertEquals(version_compare('1.3.0424', '1.3.0424'), 0)
        self.assertEquals(version_compare('1.3.0524', '1.3.0424'), 1)
        self.assertEquals(version_compare('1.4', '1.3.0524'), 1)
        self.assertEquals(version_compare('1.4.0622', '1.3.0524'), 1)
        self.assertEquals(version_compare('1.10', '1.1.2'), 1)
        self.assertEquals(version_compare('2.1.0528', '1.10'), 1)