2022-03-09 09:50:51 +00:00
|
|
|
import os
|
2022-03-18 11:34:05 +00:00
|
|
|
import sys
|
2022-03-09 09:50:51 +00:00
|
|
|
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",
|
|
|
|
},
|
2022-03-13 19:48:34 +00:00
|
|
|
"smoke_test": {"run": {"timeout": 20}, "frequency": "multi"},
|
2022-03-09 09:50:51 +00:00
|
|
|
"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])
|
|
|
|
|
2022-03-13 18:48:03 +00:00
|
|
|
# Faulty smoke test
|
|
|
|
invalid_test = test.copy()
|
|
|
|
del invalid_test["smoke_test"]["frequency"]
|
|
|
|
with self.assertRaises(ReleaseTestConfigError):
|
|
|
|
validate_release_test_collection([invalid_test])
|
|
|
|
|
2022-03-09 09:50:51 +00:00
|
|
|
def testLoadAndValidateTestCollectionFile(self):
|
|
|
|
read_and_validate_release_test_collection(self.test_collection_file)
|
2022-03-18 11:34:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
sys.exit(pytest.main(["-v", __file__]))
|