Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
| 2 | """ |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 3 | Runs a network registration with a 'massive' amount of MS |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 4 | using the ms_driver infrastructure. |
| 5 | """ |
| 6 | from osmo_gsm_tester.testenv import * |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 7 | from datetime import timedelta |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 8 | |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 9 | print('Claiming resources for the test') |
Pau Espin Pedrol | d95d494 | 2020-12-21 18:32:43 +0100 | [diff] [blame] | 10 | hlr = tenv.hlr() |
| 11 | mgw_msc = tenv.mgw() |
| 12 | mgw_bsc = tenv.mgw() |
| 13 | stp = tenv.stp() |
| 14 | msc = tenv.msc(hlr, mgw_msc, stp) |
| 15 | bsc = tenv.bsc(msc, mgw_bsc, stp) |
Pau Espin Pedrol | 40c7bc7 | 2020-05-05 13:41:42 +0200 | [diff] [blame] | 16 | bts = tenv.bts() |
| 17 | ms_driver = tenv.ms_driver() |
Holger Hans Peter Freyther | 2e7e843 | 2019-04-30 18:55:59 +0100 | [diff] [blame] | 18 | ul = ms_driver.add_test('ul_test') |
Pau Espin Pedrol | 40c7bc7 | 2020-05-05 13:41:42 +0200 | [diff] [blame] | 19 | modems = tenv.all_resources(tenv.modem) |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 20 | |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 21 | print('Launching a simple network') |
Pau Espin Pedrol | d95d494 | 2020-12-21 18:32:43 +0100 | [diff] [blame] | 22 | hlr.start() |
| 23 | stp.start() |
| 24 | msc.start() |
| 25 | mgw_msc.start() |
| 26 | mgw_bsc.start() |
| 27 | |
| 28 | bsc.bts_add(bts) |
| 29 | bsc.start() |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 30 | bts.start() |
Pau Espin Pedrol | d95d494 | 2020-12-21 18:32:43 +0100 | [diff] [blame] | 31 | wait(bsc.bts_is_connected, bts) |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 32 | |
Holger Hans Peter Freyther | 5e67ed4 | 2019-02-25 09:48:50 +0000 | [diff] [blame] | 33 | # Configure all MS that are available to this test. |
| 34 | for modem in modems: |
Pau Espin Pedrol | d95d494 | 2020-12-21 18:32:43 +0100 | [diff] [blame] | 35 | hlr.subscriber_add(modem) |
Holger Hans Peter Freyther | 5e67ed4 | 2019-02-25 09:48:50 +0000 | [diff] [blame] | 36 | ms_driver.subscriber_add(modem) |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 37 | |
| 38 | # Run the base test. |
| 39 | ms_driver.run_test() |
| 40 | |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 41 | # Print the stats of the run. |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 42 | ms_driver.print_stats() |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 43 | |
| 44 | # Evaluate if this run was successful or not. Our initial acceptance criteria |
| 45 | # is quite basic but it should allow us to scale to a larger number of MS and |
| 46 | # reasons (e.g. have a full BCCH). |
| 47 | # |
| 48 | # 99% of LUs should complete |
| 49 | # 99% of successful LUs should complete within 10s. |
Holger Hans Peter Freyther | 2e7e843 | 2019-04-30 18:55:59 +0100 | [diff] [blame] | 50 | stats = ul.get_stats() |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 51 | if len(modems) > 0 and stats.num_completed < 1: |
| 52 | raise Exception("No run completed.") |
Holger Hans Peter Freyther | 839d6fa | 2019-04-28 11:38:21 +0100 | [diff] [blame] | 53 | completion_ratio = stats.num_completed / stats.num_attempted |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 54 | |
| 55 | # Verify that 99% of LUs completed. |
| 56 | if completion_ratio < 0.99: |
| 57 | raise Exception("Completion ratio of %f%% lower than threshold." % (completion_ratio * 100.0)) |
| 58 | |
| 59 | # Check how many results are below our threshold. |
| 60 | acceptable_delay = timedelta(seconds=30) |
Holger Hans Peter Freyther | 2e7e843 | 2019-04-30 18:55:59 +0100 | [diff] [blame] | 61 | quick_enough = len(ul.lus_less_than(acceptable_delay)) |
Holger Hans Peter Freyther | 61f2877 | 2019-04-27 14:25:22 +0100 | [diff] [blame] | 62 | latency_ratio = quick_enough / stats.num_attempted |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 63 | if latency_ratio < 0.99: |
| 64 | raise Exception("Latency ratio of %f%% lower than threshold." % (latency_ratio * 100.0)) |