// TestStatusJson verifies that status endpoints return expected Json results. // The content type of the responses is always httputil.JSONContentType. func TestStatusJson(t *testing.T) { defer leaktest.AfterTest(t)() s, _, _ := serverutils.StartServer(t, base.TestServerArgs{}) defer s.Stopper().Stop() ts := s.(*TestServer) nodeID := ts.Gossip().NodeID.Get() addr, err := ts.Gossip().GetNodeIDAddress(nodeID) if err != nil { t.Fatal(err) } var nodes serverpb.NodesResponse util.SucceedsSoon(t, func() error { if err := getStatusJSONProto(s, "nodes", &nodes); err != nil { t.Fatal(err) } if len(nodes.Nodes) == 0 { return errors.Errorf("expected non-empty node list, got: %v", nodes) } return nil }) for _, path := range []string{ "/health", statusPrefix + "details/local", statusPrefix + "details/" + strconv.FormatUint(uint64(nodeID), 10), } { var details serverpb.DetailsResponse if err := serverutils.GetJSONProto(s, path, &details); err != nil { t.Fatal(err) } if a, e := details.NodeID, nodeID; a != e { t.Errorf("expected: %d, got: %d", e, a) } if a, e := details.Address, *addr; a != e { t.Errorf("expected: %v, got: %v", e, a) } if a, e := details.BuildInfo, build.GetInfo(); a != e { t.Errorf("expected: %v, got: %v", e, a) } } }
func getAdminJSONProto( ts serverutils.TestServerInterface, path string, response proto.Message, ) error { return serverutils.GetJSONProto(ts, adminPrefix+path, response) }