File: parse_test.go

package info (click to toggle)
golang-collectd 0.0~git20150630-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 180 kB
  • ctags: 199
  • sloc: makefile: 3
file content (79 lines) | stat: -rw-r--r-- 14,833 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package network // import "collectd.org/network"

import (
	"encoding/hex"
	"testing"
)

func TestParse(t *testing.T) {
	for i, raw := range rawPacketData {
		vl, err := Parse(raw, ParseOpts{})
		if err != nil {
			t.Errorf("%d: got (%v, %v), want nil", i, vl, err)
		}
	}
}

func BenchmarkPackets(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_, err := Parse(rawPacketData[i%len(rawPacketData)], ParseOpts{})
		if err != nil {
			b.Error(err)
		}
	}
}

// Collectd packets captured using Wireshark
var rawPacketData = func() [][]byte {
	strs := []string{
		"0000000e6c6f63616c686f7374000008000c1513676ac3a6e0970009000c00000002800000000002000973776170000004000973776170000005000966726565000006000f00010100000080ff610f420008000c1513676ac3a8fc120004000c737761705f696f0000050007696e000006000f00010200000000000000000008000c1513676ac3a9077d000500086f7574000006000f00010200000000000000000008000c1513676ac3bd2a8c0002000e696e74657266616365000003000965746830000004000e69665f6f63746574730000050005000006001800020202000000000000000000000000000000000008000c1513676ac3bd5a970004000e69665f6572726f7273000006001800020202000000000000000000000000000000000008000c1513676ac3bd7fea000300076c6f000004000e69665f6f6374657473000006001800020202000000000009e79c000000000009e79c0008000c1513676ac3bdaae60003000a776c616e30000006001800020202000000001009fa5400000000011cf6670008000c1513676ac3bdb0e00004000e69665f6572726f7273000006001800020202000000000000000000000000000000000008000c1513676ac3bd3d6d0003000965746830000004000f69665f7061636b657473000006001800020202000000000000000000000000000000000008000c1513676ac3bdae290003000a776c616e300000060018000202020000000000032f8f00000000000205e50008000c1513676ac3bdbb7b0003000c646f636b657230000006001800020202000000000000000000000000000000000008000c1513676ac3bda0db000300076c6f000004000e69665f6572726f7273000006001800020202000000000000000000000000000000000008000c1513676ac3bdbde80003000c646f636b657230000006001800020202000000000000000000000000000000000008000c1513676ac3bd8d8e000300076c6f000004000f69665f7061636b6574730000060018000202020000000000000c9c0000000000000c9c0008000c1513676ac3bdb90b0003000c646f636b657230000004000e69665f6f6374657473000006001800020202000000000000000000000000000000000008000c1513676ac469b10f0002000e70726f6365737365730000030005000004000d70735f7374617465000005000c7a6f6d62696573000006000f00010100000000000000000008000c1513676ac469a4a30005000d736c656570696e67000006000f0001010000000000006e400008000c1513676ac469c6320005000b706167696e67000006000f00010100000000000000000008000c1513676ac469f06e0005000c626c6f636b6564000006000f00010100000000000000000008000c1513676ac4698af40005000c72756e6e696e67000006000f00010100000000000000000008000c1513676ac469bbe10005000c73746f70706564000006000f00010100000000000000000008000c1513676ac46b8e710004000e666f726b5f726174650000050005000006000f0001020000000000001bcf0008000c1513676d437f1296000200086370750000030006300000040008637075000005000b73797374656d000006000f00010200000000000021870008000c1513676d437f36020005000969646c65000006000f000102000000000005847a0008000c1513676d437f979b0005000977616974000006000f00010200000000000005210008000c1513676d43802ff60005000c736f6674697271000006000f000102000000000000001f0008000c1513676d43803b3a0005000a737465616c000006000f0001020000000000000000",
		"0000000e6c6f63616c686f7374000008000c1513676d4380551f0009000c0000000280000000000200086370750000030006310000040008637075000005000975736572000006000f0001020000000000007cad0008000c1513676d43805dbe000500096e696365000006000f00010200000000000001de0008000c1513676d4380697d0005000b73797374656d000006000f0001020000000000001ce80008000c1513676d438072bd0005000969646c65000006000f000102000000000005931c0008000c1513676d43807c430005000977616974000006000f000102000000000000094b0008000c1513676d43808cee0005000c736f6674697271000006000f00010200000000000000120008000c1513676d4380843a0005000e696e74657272757074000006000f00010200000000000000000008000c1513676d438096230005000a737465616c000006000f00010200000000000000000008000c1513676d4380aa9c0003000632000005000975736572000006000f00010200000000000089580008000c1513676d4380b29f000500096e696365000006000f00010200000000000003610008000c1513676d4380c44c0005000969646c65000006000f000102000000000005873d0008000c1513676d4380bc0f0005000b73797374656d000006000f000102000000000000201d0008000c1513676d4380cea40005000977616974000006000f00010200000000000005810008000c1513676d4380d7370005000e696e74657272757074000006000f00010200000000000000000008000c1513676d4380ea830005000a737465616c000006000f00010200000000000000000008000c1513676d437eef62000300063000000500096e696365000006000f00010200000000000003920008000c1513676d4380e0260003000632000005000c736f6674697271000006000f00010200000000000000160008000c1513676d438101410003000633000005000975736572000006000f0001020000000000007d8a0008000c1513676d438109f5000500096e696365000006000f00010200000000000004350008000c1513676d4380244b0003000630000005000e696e74657272757074000006000f00010200000000000000000008000c1513676d438122070003000633000005000969646c65000006000f0001020000000000058eb60008000c1513676d43812e830005000977616974000006000f0001020000000000000ca80008000c1513676d438141480005000c736f6674697271000006000f000102000000000000001e0008000c1513676d43814a5d0005000a737465616c000006000f00010200000000000000000008000c1513676d4381149e0005000b73797374656d000006000f0001020000000000001b9a0008000c1513676d437ea8600003000630000005000975736572000006000f00010200000000000089a80008000c1513676d438138190003000633000005000e696e74657272757074000006000f00010200000000000000000008000c1513676d438a9ca00002000e696e74657266616365000003000965746830000004000e69665f6f63746574730000050005000006001800020202000000000000000000000000000000000008000c1513676d438aea760004000f69665f7061636b657473000006001800020202000000000000000000000000000000000008000c1513676d438b214d0004000e69665f6572726f727300000600180002020200000000000000000000000000000000",
		"0000000e6c6f63616c686f7374000008000c1513676d438aac590009000c00000002800000000002000764660000030009726f6f74000004000f64665f636f6d706c6578000005000966726565000006000f0001010000004c077e57420008000c1513676d438b6ada0005000d7265736572766564000006000f00010100000000338116420008000c1513676d438b7a170002000e696e7465726661636500000300076c6f000004000e69665f6f63746574730000050005000006001800020202000000000009ecf5000000000009ecf50008000c1513676d438b75780002000764660000030009726f6f74000004000f64665f636f6d706c6578000005000975736564000006000f000101000000e0a41b26420008000c1513676d438b8ed20002000e696e7465726661636500000300076c6f000004000e69665f6572726f72730000050005000006001800020202000000000000000000000000000000000008000c1513676d438b86bf0004000f69665f7061636b6574730000060018000202020000000000000c9d0000000000000c9d0008000c1513676d438bb3e60003000a776c616e300000060018000202020000000000032fab00000000000205ed0008000c1513676d438bd62e0003000c646f636b657230000004000e69665f6f6374657473000006001800020202000000000000000000000000000000000008000c1513676d438bbc8f0003000a776c616e30000004000e69665f6572726f7273000006001800020202000000000000000000000000000000000008000c1513676d438bdf030003000c646f636b657230000004000f69665f7061636b657473000006001800020202000000000000000000000000000000000008000c1513676d438baaf10003000a776c616e30000004000e69665f6f637465747300000600180002020200000000100a042300000000011cfa460008000c1513676d438c5f100002000764660000030009626f6f74000004000f64665f636f6d706c6578000005000966726565000006000f0001010000000010e198410008000c1513676d438c689c0005000d7265736572766564000006000f00010100000000804c68410008000c1513676d438c70ce0005000975736564000006000f0001010000000020ea9e410008000c1513676d438be7bc0002000e696e74657266616365000003000c646f636b657230000004000e69665f6572726f72730000050005000006001800020202000000000000000000000000000000000008000c1513676d43beca8c0002000c656e74726f70790000030005000004000c656e74726f7079000006000f0001010000000000088f400008000c1513676d43bf1d13000200096c6f616400000400096c6f6164000006002100030101019a9999999999a93f666666666666d63f5c8fc2f5285cdf3f0008000c1513676d43c02b85000200096469736b000003000873646100000400106469736b5f6f63746574730000060018000202020000000075887800000000005b6f3c000008000c1513676d43c06d1f0004000d6469736b5f6f7073000006001800020202000000000003cbbd000000000001c0510008000c1513676d43c08b6a0004000e6469736b5f74696d65000006001800020202000000000000003f00000000000001720008000c1513676d43c0a5fb000400106469736b5f6d65726765640000060018000202020000000000001285000000000000f8010008000c1513676d43c0c8b4000300097364613100000400106469736b5f6f63746574730000060018000202020000000001107c000000000000003c00",
		"0000000e6c6f63616c686f7374000008000c1513676d43c0d00a0009000c0000000280000000000200096469736b000003000973646131000004000d6469736b5f6f7073000006001800020202000000000000029b00000000000000080008000c1513676d43c0d7b20004000e6469736b5f74696d650000060018000202020000000000000004000000000000000f0008000c1513676d43c0df73000400106469736b5f6d65726765640000060018000202020000000000000fb400000000000000010008000c1513676d43c0f87c000300097364613200000400106469736b5f6f6374657473000006001800020202000000000000080000000000000000000008000c1513676d43c1003e0004000d6469736b5f6f7073000006001800020202000000000000000200000000000000000008000c1513676d43c107bf000400106469736b5f6d6572676564000006001800020202000000000000000000000000000000000008000c1513676d43c12fa40003000973646135000004000d6469736b5f6f7073000006001800020202000000000003c867000000000001aef20008000c1513676d43c13d5e000400106469736b5f6d657267656400000600180002020200000000000002d1000000000000f8000008000c1513676d43c136a90004000e6469736b5f74696d65000006001800020202000000000000003f000000000000011c0008000c1513676d43c1740500030009646d2d3000000400106469736b5f6f63746574730000060018000202020000000074596400000000005b6f00000008000c1513676d43c179c70004000d6469736b5f6f7073000006001800020202000000000003cae4000000000002b0f30008000c1513676d43c18abe000400106469736b5f6d6572676564000006001800020202000000000000000000000000000000000008000c1513676d43c181b90004000e6469736b5f74696d650000060018000202020000000000000040000000000000013e0008000c1513676d43c1a95e00030009646d2d3100000400106469736b5f6f637465747300000600180002020200000000000e000000000000000000000008000c1513676d43c1b7ea0004000e6469736b5f74696d65000006001800020202000000000000000200000000000000000008000c1513676d43c1b03e0004000d6469736b5f6f707300000600180002020200000000000000e000000000000000000008000c1513676d43c1c00d000400106469736b5f6d6572676564000006001800020202000000000000000000000000000000000008000c1513676d43c12818000300097364613500000400106469736b5f6f637465747300000600180002020200000000746c6400000000005b6f00000008000c1513676d43d320a80002000c62617474657279000003000630000004000b636861726765000006000f0001018fc2f5285c2f58400008000c1513676d43d36fd60004000c63757272656e74000006000f00010100000000000000800008000c1513676d43d3cdb60004000c766f6c74616765000006000f000101736891ed7cbf28400008000c1513676d43d59dd60002000869727100000300050000040008697271000005000630000006000f00010200000000000000110008000c1513676d43d5d2cf0005000631000006000f00010200000000000000100008000c1513676d43d5fe820005000638000006000f00010200000000000000010008000c1513676d43d635440005000639000006000f00010200000000000035210008000c1513676d43d66265000500073132000006000f0001020000000000000790",
		"0000000e6c6f63616c686f7374000008000c1513676d43d68e940009000c000000028000000000020008697271000004000869727100000500073136000006000f00010200000000000000210008000c1513676d43d69be20002000a7573657273000004000a75736572730000050005000006000f00010100000000000010400008000c1513676d43d6aa5d00020008697271000004000869727100000500073233000006000f00010200000000000000250008000c1513676d43d6c7dc000500073431000006000f000102000000000000ff7d0008000c1513676d43d6e23d000500073432000006000f00010200000000000008070008000c1513676d43d9aa3a000500073437000006000f0001020000000000079a260008000c1513676d43d9cca9000500073438000006000f00010200000000000000c70008000c1513676d43d9ea5d000500073439000006000f00010200000000000004c20008000c1513676d43da050e000500073530000006000f000102000000000000001c0008000c1513676d43da1efa000500084e4d49000006000f00010200000000000000000008000c1513676d43da3c82000500084c4f43000006000f000102000000000018d3080008000c1513676d43da544e00050008535055000006000f00010200000000000000000008000c1513676d43da6cca00050008504d49000006000f00010200000000000000000008000c1513676d43da885400050008495749000006000f000102000000000000a9da0008000c1513676d43daa23a00050008525452000006000f00010200000000000000030008000c1513676d43dabaed00050008524553000006000f00010200000000000ac8360008000c1513676d43dad4150005000843414c000006000f000102000000000000191f0008000c1513676d43daeef300050008544c42000006000f000102000000000003dbdc0008000c1513676d43db11410005000854524d000006000f00010200000000000000000008000c1513676d43db292c00050008544852000006000f00010200000000000000000008000c1513676d43db411d000500084d4345000006000f00010200000000000000000008000c1513676d43db5b59000500084d4350000006000f000102000000000000003c0008000c1513676d43db680100050008455252000006000f00010200000000000000000008000c1513676d43db758a000500084d4953000006000f00010200000000000000000008000c1513676d43dd2e800002000b6d656d6f7279000004000b6d656d6f7279000005000975736564000006000f00010100000000febbe0410008000c1513676d43dd3f4b0005000d6275666665726564000006000f0001010000000070fbc8410008000c1513676d43dd48700005000b636163686564000006000f00010100000000c008df410008000c1513676d43dd51c60005000966726565000006000f00010100000080481d05420008000c1513676d43dec7e30002000973776170000004000973776170000005000975736564000006000f00010100000000000000000008000c1513676d43ded4490005000966726565000006000f00010100000080ff610f420008000c1513676d43dedcfd0005000b636163686564000006000f00010100000000000000000008000c1513676d43d715e300020008697271000004000869727100000500073434000006000f0001020000000000031b610008000c1513676d43d73116000500073435000006000f00010200000000000000180008000c1513676d43ee00150002000973776170000004000c737761705f696f0000050007696e000006000f0001020000000000000000",
	}
	var rawData [][]byte
	for _, str := range strs {
		buf, err := hex.DecodeString(str)
		if err != nil {
			panic(err)
		}
		rawData = append(rawData, buf)
	}
	return rawData
}()

func TestParseInt(t *testing.T) {
	want := uint64(8231)
	got, err := parseInt([]byte{0, 0, 0, 0, 0, 0, 0x20, 0x27})
	if err != nil {
		t.Error(err)
	} else if got != want {
		t.Errorf("got %d, want %d", got, want)
	}

	got, err = parseInt([]byte{0, 0, 0, 0, 0, 0x20, 0x27})
	if err == nil {
		t.Errorf("got (%d, nil), want (0, ErrorInvalid)", got)
	}

	got, err = parseInt([]byte{0, 0, 0, 0, 0, 0, 0, 0x20, 0x27})
	if err == nil {
		t.Errorf("got (%d, nil), want (0, ErrorInvalid)", got)
	}
}

func TestParseString(t *testing.T) {
	want := "test"
	got, err := parseString([]byte{'t', 'e', 's', 't', 0})
	if err != nil {
		t.Error(err)
	} else if got != want {
		t.Errorf("got %q, want %q", got, want)
	}

	got, err = parseString([]byte{'t', 'e', 's', 't'})
	if err == nil {
		t.Errorf("got (%q, nil), want (\"\", ErrorInvalid)", got)
	}
}