pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18535 )

Change subject: ms_srs: refactor UE state getter functions
......................................................................

ms_srs: refactor UE state getter functions

rename UE helper functions to query RRC connected/idle state
and adapt tests accordingly

also add helper to retrieve assinged IP address

Change-Id: I6cd057e34b4df6a1a73695355dd6406d7e039546
---
M src/osmo_gsm_tester/obj/ms.py
M src/osmo_gsm_tester/obj/ms_amarisoft.py
M src/osmo_gsm_tester/obj/ms_ofono.py
M src/osmo_gsm_tester/obj/ms_srs.py
M sysmocom/suites/4g/handover.py
M sysmocom/suites/4g/iperf3_dl.py
M sysmocom/suites/4g/iperf3_ul.py
M sysmocom/suites/4g/ping.py
8 files changed, 53 insertions(+), 10 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved



diff --git a/src/osmo_gsm_tester/obj/ms.py b/src/osmo_gsm_tester/obj/ms.py
index e74377d..b39d3ee 100644
--- a/src/osmo_gsm_tester/obj/ms.py
+++ b/src/osmo_gsm_tester/obj/ms.py
@@ -77,6 +77,20 @@
             raise log.Error('MS type not supported:', ms_type)
         return ms_class(testenv, conf)

+    @abstractmethod
+    def is_registered(self, mcc_mnc=None):
+        '''Check whether MS is considered registered with the target network. 
In
+        2G networks, and MS is registered if it had a successful Location 
Update
+        in CS. In 4G networks, an UE is considered registered with the core
+        network if it has obtained and IP address. If MCC/MNC are given it 
tries
+        to manually register against that specific network.'''
+        pass
+
+    @abstractmethod
+    def get_assigned_addr(self, ipv6=False):
+        ''' Returns last assigned IP address '''
+        pass
+
 ###################
 # PUBLIC (test API included)
 ###################
diff --git a/src/osmo_gsm_tester/obj/ms_amarisoft.py 
b/src/osmo_gsm_tester/obj/ms_amarisoft.py
index e99cca3..432f759 100644
--- a/src/osmo_gsm_tester/obj/ms_amarisoft.py
+++ b/src/osmo_gsm_tester/obj/ms_amarisoft.py
@@ -296,13 +296,19 @@
             self.rem_host.scp('scp-cfg-rf-to-remote', self.config_rf_file, 
self.remote_config_rf_file)
             self.rem_host.scp('scp-ifup-to-remote', self.ifup_file, 
self.remote_ifup_file)

-    def is_connected(self, mcc_mnc=None):
+    def is_registered(self, mcc_mnc=None):
         # lteue doesn't call the ifup script until after it becomes attached, 
so
         # simply look for our ifup script output at the end of it:
         return 'netns %s configured' % (self.netns()) in 
(self.process.get_stdout() or '')

+    def is_rrc_connected(self):
+        return self.is_registered()
+
     def is_attached(self):
-        return self.is_connected()
+        return self.is_registered()
+
+    def get_assigned_addr(self, ipv6=False):
+        raise log.Error('API not implemented!')

     def running(self):
         return not self.process.terminated()
diff --git a/src/osmo_gsm_tester/obj/ms_ofono.py 
b/src/osmo_gsm_tester/obj/ms_ofono.py
index e1ddbc8..e03427e 100644
--- a/src/osmo_gsm_tester/obj/ms_ofono.py
+++ b/src/osmo_gsm_tester/obj/ms_ofono.py
@@ -487,6 +487,9 @@
             return self._apn_ipaddr
         return 'dynamic'

+    def get_assigned_addr(self, ipv6=False):
+        raise log.Error('API not implemented!')
+
     def features(self):
         return self._conf.get('features', [])

@@ -501,7 +504,7 @@
     def _on_netreg_property_changed(self, name, value):
         self.dbg('%r.PropertyChanged() -> %s=%s' % (I_NETREG, name, value))

-    def is_connected(self, mcc_mnc=None):
+    def is_registered(self, mcc_mnc=None):
         netreg = self.dbus.interface(I_NETREG)
         prop = netreg.GetProperties()
         status = prop.get('Status')
@@ -516,6 +519,10 @@
             return True
         return False

+    def is_connected(self, mcc_mnc=None):
+        '''Convenience helper to keep old test API'''
+        return self.is_registered(mcc_mnc)
+
     def schedule_scan_register(self, mcc_mnc):
         if self.register_attempts > NETREG_MAX_REGISTER_ATTEMPTS:
             raise log.Error('Failed to find Network Operator', 
mcc_mnc=mcc_mnc, attempts=self.register_attempts)
diff --git a/src/osmo_gsm_tester/obj/ms_srs.py 
b/src/osmo_gsm_tester/obj/ms_srs.py
index 1922bef..604d5c7 100644
--- a/src/osmo_gsm_tester/obj/ms_srs.py
+++ b/src/osmo_gsm_tester/obj/ms_srs.py
@@ -19,6 +19,7 @@

 import os
 import pprint
