| #!/usr/bin/env python3 |
| |
| import _prep |
| |
| import sys |
| import os |
| import io |
| import pprint |
| import copy |
| |
| from osmo_gsm_tester import config, log, schema |
| |
| example_config_file = 'test.cfg' |
| example_config = os.path.join(_prep.script_dir, 'config_test', example_config_file) |
| cfg = config.read(example_config) |
| |
| pprint.pprint(cfg) |
| |
| test_schema = { |
| 'modems[].dbus_path': schema.STR, |
| 'modems[].msisdn': schema.STR, |
| 'modems[].imsi': schema.IMSI, |
| 'modems[].ki': schema.STR, |
| 'bts[].name' : schema.STR, |
| 'bts[].type' : schema.STR, |
| 'bts[].addr' : schema.STR, |
| 'bts[].trx[].timeslots[]' : schema.STR, |
| 'bts[].trx[].band' : schema.BAND, |
| 'a_dict.foo' : schema.INT, |
| 'addr[]' : schema.IPV4, |
| 'hwaddr[]' : schema.HWADDR, |
| 'imsi[]' : schema.IMSI, |
| 'ki[]' : schema.KI, |
| } |
| |
| def val(which): |
| try: |
| schema.validate(which, test_schema) |
| print('Validation: OK') |
| except ValueError: |
| log.log_exn() |
| print('Validation: Error') |
| |
| print('- expect validation success:') |
| val(cfg) |
| |
| print('- unknown item:') |
| c = copy.deepcopy(cfg) |
| c['bts'][0]['unknown_item'] = 'no' |
| val(c) |
| |
| print('- wrong type modems[].imsi:') |
| c = copy.deepcopy(cfg) |
| c['modems'][0]['imsi'] = {'no':'no'} |
| val(c) |
| |
| print('- invalid key with space:') |
| c = copy.deepcopy(cfg) |
| c['modems'][0]['imsi '] = '12345' |
| val(c) |
| |
| print('- list instead of dict:') |
| c = copy.deepcopy(cfg) |
| c['a_dict'] = [ 1, 2, 3 ] |
| val(c) |
| |
| print('- unknown band:') |
| c = copy.deepcopy(cfg) |
| c['bts'][0]['trx'][0]['band'] = 'what' |
| val(c) |
| |
| print('- invalid v4 addrs:') |
| c = copy.deepcopy(cfg) |
| c['addr'][3] = '1.2.3' |
| val(c) |
| c['addr'][3] = '1.2.3 .4' |
| val(c) |
| c['addr'][3] = '91.2.3' |
| val(c) |
| c['addr'][3] = 'go away' |
| val(c) |
| c['addr'][3] = '' |
| val(c) |
| c['addr'][3] = None |
| val(c) |
| |
| print('- invalid hw addrs:') |
| c = copy.deepcopy(cfg) |
| c['hwaddr'][3] = '1.2.3' |
| val(c) |
| c['hwaddr'][3] = '0b:0c:0d:0e:0f:0g' |
| val(c) |
| c['hwaddr'][3] = '0b:0c:0d:0e : 0f:0f' |
| val(c) |
| c['hwaddr'][3] = 'go away' |
| val(c) |
| c['hwaddr'][3] = '' |
| val(c) |
| c['hwaddr'][3] = None |
| val(c) |
| |
| print('- invalid imsis:') |
| c = copy.deepcopy(cfg) |
| c['imsi'][2] = '99999999x9' |
| val(c) |
| c['imsi'][2] = '123 456 789 123' |
| val(c) |
| c['imsi'][2] = 'go away' |
| val(c) |
| c['imsi'][2] = '' |
| val(c) |
| c['imsi'][2] = None |
| val(c) |
| |
| # vim: expandtab tabstop=4 shiftwidth=4 |