From 28ef229584b4fd1a358298984f0d07cff2170c21 Mon Sep 17 00:00:00 2001 From: Luke Hinds Date: Tue, 16 Aug 2016 10:13:44 +0100 Subject: Merging Internet Connection check Issues were found with FDIO repo in Apex, so to prevent other connectivity issues from having an adverse effect on functest run times, this patch adds a check to insure the connection works correctly, but creating a socket connection to port 80 on google.com Change-Id: If6841ee81e19996d3640a4551b1fac2770401da8 Signed-off-by: Luke Hinds --- scripts/internet_check.py | 25 +++++++++++++++++++++++ security_scan.py | 52 +++++++++++++++++++++++++++++++++-------------- 2 files changed, 62 insertions(+), 15 deletions(-) create mode 100644 scripts/internet_check.py diff --git a/scripts/internet_check.py b/scripts/internet_check.py new file mode 100644 index 0000000..1bed50a --- /dev/null +++ b/scripts/internet_check.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# +# Copyright (c) 2016 Red Hat +# Luke Hinds (lhinds@redhat.com) +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Performs simple connection check, falls to default timeout of 10 seconds + +import socket + +TEST_HOST = "google.com" + + +def is_connected(): + try: + host = socket.gethostbyname(TEST_HOST) + socket.create_connection((host, 80), 2) + return True + except: + return False +print is_connected() diff --git a/security_scan.py b/security_scan.py index d39c290..36b7954 100644 --- a/security_scan.py +++ b/security_scan.py @@ -73,21 +73,27 @@ def run_tests(host, nodetype): port = cfgparse.get(nodetype, 'port') connect.logger.info("Host: {0} Selected Profile: {1}".format(host, nodetype)) - connect.logger.info("Creating temp file structure..") - createfiles(host, port, user, localkey) - connect.logger.info("Installing OpenSCAP...") - install_pkg(host, port, user, localkey) - connect.logger.info("Running scan...") - run_scanner(host, port, user, localkey, nodetype) - clean = cfgparse.get(nodetype, 'clean') - connect.logger.info("Post installation tasks....") - post_tasks(host, port, user, localkey, nodetype) - if clean: - connect.logger.info("Cleaning down environment....") - connect.logger.info("Removing OpenSCAP....") - removepkg(host, port, user, localkey, nodetype) - connect.logger.info("Deleting tmp file and reports (remote)...") - cleandir(host, port, user, localkey, nodetype) + connect.logger.info("Checking internet for package installation...") + if internet_check(host, nodetype): + connect.logger.info("Internet Connection OK.") + connect.logger.info("Creating temp file structure..") + createfiles(host, port, user, localkey) + connect.logger.info("Installing OpenSCAP...") + install_pkg(host, port, user, localkey) + connect.logger.info("Running scan...") + run_scanner(host, port, user, localkey, nodetype) + clean = cfgparse.get(nodetype, 'clean') + connect.logger.info("Post installation tasks....") + post_tasks(host, port, user, localkey, nodetype) + if clean: + connect.logger.info("Cleaning down environment....") + connect.logger.info("Removing OpenSCAP....") + removepkg(host, port, user, localkey, nodetype) + connect.logger.info("Deleting tmp file and reports (remote)...") + cleandir(host, port, user, localkey, nodetype) + else: + connect.logger.error("Internet timeout. Moving on to next node..") + pass def nova_iterate(): @@ -106,6 +112,22 @@ def nova_iterate(): run_tests(host, nodetype) +def internet_check(host, nodetype): + import connect + user = cfgparse.get(nodetype, 'user') + port = cfgparse.get(nodetype, 'port') + localpath = functest_dir + 'scripts/internet_check.py' + remotepath = '/tmp/internet_check.py' + com = 'python /tmp/internet_check.py' + testconnect = connect.ConnectionManager(host, port, user, localkey, + localpath, remotepath, com) + connectionresult = testconnect.remotescript() + if connectionresult.rstrip() == 'True': + return True + else: + return False + + def createfiles(host, port, user, localkey): import connect global tmpdir -- cgit 1.2.3-korg