def test_function(self): TestCase = namedtuple('TestCase', ['v1', 'v2']) greater_test_cases = [ TestCase('1.0.0-0', '2.0.0-0'), TestCase('1.0.0-0', '1.1.0-0'), TestCase('1.0.0-0', '1.0.1-0'), TestCase('1.0.0-0', '1.0.0-1'), TestCase('1.0.0', '1.0.0-1'), ] equal_test_case = TestCase('1.1.1-0', '1.1.1-0') less_test_cases = [ TestCase('2.0.0-0', '1.0.0-0'), TestCase('1.1.0-0', '1.0.0-0'), TestCase('1.0.1-0', '1.0.0-0'), TestCase('1.0.0-1', '1.0.0-0'), TestCase('1.0.0-1', '1.0.0'), ] for test_case in greater_test_cases: self.assertEqual( 1, magma_upgrader.compare_package_versions( test_case.v1, test_case.v2)) for test_case in less_test_cases: self.assertEqual( -1, magma_upgrader.compare_package_versions( test_case.v1, test_case.v2)) self.assertEqual( 0, magma_upgrader.compare_package_versions(equal_test_case.v1, equal_test_case.v2))
def test_bad_version_strings(self): test_cases = [ '1.0-0', '1-0', '1', 'a.b.c-d', ] for ver in test_cases: try: magma_upgrader.compare_package_versions('1.0.0-0', ver) self.fail('An exception should have been raised') except ValueError as e: self.assertEqual( 'Could not parse target package version {}'.format(ver), str(e), ) try: magma_upgrader.compare_package_versions(ver, '1.0.0-0') self.fail('An exception should have been raised') except ValueError as e: self.assertEqual( 'Could not parse current package version {}'.format(ver), str(e), )
async def get_upgrade_intent(self) -> UpgradeIntent: """ Returns the desired version for the gateway. We don't support downgrading, and so checks are made to update only if the target version is higher than the current version. """ tgt_version = self.service.mconfig.package_version curr_version = self.service.version if (tgt_version == "0.0.0-0" or compare_package_versions(curr_version, tgt_version) <= 0): tgt_version = curr_version return UpgradeIntent(stable=VersionT(tgt_version), canary=VersionT(""))