// checkNode checks all the endpoints of the status server hosted by node and // requests info for the node with otherNodeID. That node could be the same // other node, the same node or "local". func checkNode( ctx context.Context, t *testing.T, c cluster.Cluster, i int, nodeID, otherNodeID, expectedNodeID roachpb.NodeID, ) { urlIDs := []string{otherNodeID.String()} if nodeID == otherNodeID { urlIDs = append(urlIDs, "local") } var details serverpb.DetailsResponse for _, urlID := range urlIDs { if err := httputil.GetJSON(cluster.HTTPClient, c.URL(ctx, i)+"/_status/details/"+urlID, &details); err != nil { t.Fatal(errors.Errorf("unable to parse details - %s", err)) } if details.NodeID != expectedNodeID { t.Fatal(errors.Errorf("%d calling %s: node ids don't match - expected %d, actual %d", nodeID, urlID, expectedNodeID, details.NodeID)) } get(ctx, t, c.URL(ctx, i), fmt.Sprintf("/_status/gossip/%s", urlID)) get(ctx, t, c.URL(ctx, i), fmt.Sprintf("/_status/nodes/%s", urlID)) get(ctx, t, c.URL(ctx, i), fmt.Sprintf("/_status/logfiles/%s", urlID)) get(ctx, t, c.URL(ctx, i), fmt.Sprintf("/_status/logs/%s", urlID)) get(ctx, t, c.URL(ctx, i), fmt.Sprintf("/_status/stacks/%s", urlID)) } }
// MakeNodeIDKey returns the gossip key for node ID info. func MakeNodeIDKey(nodeID roachpb.NodeID) string { return MakeKey(KeyNodeIDPrefix, nodeID.String()) }