use flowparser_sflow::SflowParser;
fn parse(hex: &str) -> flowparser_sflow::ParseResult {
let data = hex::decode(hex).expect("invalid hex");
SflowParser::default().parse_bytes(&data)
}
#[test]
fn snapshot_vm_counters() {
// Agent 10.0.0.20, sub_agent=100000, seq=1685010
// Counter sample with: HostAdapters, VirtDiskIo, VirtMemory, VirtCpu(Blocked),
// VirtNetIo, HostParent, HostDescr(XenServer DDK)
let result = parse(
"00000005000000010a000014000186a00019b612fb66239800000001000000020000011c000337c9030186ab00000007000007d1000000140000000100000012000000014eac6de5ba490000000008370000003400000000000000000000000000000000000000000000000000001af70000000005253400001cb8c800000001d394f000000000000000083600000010000000001fc000000000000020000000000008350000000c0000000200e34e4d000000010000083800000028000000000000039600000013000000000000000000000000961fcb2c024004730000000000000000000007d2000000080000000200000001000007d0000000440000002158656e5365727665722044444b20362e312e302d35393233357020696d706f7274000000714c24e88f4abf1faaf4d4abd6b7e59a000000000000000000000000",
);
assert!(result.error.is_none(), "parse error: {:?}", result.error);
insta::assert_yaml_snapshot!(result);
}
#[test]
fn snapshot_host_counters() {
// Agent 10.0.0.151, sub_agent=100000, seq=91043
// Counter sample with: HostAdapters, HostDiskIo, HostMemory, HostCpu(f32 loads),
// HostNetIo, HostDescr(X86_64, Linux)
let result = parse(
"00000005000000010a000097000186a0000163a36c87eb980000000100000002000001b0000163a30200000100000006000007d10000004400000004000000010000000100000000000000000000000200000001f229017058250000000000030000000162f6cff12d34000000000006000000010a00009700000000000007d50000003400000003606a380000000002b661780000000a9200026f0800000000854e1400004f60d400526a460000000a7c12e0000e5a0cd0000007d4000000480000000040000000000000000576a0000000000000000000000000000bc5300000000000213e10000000000081ffe0000000000081ff40000010c71c014f825c000000000000000b000007d3000000443ca3d70a3d23d70a000000000000000000000056000000010000051100405d990038dee800763d880097a07cf576a5e800766588000000000002a8823f33e5d6176a429a000007d60000002800000013beaa68e7340603ba0000000000000000000000144f55b3db2f4503500000000000000000000007d0000000480000001378656e766d322e73662e696e6d6f6e2e636f6d00e9d0e08751c7429e98414439db35f3be000000030000000200000011322e362e31382d3139342e656c3578656e000000",
);
assert!(result.error.is_none(), "parse error: {:?}", result.error);
insta::assert_yaml_snapshot!(result);
}
#[test]
fn snapshot_jvm_counters() {
// Agent 10.0.0.160, sub_agent=6343, seq=406
// Counter sample with: HostDescr, HostParent, VirtCpu(Running),
// VirtMemory, JmxRuntime, JvmStatistics
let result = parse(
"00000005000000010a0000a0000018c700000196007c51e400000001000000020000015000000196030018c700000006000007d000000034000000096a766d2d696e6d736600000000000000000000000000000000000000000000000000000d00000008312e362e305f3138000007d2000000080000000200000001000008350000000c000000010002bf7a000000020000083600000010000000000ef610000000000062a400000000083900000050000000214a61766120486f7453706f7428544d292036342d4269742053657276657220564d0000000000001553756e204d6963726f73797374656d7320496e632e0000000000000831362e302d6231330000083a0000006c00000000000000000000000001e562b80000000009461000000000005cf400000000000001730000000000000401f5e00000000005b0000000000000084000000000002f00000f4000001e210000206100000240000116110000002200000016000005490000004d00000400",
);
assert!(result.error.is_none(), "parse error: {:?}", result.error);
insta::assert_yaml_snapshot!(result);
}
#[test]
fn snapshot_xen_vif() {
// Agent 10.0.0.239, sub_agent=2684354570
// 9 ExpandedCounter samples, each with XenVif + GenericInterface
let result = parse(
"00000005000000010a0000efa000000a00000088007b94b800000009000000040000008c00000088000000000000000100000002010cc00200000014000000010a0000a0000000050000003c00000000000000010000005800000001000000750000000005f5e10000000000000000030000000097f3e7d2bbbd52e201d4386e000000000000000000000000000000000000000094bb2aaeccf57b42008f2b3800000000000000000000000000000000000000040000008c00000088000000000000000200000002010cc00200000014000000010a0000a0000000050000003c0000000000000001000000580000000200000075000000003b9aca00000000000000000300000000ed53580837af33c10014cc24000000000000000500000000000000000000000078eada8c33c4b17f01c3a02800000000000000000000000000000000000000040000008c00000088000000000000000300000002010cc00200000014000000010a0000a0000000050000003c0000000000000001000000580000000300000075000000003b9aca00000000000000000300000000a28c15cb955b444700783b490000000000000004000000000000000000000000b8795ec787f6978101eb24b300000000000000000000000000000000000000040000008c00000088000000000000000400000002010cc00200000014000000010a0000a0000000050000003c000000000000000100000058000000040000007500000000000000000000000000000001000000000000a5300000013700000035000000000000000500000000000000000000000000014720000001200000004f00000000000000000000000000000000000000040000008c00000088000000000000000500000002010cc00200000014000000010a0000a0000000050000003c00000000000000010000005800000005000000750000000000000000000000000000000100000000004dbcd100001c990000003b0000000000000005000000000000000000000000001b671700001ed300001ecf00000000000000000000000000000000000000040000008c00000088000000000000000600000002010cc00200000014000000010a0000a0000000050000003c000000000000000100000058000000060000007500000000000000000000000000000001000000000000103f0000000000000025000000000000000500000000000000000000000000000088000000000000000100000000000000000000000000000000000000040000008c00000088000000000000000700000002010cc00200000014000000010a0000a0000000050000003c00000000000000010000005800000007000000750000000000000000000000000000000100000000000042e80000000000000053000000000000000500000000000000000000000000000088000000000000000100000000000000000000000000000000000000040000008c00000088000000000000000800000002010cc00200000014000000010a0000a0000000050000003c000000000000000100000058000000080000007500000000000000000000000000000001000000000002cf25000002f0000001ce00000000000000090000000000000000000000000007daf4000002c70000000700000000000000000000000000000000000000040000008c00000088000000000000001900000002010cc00200000014000000010a0000a0000000050000003c000000000000000100000058000000190000000100000000000000000000000000000003000000009f18351e001758d2023791a90000000000000000000000000000000000000000318cfa2800175e430005fef900000000000000000000000000000000",
);
assert!(result.error.is_none(), "parse error: {:?}", result.error);
insta::assert_yaml_snapshot!(result);
}
#[test]
fn snapshot_virt_node_host() {
// Agent 10.0.0.20, sub_agent=100000, seq=1685012
// Counter sample with: VirtNode, HostAdapters, HostDiskIo, HostMemory,
// HostCpu(f32 loads), HostNetIo, HostDescr(X86, Linux)
let result = parse(
"00000005000000010a000014000186a00019b614fb662f500000000100000002000001f8000337c90200000100000007000008340000001c000005110000000200000001f7f2e000000000009dc9b00000000008000007d10000006400000006000000010000000100000000000000000000000200000001d8d385af9f8400000000000500000001d8d385af9f8400000000000400000001002655e2fd9500000000000600000001002655e2fd9500000000000700000001002655e2fd940000000007d50000003400000000fbfb00000000000064328000000017870011b0e20000000b23f7b600009650140133e1d1000000279874ae0010e42a72000007d400000048000000002ea8000000000000016db00000000000000000000000000009e26000000000000efae000000000001fffe000000000001fffa00002c9ee9607e87d9c0000000000000004000007d3000000443ca3d70a3cf5c28f0000000000000000000000fa000000020000051100405dbe02deb9ba0000163001990678f0e97af400bef6fe000000000009f40c40547ccd61288c8b000007d6000000280000001e328e62b311d97d5500000000000002af0000003002fccd951e2dc0c10000000000000000000007d00000004c0000000a78656e7365727665723100001e3bd5001dd211b28000d8d385af9f84000000020000000200000020322e362e33322e34332d302e342e312e7873312e362e31302e3733342e313730",
);
assert!(result.error.is_none(), "parse error: {:?}", result.error);
insta::assert_yaml_snapshot!(result);
}