Skip to content

Commit

Permalink
fix(check upgrade): update logic to compare server and client version (
Browse files Browse the repository at this point in the history
…#7238)

Co-authored-by: John Joyce <[email protected]>
  • Loading branch information
2 people authored and Hyejin Yoon committed Mar 3, 2023
1 parent 3efdd2e commit a79d3a0
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
9 changes: 7 additions & 2 deletions metadata-ingestion/src/datahub/upgrade/upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ def valid_server_version(version: Version) -> bool:

def is_client_server_compatible(client: VersionStats, server: VersionStats) -> int:
"""
-ve implies client is behind server
-ve implies server is behind client
0 implies client and server are aligned
+ve implies server is ahead of client
"""
Expand All @@ -251,7 +251,12 @@ def is_client_server_compatible(client: VersionStats, server: VersionStats) -> i
):
# we cannot evaluate compatibility, choose True as default
return 0
return server.version.micro - client.version.micro
if server.version.major != client.version.major:
return server.version.major - client.version.major
elif server.version.minor != client.version.minor:
return server.version.minor - client.version.minor
else:
return server.version.micro - client.version.micro


def maybe_print_upgrade_message( # noqa: C901
Expand Down
32 changes: 32 additions & 0 deletions metadata-ingestion/tests/unit/test_check_upgrade.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from packaging.version import Version

from datahub.upgrade.upgrade import VersionStats, is_client_server_compatible


def test_is_client_server_compatible():

# Client and Server are Compatible
assert compare_client_server_version_string("0.9.6", "0.9.6") == 0
assert compare_client_server_version_string("0.9.6.1", "0.9.6") == 0

# Server is behind Client
assert compare_client_server_version_string("0.9.6", "0.9.5") < 0
assert compare_client_server_version_string("0.9.6.1", "0.9.5") < 0
assert compare_client_server_version_string("0.9.5.1", "0.8.5") < 0

# Server is ahead of Client
assert compare_client_server_version_string("0.9.6", "0.9.7") > 0
assert compare_client_server_version_string("0.9.6.1", "0.9.7") > 0
assert compare_client_server_version_string("0.8.45.1", "0.9.7") > 0

# Pre-relase versions are ignored and compatibility is assumed
assert compare_client_server_version_string("0.9.6.1rc1", "0.9.6") == 0
assert compare_client_server_version_string("0.9.6.1rc1", "0.9.5") == 0
assert compare_client_server_version_string("0.9.6.1rc1", "0.9.7") == 0


def compare_client_server_version_string(client_ver_str, server_ver_str):
client_ver = VersionStats(version=Version(client_ver_str))
server_ver = VersionStats(version=Version(server_ver_str))

return is_client_server_compatible(client_ver, server_ver)

0 comments on commit a79d3a0

Please sign in to comment.