def METHOD_NAME(config, syslog_ng, input_message, expected_kv_pairs):
    config.add_include("scl.conf")
    generator_source = config.create_example_msg_generator_source(num=1, template=config.stringify(input_message))
    cisco_parser = config.create_cisco_parser()
    file_destination = config.create_file_destination(
        file_name="output.log",
        template=config.stringify("$(format-json --scope everything)" + "\n"),
    )
    config.create_logpath(statements=[generator_source, cisco_parser, file_destination])
    syslog_ng.start(config)
    output_json = json.loads(file_destination.read_log())
    assert output_json["PRI"] == expected_kv_pairs["PRI"]
    assert output_json["HOST"] == expected_kv_pairs["HOST"]
    if "DATE" in expected_kv_pairs.keys():
        assert output_json["DATE"] == expected_kv_pairs["DATE"]
    if "MSEC" in expected_kv_pairs.keys():
        assert output_json["MSEC"] == expected_kv_pairs["MSEC"]
    assert output_json["_cisco"]["facility"] == expected_kv_pairs["_cisco"]["facility"]
    assert output_json["_cisco"]["severity"] == expected_kv_pairs["_cisco"]["severity"]
    assert output_json["_cisco"]["mnemonic"] == expected_kv_pairs["_cisco"]["mnemonic"]
    assert output_json["MSG"] == expected_kv_pairs["MSG"]