package consul import ( "reflect" "testing" ) func TestParseAgentFailure(t *testing.T) { f := func(s string) { t.Helper() a, err := ParseAgent([]byte(s)) if err == nil { t.Fatalf("expecting non-nil error") } if a != nil { t.Fatalf("unexpected non-nil Agent: %v", a) } } f(``) f(`[1,23]`) } func TestParseAgentSuccess(t *testing.T) { data := ` { "Config": { "Datacenter": "dc1", "NodeName": "foobar", "NodeID": "9d754d17-d864-b1d3-e758-f3fe25a9874f", "Server": true, "Revision": "deadbeef", "Version": "1.0.0" }, "DebugConfig": { }, "Coord": { "Adjustment": 0, "Error": 1.5, "Vec": [0,0,0,0,0,0,0,0] }, "Member": { "Name": "foobar", "Addr": "10.1.10.12", "Port": 8301, "Tags": { "bootstrap": "1", "dc": "dc1", "id": "40e4a748-2192-161a-0510-9bf59fe950b5", "port": "8300", "role": "consul", "vsn": "1", "vsn_max": "1", "vsn_min": "1" }, "Status": 1, "ProtocolMin": 1, "ProtocolMax": 2, "ProtocolCur": 2, "DelegateMin": 2, "DelegateMax": 4, "DelegateCur": 4 }, "Meta": { "instance_type": "i2.xlarge", "os_version": "ubuntu_16.04" } } ` a, err := ParseAgent([]byte(data)) if err != nil { t.Fatalf("unexpected error: %s", err) } aExpected := &Agent{ Config: AgentConfig{ Datacenter: "dc1", NodeName: "foobar", }, Member: AgentMember{ Addr: "10.1.10.12", }, Meta: map[string]string{ "instance_type": "i2.xlarge", "os_version": "ubuntu_16.04", }, } if !reflect.DeepEqual(a, aExpected) { t.Fatalf("unexpected Agent parsed;\ngot\n%v\nwant\n%v", a, aExpected) } }