Example #1
0
def profile(shell, queries, timeout=0, count=1, rounds=1):
    report = {}
    for name, query in queries.iteritems():
        forced = True if name == "force" else False
        if not forced:
            print("Profiling query: %s" % query)
        results = {}
        for i in range(rounds):
            if forced:
                result = utils.profile_cmd(shell, shell=True,
                    timeout=timeout, count=count)
            else:
                result = run_query(shell, query, timeout=timeout, count=count)
            summary(
                {"%s (%d/%d)" % (name, i + 1, rounds): result}, display=True)
            # Store each result round to return an average.
            for k, v in result.iteritems():
                results[k] = results.get(k, [])
                results[k].append(v)
        average_results = {}
        for k in results:
            average_results[k] = sum(results[k]) / len(results[k])
        report[name] = average_results
        if rounds > 1:
            summary({"%s   avg" % name: report[name]}, display=True)
    return report
Example #2
0
def run_query(shell, query, timeout=0, count=1):
    """Execute the osqueryi shell in profile mode with a setup/teardown delay."""
    start_time = time.time()
    return utils.profile_cmd(
        [shell, "--profile",
         str(count), "--profile_delay", "1", query],
        timeout=timeout,
        count=count)
Example #3
0
def run_query(shell, query, timeout=0, count=1):
    """Execute the osqueryi shell in profile mode with a setup/teardown delay."""
    start_time = time.time()
    return utils.profile_cmd([
        shell,
        "--profile",
        str(count),
        "--profile_delay",
        "1",
        query
    ], timeout=timeout, count=count)
Example #4
0
def run_query(shell, query, timeout=0, count=1):
    """Execute the osquery run testing wrapper with a setup/teardown delay."""
    start_time = time.time()
    proc = subprocess.Popen(
        [shell, "--query", query, "--iterations", str(count),
            "--delay", "1"],
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    return utils.profile_cmd([
        shell,
        "--query",
        query,
        "--iterations",
        str(count),
        "--delay",
        "1"
    ])