def get_csv_line()

in fiosynth_lib/fio_json_parser.py [0:0]


def get_csv_line(jobname, json, index, data, version_str, serverMode):
    clat = "clat"
    con = 1
    # clat -> clat_ns in version 3.0
    verstr = version_str[version_str.rfind("-") + 1 :]
    fio_version = StrictVersion(verstr)
    v3_version = StrictVersion("3.0")
    if fio_version >= v3_version:
        clat = "clat_ns"
        # convert nanoseconds to microseconds
        con = 1000
    if serverMode:
        # Support for older and newer fio json formats
        options1 = "percentile_list" in json["job options"]
        options2 = "percentile_list" in json["global options"]
    else:
        options1 = "percentile_list" in json["jobs"][0]["job options"]
        options2 = "percentile_list" in json["global options"]
    iotype = ["read", "write", "trim"]
    if options1 or options2:
        percent = [
            "25.000000",
            "50.000000",
            "70.000000",
            "75.000000",
            "90.000000",
            "99.000000",
            "99.900000",
            "99.990000",
            "99.999000",
            "99.999900",
        ]
    else:
        percent = [
            "50.000000",
            "70.000000",
            "90.000000",
            "99.000000",
            "99.900000",
            "99.990000",
            "99.999900",
        ]
    line = [
        jobname,
        data["read"]["iops"],
        data["read"]["bw"],
        data["write"]["iops"],
        data["write"]["bw"],
        data["trim"]["iops"],
        data["trim"]["bw"],
    ]
    for io in iotype:
        line.append(str(data[io][clat]["mean"] / con))
        line.append(str(data[io][clat]["max"] / con))
        if data[io]["iops"] > 0:
            for p in percent:
                if "percentile" in data[io][clat]:
                    line.append(str(data[io][clat]["percentile"][p] / con))
        else:
            for _p in percent:
                line.append(0)
    return line