2020-05-06 19:11:02 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
import _prep
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
import io
|
|
|
|
import pprint
|
|
|
|
import copy
|
|
|
|
|
|
|
|
from osmo_gsm_tester.core import config, log, schema
|
|
|
|
|
|
|
|
def val(which, test_schema):
|
|
|
|
try:
|
|
|
|
schema.validate(which, test_schema)
|
|
|
|
print('Validation: OK')
|
|
|
|
except ValueError:
|
|
|
|
log.log_exn()
|
|
|
|
print('Validation: Error')
|
|
|
|
|
|
|
|
def get_case_list(dir):
|
|
|
|
li = []
|
|
|
|
for f in os.listdir(dir):
|
|
|
|
if f.startswith('schema_case'):
|
|
|
|
li.append(f)
|
|
|
|
return sorted(li)
|
|
|
|
|
2020-05-21 13:40:57 +00:00
|
|
|
def test_validator(val):
|
|
|
|
return val in ('valid_value1', 'valid_value2')
|
|
|
|
|
|
|
|
schema.register_schema_types({'test_type': test_validator,
|
|
|
|
'another_type': lambda val: val == 'unique_val_ok'})
|
|
|
|
|
|
|
|
|
2020-05-06 19:11:02 +00:00
|
|
|
print('==== Testing dynamically generated schemas ====')
|
|
|
|
for f in get_case_list(_prep.script_dir):
|
|
|
|
print('%s:' % f)
|
|
|
|
example_config = os.path.join(_prep.script_dir, f)
|
|
|
|
cfg = config.read(example_config)
|
|
|
|
try:
|
|
|
|
schema_def = schema.config_to_schema_def(cfg['schema'], 'foobar.prefix.')
|
|
|
|
except AssertionError:
|
|
|
|
schema_def = None
|
|
|
|
log.log_exn()
|
|
|
|
print('config2schema: Error')
|
|
|
|
|
|
|
|
if schema_def is not None:
|
|
|
|
pprint.pprint(schema_def)
|
|
|
|
i = 0
|
|
|
|
for t in cfg['tests']:
|
|
|
|
print('validating tests[%d]' % i)
|
|
|
|
val(t, schema_def)
|
|
|
|
i += 1
|
|
|
|
print('----------------------')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# vim: expandtab tabstop=4 shiftwidth=4
|