Exemplo n.º 1
0
class Connmon:

    def __init__(self, config):
        self.logger = logging.getLogger('browbeat.Connmon')
        self.config = config
        self.tools = Tools(self.config)
        return None

    # Start connmond
    def start_connmon(self, retry=None):
        self.stop_connmon()
        tool = "connmond"
        connmond = self.tools.find_cmd(tool)
        if not connmond:
            self.logger.error("Unable to find {}".format(tool))
        as_sudo = self.config['connmon']['sudo']
        cmd = ""
        if as_sudo:
            cmd += "sudo "
        cmd += "screen -X -S connmond kill"
        self.tools.run_cmd(cmd)
        self.logger.info("Starting connmond")
        cmd = ""
        cmd += "{} --config /etc/connmon.cfg > /tmp/connmond 2>&1 &".format(
            connmond)
        self.tools.run_cmd(cmd)
        if self.check_connmon_results is False:
            if retry is None:
                self.start_connmon(retry=True)
            else:
                return False
        else:
            return True

    def check_connmon_results(self, result_file='/tmp/connmon_results.csv'):
        return os.path.isfile(result_file)

    # Stop connmond
    def stop_connmon(self):
        self.logger.info("Stopping connmond")
        return self.tools.run_cmd("pkill -9 connmond")

    # Create Connmon graphs
    def connmon_graphs(self, result_dir, test_name):
        cmd = "python graphing/connmonplot.py {}/connmon/{}.csv".format(result_dir,
                                                                        test_name)
        return self.tools.run_cmd(cmd)

    # Move connmon results
    def move_connmon_results(self, result_dir, test_name):
        path = "%s/connmon" % result_dir
        if not os.path.exists(path):
            os.mkdir(path)
        return shutil.move("/tmp/connmon_results.csv",
                           "{}/connmon/{}.csv".format(result_dir, test_name))