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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
from MassPnfSim import MassPnfSim
from glob import glob
from os import popen
from yaml import load, SafeLoader
from ipaddress import ip_address
from test_settings import *
import pytest
from time import sleep
# These test routines perform functional testing in current file tree context
# thus they require that no simulator instances are bootstrapped and running
# prior to running tests
@pytest.mark.parametrize("action", ['start', 'stop', 'trigger', 'status'])
def test_not_bootstrapped(action, caplog, args_start, args_stop, args_trigger, args_status): # pylint: disable=W0613
try:
m = getattr(MassPnfSim(eval(f'args_{action}')), action)
m()
except SystemExit as e:
assert e.code == 1
assert 'No bootstrapped instance found' in caplog.text
caplog.clear()
def test_bootstrap(args_bootstrap, parser, caplog):
# Initial bootstrap
MassPnfSim(args_bootstrap).bootstrap()
for instance in range(SIM_INSTANCES):
assert f'Creating pnf-sim-lw-{instance}' in caplog.text
assert f'Done setting up instance #{instance}' in caplog.text
caplog.clear()
# Verify bootstrap idempotence
try:
MassPnfSim(args_bootstrap).bootstrap()
except SystemExit as e:
assert e.code == 1
assert 'Bootstrapped instances detected, not overwiriting, clean first' in caplog.text
caplog.clear()
# Verify simulator dirs created
sim_dirname_pattern = MassPnfSim(parser.parse_args([])).sim_dirname_pattern
assert len(glob(f"{sim_dirname_pattern}*")) == SIM_INSTANCES
# Verify ROP_file_creator.sh running
for instance in range(SIM_INSTANCES):
assert f"ROP_file_creator.sh {instance}" in popen('ps afx').read()
# Verify simulators configs content is valid
start_port = 2000
for instance in range(SIM_INSTANCES):
instance_ip_offset = instance * 16
ip_offset = 2
with open(f"{sim_dirname_pattern}{instance}/{INSTANCE_CONFIG}") as f:
yml = load(f, Loader=SafeLoader)
assert URLVES == yml['urlves']
assert TYPEFILESERVER == yml['typefileserver']
assert f'sftp://onap:pano@{IPFILESERVER}:{start_port + 1}' in yml['urlsftp']
assert f'ftps://onap:pano@{IPFILESERVER}:{start_port + 2}' in yml['urlftps']
assert str(ip_address(IPSTART) + ip_offset + instance_ip_offset) == yml['ippnfsim']
start_port += 2
print(yml['ippnfsim'])
def test_start(args_start, caplog, capfd):
MassPnfSim(args_start).start()
msg = capfd.readouterr()
for instance in range(SIM_INSTANCES):
instance_ip_offset = instance * 16
ip_offset = 2
assert f'Starting pnf-sim-lw-{instance} instance:' in caplog.text
assert f'PNF-Sim IP: {str(ip_address(IPSTART) + ip_offset + instance_ip_offset)}' in msg.out
assert 'Starting simulator containers' in msg.out
caplog.clear()
def test_start_idempotence(args_start, capfd):
'''Verify start idempotence'''
MassPnfSim(args_start).start()
msg = capfd.readouterr()
assert 'Simulator containers are already up' in msg.out
assert 'Starting simulator containers' not in msg.out
def test_trigger(args_trigger, caplog, capfd):
sleep(5) # Wait for the simulator to settle
MassPnfSim(args_trigger).trigger()
msg = capfd.readouterr()
for instance in range(SIM_INSTANCES):
instance_ip_offset = instance * 16
ip_offset = 2
assert f'Triggering pnf-sim-lw-{instance} instance:' in caplog.text
assert f'PNF-Sim IP: {str(ip_address(IPSTART) + ip_offset + instance_ip_offset)}' in msg.out
assert 'Simulator started' in msg.out
def test_trigger_idempotence(args_trigger, capfd):
MassPnfSim(args_trigger).trigger()
msg = capfd.readouterr()
assert "Cannot start simulator since it's already running" in msg.out
assert 'Simulator started' not in msg.out
def test_trigger_custom(args_trigger_custom, caplog, capfd):
MassPnfSim(args_trigger_custom).trigger_custom()
msg = capfd.readouterr()
for instance in range(SIM_INSTANCES):
instance_ip_offset = instance * 16
ip_offset = 2
assert f'Triggering pnf-sim-lw-{instance} instance:' in caplog.text
assert f'PNF-Sim IP: {str(ip_address(IPSTART) + ip_offset + instance_ip_offset)}' in msg.out
assert 'Simulator started' not in msg.out
assert "Cannot start simulator since it's already running" in msg.out
|