mirror of
https://github.com/vale981/ray
synced 2025-03-06 10:31:39 -05:00

Some commands in the Serve CLI use Ray client and some commands ping the Ray dashboard; however, all commands read `RAY_ADDRESS` to get the address. This change raises a nice exception if the user accidentally passes a Ray client address as the Ray Dashboard address.
95 lines
3.2 KiB
Python
95 lines
3.2 KiB
Python
import pytest
|
|
import sys
|
|
import os
|
|
from ray.dashboard.modules.dashboard_sdk import (
|
|
parse_runtime_env_args,
|
|
parse_cluster_info,
|
|
)
|
|
|
|
|
|
class TestParseRuntimeEnvArgs:
|
|
@pytest.mark.skipif(
|
|
sys.platform == "win32", reason="File path incorrect on Windows."
|
|
)
|
|
def test_runtime_env_valid(self):
|
|
config_file_name = os.path.join(
|
|
os.path.dirname(__file__), "test_config_files", "basic_runtime_env.yaml"
|
|
)
|
|
assert parse_runtime_env_args(runtime_env=config_file_name) == {
|
|
"py_modules": ["pm1", "pm2"],
|
|
"working_dir": "wd",
|
|
}
|
|
|
|
def test_runtime_env_json_valid(self):
|
|
runtime_env = '{"py_modules": ["pm1", "pm2"], "working_dir": "wd"}'
|
|
assert parse_runtime_env_args(runtime_env_json=runtime_env) == {
|
|
"py_modules": ["pm1", "pm2"],
|
|
"working_dir": "wd",
|
|
}
|
|
|
|
@pytest.mark.skipif(
|
|
sys.platform == "win32", reason="File path incorrect on Windows."
|
|
)
|
|
def test_runtime_env_and_json(self):
|
|
config_file_name = os.path.join(
|
|
os.path.dirname(__file__), "test_config_files", "basic_runtime_env.yaml"
|
|
)
|
|
runtime_env_json = '{"py_modules": ["pm1", "pm2"], "working_dir": "wd"}'
|
|
with pytest.raises(ValueError):
|
|
parse_runtime_env_args(
|
|
runtime_env=config_file_name, runtime_env_json=runtime_env_json
|
|
)
|
|
|
|
def test_working_dir_valid(self):
|
|
assert parse_runtime_env_args(working_dir="wd") == {"working_dir": "wd"}
|
|
|
|
@pytest.mark.skipif(
|
|
sys.platform == "win32", reason="File path incorrect on Windows."
|
|
)
|
|
def test_working_dir_override(self):
|
|
config_file_name = os.path.join(
|
|
os.path.dirname(__file__), "test_config_files", "basic_runtime_env.yaml"
|
|
)
|
|
assert parse_runtime_env_args(
|
|
runtime_env=config_file_name, working_dir="wd2"
|
|
) == {"py_modules": ["pm1", "pm2"], "working_dir": "wd2"}
|
|
|
|
runtime_env = '{"py_modules": ["pm1", "pm2"], "working_dir": "wd2"}'
|
|
assert parse_runtime_env_args(
|
|
runtime_env_json=runtime_env, working_dir="wd2"
|
|
) == {"py_modules": ["pm1", "pm2"], "working_dir": "wd2"}
|
|
|
|
def test_all_none(self):
|
|
assert parse_runtime_env_args() == {}
|
|
|
|
|
|
def test_get_job_submission_client_cluster_info():
|
|
# Test that the name for get_job_submission_client_cluster_info stays the
|
|
# same
|
|
|
|
from ray.dashboard.modules.dashboard_sdk import ( # noqa: F401
|
|
get_job_submission_client_cluster_info,
|
|
)
|
|
|
|
|
|
def test_parse_cluster_address_validation():
|
|
"""Test that parse_cluster_info validates address schemes."""
|
|
|
|
# Check that "auto" is rejected
|
|
with pytest.raises(ValueError):
|
|
parse_cluster_info("auto")
|
|
|
|
# Check that invalid schemes raise a ValueError
|
|
invalid_schemes = ["ray"]
|
|
for scheme in invalid_schemes:
|
|
with pytest.raises(ValueError):
|
|
parse_cluster_info(f"{scheme}://localhost:10001")
|
|
|
|
# Check that valid schemes are OK
|
|
valid_schemes = ["http", "https"]
|
|
for scheme in valid_schemes:
|
|
parse_cluster_info(f"{scheme}://localhost:10001")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(pytest.main(["-v", __file__]))
|