aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtest/mocks/mass-pnf-sim/MassPnfSim.py28
-rw-r--r--test/mocks/mass-pnf-sim/test_lifecycle.py23
2 files changed, 37 insertions, 14 deletions
diff --git a/test/mocks/mass-pnf-sim/MassPnfSim.py b/test/mocks/mass-pnf-sim/MassPnfSim.py
index f932c8286..d10686710 100755
--- a/test/mocks/mass-pnf-sim/MassPnfSim.py
+++ b/test/mocks/mass-pnf-sim/MassPnfSim.py
@@ -10,7 +10,7 @@ from json import dumps
from yaml import load, SafeLoader
from glob import glob
from docker import from_env
-from requests import get
+from requests import get, codes
from requests.exceptions import MissingSchema, InvalidSchema, InvalidURL, ConnectionError, ConnectTimeout
def validate_url(url):
@@ -107,6 +107,9 @@ class MassPnfSim:
log_lvl = logging.INFO
sim_config = 'config/config.yml'
+ sim_port = 5000
+ sim_base_url = 'http://{}:' + str(sim_port) + '/simulator'
+ sim_container_name = 'pnf-simulator'
def __init__(self, args):
self.args = args
@@ -114,6 +117,7 @@ class MassPnfSim:
self.logger.setLevel(self.log_lvl)
self.sim_dirname_pattern = "pnf-sim-lw-"
self.mvn_build_cmd = 'mvn clean package docker:build -Dcheckstyle.skip'
+ self.docker_compose_status_cmd = 'docker-compose ps'
self.existing_sim_instances = self._enum_sim_instances()
# Validate 'trigger_custom' subcommand options
@@ -250,9 +254,27 @@ class MassPnfSim:
def start(self):
pass
- @_MassPnfSim_Decorators.do_action('Getting', './simulator.sh status')
def status(self):
- pass
+ if not self.args.count:
+ iter_range = [self.existing_sim_instances]
+ else:
+ iter_range = [self.args.count]
+ for i in range(*iter_range):
+ self.logger.info(f'Getting {self.sim_dirname_pattern}{i} instance status:')
+ if f"{self.sim_container_name}-{i}" in self._get_docker_containers():
+ try:
+ sim_ip = self._get_sim_instance_data(i)
+ self.logger.info(f' PNF-Sim IP: {sim_ip}')
+ self._run_cmd(self.docker_compose_status_cmd, f"{self.sim_dirname_pattern}{i}")
+ sim_response = get('{}/status'.format(self.sim_base_url).format(sim_ip))
+ if sim_response.status_code == codes.ok:
+ self.logger.info(sim_response.text)
+ else:
+ self.logger.error(f'Simulator request returned http code {sim_response.status_code}')
+ except KeyError:
+ self.logger.error(f'Unable to get sim instance IP from {self.sim_config}')
+ else:
+ self.logger.info(' Simulator containers are down')
@_MassPnfSim_Decorators.do_action('Stopping', './simulator.sh stop')
def stop(self):
diff --git a/test/mocks/mass-pnf-sim/test_lifecycle.py b/test/mocks/mass-pnf-sim/test_lifecycle.py
index 581b022b3..c61b72dd1 100644
--- a/test/mocks/mass-pnf-sim/test_lifecycle.py
+++ b/test/mocks/mass-pnf-sim/test_lifecycle.py
@@ -60,12 +60,12 @@ def test_bootstrap(args_bootstrap, parser, caplog):
start_port += 2
print(yml['ippnfsim'])
-def test_bootstrap_status(args_status, capfd):
+def test_bootstrap_status(args_status, caplog):
MassPnfSim(args_status).status()
- msg = capfd.readouterr()
for _ in range(SIM_INSTANCES):
- assert 'Simulator containers are down' in msg.out
- assert 'Simulator response' not in msg.out
+ assert 'Simulator containers are down' in caplog.text
+ assert 'Simulator response' not in caplog.text
+ caplog.clear()
def test_start(args_start, caplog, capfd):
MassPnfSim(args_start).start()
@@ -78,14 +78,14 @@ def test_start(args_start, caplog, capfd):
assert 'Starting simulator containers' in msg.out
caplog.clear()
-def test_start_status(args_status, docker_containers, capfd):
+def test_start_status(args_status, docker_containers, caplog):
sleep(5) # Wait for the simulator to settle
MassPnfSim(args_status).status()
- msg = capfd.readouterr()
for instance in range(SIM_INSTANCES):
- assert '"simulatorStatus":"NOT RUNNING"' in msg.out
- assert '"simulatorStatus":"RUNNING"' not in msg.out
+ assert '"simulatorStatus":"NOT RUNNING"' in caplog.text
+ assert '"simulatorStatus":"RUNNING"' not in caplog.text
assert f"{PNF_SIM_CONTAINER_NAME}{instance}" in docker_containers
+ caplog.clear()
def test_start_idempotence(args_start, capfd):
'''Verify start idempotence'''
@@ -105,14 +105,15 @@ def test_trigger(args_trigger, caplog, capfd):
assert 'Simulator started' in msg.out
caplog.clear()
-def test_trigger_status(args_status, capfd):
+def test_trigger_status(args_status, capfd, caplog):
MassPnfSim(args_status).status()
msg = capfd.readouterr()
for _ in range(SIM_INSTANCES):
- assert '"simulatorStatus":"RUNNING"' in msg.out
- assert '"simulatorStatus":"NOT RUNNING"' not in msg.out
+ assert '"simulatorStatus":"RUNNING"' in caplog.text
+ assert '"simulatorStatus":"NOT RUNNING"' not in caplog.text
assert 'Up' in msg.out
assert 'Exit' not in msg.out
+ caplog.clear()
def test_trigger_idempotence(args_trigger, capfd):
MassPnfSim(args_trigger).trigger()