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)
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)
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
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
def os_version_above(version): return version_compare(AbstractOSIntegration.get_os_version(), version) > 0
def os_version_below(version): return version_compare(AbstractOSIntegration.get_os_version(), version) < 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)
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)
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)