...
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package procfs
15
16 import (
17 "testing"
18
19 "github.com/google/go-cmp/cmp"
20 )
21
22 func TestLoadAvg(t *testing.T) {
23 fs, err := NewFS(procTestFixtures)
24 if err != nil {
25 t.Fatalf("failed to open procfs: %v", err)
26 }
27
28 loadavg, err := fs.LoadAvg()
29 if err != nil {
30 t.Fatalf("failed to get loadavg: %v", err)
31 }
32
33 if diff := cmp.Diff(0.02, loadavg.Load1); diff != "" {
34 t.Fatalf("unexpected LoadAvg Per a minute:\n%s", diff)
35 }
36 if diff := cmp.Diff(0.04, loadavg.Load5); diff != "" {
37 t.Fatalf("unexpected LoadAvg Per five minutes:\n%s", diff)
38 }
39 if diff := cmp.Diff(0.05, loadavg.Load15); diff != "" {
40 t.Fatalf("unexpected LoadAvg Per fifteen minutes:\n%s", diff)
41 }
42 }
43
44 func Test_parseLoad(t *testing.T) {
45 tests := []struct {
46 name string
47 s string
48 ok bool
49 loadavg *LoadAvg
50 }{
51 {
52 name: "empty",
53 ok: false,
54 },
55 {
56 name: "not enough fields",
57 s: `0.00 0.03`,
58 ok: false,
59 },
60 {
61 name: "invalid line",
62 s: `malformed line`,
63 ok: false,
64 },
65 {
66 name: "valid line",
67 s: `0.00 0.03 0.05 1/502 33634`,
68 ok: true,
69 loadavg: &LoadAvg{Load1: 0, Load5: 0.03, Load15: 0.05},
70 },
71 }
72
73 for _, tt := range tests {
74 t.Run(tt.name, func(t *testing.T) {
75 loadavg, err := parseLoad([]byte(tt.s))
76 if err != nil {
77 if tt.ok {
78 t.Fatalf("failed to parse loadavg: %v", err)
79 }
80
81 t.Logf("OK error: %v", err)
82 return
83 }
84 if !tt.ok {
85 t.Fatal("expected an error, but none occurred")
86 }
87
88 if diff := cmp.Diff(tt.loadavg, loadavg); diff != "" {
89 t.Errorf("unexpected loadavg(-want +got):\n%s", diff)
90 }
91 })
92 }
93 }
94
View as plain text