hackedteam/test-av2

View on GitHub
AVCommon/commands/meta/REPORT.py

Summary

Maintainability
A
0 mins
Test Coverage
__author__ = 'zeno'

from AVCommon.logger import logging
import time

from AVCommon import command
from AVCommon.procedure import Procedure

def execute(vm, protocol, mon_args):
    """ client side, returns (bool,*) """
    logging.debug("    SET %s" % str(mon_args))

    assert vm, "null vm"
    assert command.context is not None

    assert isinstance(mon_args, list), "VM expects a list"

    assert protocol
    assert protocol.procedure

    logging.debug("insert report init")

    command_list = []

    command_list.append("REPORT_INIT")
    for proc_token in mon_args:

        report_args = []
        if isinstance(proc_token, basestring):
            proc_name = proc_token
        elif isinstance(proc_token, dict):
            assert len(proc_token.keys()) == 1
            proc_name = proc_token.keys()[0]
            report_args = proc_token[proc_name]
        else:
            return False, "Error parsing"

        logging.debug("insert report kind: %s args: %s" % (proc_name, report_args))
        command_list.append(["REPORT_KIND_INIT", None, (proc_name)])
        command_list.append(["CALL", None, (proc_name)])
        command_list.append(["REPORT_KIND_END", None, (proc_name, report_args)])

    command_list.append("REPORT_END")

    proc = Procedure("_REPORT", command_list)
    protocol.procedure.insert(proc)

    #logging.debug("procedure: %s" % (protocol.procedure.command_list))
    #logging.debug("report items: %s" % (command.context))
    return True, "REPORT"