-import argparse
import os
import subprocess
import sys
import time
+
+import argparse
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
import paramiko
+from functest.utils.functest_utils import FUNCTEST_REPO as FUNCTEST_REPO
parser = argparse.ArgumentParser()
""" logging configuration """
logger = ft_logger.Logger("ODL_SFC").getLogger()
-REPO_PATH = os.environ['repos_dir'] + '/functest/'
HOME = os.environ['HOME'] + "/"
VM_BOOT_TIMEOUT = 180
# CREATION OF THE 2 SF ####
- tacker_script = "/home/opnfv/repos/functest/testcases/features/sfc/" + \
- TACKER_SCRIPT
+ tacker_script = "%s/testcases/features/sfc/%s" % \
+ (FUNCTEST_REPO, TACKER_SCRIPT)
logger.info("Executing tacker script: '%s'" % tacker_script)
subprocess.call(tacker_script, shell=True)
except:
logger.debug("Problems assigning floating IP to SFs")
+ # If no IPs were obtained, then we cant continue
+ if not ips:
+ logger.error('Failed to obtain IPs, cant continue, exiting')
+ return
+
logger.debug("Floating IPs for SFs: %s..." % ips)
# SSH TO START THE VXLAN_TOOL ON SF1
try:
while 1:
- (stdin, stdout, stderr) = ssh.exec_command("ps lax | grep python")
- if "vxlan_tool.py" in stdout.readlines()[0]:
+ (stdin, stdout, stderr) = ssh.exec_command(
+ "ps aux | grep \"vxlan_tool.py\" | grep -v grep")
+ if len(stdout.readlines()) > 0:
logger.debug("HTTP firewall started")
break
else:
logger.debug("HTTP firewall not started")
time.sleep(3)
- except:
- logger.error("vxlan_tool not started in SF1")
+ except Exception:
+ logger.exception("vxlan_tool not started in SF1")
# SSH TO START THE VXLAN_TOOL ON SF2
try:
try:
while 1:
- (stdin, stdout, stderr) = ssh.exec_command("ps lax | grep python")
- if "vxlan_tool.py" in stdout.readlines()[0]:
+ (stdin, stdout, stderr) = ssh.exec_command(
+ "ps aux | grep \"vxlan_tool.py\" | grep -v grep")
+ if len(stdout.readlines()) > 0:
logger.debug("SSH firewall started")
break
else:
logger.debug("SSH firewall not started")
time.sleep(3)
- except:
- logger.error("vxlan_tool not started in SF2")
+ except Exception:
+ logger.exception("vxlan_tool not started in SF2")
# SSH to modify the classification flows in compute
shell=True,
stdout=subprocess.PIPE)
- # SSH TO EXECUTE cmd_client
+ logger.info("Waiting for 60 seconds before TEST")
+ for j in range(0, 6):
+ logger.info("Test starting in {0} seconds".format(str((6 - j)*10)))
+ time.sleep(10)
+ i = 0
+
+ # SSH TO EXECUTE cmd_client
logger.info("TEST STARTED")
try:
ssh.connect(floatip_client, username="root",
password="opnfv", timeout=2)
command = "nc -w 5 -zv " + instance_ip_2 + " 22 2>&1"
(stdin, stdout, stderr) = ssh.exec_command(command)
+
+ # WRITE THE CORRECT WAY TO DO LOGGING
+ if "timed out" in stdout.readlines()[0]:
+ logger.info('\033[92m' + "TEST 1 [PASSED] "
+ "==> SSH BLOCKED" + '\033[0m')
+ i = i + 1
+ else:
+ logger.error('\033[91m' + "TEST 1 [FAILED] "
+ "==> SSH NOT BLOCKED" + '\033[0m')
+ return
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
# timeout -= 1
- # WRITE THE CORRECT WAY TO DO LOGGING
- i = 0
- if "timed out" in stdout.readlines()[0]:
- logger.info('\033[92m' + "TEST 1 [PASSED] "
- "==> SSH BLOCKED" + '\033[0m')
- i = i + 1
- else:
- logger.error('\033[91m' + "TEST 1 [FAILED] "
- "==> SSH NOT BLOCKED" + '\033[0m')
- return
-
# SSH TO EXECUTE cmd_client
-
try:
ssh.connect(floatip_client, username="root",
password="opnfv", timeout=2)
command = "nc -w 5 -zv " + instance_ip_2 + " 80 2>&1"
(stdin, stdout, stderr) = ssh.exec_command(command)
+
+ if "succeeded" in stdout.readlines()[0]:
+ logger.info('\033[92m' + "TEST 2 [PASSED] "
+ "==> HTTP WORKS" + '\033[0m')
+ i = i + 1
+ else:
+ logger.error('\033[91m' + "TEST 2 [FAILED] "
+ "==> HTTP BLOCKED" + '\033[0m')
+ return
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
# timeout -= 1
- if "succeeded" in stdout.readlines()[0]:
- logger.info('\033[92m' + "TEST 2 [PASSED] "
- "==> HTTP WORKS" + '\033[0m')
- i = i + 1
- else:
- logger.error('\033[91m' + "TEST 2 [FAILED] "
- "==> HTTP BLOCKED" + '\033[0m')
- return
-
# CHANGE OF CLASSIFICATION #
logger.info("Changing the classification")
- tacker_classi = "/home/opnfv/repos/functest/testcases/features/sfc/" + \
- TACKER_CHANGECLASSI
+ tacker_classi = "%s/testcases/features/sfc/%s" % \
+ (FUNCTEST_REPO, TACKER_CHANGECLASSI)
subprocess.call(tacker_classi, shell=True)
+ logger.info("Wait for ODL to update the classification rules in OVS")
+ time.sleep(10)
+
# SSH to modify the classification flows in compute
contr_cmd4 = ("sshpass -p r00tme ssh " + ssh_options + " root@10.20.0.2"
password="opnfv", timeout=2)
command = "nc -w 5 -zv " + instance_ip_2 + " 80 2>&1"
(stdin, stdout, stderr) = ssh.exec_command(command)
+
+ if "timed out" in stdout.readlines()[0]:
+ logger.info('\033[92m' + "TEST 3 [WORKS] "
+ "==> HTTP BLOCKED" + '\033[0m')
+ i = i + 1
+ else:
+ logger.error('\033[91m' + "TEST 3 [FAILED] "
+ "==> HTTP NOT BLOCKED" + '\033[0m')
+ return
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
# timeout -= 1
- if "timed out" in stdout.readlines()[0]:
- logger.info('\033[92m' + "TEST 3 [WORKS] "
- "==> HTTP BLOCKED" + '\033[0m')
- i = i + 1
- else:
- logger.error('\033[91m' + "TEST 3 [FAILED] "
- "==> HTTP NOT BLOCKED" + '\033[0m')
- return
-
# SSH TO EXECUTE cmd_client
-
try:
ssh.connect(floatip_client, username="root",
password="opnfv", timeout=2)
command = "nc -w 5 -zv " + instance_ip_2 + " 22 2>&1"
(stdin, stdout, stderr) = ssh.exec_command(command)
+
+ if "succeeded" in stdout.readlines()[0]:
+ logger.info('\033[92m' + "TEST 4 [WORKS] "
+ "==> SSH WORKS" + '\033[0m')
+ i = i + 1
+ else:
+ logger.error('\033[91m' + "TEST 4 [FAILED] "
+ "==> SSH BLOCKED" + '\033[0m')
+ return
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
# timeout -= 1
- if "succeeded" in stdout.readlines()[0]:
- logger.info('\033[92m' + "TEST 4 [WORKS] "
- "==> SSH WORKS" + '\033[0m')
- i = i + 1
- else:
- logger.error('\033[91m' + "TEST 4 [FAILED] "
- "==> SSH BLOCKED" + '\033[0m')
- return
-
if i == 4:
for x in range(0, 5):
logger.info('\033[92m' + "SFC TEST WORKED"
" :) \n" + '\033[0m')
+ # TODO report results to DB
+ # functest_utils.logger_test_results(logger, "SFC",
+ # "odl-sfc",
+ # status, details)
+ # see doctor, promise, domino, ...
+ # if args.report:
+ # logger.info("Pushing odl-SFC results")
+ # functest_utils.push_results_to_db("functest",
+ # "odl-sfc",
+ # logger,
+ # start_time,
+ # stop_time,
+ # status,
+ # details)
+
sys.exit(0)
if __name__ == '__main__':