mirror of
https://github.com/vale981/ray
synced 2025-03-05 10:01:43 -05:00

#22749 broke release unit tests by not providing a legacy key - that key should be optional because we will b dealing with non-legacy tests soon. Additionally, for some reason the unit tests pass on buildkite while they fail locally and in the release test pipeline. I'm investigating this now...
111 lines
3.1 KiB
Python
111 lines
3.1 KiB
Python
import json
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
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"
|
|
os.environ["MAX_RETRIES"] = "3"
|
|
|
|
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)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import pytest
|
|
|
|
sys.exit(pytest.main(["-v", __file__]))
|