From f0190dd42eb489d83270d5f698d0ab037f513db7 Mon Sep 17 00:00:00 2001 From: Bartek Grzybowski Date: Mon, 25 May 2020 06:25:15 -0700 Subject: Add functional tests for verifying simulator services status Status is verified after each lifecycle change for proper subcommand action. Change-Id: Ia1c0e1bce24ddf1ca2c805a420e4a0665412aedf Issue-ID: INT-1577 Signed-off-by: Bartek Grzybowski --- test/mocks/mass-pnf-sim/conftest.py | 9 +++++++++ test/mocks/mass-pnf-sim/test_lifecycle.py | 26 +++++++++++++++++++++++++- test/mocks/mass-pnf-sim/test_settings.py | 1 + test/mocks/mass-pnf-sim/tox.ini | 1 + 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/test/mocks/mass-pnf-sim/conftest.py b/test/mocks/mass-pnf-sim/conftest.py index 3323440da..265813331 100644 --- a/test/mocks/mass-pnf-sim/conftest.py +++ b/test/mocks/mass-pnf-sim/conftest.py @@ -1,6 +1,7 @@ import MassPnfSim import pytest from test_settings import * # pylint: disable=W0614 +from docker import from_env @pytest.fixture(scope="module") def parser(): @@ -36,3 +37,11 @@ def args_trigger_custom(parser): @pytest.fixture def args_clean(parser): return parser.parse_args(['clean']) + +@pytest.fixture +def docker_containers(): + docker_client = from_env() + container_list = [] + for container in docker_client.containers.list(): + container_list.append(container.attrs['Name'][1:]) + return container_list diff --git a/test/mocks/mass-pnf-sim/test_lifecycle.py b/test/mocks/mass-pnf-sim/test_lifecycle.py index dc1160c75..581b022b3 100644 --- a/test/mocks/mass-pnf-sim/test_lifecycle.py +++ b/test/mocks/mass-pnf-sim/test_lifecycle.py @@ -60,6 +60,13 @@ def test_bootstrap(args_bootstrap, parser, caplog): start_port += 2 print(yml['ippnfsim']) +def test_bootstrap_status(args_status, capfd): + 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 + def test_start(args_start, caplog, capfd): MassPnfSim(args_start).start() msg = capfd.readouterr() @@ -71,6 +78,15 @@ 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): + 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 f"{PNF_SIM_CONTAINER_NAME}{instance}" in docker_containers + def test_start_idempotence(args_start, capfd): '''Verify start idempotence''' MassPnfSim(args_start).start() @@ -79,7 +95,6 @@ def test_start_idempotence(args_start, capfd): 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): @@ -90,6 +105,15 @@ def test_trigger(args_trigger, caplog, capfd): assert 'Simulator started' in msg.out caplog.clear() +def test_trigger_status(args_status, capfd): + 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 'Up' in msg.out + assert 'Exit' not in msg.out + def test_trigger_idempotence(args_trigger, capfd): MassPnfSim(args_trigger).trigger() msg = capfd.readouterr() diff --git a/test/mocks/mass-pnf-sim/test_settings.py b/test/mocks/mass-pnf-sim/test_settings.py index 990a915ca..a16046ce4 100644 --- a/test/mocks/mass-pnf-sim/test_settings.py +++ b/test/mocks/mass-pnf-sim/test_settings.py @@ -4,3 +4,4 @@ IPFILESERVER = '127.0.0.1' TYPEFILESERVER = 'sftp' IPSTART = '10.11.0.1' INSTANCE_CONFIG = 'config/config.yml' +PNF_SIM_CONTAINER_NAME = 'pnf-simulator-' diff --git a/test/mocks/mass-pnf-sim/tox.ini b/test/mocks/mass-pnf-sim/tox.ini index aaa0d7a07..afa54589f 100644 --- a/test/mocks/mass-pnf-sim/tox.ini +++ b/test/mocks/mass-pnf-sim/tox.ini @@ -6,6 +6,7 @@ basepython = python3 deps = pytest pyyaml + docker commands = pytest -v [testenv:MassPnfSim-runtime] -- cgit 1.2.3-korg