提交 867c9d60 编写于 作者: J Jamie McAtamney

Fixed gpversion and gpmigrator_util tests

This commit expands on 2ccdfbf2, as
the gpversion helper functions also needed to be modified to account
for the 4-digits-to-3-digits conversion; with 3 digits, the major
version is 5, not 5.0.

It also updates the gpmigrator_util tests to use 4.3 as the previous
version, instead of 4.2, and removes some references to customers in
the test version strings.
上级 0f137d5b
......@@ -19,7 +19,7 @@ if sys.version_info < (2, 5, 0) or sys.version_info >= (3, 0, 0):
sys.exit(1)
MAIN_VERSION = [5,0,99] # version number for main
MAIN_VERSION = [5,99,99] # version number for main
#============================================================
......@@ -48,7 +48,7 @@ class GpVersion:
'4.1',
'4.2',
'4.3',
'5.0'
'5'
]
#------------------------------------------------------------
......@@ -82,7 +82,7 @@ class GpVersion:
isinstance(v, list) or
isinstance(v, tuple)):
v = str(v)
# Convert a string into the version components.
#
# There are several version formats that we anticipate receiving:
......@@ -98,7 +98,6 @@ class GpVersion:
# "<VERSION> <BUILD>"
#
if isinstance(v, str):
# See if it matches one of the two the long formats
regex = r"\(Greenplum Database\)? ([^ ]+) build ([^ )]+)"
m = re.search(regex, v)
......@@ -138,7 +137,7 @@ class GpVersion:
#
# we ignore the usual build version and use the special
# vilue for "<BUILD>" instead.
regex = r"[0123456789.]+\d"
regex = r"[0123456789.]*\d"
m = re.search(regex, v)
if not m:
raise StandardError("unable to coerce to version")
......@@ -159,18 +158,21 @@ class GpVersion:
if not isinstance(v, list):
raise StandardError("Internal coding error")
# Convert a list into a real version
if len(v) < 2:
# As of GPDB 5, version strings moved from four digits (4.3.X.X) to three (5.X.X)
minlen = 2 if int(v[0]) <= 4 else 1
maxlen = 4 if int(v[0]) <= 4 else 3
if len(v) < minlen:
raise StandardError("Version too short")
if len(v) > 4:
elif len(v) > maxlen:
raise StandardError("Version too long")
if v[0] < 5 and len(v) < 4: # versions before 5 used 4 digits
elif len(v) < maxlen:
v.extend([99,99])
if v[0] > 4 and len(v) < 3:
v.extend([99])
v = map(int, v) # Convert to integers
self.version = v[:4] # If we extended beyond 4 cut it back down
if v[0] <= 4:
self.version = v[:4]
else:
self.version = v[:3]
if not self.build:
self.build = 'dev'
......@@ -201,10 +203,16 @@ class GpVersion:
'''
if self.version == MAIN_VERSION:
v = 'main'
elif self.version[2] == 99 and self.version[3] == 99:
v = '.'.join(map(str,self.version[:2]))
elif self.version[0] <= 4:
if self.version[2] == 99 and self.version[3] == 99:
v = '.'.join(map(str,self.version[:2]))
else:
v = '.'.join(map(str,self.version[:4]))
else:
v = '.'.join(map(str,self.version[:4]))
if self.version[1] == 99 and self.version[2] == 99:
v = '%d' % self.version[0]
else:
v = '.'.join(map(str,self.version[:3]))
if self.build:
return "%s build %s" % (v, self.build)
......@@ -228,9 +236,12 @@ class GpVersion:
#------------------------------------------------------------
def getVersionRelease(self):
'''
Returns the major (first 2 values) portion of the version.
Returns the major (first 2 values for <= 4.3, first value for >= 5) portion of the version.
'''
return '.'.join(map(str,self.version[:2]))
if self.version[0] <= 4:
return '.'.join(map(str,self.version[:2]))
else:
return '%d' % self.version[0]
#------------------------------------------------------------
def isVersionRelease(self, version):
......@@ -238,7 +249,7 @@ class GpVersion:
Returns true if the version matches a particular major release.
'''
other = GpVersion(version)
return self.version[0:2] == other.version[0:2]
return self.getVersionRelease() == other.getVersionRelease()
#------------------------------------------------------------
def isVersionCurrentRelease(self):
......
......@@ -11,19 +11,19 @@ from mock import patch, MagicMock, Mock
class IsSupportedVersionTestCase(unittest.TestCase):
def test_is_supported_version_major_version_upgrade(self):
v = GpVersion('4.2.0.0')
v = GpVersion('4.3.0.0')
self.assertTrue(is_supported_version(v))
def test_is_supported_minor_version_upgrade(self):
v = GpVersion('4.2.8.0')
v = GpVersion('4.3.8.0')
self.assertTrue(is_supported_version(v))
def test_is_supported_dev_build_version_upgrade(self):
v = GpVersion('4.2 build dev')
v = GpVersion('4.3 build dev')
self.assertTrue(is_supported_version(v))
def test_is_supported_version_hotfix_upgrade(self):
v = GpVersion('4.2.7.3MS7')
v = GpVersion('4.3.7.3EC7')
self.assertTrue(is_supported_version(v))
def test_is_supported_version_major_version_unsupported_upgrade(self):
......@@ -32,27 +32,27 @@ class IsSupportedVersionTestCase(unittest.TestCase):
is_supported_version(v)
def test_is_supported_version_awesome_build_upgrade(self):
v = GpVersion('4.2.3.4__AWESOME_BUILD__')
v = GpVersion('4.3.3.4__AWESOME_BUILD__')
self.assertTrue(is_supported_version(v))
def test_is_supported_version_space_in_build_upgrade(self):
v = GpVersion('4.2.3.4 MS7')
v = GpVersion('4.3.3.4 EC7')
self.assertTrue(is_supported_version(v))
def test_is_supported_version_major_version_downgrade(self):
v = GpVersion('4.2.0.0')
v = GpVersion('4.3.0.0')
self.assertTrue(is_supported_version(v, False))
def test_is_supported_minor_version_downgrade(self):
v = GpVersion('4.2.8.0')
v = GpVersion('4.3.8.0')
self.assertTrue(is_supported_version(v, False))
def test_is_supported_dev_build_version_downgrade(self):
v = GpVersion('4.2 build dev')
v = GpVersion('4.3 build dev')
self.assertTrue(is_supported_version(v, False))
def test_is_supported_version_hotfix_downgrade(self):
v = GpVersion('4.2.7.3MS7')
v = GpVersion('4.3.7.3EC7')
self.assertTrue(is_supported_version(v, False))
def test_is_supported_version_major_version_unsupported_downgrade(self):
......@@ -61,10 +61,10 @@ class IsSupportedVersionTestCase(unittest.TestCase):
is_supported_version(v, False)
def test_is_supported_version_awesome_build_downgrade(self):
v = GpVersion('4.2.3.4__AWESOME_BUILD__')
v = GpVersion('4.3.3.4__AWESOME_BUILD__')
self.assertTrue(is_supported_version(v, False))
def test_is_supported_version_space_in_build_downgrade(self):
v = GpVersion('4.2.3.4 MS7')
v = GpVersion('4.3.3.4 EC7')
self.assertTrue(is_supported_version(v))
......@@ -94,7 +94,7 @@ class GpVersionTestCase(unittest.TestCase):
self.assertEqual(v_1 << 1, v_2)
self.assertLess(v_1, v)
self.assertLess(v_2, v)
self.assertEqual(v.getVersionRelease(), "5.0")
self.assertEqual(v.getVersionRelease(), "5")
self.assertEqual(v_1.getVersionRelease(), "4.3")
self.assertEqual(v_2.getVersionRelease(), "4.2")
......@@ -102,7 +102,7 @@ class GpVersionTestCase(unittest.TestCase):
vLong = GpVersion("PostgreSQL 8.3.23 (Greenplum Database 5.0.0 build dev) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17) compiled on Feb 9 2017 23:06:31")
self.assertTrue(vLong.isVersionCurrentRelease() == True )
self.assertTrue(vLong.getVersionBuild() == 'dev')
self.assertTrue(vLong.getVersionRelease() == "5.0")
self.assertTrue(vLong.getVersionRelease() == "5")
self.assertTrue(vLong.isVersionRelease("5.0"))
self.assertTrue(vLong.isVersionRelease("3.2") == False)
self.assertTrue(vLong > "4.0.0")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册