aboutsummaryrefslogtreecommitdiffstats
path: root/selftest/template_test
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-05-06 18:35:26 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2020-05-06 18:49:31 +0200
commitab1904a307b531dbd1c738ef04eeeeb68f9920b3 (patch)
tree665d524265171d0e977633f4c29536b9174d8364 /selftest/template_test
parent636f560dc2f26d303a0bdb7115744cb402159131 (diff)
selftest: Move tests into own subdirectories
Diffstat (limited to 'selftest/template_test')
l---------selftest/template_test/_prep.py1
-rw-r--r--selftest/template_test/template_test.err0
-rw-r--r--selftest/template_test/template_test.ok193
-rwxr-xr-xselftest/template_test/template_test.py95
4 files changed, 289 insertions, 0 deletions
diff --git a/selftest/template_test/_prep.py b/selftest/template_test/_prep.py
new file mode 120000
index 0000000..9cea3fe
--- /dev/null
+++ b/selftest/template_test/_prep.py
@@ -0,0 +1 @@
+../_prep.py \ No newline at end of file
diff --git a/selftest/template_test/template_test.err b/selftest/template_test/template_test.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/selftest/template_test/template_test.err
diff --git a/selftest/template_test/template_test.ok b/selftest/template_test/template_test.ok
new file mode 100644
index 0000000..88b77b0
--- /dev/null
+++ b/selftest/template_test/template_test.ok
@@ -0,0 +1,193 @@
+- Testing: fill a config file with values
+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: expect to fail on invalid templates dir
+sucess: setting non-existing templates dir raised RuntimeError
+
diff --git a/selftest/template_test/template_test.py b/selftest/template_test/template_test.py
new file mode 100755
index 0000000..747d508
--- /dev/null
+++ b/selftest/template_test/template_test.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python3
+
+import _prep
+
+import sys
+import os
+
+from osmo_gsm_tester.core import template, log
+
+log.set_level(log.C_CNF, log.L_DBG)
+
+print('- Testing: fill a config file with values')
+
+mock_timeslot_list=(
+ { 'phys_chan_config': 'val_phys_chan_config_0' },
+ { 'phys_chan_config': 'val_phys_chan_config_1' },
+ { 'phys_chan_config': 'val_phys_chan_config_2' },
+ { 'phys_chan_config': 'val_phys_chan_config_3' },
+ )
+
+mock_bts = {
+ 'osmobsc_bts_type': 'val_type',
+ 'band': 'val_band',
+ 'location_area_code': 'val_bts.location_area_code',
+ 'routing_area_code': 'val_bts.routing_area_code',
+ 'cell_identity': 'val_bts.cell_identity',
+ 'bvci': 'val_bts.bvci',
+ 'base_station_id_code': 'val_bts.base_station_id_code',
+ 'ipa_unit_id': 'val_bts.unit_id',
+ 'stream_id': 'val_bts.stream_id',
+ 'sgsn': (dict(ip_address=dict(addr='val_bts.sgsn_ip_addr'))),
+ 'trx_list': (
+ dict(arfcn='val_trx_arfcn_trx0',
+ nominal_power='val_trx_nominal_power_trx0',
+ max_power_red='val_trx_max_power_red_trx0',
+ timeslot_list=mock_timeslot_list),
+ dict(arfcn='val_trx_arfcn_trx1',
+ nominal_power='val_trx_nominal_power_trx1',
+ max_power_red='val_trx_max_power_red_trx1',
+ timeslot_list=mock_timeslot_list),
+ )
+}
+
+mock_esme = {
+ 'system_id': 'val_system_id',
+ 'password': 'val_password'
+}
+
+def clone_mod(d, val_ext):
+ c = dict(d)
+ for name in c.keys():
+ if isinstance(c[name], str):
+ c[name] = c[name] + val_ext
+ elif isinstance(c[name], dict):
+ c[name] = clone_mod(c[name], val_ext)
+ return c
+
+mock_bts0 = clone_mod(mock_bts, '_bts0')
+mock_bts1 = clone_mod(mock_bts, '_bts1')
+
+mock_esme0 = clone_mod(mock_esme, '_esme0')
+mock_esme1 = clone_mod(mock_esme, '_esme1')
+mock_esme1['password'] = ''
+
+vals = dict(nitb=dict(
+ net=dict(
+ mcc='val_mcc',
+ mnc='val_mnc',
+ short_name='val_short_name',
+ long_name='val_long_name',
+ auth_policy='val_auth_policy',
+ encryption='val_encryption',
+ bts_list=(mock_bts0, mock_bts1)
+ ),
+ ip_address=dict(addr='val_ip_address'),
+ ),
+ smsc=dict(
+ policy='val_smsc_policy',
+ esme_list=(mock_esme0, mock_esme1)
+ ),
+ )
+
+print(template.render('osmo-nitb.cfg', vals))
+
+print('- Testing: expect to fail on invalid templates dir')
+try:
+ template.set_templates_dir('non-existing dir')
+ sys.stderr.write('Error: setting non-existing templates dir should raise RuntimeError\n')
+ assert(False)
+except RuntimeError:
+ # not logging exception to omit non-constant path name from expected output
+ print('sucess: setting non-existing templates dir raised RuntimeError\n')
+ pass
+
+# vim: expandtab tabstop=4 shiftwidth=4