def test_read_all_in_wrong_order(): data = read_data("atop_1_26_debian8_x86_64.log") stream = io.BytesIO(data) reader = atop_raw.create_reader(stream) for record in reader.records: record.pstats record.header record.sstat
def test_processutils(): data = read_data("atop_1_26_debian8_x86_64.log") stream = io.BytesIO(data) reader = atop_raw.create_reader(stream) for record in reader.records: report = utils.ProcessReport(reader, record.sstat) for pstat in record.pstats: cpu = report.get_cpu_percent(pstat) mem = report.get_mem_percent(pstat) assert cpu == pytest.approx(0.00742272, abs=0.0001) assert mem == pytest.approx(0.03105252, abs=0.0001) break break
def process(options): cmd_filters = options.cmd_filter[0].split(",") print(cmd_filters) data = Data() for filename in options.filenames: with open(filename, "rb") as stream: print(f"Extract {filename}") reader = atop_raw.create_reader(stream) for record in reader.records: print("-", record.curtime) # print(record.sstat) sstat = record.sstat report = ProcessReport(reader, sstat) for pstat in record.pstats: cmd = normalize_str(pstat["gen"]["cmdline"]) for f in cmd_filters: if f in cmd: must_be_recorded = True break else: must_be_recorded = False if must_be_recorded: name = normalize_str(pstat["gen"]["name"]) pid = pstat["gen"]["pid"] mem = report.get_mem_percent(pstat) cpu = report.get_cpu_percent(pstat) process = ProcessMeasure( pid=pid, cmd=cmd, name=name, cpu=cpu, mem=mem, date=record.curtime, ) data.add(process) return data
def normalize_str(data): if isinstance(data, bytes): return data.decode("ascii") return data if len(sys.argv) == 1: raise RuntimeError("An atop file (at least) is expected") filenames = sys.argv[1:] for filename in filenames: with open(filename, "rb") as stream: print("=====================") print(f"{filename}") print("=====================") reader = atop_raw.create_reader(stream) print(reader.header) for record in reader.records: print() # print(record.header) # print(record.sstat) sstat = record.sstat report = ProcessReport(reader, sstat) for pstat in record.pstats: cmd = normalize_str(pstat["gen"]["cmdline"]) name = normalize_str(pstat["gen"]["name"]) pid = pstat["gen"]["pid"] mem = report.get_mem_percent(pstat)
def test_skip_all_records(): data = read_data("atop_1_26_debian8_x86_64.log") stream = io.BytesIO(data) reader = atop_raw.create_reader(stream) for _record in reader.records: pass