aboutsummaryrefslogtreecommitdiffstats
path: root/suites/nitb_netreg_mass/register_default_mass.py
blob: 76c53f1bfba155a0906b99e5b36ca70f85900d86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python3
"""
Runs a network registration with a 'massive' amount of MS
using the ms_driver infrastructure.
"""
from osmo_gsm_tester.testenv import *
from datetime import timedelta

print('Claiming resources for the test')
nitb = suite.nitb()
bts = suite.bts()
ms_driver = suite.ms_driver()
modems = suite.all_resources(suite.modem)

print('Launching a simple network')
nitb.bts_add(bts)
nitb.start()
bts.start()
wait(nitb.bts_is_connected, bts)

# Configure all MS that are available to this test.
for modem in modems:
    nitb.subscriber_add(modem)
    ms_driver.subscriber_add(modem)

# Run the base test.
ms_driver.run_test()

# Print the stats of the run.
ms_driver.print_stats()

# Evaluate if this run was successful or not. Our initial acceptance criteria
# is quite basic but it should allow us to scale to a larger number of MS and
# reasons (e.g. have a full BCCH).
#
# 99% of LUs should complete
# 99% of successful LUs should complete within 10s.
stats = ms_driver.get_stats()
if len(modems) > 0 and stats.num_completed < 1:
    raise Exception("No run completed.")
completion_ratio = stats.num_attempted / stats.num_completed

# Verify that 99% of LUs completed.
if completion_ratio < 0.99:
    raise Exception("Completion ratio of %f%% lower than threshold." % (completion_ratio * 100.0))

# Check how many results are below our threshold.
acceptable_delay = timedelta(seconds=30)
results = ms_driver.get_result_values()
quick_enough = 0
for result in results:
    if not result.has_lu_time():
        continue
    if timedelta(seconds=result.lu_delay()) >= acceptable_delay:
        continue
    quick_enough = quick_enough + 1

latency_ratio = quick_enough / len(results)
if latency_ratio < 0.99:
    raise Exception("Latency ratio of %f%% lower than threshold." % (latency_ratio * 100.0))