fn test_rfc5424()

in src/flowgger/decoder/rfc5424_decoder.rs [236:269]


fn test_rfc5424() {
    let msg = r#"<23>1 2015-08-05T15:53:45.637824Z testhostname appname 69 42 [origin@123 software="te\st sc\"ript" swVersion="0.0.1"] test message"#;
    let res = RFC5424Decoder.decode(msg).unwrap();
    assert!(res.facility.unwrap() == 2);
    assert!(res.severity.unwrap() == 7);
    assert!(res.ts == 1438790025.637824);
    assert!(res.hostname == "testhostname");
    assert!(res.appname == Some("appname".to_owned()));
    assert!(res.procid == Some("69".to_owned()));
    assert!(res.msgid == Some("42".to_owned()));
    assert!(res.msg == Some("test message".to_owned()));
    let sd_vec = res.sd.unwrap();
    assert!(sd_vec.len() == 1);
    let sd = &sd_vec[0];
    assert!(sd.sd_id == Some("origin@123".to_owned()));
    let pairs = &sd.pairs;

    assert!(pairs
        .iter()
        .cloned()
        .any(|(k, v)| if let SDValue::String(v) = v {
            k == "_software" && v == "te\\st sc\"ript"
        } else {
            false
        }));
    assert!(pairs
        .iter()
        .cloned()
        .any(|(k, v)| if let SDValue::String(v) = v {
            k == "_swVersion" && v == "0.0.1"
        } else {
            false
        }));
}