Commit 0696cb4a authored by Jan Kiene's avatar Jan Kiene
Browse files

add capturing of eid-xor and network sim cmdlines

parent 366f2495
Loading
Loading
Loading
Loading
Loading
+31 −15
Original line number Diff line number Diff line
@@ -53,6 +53,10 @@ OUTFILE_SCORES = "changes_{}.csv"

PATTERN_ENC = r"... encoder command:\s*(.*)\s*... encoder stdout:"
PATTERN_DEC = r"... decoder command:\s*(.*)\s*... decoder stdout:"
PATTERN_EID = r"eid-xor command:\s*(.*)\s*"
PATTERN_NETSIM = r"netsim command:\s*(.*)\s*"

PATTERNS = [PATTERN_ENC, PATTERN_DEC, PATTERN_EID, PATTERN_NETSIM]


def main(args):
@@ -180,35 +184,47 @@ def get_command_lines_for_testcases(
        if e.tag == "testcase" and e.attrib["name"] in testcases.values
    ]

    cmdlines = {"testcase": [], "enc_cmd": [], "dec_cmd": []}
    cmdlines = {
        "testcase": [],
        "enc_cmd": [],
        "dec_cmd": [],
        "eid-xor_cmd": [],
        "netsim_cmd": [],
    }
    for elem in testcase_elems:
        testcase_name = elem.attrib["name"]
        enc_cmd = ""
        dec_cmd = ""
        eid_cmd = ""
        netsim_cmd = ""
        if (system_out := elem.find("system-out")) is not None:
            enc_cmd, dec_cmd = extract_cmdlines(system_out.text, cwd)
            (
                enc_cmd,
                dec_cmd,
                eid_cmd,
                netsim_cmd,
            ) = extract_cmdlines(system_out.text, cwd)

        cmdlines["testcase"].append(testcase_name)
        cmdlines["enc_cmd"].append(enc_cmd)
        cmdlines["dec_cmd"].append(dec_cmd)
        cmdlines["eid-xor_cmd"].append(eid_cmd)
        cmdlines["netsim_cmd"].append(netsim_cmd)

    return pd.DataFrame(cmdlines)


def extract_cmdlines(text: str, cwd: pathlib.Path) -> Tuple[str, str]:
    enc_cmdline = "<not found>"
    dec_cmdline = "<not found>"

    match_enc = re.search(PATTERN_ENC, text)
    match_dec = re.search(PATTERN_DEC, text)
    if match_enc is not None and match_dec is not None:
        enc_cmdline = match_enc.group(1)
        dec_cmdline = match_dec.group(1)

        enc_cmdline = postprocess_cmdline(enc_cmdline, cwd)
        dec_cmdline = postprocess_cmdline(dec_cmdline, cwd)
def extract_cmdlines(text: str, cwd: pathlib.Path) -> list[str]:
    cmdlines = []
    for p in PATTERNS:
        m = re.search(p, text)
        if m is not None:
            cmdline = postprocess_cmdline(m.group(1), cwd)
            cmdlines.append(cmdline)
        else:
            cmdlines.append("")

    return enc_cmdline, dec_cmdline
    return cmdlines


def postprocess_cmdline(cmdline: str, cwd: pathlib.Path) -> str: