summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-12-05 17:46:21 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2018-12-05 18:03:53 +0100
commitffe1b08c46c36f0f980bfee935fa3eaaedf76141 (patch)
treefcc5399caf47e63f7149fd0203453d403960ccd1
parentd51c2ea58d5177eb471829a8887775df2973da84 (diff)
test: cs_paging_gprs_active: Make sure gprs data (TBF) is ongoing
PACCH is used for paging only if the MS is actively using a PDCH, and the only way to be sure that's happening is to place some data through the GPRS path so MS has TBF in use when the call is placed. Change-Id: Id29391d75101d94e2cd58f444b383f4c5217ab6a
-rwxr-xr-xsuites/gprs/cs_paging_gprs_active.py107
-rw-r--r--suites/gprs/lib/testlib.py8
2 files changed, 36 insertions, 79 deletions
diff --git a/suites/gprs/cs_paging_gprs_active.py b/suites/gprs/cs_paging_gprs_active.py
index fc0e160..b7dead2 100755
--- a/suites/gprs/cs_paging_gprs_active.py
+++ b/suites/gprs/cs_paging_gprs_active.py
@@ -5,79 +5,34 @@
from osmo_gsm_tester.testenv import *
-hlr = suite.hlr()
-bts = suite.bts()
-pcu = bts.pcu()
-mgw_msc = suite.mgw()
-mgw_bsc = suite.mgw()
-stp = suite.stp()
-ggsn = suite.ggsn()
-sgsn = suite.sgsn(hlr, ggsn)
-msc = suite.msc(hlr, mgw_msc, stp)
-bsc = suite.bsc(msc, mgw_bsc, stp)
-ms_mo = suite.modem()
-ms_mt = suite.modem()
-
-bsc.bts_add(bts)
-sgsn.bts_add(bts)
-
-print('start network...')
-hlr.start()
-stp.start()
-ggsn.start()
-sgsn.start()
-msc.start()
-mgw_msc.start()
-mgw_bsc.start()
-bsc.start()
-
-bts.start()
-wait(bsc.bts_is_connected, bts)
-print('Waiting for bts to be ready...')
-wait(bts.ready_for_pcu)
-pcu.start()
-
-hlr.subscriber_add(ms_mo)
-hlr.subscriber_add(ms_mt)
-
-ms_mo.connect(msc.mcc_mnc())
-ms_mt.connect(msc.mcc_mnc())
-ms_mo.attach()
-ms_mt.attach()
-
-ms_mo.log_info()
-ms_mt.log_info()
-
-print('waiting for modems to attach...')
-wait(ms_mo.is_connected, msc.mcc_mnc())
-wait(ms_mt.is_connected, msc.mcc_mnc())
-wait(msc.subscriber_attached, ms_mo, ms_mt)
-
-print('waiting for modems to attach to data services...')
-wait(ms_mo.is_attached)
-wait(ms_mt.is_attached)
-
-# We need to use inet46 since ofono qmi only uses ipv4v6 eua (OS#2713)
-ctx_id_v4_mo = ms_mo.activate_context(apn='inet46', protocol=ms_mo.CTX_PROT_IPv4)
-ctx_id_v4_mt = ms_mt.activate_context(apn='inet46', protocol=ms_mt.CTX_PROT_IPv4)
-
-assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0
-mo_cid = ms_mo.call_dial(ms_mt)
-mt_cid = ms_mt.call_wait_incoming(ms_mo)
-print('dial success')
-
-assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)
-ms_mt.call_answer(mt_cid)
-wait(ms_mo.call_is_active, mo_cid)
-wait(ms_mt.call_is_active, mt_cid)
-print('answer success, call established and ongoing')
-
-sleep(5) # maintain the call active for 5 seconds
-
-assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)
-ms_mt.call_hangup(mt_cid)
-wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)
-print('hangup success')
-
-ms_mo.deactivate_context(ctx_id_v4_mo)
-ms_mt.deactivate_context(ctx_id_v4_mt)
+import testlib
+suite.test_import_modules_register_for_cleanup(testlib)
+from testlib import setup_run_iperf3_test_parallel
+
+def ready_cb_place_voicecall(ms_li):
+ print('waiting a few secs to make sure iperf3 test is running')
+ sleep(2)
+ # At this point in time, TBF should be enabled on both MS since they are sending/receiving data.
+ print('iperf3 running, let\'s place a call')
+ ms_mo = ms_li[0]
+ ms_mt = ms_li[1]
+ assert len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0
+ mo_cid = ms_mo.call_dial(ms_mt)
+ mt_cid = ms_mt.call_wait_incoming(ms_mo)
+ print('dial success')
+
+ assert not ms_mo.call_is_active(mo_cid) and not ms_mt.call_is_active(mt_cid)
+ ms_mt.call_answer(mt_cid)
+ wait(ms_mo.call_is_active, mo_cid)
+ wait(ms_mt.call_is_active, mt_cid)
+ print('answer success, call established and ongoing')
+
+ sleep(5) # maintain the call active for 5 seconds
+
+ assert ms_mo.call_is_active(mo_cid) and ms_mt.call_is_active(mt_cid)
+ ms_mt.call_hangup(mt_cid)
+ wait(lambda: len(ms_mo.call_id_list()) == 0 and len(ms_mt.call_id_list()) == 0)
+ print('hangup success')
+
+
+setup_run_iperf3_test_parallel(2, ready_cb=ready_cb_place_voicecall)
diff --git a/suites/gprs/lib/testlib.py b/suites/gprs/lib/testlib.py
index 13a6671..ac3a847 100644
--- a/suites/gprs/lib/testlib.py
+++ b/suites/gprs/lib/testlib.py
@@ -11,7 +11,7 @@ def print_results(cli_res, srv_res):
print("\tSEND: %d KB, %d kbps, %d seconds" % (cli_sent['bytes']/1000, cli_sent['bits_per_second']/1000, cli_sent['seconds']))
print("\tRECV: %d KB, %d kbps, %d seconds" % (cli_recv['bytes']/1000, cli_recv['bits_per_second']/1000, cli_recv['seconds']))
-def run_iperf3_cli_parallel(iperf3clients, ms_li):
+def run_iperf3_cli_parallel(iperf3clients, ms_li, ready_cb):
assert len(iperf3clients) == len(ms_li)
procs = []
for i in range(len(iperf3clients)):
@@ -20,6 +20,8 @@ def run_iperf3_cli_parallel(iperf3clients, ms_li):
try:
for proc in procs:
proc.launch()
+ if ready_cb:
+ ready_cb(ms_li)
for proc in procs:
proc.wait()
except Exception as e:
@@ -28,7 +30,7 @@ def run_iperf3_cli_parallel(iperf3clients, ms_li):
raise e
-def setup_run_iperf3_test_parallel(num_ms):
+def setup_run_iperf3_test_parallel(num_ms, ready_cb=None):
hlr = suite.hlr()
bts = suite.bts()
pcu = bts.pcu()
@@ -98,7 +100,7 @@ def setup_run_iperf3_test_parallel(num_ms):
ms.setup_context_data_plane(ctx_id_v4)
setattr(ms, 'tmp_ctx_id', ctx_id_v4)
- run_iperf3_cli_parallel(clients, ms_li)
+ run_iperf3_cli_parallel(clients, ms_li, ready_cb)
for i in range(num_ms):
servers[i].stop()