blob: a1dd62c49d1e1e7011ab9dfb81ce132fb6067639 [file] [log] [blame]
Pau Espin Pedrol8a725862018-10-26 15:54:28 +02001#!/usr/bin/env python3
2from osmo_gsm_tester.testenv import *
3
4def print_results(cli_res, srv_res):
5 cli_sent = cli_res['end']['sum_sent']
6 cli_recv = cli_res['end']['sum_received']
7 print("RESULT client:")
8 print("\tSEND: %d KB, %d kbps, %d seconds (%d retrans)" % (cli_sent['bytes']/1000, cli_sent['bits_per_second']/1000, cli_sent['seconds'], cli_sent['retransmits']))
9 print("\tRECV: %d KB, %d kbps, %d seconds" % (cli_recv['bytes']/1000, cli_recv['bits_per_second']/1000, cli_recv['seconds']))
10 print("RESULT server:")
11 print("\tSEND: %d KB, %d kbps, %d seconds" % (cli_sent['bytes']/1000, cli_sent['bits_per_second']/1000, cli_sent['seconds']))
12 print("\tRECV: %d KB, %d kbps, %d seconds" % (cli_recv['bytes']/1000, cli_recv['bits_per_second']/1000, cli_recv['seconds']))
13
14hlr = suite.hlr()
15bts = suite.bts()
16pcu = bts.pcu()
17mgw_msc = suite.mgw()
18mgw_bsc = suite.mgw()
19stp = suite.stp()
20ggsn = suite.ggsn()
21sgsn = suite.sgsn(hlr, ggsn)
22msc = suite.msc(hlr, mgw_msc, stp)
23bsc = suite.bsc(msc, mgw_bsc, stp)
24ms = suite.modem()
25iperf3srv = suite.iperf3srv()
26iperf3cli = iperf3srv.create_client()
27
28bsc.bts_add(bts)
29sgsn.bts_add(bts)
30
31print('start iperfv3 server...')
32iperf3srv.start()
33
34print('start network...')
35hlr.start()
36stp.start()
37ggsn.start()
38sgsn.start()
39msc.start()
40mgw_msc.start()
41mgw_bsc.start()
42bsc.start()
43
44bts.start()
45wait(bsc.bts_is_connected, bts)
46print('Waiting for bts to be ready...')
47wait(bts.ready_for_pcu)
48pcu.start()
49
50hlr.subscriber_add(ms)
51
52ms.connect(msc.mcc_mnc())
53ms.attach()
54
55ms.log_info()
56
57print('waiting for modems to attach...')
58wait(ms.is_connected, msc.mcc_mnc())
59wait(msc.subscriber_attached, ms)
60
61print('waiting for modems to attach to data services...')
62wait(ms.is_attached)
63
64# We need to use inet46 since ofono qmi only uses ipv4v6 eua (OS#2713)
65ctx_id_v4 = ms.activate_context(apn='inet46', protocol=ms.CTX_PROT_IPv4)
66print("Setting up data plan for %r" % repr(ctx_id_v4))
67ms.setup_context_data_plane(ctx_id_v4)
68
69print("Running iperf3 client to %s through %r" % (iperf3srv.addr(),repr(ctx_id_v4)))
70res = iperf3cli.run_test(ms.netns())
71iperf3srv.stop()
72print_results(res, iperf3srv.get_results())
73
74ms.deactivate_context(ctx_id_v4)