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') |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 10 | nitb = suite.nitb() |
| 11 | bts = suite.bts() |
| 12 | ms_driver = suite.ms_driver() |
Holger Hans Peter Freyther | 2e7e843 | 2019-04-30 18:55:59 +0100 | [diff] [blame] | 13 | ul = ms_driver.add_test('ul_test') |
Holger Hans Peter Freyther | 5e67ed4 | 2019-02-25 09:48:50 +0000 | [diff] [blame] | 14 | modems = suite.all_resources(suite.modem) |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 15 | |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 16 | print('Launching a simple network') |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 17 | nitb.bts_add(bts) |
| 18 | nitb.start() |
| 19 | bts.start() |
| 20 | wait(nitb.bts_is_connected, bts) |
| 21 | |
Holger Hans Peter Freyther | 5e67ed4 | 2019-02-25 09:48:50 +0000 | [diff] [blame] | 22 | # Configure all MS that are available to this test. |
| 23 | for modem in modems: |
| 24 | nitb.subscriber_add(modem) |
| 25 | ms_driver.subscriber_add(modem) |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 26 | |
| 27 | # Run the base test. |
| 28 | ms_driver.run_test() |
| 29 | |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 30 | # Print the stats of the run. |
Holger Hans Peter Freyther | 5b84115 | 2018-08-29 04:29:56 +0100 | [diff] [blame] | 31 | ms_driver.print_stats() |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 32 | |
| 33 | # Evaluate if this run was successful or not. Our initial acceptance criteria |
| 34 | # is quite basic but it should allow us to scale to a larger number of MS and |
| 35 | # reasons (e.g. have a full BCCH). |
| 36 | # |
| 37 | # 99% of LUs should complete |
| 38 | # 99% of successful LUs should complete within 10s. |
Holger Hans Peter Freyther | 2e7e843 | 2019-04-30 18:55:59 +0100 | [diff] [blame] | 39 | stats = ul.get_stats() |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 40 | if len(modems) > 0 and stats.num_completed < 1: |
| 41 | raise Exception("No run completed.") |
Holger Hans Peter Freyther | 839d6fa | 2019-04-28 11:38:21 +0100 | [diff] [blame] | 42 | completion_ratio = stats.num_completed / stats.num_attempted |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 43 | |
| 44 | # Verify that 99% of LUs completed. |
| 45 | if completion_ratio < 0.99: |
| 46 | raise Exception("Completion ratio of %f%% lower than threshold." % (completion_ratio * 100.0)) |
| 47 | |
| 48 | # Check how many results are below our threshold. |
| 49 | acceptable_delay = timedelta(seconds=30) |
Holger Hans Peter Freyther | 2e7e843 | 2019-04-30 18:55:59 +0100 | [diff] [blame] | 50 | quick_enough = len(ul.lus_less_than(acceptable_delay)) |
Holger Hans Peter Freyther | 61f2877 | 2019-04-27 14:25:22 +0100 | [diff] [blame] | 51 | latency_ratio = quick_enough / stats.num_attempted |
Holger Hans Peter Freyther | 337141f | 2019-02-23 09:58:59 +0000 | [diff] [blame] | 52 | if latency_ratio < 0.99: |
| 53 | raise Exception("Latency ratio of %f%% lower than threshold." % (latency_ratio * 100.0)) |