blob: 9dc967f35fd0146e1fc23f4f6ca8a86029791af9 [file] [log] [blame]
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +02001#!/usr/bin/env python3
2
3import _prep
4
5import sys
6import os
7
Pau Espin Pedrole8bbcbf2020-04-10 19:51:31 +02008from osmo_gsm_tester.core import template, log
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +02009
10log.set_level(log.C_CNF, log.L_DBG)
11
12print('- Testing: fill a config file with values')
13
14mock_timeslot_list=(
15 { 'phys_chan_config': 'val_phys_chan_config_0' },
16 { 'phys_chan_config': 'val_phys_chan_config_1' },
17 { 'phys_chan_config': 'val_phys_chan_config_2' },
18 { 'phys_chan_config': 'val_phys_chan_config_3' },
19 )
20
21mock_bts = {
Neels Hofmeyr2694a9d2017-04-27 19:48:09 +020022 'osmobsc_bts_type': 'val_type',
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020023 'band': 'val_band',
24 'location_area_code': 'val_bts.location_area_code',
Pau Espin Pedrol8a3a7b52017-11-28 15:50:02 +010025 'routing_area_code': 'val_bts.routing_area_code',
Pau Espin Pedrol4ccce7c2017-11-07 11:13:20 +010026 'cell_identity': 'val_bts.cell_identity',
Pau Espin Pedrol8a3a7b52017-11-28 15:50:02 +010027 'bvci': 'val_bts.bvci',
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020028 'base_station_id_code': 'val_bts.base_station_id_code',
Neels Hofmeyr3531a192017-03-28 14:30:28 +020029 'ipa_unit_id': 'val_bts.unit_id',
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020030 'stream_id': 'val_bts.stream_id',
Pau Espin Pedrolce35d912017-11-23 11:01:24 +010031 'sgsn': (dict(ip_address=dict(addr='val_bts.sgsn_ip_addr'))),
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020032 'trx_list': (
33 dict(arfcn='val_trx_arfcn_trx0',
Pau Espin Pedrolb26f32a2017-09-14 13:52:28 +020034 nominal_power='val_trx_nominal_power_trx0',
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020035 max_power_red='val_trx_max_power_red_trx0',
36 timeslot_list=mock_timeslot_list),
37 dict(arfcn='val_trx_arfcn_trx1',
Pau Espin Pedrolb26f32a2017-09-14 13:52:28 +020038 nominal_power='val_trx_nominal_power_trx1',
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020039 max_power_red='val_trx_max_power_red_trx1',
40 timeslot_list=mock_timeslot_list),
41 )
42}
43
Pau Espin Pedrol2d16f6f2017-05-30 15:33:57 +020044mock_esme = {
45 'system_id': 'val_system_id',
46 'password': 'val_password'
47}
48
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020049def clone_mod(d, val_ext):
50 c = dict(d)
51 for name in c.keys():
52 if isinstance(c[name], str):
53 c[name] = c[name] + val_ext
54 elif isinstance(c[name], dict):
55 c[name] = clone_mod(c[name], val_ext)
56 return c
57
58mock_bts0 = clone_mod(mock_bts, '_bts0')
59mock_bts1 = clone_mod(mock_bts, '_bts1')
60
Pau Espin Pedrol2d16f6f2017-05-30 15:33:57 +020061mock_esme0 = clone_mod(mock_esme, '_esme0')
62mock_esme1 = clone_mod(mock_esme, '_esme1')
63mock_esme1['password'] = ''
64
Neels Hofmeyr3531a192017-03-28 14:30:28 +020065vals = dict(nitb=dict(
66 net=dict(
67 mcc='val_mcc',
68 mnc='val_mnc',
69 short_name='val_short_name',
70 long_name='val_long_name',
71 auth_policy='val_auth_policy',
72 encryption='val_encryption',
73 bts_list=(mock_bts0, mock_bts1)
74 ),
Neels Hofmeyr4f59ba62017-05-22 20:04:05 +020075 ip_address=dict(addr='val_ip_address'),
76 ),
Pau Espin Pedrol2d16f6f2017-05-30 15:33:57 +020077 smsc=dict(
78 policy='val_smsc_policy',
79 esme_list=(mock_esme0, mock_esme1)
80 ),
Neels Hofmeyr3531a192017-03-28 14:30:28 +020081 )
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020082
83print(template.render('osmo-nitb.cfg', vals))
84
85print('- Testing: expect to fail on invalid templates dir')
86try:
87 template.set_templates_dir('non-existing dir')
88 sys.stderr.write('Error: setting non-existing templates dir should raise RuntimeError\n')
89 assert(False)
90except RuntimeError:
91 # not logging exception to omit non-constant path name from expected output
Neels Hofmeyr112da032020-12-04 18:03:22 +010092 print('success: setting non-existing templates dir raised RuntimeError')
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +020093 pass
94
Pau Espin Pedrol4ddcdaf2020-06-04 17:23:23 +020095mytemplatedir = os.path.join(os.path.dirname(__file__), 'mytemplatedir')
96template.set_templates_dir(mytemplatedir, template.default_templates_dir())
97print('- Testing: template directory overlay (still can find default one?)')
98print(template.render('osmo-nitb.cfg', vals))
99print('- Testing: template directory overlay (present in both dirs)')
100print(template.render('osmo-bsc.cfg', dict(foo=dict(bar=dict(works='yes')))))
101print('- Testing: template directory overlay (present only on overlay dir)')
102print(template.render('mytemplate.cfg', dict(one=dict(two=dict(works='yes')))))
103
Neels Hofmeyrdae3d3c2017-03-28 12:16:58 +0200104# vim: expandtab tabstop=4 shiftwidth=4