[MERGED] osmo-gsm-tester[master]: OsmoNitb: Introduce bts_is_connected API

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Wed Dec 13 14:09:21 UTC 2017


Pau Espin Pedrol has submitted this change and it was merged.

Change subject: OsmoNitb: Introduce bts_is_connected API
......................................................................


OsmoNitb: Introduce bts_is_connected API

This can be used by tests to wait until bts is successfully connected to
NITB.

Change-Id: Idb9b7087e38f638d8b8acbad6dd8ab4218746832
---
M src/osmo_gsm_tester/osmo_nitb.py
1 file changed, 27 insertions(+), 0 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Harald Welte: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py
index 6dd7342..48037a6 100644
--- a/src/osmo_gsm_tester/osmo_nitb.py
+++ b/src/osmo_gsm_tester/osmo_nitb.py
@@ -114,6 +114,13 @@
     def mcc_mnc(self):
         return (self.mcc(), self.mnc())
 
+    def bts_num(self, bts):
+        'Provide number id used by OsmoNITB to identify configured BTS'
+        # We take advantage from the fact that VTY code assigns VTY in ascending
+        # order through the bts nodes found. As we populate the config iterating
+        # over this list, we have a 1:1 match in indexes.
+        return self.bts.index(bts)
+
     def subscriber_add(self, modem, msisdn=None, algo=None):
         if msisdn is None:
             msisdn = self.suite_run.resources_pool.next_msisdn(modem)
@@ -148,6 +155,9 @@
     def imsi_list_attached(self):
         return OsmoNitbCtrl(self).subscriber_list_active()
 
+    def bts_is_connected(self, bts):
+        return OsmoNitbCtrl(self).bts_is_connected(self.bts_num(bts))
+
     def running(self):
         return not self.process.terminated()
 
@@ -159,6 +169,8 @@
     SUBSCR_DELETE_VAR = 'subscriber-delete-v1'
     SUBSCR_DELETE_REPLY_RE = re.compile("SET_REPLY (\d+) %s Removed" % SUBSCR_DELETE_VAR)
     SUBSCR_LIST_ACTIVE_VAR = 'subscriber-list-active-v1'
+    BTS_OML_STATE_VAR = "bts.%d.oml-connection-state"
+    BTS_OML_STATE_RE = re.compile("GET_REPLY (\d+) bts.\d+.oml-connection-state (?P<oml_state>\w+)")
 
     def __init__(self, nitb):
         self.nitb = nitb
@@ -210,4 +222,19 @@
                 aslist_str = answer_str
             return aslist_str
 
+    def bts_is_connected(self, bts_num):
+        with self.ctrl() as ctrl:
+            ctrl.do_get(OsmoNitbCtrl.BTS_OML_STATE_VAR % bts_num)
+            data = ctrl.receive()
+            while (len(data) > 0):
+                (answer, data) = ctrl.remove_ipa_ctrl_header(data)
+                answer_str = answer.decode('utf-8')
+                answer_str = answer_str.replace('\n', ' ')
+                res = OsmoNitbCtrl.BTS_OML_STATE_RE.match(answer_str)
+                if res:
+                    oml_state = str(res.group('oml_state'))
+                    if oml_state == 'connected':
+                        return True
+        return False
+
 # vim: expandtab tabstop=4 shiftwidth=4

-- 
To view, visit https://gerrit.osmocom.org/5274
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Idb9b7087e38f638d8b8acbad6dd8ab4218746832
Gerrit-PatchSet: 2
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>



More information about the gerrit-log mailing list