Use unique incrementing value for BTS LAC
Change-Id: I9f864bac05e39ec2fc305f774194799c3d8fe1b0
diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py
index ae2e249..eb1092c 100644
--- a/src/osmo_gsm_tester/bts_octphy.py
+++ b/src/osmo_gsm_tester/bts_octphy.py
@@ -30,6 +30,7 @@
env = None
pcu_sk_tmp_dir = None
values = None
+ lac = None
BIN_BTS_OCTPHY = 'osmo-bts-octphy'
@@ -158,6 +159,8 @@
def conf_for_bsc(self):
values = config.get_defaults('bsc_bts')
config.overlay(values, config.get_defaults('osmo_bts_octphy'))
+ if self.lac is not None:
+ config.overlay(values, { 'location_area_code': self.lac })
config.overlay(values, self.conf)
self.dbg(conf=values)
return values
@@ -165,4 +168,7 @@
def set_bsc(self, bsc):
self.bsc = bsc
+ def set_lac(self, lac):
+ self.lac = lac
+
# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index f53b8a3..731daa5 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -30,6 +30,7 @@
env = None
trx = None
pcu_sk_tmp_dir = None
+ lac = None
BIN_BTS_TRX = 'osmo-bts-trx'
BIN_PCU = 'osmo-pcu'
@@ -136,6 +137,8 @@
def conf_for_bsc(self):
values = config.get_defaults('bsc_bts')
config.overlay(values, config.get_defaults('osmo_bts_trx'))
+ if self.lac is not None:
+ config.overlay(values, { 'location_area_code': self.lac })
config.overlay(values, self.conf)
self.dbg(conf=values)
return values
@@ -143,6 +146,9 @@
def set_bsc(self, bsc):
self.bsc = bsc
+ def set_lac(self, lac):
+ self.lac = lac
+
class OsmoTrx(log.Origin):
suite_run = None
run_dir = None
diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py
index e8ac7c2..03dc97e 100644
--- a/src/osmo_gsm_tester/bts_sysmo.py
+++ b/src/osmo_gsm_tester/bts_sysmo.py
@@ -29,6 +29,7 @@
remote_inst = None
remote_env = None
remote_dir = None
+ lac = None
REMOTE_DIR = '/osmo-gsm-tester'
BTS_SYSMO_BIN = 'osmo-bts-sysmo'
@@ -143,6 +144,8 @@
def conf_for_bsc(self):
values = config.get_defaults('bsc_bts')
config.overlay(values, config.get_defaults('osmo_bts_sysmo'))
+ if self.lac is not None:
+ config.overlay(values, { 'location_area_code': self.lac })
config.overlay(values, self.conf)
self.dbg(conf=values)
return values
@@ -150,4 +153,7 @@
def set_bsc(self, bsc):
self.bsc = bsc
+ def set_lac(self, lac):
+ self.lac = lac
+
# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index ecafa2f..9571131 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -210,6 +210,8 @@
def next_msisdn(self, origin):
return self.next_persistent_value('msisdn', '1000', schema.msisdn, util.msisdn_inc, origin)
+ def next_lac(self, origin):
+ return self.next_persistent_value('lac', '1', schema.uint16, lambda x: str((int(x)+1) % pow(2,16)), origin)
class NoResourceExn(log.Error):
pass
diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/schema.py
index 9b142d3..a78bc63 100644
--- a/src/osmo_gsm_tester/schema.py
+++ b/src/osmo_gsm_tester/schema.py
@@ -71,6 +71,13 @@
if n < 0:
raise ValueError('Positive value expected instead of %d' % n)
+def uint16(val):
+ n = int(val)
+ if n < 0:
+ raise ValueError('Positive value expected instead of %d' % n)
+ if n > 65535: # 2^16 - 1
+ raise ValueError('Value %d too big, max value is 65535' % n)
+
def times(val):
n = int(val)
if n < 1:
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 28bdd69..9f9421e 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -344,6 +344,7 @@
def bts(self, specifics=None):
bts = bts_obj(self, self.reserved_resources.get(resource.R_BTS, specifics=specifics))
+ bts.set_lac(self.lac())
self.register_for_cleanup(bts)
return bts
@@ -370,6 +371,11 @@
self.log('using MSISDN', msisdn)
return msisdn
+ def lac(self):
+ lac = self.resources_pool.next_lac(self)
+ self.log('using LAC', lac)
+ return lac
+
def poll(self):
if self._processes:
for process in self._processes: