responses []interface{}
error error
kind string
+ clusterID string
}
func (c *multiClusterQueryResponseCollector) collectResponse(resp *http.Response,
c.error = requestError
return nil, nil
}
+
defer resp.Body.Close()
loadInto := make(map[string]interface{})
err = json.NewDecoder(resp.Body).Decode(&loadInto)
if err == nil {
if resp.StatusCode != http.StatusOK {
- c.error = fmt.Errorf("error %v", loadInto["errors"])
+ c.error = fmt.Errorf("error fetching from %v (%v): %v", c.clusterID, resp.Status, loadInto["errors"])
} else {
c.responses = loadInto["items"].([]interface{})
c.kind, _ = loadInto["kind"].(string)
}
} else {
- c.error = err
+ c.error = fmt.Errorf("error fetching from %v (%v): %v", c.clusterID, resp.Status, err)
}
return nil, nil
enc := remoteParams.Encode()
remoteReq.Body = ioutil.NopCloser(bytes.NewBufferString(enc))
- rc := multiClusterQueryResponseCollector{}
+ rc := multiClusterQueryResponseCollector{clusterID: clusterID}
if clusterID == h.handler.Cluster.ClusterID {
h.handler.localClusterRequest(w, &remoteReq,
c.Check(mp["zhome-xvhdp-cr5queuedcontnr"].ContainerImage, check.Equals, "")
}
+func (s *FederationSuite) TestListMultiRemoteContainerError(c *check.C) {
+ defer s.localServiceReturns404(c).Close()
+ req := httptest.NewRequest("GET", fmt.Sprintf("/arvados/v1/containers?count=none&filters=%s&select=%s",
+ url.QueryEscape(fmt.Sprintf(`[["uuid", "in", ["%v", "zhome-xvhdp-cr5queuedcontnr"]]]`,
+ arvadostest.QueuedContainerUUID)),
+ url.QueryEscape(`["uuid", "command"]`)),
+ nil)
+ req.Header.Set("Authorization", "Bearer "+arvadostest.ActiveToken)
+ resp := s.testRequest(req)
+ c.Check(resp.StatusCode, check.Equals, http.StatusBadGateway)
+ s.checkJSONErrorMatches(c, resp, `error fetching from zhome \(404 Not Found\): EOF`)
+}
+
func (s *FederationSuite) TestListMultiRemoteContainersPaged(c *check.C) {
callCount := 0