Add functional tests for bootstrap commands 86/108186/2
authorBartek Grzybowski <b.grzybowski@partner.samsung.com>
Mon, 25 May 2020 08:06:25 +0000 (01:06 -0700)
committerMorgan Richomme <morgan.richomme@orange.com>
Mon, 25 May 2020 14:06:11 +0000 (14:06 +0000)
Change-Id: Idb816780206f8b3b7a14128b7fd4603c4977ce11
Issue-ID: INT-1577
Signed-off-by: Bartek Grzybowski <b.grzybowski@partner.samsung.com>
test/mocks/mass-pnf-sim/test_lifecycle.py [new file with mode: 0644]

diff --git a/test/mocks/mass-pnf-sim/test_lifecycle.py b/test/mocks/mass-pnf-sim/test_lifecycle.py
new file mode 100644 (file)
index 0000000..c3ef1ee
--- /dev/null
@@ -0,0 +1,60 @@
+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
+
+# 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'])