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
80
81
82
83
|
package recordline
import (
"testing"
)
func TestParse(t *testing.T) {
tests := []struct {
in string
want Fields
ok bool
}{
{
"12345:1700000000:Linux 6.5.0-generic",
Fields{
Uptime: 12345,
BootTime: 1700000000,
OS: "Linux 6.5.0-generic",
KernelName: "Linux",
KernelMajor: "Linux 6...",
},
true,
},
{
" 99:100:FreeBSD 14.0-RELEASE ",
Fields{
Uptime: 99,
BootTime: 100,
OS: "FreeBSD 14.0-RELEASE",
KernelName: "FreeBSD",
KernelMajor: "FreeBSD 14...",
},
true,
},
{
"500:200:SingleToken",
Fields{
Uptime: 500,
BootTime: 200,
OS: "SingleToken",
KernelName: "SingleToken",
KernelMajor: "SingleToken SingleToken...",
},
true,
},
{
"100:200:Linux 6.5.0:extra",
Fields{
Uptime: 100,
BootTime: 200,
OS: "Linux 6.5.0:extra",
KernelName: "Linux",
KernelMajor: "Linux 6...",
},
true,
},
{
"abc:def:Linux 6.5.0",
Fields{
Uptime: 0,
BootTime: 0,
OS: "Linux 6.5.0",
KernelName: "Linux",
KernelMajor: "Linux 6...",
},
true,
},
{"", Fields{}, false},
{" ", Fields{}, false},
{"only:two", Fields{}, false},
{"no-colons-at-all", Fields{}, false},
}
for _, tt := range tests {
got, ok := Parse(tt.in)
if ok != tt.ok {
t.Errorf("Parse(%q) ok=%v, want %v", tt.in, ok, tt.ok)
continue
}
if tt.ok && got != tt.want {
t.Errorf("Parse(%q) = %+v, want %+v", tt.in, got, tt.want)
}
}
}
|