示例#1
0
def main(args):
    lsof_file = args['<FILE>']

    print("Finding most popular PID...")
    files = None
    with open(lsof_file, "r") as lsof_output:
        files = px_file.lsof_to_files(lsof_output.read(),
                                      px_ipc_map.FILE_TYPES, None)
    pid = get_most_common_pid(files)
    print("Most popular PID: {}".format(pid))

    end = time.time() + DURATION_S
    lap_number = 0
    load_times = []
    mapping_times = []
    total_times = []
    while time.time() < end:
        lap_number += 1
        print("Lap {}, {:.0f}s left...".format(lap_number, end - time.time()))
        load_time, mapping_time = get_timings(lsof_file, pid)
        load_times.append(load_time)
        mapping_times.append(mapping_time)
        total_times.append(load_time + mapping_time)

    print_statistics("Loading time", load_times)
    print_statistics("Mapping time", mapping_times)
    print_statistics("  Total time", total_times)
示例#2
0
def test_lsof_to_files():
    lsof = ""

    lsof += '\0'.join(["p123", "\n"])
    lsof += '\0'.join(["fcwd", "a ", "tDIR", "n/", "\n"])
    lsof += '\0'.join(["f5", "ar", "tREG", "ncontains\nnewline", "\n"])
    lsof += '\0'.join(["f6", "aw", "tREG", "d0x42", "n/somefile", "\n"])
    lsof += '\0'.join(["p456", "\n"])
    lsof += '\0'.join(["f7", "au", "tREG", "n/someotherfile", "\n"])
    lsof += '\0'.join(["f7", "a ", "n(revoked)", "\n"])

    files = px_file.lsof_to_files(lsof, None, None)

    assert len(files) == 5

    assert files[0].pid == 123
    assert files[0].access is None
    assert files[0].device is None
    assert files[0].device_number() is None
    assert files[0].type == "DIR"
    assert files[0].name == "/"
    assert str(files[0]) == "[DIR] /"

    assert files[1].pid == 123
    assert files[1].access == "r"
    assert files[1].device is None
    assert files[1].device_number() is None
    assert files[1].type == "REG"
    assert files[1].name == "contains\nnewline"
    assert str(files[1]) == "contains\nnewline"

    assert files[2].pid == 123
    assert files[2].access == "w"
    assert files[2].device == "0x42"
    assert files[2].device_number() == 0x42
    assert files[2].type == "REG"
    assert files[2].name == "/somefile"
    assert str(files[2]) == "/somefile"

    assert files[3].pid == 456
    assert files[3].access == "rw"
    assert files[3].device is None
    assert files[3].device_number() is None
    assert files[3].type == "REG"
    assert files[3].name == "/someotherfile"
    assert str(files[3]) == "/someotherfile"

    assert files[4].pid == 456
    assert files[4].access is None
    assert files[4].device is None
    assert files[4].device_number() is None
    assert files[4].type == "??"
    assert files[4].name == "(revoked)"
    assert str(files[4]) == "[??] (revoked)"
示例#3
0
def test_get_ipc_map_2():
    """Tyre kick IpcMap with some real world data"""
    files = None
    my_dir = os.path.dirname(__file__)
    with open(os.path.join(my_dir, "lsof-test-output-linux-2.txt"), "r") as lsof_output:
        files = px_file.lsof_to_files(lsof_output.read(), None, None)

    ipc_map = testutils.create_ipc_map(777, files)
    keys = list(ipc_map.keys())
    assert len(keys) == 1

    peer0 = keys[0]
    assert len(ipc_map[peer0]) == 4
示例#4
0
def get_timings(file, pid):
    """
    Loads file and creates an IPC map for PID.

    Returns timings in a tuple (load, mapping) in seconds.
    """
    t0 = time.time()
    files = None
    with open(file, "r") as lsof_output:
        files = px_file.lsof_to_files(lsof_output.read(), px_ipc_map.FILE_TYPES, pid)
    t1 = time.time()
    dt_load = t1 - t0

    t0 = time.time()
    testutils.create_ipc_map(pid, files)
    t1 = time.time()
    dt_mapping = t1 - t0

    return (dt_load, dt_mapping)
示例#5
0
def lsof_to_file(shard_array):
    return px_file.lsof_to_files('\0'.join(shard_array + ["\n"]), None,
                                 None)[0]