Allow suites to dynamically register schemas so tests can receive parameters
Change-Id: Idbe99a35993d193cd97059feb980e61ff14c67ad
diff --git a/src/osmo_gsm_tester/core/suite.py b/src/osmo_gsm_tester/core/suite.py
index 1bd6a63..81aab3e 100644
--- a/src/osmo_gsm_tester/core/suite.py
+++ b/src/osmo_gsm_tester/core/suite.py
@@ -38,8 +38,11 @@
CONF_FILENAME = 'suite.conf'
def __init__(self, suite_dir):
+ self._suite_name = os.path.basename(suite_dir)
+ super().__init__(log.C_CNF, self._suite_name)
self.suite_dir = suite_dir
- super().__init__(log.C_CNF, os.path.basename(self.suite_dir))
+ self.conf = None
+ self._schema = None
self.read_conf()
def read_conf(self):
@@ -47,8 +50,12 @@
if not os.path.isdir(self.suite_dir):
raise RuntimeError('No such directory: %r' % self.suite_dir)
self.conf = config.read(os.path.join(self.suite_dir,
- SuiteDefinition.CONF_FILENAME),
- schema.get_all_schema())
+ SuiteDefinition.CONF_FILENAME))
+ # Drop schema part since it's dynamically defining content, makes no sense to validate it.
+ self._schema = self.conf.pop('schema', {})
+ sdef = schema.config_to_schema_def(self._schema, "%s." % self._suite_name)
+ schema.register_config_schema('suite', sdef)
+ schema.validate(self.conf, schema.get_all_schema())
self.load_test_basenames()
def load_test_basenames(self):
@@ -58,6 +65,7 @@
continue
self.test_basenames.append(basename)
+
class SuiteRun(log.Origin):
UNKNOWN = 'UNKNOWN'
PASS = 'PASS'
@@ -79,6 +87,10 @@
self.status = SuiteRun.UNKNOWN
self.load_tests()
+ def suite_name(self):
+ 'Return name of suite without scenarios'
+ return self.definition.name()
+
def trial(self):
return self._trial
@@ -130,6 +142,9 @@
self._config = self.combined('config', False)
return self._config
+ def config_suite_specific(self):
+ return self.config().get('suite', {}).get(self.suite_name(), {})
+
def resource_pool(self):
return self.resources_pool