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

Fixing special cases (e.g. smoke tests, long running tests) in the release test package infrastructure. Prepare migration of Tune and XGBoost tests.
103 lines
3 KiB
Python
103 lines
3 KiB
Python
import json
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import tempfile
|
|
import unittest
|
|
|
|
from ray_release.result import ExitCode
|
|
|
|
|
|
class RunScriptTest(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.tempdir = tempfile.mkdtemp()
|
|
self.state_file = os.path.join(self.tempdir, "state.txt")
|
|
self.test_script = os.path.join(
|
|
os.path.dirname(__file__), "..", "..", "run_release_test.sh"
|
|
)
|
|
|
|
os.environ["NO_INSTALL"] = "1"
|
|
os.environ["NO_CLONE"] = "1"
|
|
os.environ["NO_ARTIFACTS"] = "1"
|
|
os.environ["RAY_TEST_SCRIPT"] = "ray_release/tests/_test_run_release_test_sh.py"
|
|
os.environ["OVERRIDE_SLEEP_TIME"] = "0"
|
|
|
|
def tearDown(self) -> None:
|
|
shutil.rmtree(self.tempdir)
|
|
|
|
def _read_state(self):
|
|
with open(self.state_file, "rt") as f:
|
|
return int(f.read())
|
|
|
|
def _run(self, *exits) -> int:
|
|
assert len(exits) == 3
|
|
|
|
if os.path.exists(self.state_file):
|
|
os.unlink(self.state_file)
|
|
|
|
try:
|
|
return subprocess.check_call(
|
|
f"{self.test_script} "
|
|
f"{self.state_file} "
|
|
f"{' '.join(str(e.value) for e in exits)}",
|
|
shell=True,
|
|
)
|
|
except subprocess.CalledProcessError as e:
|
|
return e.returncode
|
|
|
|
def testRepeat(self):
|
|
self.assertEquals(
|
|
self._run(ExitCode.SUCCESS, ExitCode.SUCCESS, ExitCode.SUCCESS),
|
|
ExitCode.SUCCESS.value,
|
|
)
|
|
self.assertEquals(self._read_state(), 1)
|
|
|
|
self.assertEquals(
|
|
self._run(ExitCode.RAY_WHEELS_TIMEOUT, ExitCode.SUCCESS, ExitCode.SUCCESS),
|
|
ExitCode.SUCCESS.value,
|
|
)
|
|
self.assertEquals(self._read_state(), 2)
|
|
|
|
self.assertEquals(
|
|
self._run(
|
|
ExitCode.RAY_WHEELS_TIMEOUT,
|
|
ExitCode.CLUSTER_ENV_BUILD_TIMEOUT,
|
|
ExitCode.SUCCESS,
|
|
),
|
|
ExitCode.SUCCESS.value,
|
|
)
|
|
self.assertEquals(self._read_state(), 3)
|
|
|
|
self.assertEquals(
|
|
self._run(
|
|
ExitCode.CLUSTER_STARTUP_TIMEOUT,
|
|
ExitCode.CLUSTER_WAIT_TIMEOUT,
|
|
ExitCode.RAY_WHEELS_TIMEOUT,
|
|
),
|
|
ExitCode.RAY_WHEELS_TIMEOUT.value,
|
|
)
|
|
self.assertEquals(self._read_state(), 3)
|
|
|
|
self.assertEquals(
|
|
self._run(
|
|
ExitCode.RAY_WHEELS_TIMEOUT, ExitCode.COMMAND_ALERT, ExitCode.SUCCESS
|
|
),
|
|
ExitCode.COMMAND_ALERT.value,
|
|
)
|
|
self.assertEquals(self._read_state(), 2)
|
|
|
|
def testParameters(self):
|
|
os.environ["RAY_TEST_SCRIPT"] = "ray_release/tests/_test_catch_args.py"
|
|
argv_file = tempfile.mktemp()
|
|
|
|
subprocess.check_call(
|
|
f"{self.test_script} " f"{argv_file} " f"--smoke-test",
|
|
shell=True,
|
|
)
|
|
|
|
with open(argv_file, "rt") as fp:
|
|
data = json.load(fp)
|
|
|
|
os.unlink(argv_file)
|
|
|
|
self.assertIn("--smoke-test", data)
|