Repository navigation
Expand file tree
/
Copy pathtypes_wire_test.go
More file actions
82 lines (75 loc) · 1.91 KB
/
Copy pathtypes_wire_test.go
File metadata and controls
82 lines (75 loc) · 1.91 KB
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
package slicer
import (
"encoding/json"
"strings"
"testing"
"time"
)
func TestWireLastAgentCallOmitzero(t *testing.T) {
node := SlicerNode{Hostname: "vm-1"}
b, err := json.Marshal(node)
if err != nil {
t.Fatal(err)
}
if jsonContains(b, "last_agent_call") {
t.Fatalf("unset LastAgentCall must be omitted: %s", b)
}
marker := time.Unix(1700000000, 0).UTC()
node.LastAgentCall = marker
b, err = json.Marshal(node)
if err != nil {
t.Fatal(err)
}
if !jsonContains(b, "last_agent_call") {
t.Fatalf("set LastAgentCall must be present: %s", b)
}
var back SlicerNode
if err := json.Unmarshal(b, &back); err != nil {
t.Fatal(err)
}
if !back.LastAgentCall.Equal(marker) {
t.Fatalf("round-trip mismatch: got %v want %v", back.LastAgentCall, marker)
}
}
func TestWireBgExecsOmitzero(t *testing.T) {
desc := SlicerVMDescription{}
b, err := json.Marshal(desc)
if err != nil {
t.Fatal(err)
}
if jsonContains(b, "bg_execs") {
t.Fatalf("nil BgExecs must be omitted: %s", b)
}
desc.BgExecs = []SlicerBgExecSummary{}
b, err = json.Marshal(desc)
if err != nil {
t.Fatal(err)
}
if !jsonContains(b, `"bg_execs":[]`) {
t.Fatalf("non-nil empty BgExecs must encode as []: %s", b)
}
var back SlicerVMDescription
if err := json.Unmarshal(b, &back); err != nil {
t.Fatal(err)
}
if back.BgExecs == nil || len(back.BgExecs) != 0 {
t.Fatalf("empty BgExecs round-trip: got %v", back.BgExecs)
}
desc.BgExecs = []SlicerBgExecSummary{{ExecID: "ex_1", State: "running"}}
b, err = json.Marshal(desc)
if err != nil {
t.Fatal(err)
}
if !jsonContains(b, "ex_1") {
t.Fatalf("populated BgExecs must be present: %s", b)
}
if err := json.Unmarshal(b, &back); err != nil {
t.Fatal(err)
}
if len(back.BgExecs) != 1 || back.BgExecs[0].ExecID != "ex_1" {
t.Fatalf("populated BgExecs round-trip: got %+v", back.BgExecs)
}
}
func jsonContains(b []byte, sub string) bool {
return strings.Contains(string(b), sub)
}