+import re

 from ..core import log, util, config, template, process, remote
 from ..core import schema
@@ -300,11 +301,26 @@
             self.rem_host.recreate_remote_dir(self.remote_run_dir)
             self.rem_host.scp('scp-cfg-to-remote', self.config_file, 
self.remote_config_file)

-    def is_connected(self, mcc_mnc=None):
+    def is_rrc_connected(self):
+        ''' Check whether UE is RRC connected using console message '''
+        pos_connected = (self.process.get_stdout() or '').rfind('RRC 
Connected')
+        pos_released = (self.process.get_stdout() or '').rfind('RRC IDLE')
+        return pos_connected > pos_released
+
+    def is_registered(self, mcc_mnc=None):
+        ''' Checks if UE is EMM registered '''
         return 'Network attach successful.' in (self.process.get_stdout() or 
'')

-    def is_attached(self):
-        return self.is_connected()
+    def get_assigned_addr(self, ipv6=False):
+        if ipv6:
+            raise log.Error('IPv6 not implemented!')
+        else:
+            stdout_lines = (self.process.get_stdout() or '').splitlines()
+            for line in reversed(stdout_lines):
+                if line.find('Network attach successful. IP: ') != -1:
+                    ipv4_addr = re.findall( r'[0-9]+(?:\.[0-9]+){3}', line)
+                    return ipv4_addr[0]
+            return None

     def running(self):
         return not self.process.terminated()
diff --git a/sysmocom/suites/4g/handover.py b/sysmocom/suites/4g/handover.py
index b0837d8..6bb6456 100755
--- a/sysmocom/suites/4g/handover.py
+++ b/sysmocom/suites/4g/handover.py
@@ -46,7 +46,7 @@
 proc = iperf3cli.prepare_test_proc(iperf3cli.DIR_UL, ue.netns(), duration + 30)

 print('waiting for UE to attach...')
-wait(ue.is_connected, None)
+wait(ue.is_rrc_connected)
 print('UE is attached')

 rfemu_cell1 = enb.get_rfemu(0)
diff --git a/sysmocom/suites/4g/iperf3_dl.py b/sysmocom/suites/4g/iperf3_dl.py
index d90c80b..055ce97 100755
--- a/sysmocom/suites/4g/iperf3_dl.py
+++ b/sysmocom/suites/4g/iperf3_dl.py
@@ -26,7 +26,7 @@
 proc = iperf3cli.prepare_test_proc(iperf3cli.DIR_DL, ue.netns(), 
bitrate=max_rate)

 print('waiting for UE to attach...')
-wait(ue.is_connected, None)
+wait(ue.is_rrc_connected)
 print('UE is attached')
 
 print("Running iperf3 client to %s through %s" % (str(iperf3cli), ue.netns()))
diff --git a/sysmocom/suites/4g/iperf3_ul.py b/sysmocom/suites/4g/iperf3_ul.py
index 453cdfa..6e24070 100755
--- a/sysmocom/suites/4g/iperf3_ul.py
+++ b/sysmocom/suites/4g/iperf3_ul.py
@@ -26,7 +26,7 @@
 proc = iperf3cli.prepare_test_proc(iperf3cli.DIR_UL, ue.netns(), 
bitrate=max_rate)

 print('waiting for UE to attach...')
-wait(ue.is_connected, None)
+wait(ue.is_rrc_connected)
 print('UE is attached')

 print("Running iperf3 client to %s through %s" % (str(iperf3cli), ue.netns()))
diff --git a/sysmocom/suites/4g/ping.py b/sysmocom/suites/4g/ping.py
index c81a35d..0fb2edb 100755
--- a/sysmocom/suites/4g/ping.py
+++ b/sysmocom/suites/4g/ping.py
@@ -16,7 +16,7 @@

 ue.connect(enb)
 print('waiting for UE to attach...')
-wait(ue.is_connected, None)
+wait(ue.is_rrc_connected)
 print('UE is attached')

 proc = ue.run_netns_wait('ping', ('ping', '-c', '10', epc.tun_addr()))

--
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18535
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Change-Id: I6cd057e34b4df6a1a73695355dd6406d7e039546
Gerrit-Change-Number: 18535
Gerrit-PatchSet: 8
Gerrit-Owner: srs_andre <an...@softwareradiosystems.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-Reviewer: srs_andre <an...@softwareradiosystems.com>
Gerrit-MessageType: merged

Reply via email to