corosync-config-parser 0.1.0

A Rust crate for hassle-free Corosync's configuration file parsing
Documentation
extern crate corosync_config_parser;

#[test]
fn test_parse_example_file() {
    let corosync_example = "
        logging {
            fileline: off
            to_stderr: no
            to_logfile: no
            logfile: /var/log/cluster/corosync.log
            to_syslog: yes
            debug: off
            timestamp: on
            logger_subsys {
                    subsys: QUORUM
                    debug: off
            }
        }
    "
    .to_string();

    let cfg = corosync_config_parser::parse(corosync_example).unwrap();
    assert_eq!(cfg.name(), "");
    assert_eq!(cfg.len(), 0);
    let subsys = cfg
        .matching("logging")
        .nth(0)
        .unwrap()
        .matching("logger_subsys")
        .nth(0)
        .unwrap()
        .matching("subsys")
        .nth(0)
        .unwrap()
        .get(0);
    assert_eq!(subsys, "QUORUM");
}

#[test]
fn test_datapath_get() {
    let corosync_example = "
        logging {
            fileline: off
            to_stderr: no
            to_logfile: no
            logfile: /var/log/cluster/corosync.log
            to_syslog: yes
            debug: off
            timestamp: on
            logger_subsys {
                    subsys: QUORUM
                    debug: off
            }
        }
    "
    .to_string();

    let cfg = corosync_config_parser::parse(corosync_example).unwrap();
    let subsys = cfg.path(vec!["logging", "logger_subsys", "subsys"]);
    assert_eq!(subsys, Some("QUORUM"));
}