selftest: template: Test existing overlay dir features
Change-Id: Iff1a4dafcbf2193e95b1fb6e5a6712f1bcdd6309
This commit is contained in:
parent
315ba57651
commit
4ddcdaf62c
|
@ -0,0 +1 @@
|
||||||
|
test-overlay-works-fine-only-available ${one.two.works}
|
|
@ -0,0 +1 @@
|
||||||
|
test-overlay-works-fine ${foo.bar.works}
|
|
@ -1,82 +0,0 @@
|
||||||
!
|
|
||||||
! OpenBSC configuration saved from vty
|
|
||||||
!
|
|
||||||
password foo
|
|
||||||
!
|
|
||||||
log stderr
|
|
||||||
logging filter all 1
|
|
||||||
logging color 0
|
|
||||||
logging print category 0
|
|
||||||
logging print extended-timestamp 1
|
|
||||||
logging level set-all debug
|
|
||||||
!
|
|
||||||
line vty
|
|
||||||
no login
|
|
||||||
bind ${vty_bind_ip}
|
|
||||||
!
|
|
||||||
e1_input
|
|
||||||
e1_line 0 driver ipa
|
|
||||||
ipa bind ${abis_bind_ip}
|
|
||||||
network
|
|
||||||
network country code ${mcc}
|
|
||||||
mobile network code ${mnc}
|
|
||||||
short name ${net_name_short}
|
|
||||||
long name ${net_name_long}
|
|
||||||
auth policy ${net_auth_policy}
|
|
||||||
location updating reject cause 13
|
|
||||||
encryption ${encryption}
|
|
||||||
neci 1
|
|
||||||
rrlp mode none
|
|
||||||
mm info 1
|
|
||||||
handover 0
|
|
||||||
handover window rxlev averaging 10
|
|
||||||
handover window rxqual averaging 1
|
|
||||||
handover window rxlev neighbor averaging 10
|
|
||||||
handover power budget interval 6
|
|
||||||
handover power budget hysteresis 3
|
|
||||||
handover maximum distance 9999
|
|
||||||
smpp
|
|
||||||
local-tcp-ip ${nitb.ip_address.addr} 2775
|
|
||||||
system-id test-nitb
|
|
||||||
policy ${smsc.policy}
|
|
||||||
%for esme in esme_list:
|
|
||||||
esme ${esme.system_id}
|
|
||||||
% if esme.password == '':
|
|
||||||
no password
|
|
||||||
% else:
|
|
||||||
password ${esme.password}
|
|
||||||
% endif
|
|
||||||
default-route
|
|
||||||
%endfor
|
|
||||||
ctrl
|
|
||||||
bind ${ctrl_bind_ip}
|
|
||||||
%for bts in bts_list:
|
|
||||||
bts ${loop.index}
|
|
||||||
type ${bts.type}
|
|
||||||
band ${bts.band}
|
|
||||||
cell_identity ${bts.cell_identity}
|
|
||||||
location_area_code ${bts.location_area_code}
|
|
||||||
training_sequence_code 7
|
|
||||||
base_station_id_code ${bts.base_station_id_code}
|
|
||||||
ms max power 15
|
|
||||||
cell reselection hysteresis 4
|
|
||||||
rxlev access min 0
|
|
||||||
channel allocator ascending
|
|
||||||
rach tx integer 9
|
|
||||||
rach max transmission 7
|
|
||||||
ip.access unit_id ${bts.unit_id} 0
|
|
||||||
oml ip.access stream_id ${bts.stream_id} line 0
|
|
||||||
gprs mode none
|
|
||||||
% for trx in bts.trx_list:
|
|
||||||
trx ${loop.index}
|
|
||||||
rf_locked 0
|
|
||||||
arfcn ${trx.arfcn}
|
|
||||||
nominal power 23
|
|
||||||
max_power_red ${trx.max_power_red}
|
|
||||||
rsl e1 tei 0
|
|
||||||
% for ts in trx.timeslot_list:
|
|
||||||
timeslot ${loop.index}
|
|
||||||
phys_chan_config ${ts.phys_chan_config}
|
|
||||||
% endfor
|
|
||||||
% endfor
|
|
||||||
%endfor
|
|
|
@ -191,3 +191,201 @@ ctrl
|
||||||
- Testing: expect to fail on invalid templates dir
|
- Testing: expect to fail on invalid templates dir
|
||||||
sucess: setting non-existing templates dir raised RuntimeError
|
sucess: setting non-existing templates dir raised RuntimeError
|
||||||
|
|
||||||
|
- Testing: template directory overlay (still can find default one?)
|
||||||
|
cnf Templates: DBG: rendering osmo-nitb.cfg.tmpl
|
||||||
|
! Configuration rendered by osmo-gsm-tester
|
||||||
|
password foo
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging filter all 1
|
||||||
|
logging color 1
|
||||||
|
logging print category 1
|
||||||
|
logging print extended-timestamp 1
|
||||||
|
logging level set-all debug
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
bind val_ip_address
|
||||||
|
!
|
||||||
|
e1_input
|
||||||
|
e1_line 0 driver ipa
|
||||||
|
ipa bind val_ip_address
|
||||||
|
network
|
||||||
|
network country code val_mcc
|
||||||
|
mobile network code val_mnc
|
||||||
|
short name val_short_name
|
||||||
|
long name val_long_name
|
||||||
|
auth policy val_auth_policy
|
||||||
|
location updating reject cause 13
|
||||||
|
encryption val_encryption
|
||||||
|
neci 1
|
||||||
|
rrlp mode none
|
||||||
|
mm info 1
|
||||||
|
handover 0
|
||||||
|
handover window rxlev averaging 10
|
||||||
|
handover window rxqual averaging 1
|
||||||
|
handover window rxlev neighbor averaging 10
|
||||||
|
handover power budget interval 6
|
||||||
|
handover power budget hysteresis 3
|
||||||
|
handover maximum distance 9999
|
||||||
|
bts 0
|
||||||
|
type val_type_bts0
|
||||||
|
band val_band_bts0
|
||||||
|
cell_identity val_bts.cell_identity_bts0
|
||||||
|
location_area_code val_bts.location_area_code_bts0
|
||||||
|
training_sequence_code 7
|
||||||
|
base_station_id_code val_bts.base_station_id_code_bts0
|
||||||
|
ms max power 33
|
||||||
|
cell reselection hysteresis 4
|
||||||
|
rxlev access min 0
|
||||||
|
channel allocator ascending
|
||||||
|
rach tx integer 9
|
||||||
|
rach max transmission 7
|
||||||
|
ip.access unit_id val_bts.unit_id_bts0 0
|
||||||
|
oml ip.access stream_id val_bts.stream_id_bts0 line 0
|
||||||
|
gprs mode gprs
|
||||||
|
gprs routing area val_bts.routing_area_code_bts0
|
||||||
|
gprs network-control-order nc1
|
||||||
|
gprs cell bvci val_bts.bvci_bts0
|
||||||
|
gprs cell timer blocking-timer 3
|
||||||
|
gprs cell timer blocking-retries 3
|
||||||
|
gprs cell timer unblocking-retries 3
|
||||||
|
gprs cell timer reset-timer 3
|
||||||
|
gprs cell timer reset-retries 3
|
||||||
|
gprs cell timer suspend-timer 10
|
||||||
|
gprs cell timer suspend-retries 3
|
||||||
|
gprs cell timer resume-timer 10
|
||||||
|
gprs cell timer resume-retries 3
|
||||||
|
gprs cell timer capability-update-timer 10
|
||||||
|
gprs cell timer capability-update-retries 3
|
||||||
|
gprs nsei val_bts.bvci_bts0
|
||||||
|
gprs ns timer tns-block 3
|
||||||
|
gprs ns timer tns-block-retries 3
|
||||||
|
gprs ns timer tns-reset 3
|
||||||
|
gprs ns timer tns-reset-retries 3
|
||||||
|
gprs ns timer tns-test 30
|
||||||
|
gprs ns timer tns-alive 3
|
||||||
|
gprs ns timer tns-alive-retries 10
|
||||||
|
gprs nsvc 0 nsvci val_bts.bvci_bts0
|
||||||
|
gprs nsvc 0 local udp port 23020
|
||||||
|
gprs nsvc 0 remote udp port 23000
|
||||||
|
gprs nsvc 0 remote ip val_bts.sgsn_ip_addr_bts0
|
||||||
|
trx 0
|
||||||
|
rf_locked 0
|
||||||
|
arfcn val_trx_arfcn_trx0
|
||||||
|
nominal power val_trx_nominal_power_trx0
|
||||||
|
max_power_red val_trx_max_power_red_trx0
|
||||||
|
rsl e1 tei 0
|
||||||
|
timeslot 0
|
||||||
|
phys_chan_config val_phys_chan_config_0
|
||||||
|
timeslot 1
|
||||||
|
phys_chan_config val_phys_chan_config_1
|
||||||
|
timeslot 2
|
||||||
|
phys_chan_config val_phys_chan_config_2
|
||||||
|
timeslot 3
|
||||||
|
phys_chan_config val_phys_chan_config_3
|
||||||
|
trx 1
|
||||||
|
rf_locked 0
|
||||||
|
arfcn val_trx_arfcn_trx1
|
||||||
|
nominal power val_trx_nominal_power_trx1
|
||||||
|
max_power_red val_trx_max_power_red_trx1
|
||||||
|
rsl e1 tei 0
|
||||||
|
timeslot 0
|
||||||
|
phys_chan_config val_phys_chan_config_0
|
||||||
|
timeslot 1
|
||||||
|
phys_chan_config val_phys_chan_config_1
|
||||||
|
timeslot 2
|
||||||
|
phys_chan_config val_phys_chan_config_2
|
||||||
|
timeslot 3
|
||||||
|
phys_chan_config val_phys_chan_config_3
|
||||||
|
bts 1
|
||||||
|
type val_type_bts1
|
||||||
|
band val_band_bts1
|
||||||
|
cell_identity val_bts.cell_identity_bts1
|
||||||
|
location_area_code val_bts.location_area_code_bts1
|
||||||
|
training_sequence_code 7
|
||||||
|
base_station_id_code val_bts.base_station_id_code_bts1
|
||||||
|
ms max power 33
|
||||||
|
cell reselection hysteresis 4
|
||||||
|
rxlev access min 0
|
||||||
|
channel allocator ascending
|
||||||
|
rach tx integer 9
|
||||||
|
rach max transmission 7
|
||||||
|
ip.access unit_id val_bts.unit_id_bts1 0
|
||||||
|
oml ip.access stream_id val_bts.stream_id_bts1 line 0
|
||||||
|
gprs mode gprs
|
||||||
|
gprs routing area val_bts.routing_area_code_bts1
|
||||||
|
gprs network-control-order nc1
|
||||||
|
gprs cell bvci val_bts.bvci_bts1
|
||||||
|
gprs cell timer blocking-timer 3
|
||||||
|
gprs cell timer blocking-retries 3
|
||||||
|
gprs cell timer unblocking-retries 3
|
||||||
|
gprs cell timer reset-timer 3
|
||||||
|
gprs cell timer reset-retries 3
|
||||||
|
gprs cell timer suspend-timer 10
|
||||||
|
gprs cell timer suspend-retries 3
|
||||||
|
gprs cell timer resume-timer 10
|
||||||
|
gprs cell timer resume-retries 3
|
||||||
|
gprs cell timer capability-update-timer 10
|
||||||
|
gprs cell timer capability-update-retries 3
|
||||||
|
gprs nsei val_bts.bvci_bts1
|
||||||
|
gprs ns timer tns-block 3
|
||||||
|
gprs ns timer tns-block-retries 3
|
||||||
|
gprs ns timer tns-reset 3
|
||||||
|
gprs ns timer tns-reset-retries 3
|
||||||
|
gprs ns timer tns-test 30
|
||||||
|
gprs ns timer tns-alive 3
|
||||||
|
gprs ns timer tns-alive-retries 10
|
||||||
|
gprs nsvc 0 nsvci val_bts.bvci_bts1
|
||||||
|
gprs nsvc 0 local udp port 23020
|
||||||
|
gprs nsvc 0 remote udp port 23000
|
||||||
|
gprs nsvc 0 remote ip val_bts.sgsn_ip_addr_bts1
|
||||||
|
trx 0
|
||||||
|
rf_locked 0
|
||||||
|
arfcn val_trx_arfcn_trx0
|
||||||
|
nominal power val_trx_nominal_power_trx0
|
||||||
|
max_power_red val_trx_max_power_red_trx0
|
||||||
|
rsl e1 tei 0
|
||||||
|
timeslot 0
|
||||||
|
phys_chan_config val_phys_chan_config_0
|
||||||
|
timeslot 1
|
||||||
|
phys_chan_config val_phys_chan_config_1
|
||||||
|
timeslot 2
|
||||||
|
phys_chan_config val_phys_chan_config_2
|
||||||
|
timeslot 3
|
||||||
|
phys_chan_config val_phys_chan_config_3
|
||||||
|
trx 1
|
||||||
|
rf_locked 0
|
||||||
|
arfcn val_trx_arfcn_trx1
|
||||||
|
nominal power val_trx_nominal_power_trx1
|
||||||
|
max_power_red val_trx_max_power_red_trx1
|
||||||
|
rsl e1 tei 0
|
||||||
|
timeslot 0
|
||||||
|
phys_chan_config val_phys_chan_config_0
|
||||||
|
timeslot 1
|
||||||
|
phys_chan_config val_phys_chan_config_1
|
||||||
|
timeslot 2
|
||||||
|
phys_chan_config val_phys_chan_config_2
|
||||||
|
timeslot 3
|
||||||
|
phys_chan_config val_phys_chan_config_3
|
||||||
|
smpp
|
||||||
|
local-tcp-ip val_ip_address 2775
|
||||||
|
system-id test-nitb
|
||||||
|
policy val_smsc_policy
|
||||||
|
esme val_system_id_esme0
|
||||||
|
password val_password_esme0
|
||||||
|
default-route
|
||||||
|
esme val_system_id_esme1
|
||||||
|
no password
|
||||||
|
default-route
|
||||||
|
ctrl
|
||||||
|
bind val_ip_address
|
||||||
|
|
||||||
|
- Testing: template directory overlay (present in both dirs)
|
||||||
|
cnf Templates: DBG: rendering osmo-bsc.cfg.tmpl
|
||||||
|
test-overlay-works-fine yes
|
||||||
|
|
||||||
|
- Testing: template directory overlay (present only on overlay dir)
|
||||||
|
cnf Templates: DBG: rendering mytemplate.cfg.tmpl
|
||||||
|
test-overlay-works-fine-only-available yes
|
||||||
|
|
||||||
|
|
|
@ -92,4 +92,13 @@ except RuntimeError:
|
||||||
print('sucess: setting non-existing templates dir raised RuntimeError\n')
|
print('sucess: setting non-existing templates dir raised RuntimeError\n')
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
mytemplatedir = os.path.join(os.path.dirname(__file__), 'mytemplatedir')
|
||||||
|
template.set_templates_dir(mytemplatedir, template.default_templates_dir())
|
||||||
|
print('- Testing: template directory overlay (still can find default one?)')
|
||||||
|
print(template.render('osmo-nitb.cfg', vals))
|
||||||
|
print('- Testing: template directory overlay (present in both dirs)')
|
||||||
|
print(template.render('osmo-bsc.cfg', dict(foo=dict(bar=dict(works='yes')))))
|
||||||
|
print('- Testing: template directory overlay (present only on overlay dir)')
|
||||||
|
print(template.render('mytemplate.cfg', dict(one=dict(two=dict(works='yes')))))
|
||||||
|
|
||||||
# vim: expandtab tabstop=4 shiftwidth=4
|
# vim: expandtab tabstop=4 shiftwidth=4
|
||||||
|
|
|
@ -27,12 +27,14 @@ from .util import dict2obj
|
||||||
_lookup = None
|
_lookup = None
|
||||||
_logger = log.Origin(log.C_CNF, 'no templates dir set')
|
_logger = log.Origin(log.C_CNF, 'no templates dir set')
|
||||||
|
|
||||||
|
def default_templates_dir():
|
||||||
|
return os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')
|
||||||
|
|
||||||
def set_templates_dir(*templates_dirs):
|
def set_templates_dir(*templates_dirs):
|
||||||
global _lookup
|
global _lookup
|
||||||
global _logger
|
global _logger
|
||||||
if not templates_dirs:
|
if not templates_dirs:
|
||||||
# default templates dir is relative to this source file
|
raise RuntimeError('templates dir list is empty!')
|
||||||
templates_dirs = [os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')]
|
|
||||||
for d in templates_dirs:
|
for d in templates_dirs:
|
||||||
if not os.path.isdir(d):
|
if not os.path.isdir(d):
|
||||||
raise RuntimeError('templates dir is not a dir: %r'
|
raise RuntimeError('templates dir is not a dir: %r'
|
||||||
|
@ -45,7 +47,7 @@ def render(name, values):
|
||||||
".tmpl" is added to the name to look it up in the templates dir.'''
|
".tmpl" is added to the name to look it up in the templates dir.'''
|
||||||
global _lookup
|
global _lookup
|
||||||
if _lookup is None:
|
if _lookup is None:
|
||||||
set_templates_dir()
|
set_templates_dir(default_templates_dir())
|
||||||
tmpl_name = name + '.tmpl'
|
tmpl_name = name + '.tmpl'
|
||||||
log.ctx(tmpl_name)
|
log.ctx(tmpl_name)
|
||||||
template = _lookup.get_template(tmpl_name)
|
template = _lookup.get_template(tmpl_name)
|
||||||
|
|
Loading…
Reference in New Issue