mirror of
https://github.com/vale981/ray
synced 2025-03-10 05:16:49 -04:00

Of all smoke test arguments, frequency is the only required one, so we should check for it. Additionally, not all fields should be able to be overwritten (e.g. legacy or name), so we enforce this as well.
84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
import os
|
|
import unittest
|
|
|
|
from ray_release.config import (
|
|
read_and_validate_release_test_collection,
|
|
Test,
|
|
validate_release_test_collection,
|
|
)
|
|
from ray_release.exception import ReleaseTestConfigError
|
|
|
|
|
|
class ConfigTest(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.test_collection_file = os.path.join(
|
|
os.path.dirname(__file__), "..", "..", "release_tests.yaml"
|
|
)
|
|
|
|
self.valid_test = Test(
|
|
**{
|
|
"name": "validation_test",
|
|
"group": "validation_group",
|
|
"working_dir": "validation_dir",
|
|
"legacy": {
|
|
"test_name": "validation_test",
|
|
"test_suite": "validation_suite",
|
|
},
|
|
"frequency": "nightly",
|
|
"team": "release",
|
|
"cluster": {
|
|
"cluster_env": "app_config.yaml",
|
|
"cluster_compute": "tpl_cpu_small.yaml",
|
|
"autosuspend_mins": 10,
|
|
},
|
|
"run": {
|
|
"timeout": 100,
|
|
"script": "python validate.py",
|
|
"wait_for_nodes": {"num_nodes": 2, "timeout": 100},
|
|
"type": "client",
|
|
},
|
|
"smoke_test": {"timeout": 20, "frequency": "multi"},
|
|
"alert": "default",
|
|
}
|
|
)
|
|
|
|
def testSchemaValidation(self):
|
|
test = self.valid_test.copy()
|
|
|
|
validate_release_test_collection([test])
|
|
|
|
# Remove some optional arguments
|
|
del test["alert"]
|
|
del test["run"]["wait_for_nodes"]
|
|
del test["cluster"]["autosuspend_mins"]
|
|
|
|
validate_release_test_collection([test])
|
|
|
|
# Add some faulty arguments
|
|
|
|
# Faulty frequency
|
|
invalid_test = test.copy()
|
|
invalid_test["frequency"] = "invalid"
|
|
with self.assertRaises(ReleaseTestConfigError):
|
|
validate_release_test_collection([invalid_test])
|
|
|
|
# Faulty job type
|
|
invalid_test = test.copy()
|
|
invalid_test["run"]["type"] = "invalid"
|
|
with self.assertRaises(ReleaseTestConfigError):
|
|
validate_release_test_collection([invalid_test])
|
|
|
|
# Faulty file manager type
|
|
invalid_test = test.copy()
|
|
invalid_test["run"]["file_manager"] = "invalid"
|
|
with self.assertRaises(ReleaseTestConfigError):
|
|
validate_release_test_collection([invalid_test])
|
|
|
|
# Faulty smoke test
|
|
invalid_test = test.copy()
|
|
del invalid_test["smoke_test"]["frequency"]
|
|
with self.assertRaises(ReleaseTestConfigError):
|
|
validate_release_test_collection([invalid_test])
|
|
|
|
def testLoadAndValidateTestCollectionFile(self):
|
|
read_and_validate_release_test_collection(self.test_collection_file)
|