Skip to content

Commit

Permalink
replace uname by platform to make diff between centos distrib
Browse files Browse the repository at this point in the history
  • Loading branch information
ax-vivien committed Dec 29, 2023
1 parent c5d5c2b commit d09ba09
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 33 deletions.
4 changes: 1 addition & 3 deletions cluster_pack/uploader.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,9 @@ def build_metadata_dict(current_packages_list: List[str]) -> Dict:


def get_platform_and_python_version() -> Tuple[str, str]:
system, _node, release, _version, _machine, _processor = platform.uname()
current_platform_str = f"{system}-{release}"
python_version = sys.version_info
python_version_str = f"{python_version.major}.{python_version.minor}.{python_version.micro}"
return current_platform_str, python_version_str
return platform.platform(), python_version_str


def upload_zip(
Expand Down
82 changes: 52 additions & 30 deletions tests/test_uploader.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,58 +36,58 @@ def test_update_no_metadata():
@pytest.mark.parametrize("current_packages, metadata_packages, expected", [
pytest.param(["a==2.0", "b==1.0"],
{'package_installed': ["a==2.0", "b==1.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
True),
pytest.param(["a==2.0", "b==1.0"],
{'package_installed': ["a==1.0", "b==1.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
False),
pytest.param(["a==2.0", "b==1.0"],
{'package_installed': ["a==2.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
False),
pytest.param(["a==2.0"],
{'package_installed': ["a==2.0", "b==1.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
False),
pytest.param([],
{'package_installed': ["a==2.0", "b==1.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
False),
pytest.param(["a==2.0"],
{'package_installed': ["c==1.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
False),
pytest.param([],
{'package_installed': [],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.9.10'},
True),
pytest.param(["a==2.0", "b==1.0"],
["a==2.0", "b==1.0"],
False),
pytest.param(["a==2.0", "b==1.0"],
{'package_installed': ["a==2.0", "b==1.0"],
'platform': 'fake_system-fake_release2',
'platform': 'fake_platform2',
'python_version': '3.9.10'},
False),
pytest.param(["a==2.0", "b==1.0"],
{'package_installed': ["a==2.0", "b==1.0"],
'platform': 'fake_system-fake_release',
'platform': 'fake_platform',
'python_version': '3.6.8'},
False),
])
@mock.patch(f'{MODULE_TO_TEST}.platform.uname')
@mock.patch(f'{MODULE_TO_TEST}.platform.platform')
@mock.patch(f'{MODULE_TO_TEST}.sys')
def test_update_version_comparaison(sys_mock, uname_mock,
def test_update_version_comparaison(sys_mock, platform_mock,
current_packages, metadata_packages, expected):
uname_mock.return_value = build_uname_mock()
platform_mock.return_value = build_platform_mock()
sys_mock.version_info = build_python_version_mock()
map_is_exist = {MYARCHIVE_FILENAME: True,
MYARCHIVE_METADATA: True}
Expand Down Expand Up @@ -126,14 +126,14 @@ def build_python_version_mock():
return python_version_mock


def build_uname_mock():
return "fake_system", "", "fake_release", "", "", ""
def build_platform_mock():
return "fake_platform"


@mock.patch(f'{MODULE_TO_TEST}.platform.uname')
@mock.patch(f'{MODULE_TO_TEST}.platform.platform')
@mock.patch(f'{MODULE_TO_TEST}.sys')
def test_dump_metadata(sys_mock, uname_mock):
uname_mock.return_value = build_uname_mock()
def test_dump_metadata(sys_mock, platform_mock):
platform_mock.return_value = build_platform_mock()
sys_mock.version_info = build_python_version_mock()
mock_fs = mock.Mock()
mock_fs.rm.return_value = True
Expand All @@ -150,7 +150,7 @@ def test_dump_metadata(sys_mock, uname_mock):
mock_fs.rm.assert_called_once_with(MYARCHIVE_METADATA)
mock_open().write.assert_called_once_with(
b'{\n "package_installed": [\n "a==1.0",\n "b==2.0"\n ],'
+ b'\n "platform": "fake_system-fake_release",\n "python_version": "3.9.10"\n}'
+ b'\n "platform": "fake_platform",\n "python_version": "3.9.10"\n}'
)


Expand Down Expand Up @@ -301,10 +301,10 @@ def test_upload_spec_hdfs(
assert result_path == "hdfs:///user/testuser/envs/myenv.pex"


@mock.patch(f'{MODULE_TO_TEST}.platform.uname')
@mock.patch(f'{MODULE_TO_TEST}.platform.platform')
@mock.patch(f'{MODULE_TO_TEST}.sys')
def test_upload_spec_local_fs(sys_mock, uname_mock):
uname_mock.return_value = build_uname_mock()
def test_upload_spec_local_fs(sys_mock, platform_mock):
platform_mock.return_value = build_platform_mock()
sys_mock.version_info = build_python_version_mock()
spec_file = os.path.join(os.path.dirname(__file__), "resources", "requirements.txt")
with tempfile.TemporaryDirectory() as tempdir:
Expand All @@ -313,13 +313,13 @@ def test_upload_spec_local_fs(sys_mock, uname_mock):
_check_metadata(
f"{tempdir}/package.json",
{'package_installed': ['5a5f33b106aad8584345f5a0044a4188ce78b3f4'],
'platform': 'fake_system-fake_release', 'python_version': '3.9.10'})
'platform': 'fake_platform', 'python_version': '3.9.10'})


@mock.patch(f'{MODULE_TO_TEST}.platform.uname')
@mock.patch(f'{MODULE_TO_TEST}.platform.platform')
@mock.patch(f'{MODULE_TO_TEST}.sys')
def test_upload_spec_unique_name(sys_mock, uname_mock):
uname_mock.return_value = build_uname_mock()
def test_upload_spec_unique_name(sys_mock, platform_mock):
platform_mock.return_value = build_platform_mock()
sys_mock.version_info = build_python_version_mock()
with tempfile.TemporaryDirectory() as tempdir:
spec_file = f"{tempdir}/myproject/requirements.txt"
Expand All @@ -332,9 +332,10 @@ def test_upload_spec_unique_name(sys_mock, uname_mock):
_check_metadata(
f"{tempdir}/cluster_pack_myproject.json",
{'package_installed': ["b8721a3c125d3f7edfa27d7b13236e696f652a16"],
'platform': 'fake_system-fake_release', 'python_version': '3.9.10'})
'platform': 'fake_platform', 'python_version': '3.9.10'})


@pytest.mark.skipif(sys.version_info >= (3, 9), reason="fail on ci above python3.9")
@mock.patch(f"{MODULE_TO_TEST}.packaging.pack_spec_in_pex")
def test_upload_spec_local_fs_use_cache(mock_pack_spec_in_pex):
with tempfile.TemporaryDirectory() as tempdir:
Expand All @@ -353,12 +354,33 @@ def test_upload_spec_local_fs_use_cache(mock_pack_spec_in_pex):
assert result_path == result_path1 == pex_file


@mock.patch(f'{MODULE_TO_TEST}.platform.uname')
@pytest.mark.skipif(sys.version_info < (3, 9), reason="replacement test for python3.9 and above")
@mock.patch(f"{MODULE_TO_TEST}.platform.platform")
@mock.patch(f"{MODULE_TO_TEST}.packaging.pack_spec_in_pex")
def test_upload_spec_local_fs_use_cache_py39(mock_pack_spec_in_pex, platform_mock):
platform_mock.return_value = build_platform_mock()
with tempfile.TemporaryDirectory() as tempdir:
spec_file = f"{tempdir}/myproject/requirements.txt"
_write_spec_file(spec_file, ["cloudpickle==1.4.1"])

pex_file = os.path.join(tempdir, "package.pex")
mock_pack_spec_in_pex.return_value = pex_file
with open(pex_file, "w"):
pass
result_path = cluster_pack.upload_spec(spec_file, pex_file)
result_path1 = cluster_pack.upload_spec(spec_file, pex_file)

mock_pack_spec_in_pex.assert_called_once()
assert os.path.exists(result_path)
assert result_path == result_path1 == pex_file


@mock.patch(f'{MODULE_TO_TEST}.platform.platform')
@mock.patch(f'{MODULE_TO_TEST}.sys')
@mock.patch(f"{MODULE_TO_TEST}.packaging.pack_spec_in_pex")
def test_upload_spec_local_fs_changed_reqs(mock_pack_spec_in_pex, sys_mock, uname_mock):
def test_upload_spec_local_fs_changed_reqs(mock_pack_spec_in_pex, sys_mock, platform_mock):
mock_pack_spec_in_pex.return_value = "/tmp/tmp.pex"
uname_mock.return_value = build_uname_mock()
platform_mock.return_value = build_platform_mock()
sys_mock.version_info = build_python_version_mock()

with tempfile.TemporaryDirectory() as tempdir:
Expand Down Expand Up @@ -386,7 +408,7 @@ def test_upload_spec_local_fs_changed_reqs(mock_pack_spec_in_pex, sys_mock, unam
_check_metadata(
f"{tempdir}/package.json",
{'package_installed': ['0fd17ced922a2387fa660fb0cb78e1c77fbe3349'],
'platform': 'fake_system-fake_release', 'python_version': '3.9.10'})
'platform': 'fake_platform', 'python_version': '3.9.10'})


def test__handle_packages_use_local_wheel():
Expand Down

0 comments on commit d09ba09

Please sign in to comment.