diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-06-13 12:50:18 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-06-13 13:10:17 +0200 |
commit | 1b7a8fdcc52166fd3033d5ed85e902d6a775d9ab (patch) | |
tree | cba892172b1e9695f478f059e08ab7495e75b6b6 /client/go/internal/cli/cmd | |
parent | a8588e074f7f556eb275c631a2b1d67299d21aba (diff) |
Report details of feed transport error
Diffstat (limited to 'client/go/internal/cli/cmd')
-rw-r--r-- | client/go/internal/cli/cmd/document.go | 3 | ||||
-rw-r--r-- | client/go/internal/cli/cmd/document_test.go | 18 | ||||
-rw-r--r-- | client/go/internal/cli/cmd/feed_test.go | 9 |
3 files changed, 30 insertions, 0 deletions
diff --git a/client/go/internal/cli/cmd/document.go b/client/go/internal/cli/cmd/document.go index 07a98d2e626..0ed68e30ced 100644 --- a/client/go/internal/cli/cmd/document.go +++ b/client/go/internal/cli/cmd/document.go @@ -136,6 +136,9 @@ func readDocument(id string, timeoutSecs int, printCurl bool, cli *CLI) error { } func operationResult(read bool, doc document.Document, service *vespa.Service, result document.Result) util.OperationResult { + if result.Err != nil { + return util.Failure(result.Err.Error()) + } bodyReader := bytes.NewReader(result.Body) if result.HTTPStatus == 200 { if read { diff --git a/client/go/internal/cli/cmd/document_test.go b/client/go/internal/cli/cmd/document_test.go index 00f98ee1333..6e671190959 100644 --- a/client/go/internal/cli/cmd/document_test.go +++ b/client/go/internal/cli/cmd/document_test.go @@ -6,6 +6,7 @@ package cmd import ( "encoding/json" + "fmt" "os" "strconv" "testing" @@ -100,6 +101,10 @@ func TestDocumentPutServerError(t *testing.T) { assertDocumentServerError(t, 501, "Server error") } +func TestDocumentPutTransportError(t *testing.T) { + assertDocumentTransportError(t, "Transport error") +} + func TestDocumentGet(t *testing.T) { assertDocumentGet([]string{"document", "get", "id:mynamespace:music::a-head-full-of-dreams"}, "id:mynamespace:music::a-head-full-of-dreams", t) @@ -172,6 +177,19 @@ func assertDocumentGet(arguments []string, documentId string, t *testing.T) { assert.Equal(t, "GET", client.LastRequest.Method) } +func assertDocumentTransportError(t *testing.T, errorMessage string) { + client := &mock.HTTPClient{} + client.NextResponseError(fmt.Errorf(errorMessage)) + cli, _, stderr := newTestCLI(t) + cli.httpClient = client + assert.NotNil(t, cli.Run("document", "put", + "id:mynamespace:music::a-head-full-of-dreams", + "testdata/A-Head-Full-of-Dreams-Put.json")) + assert.Equal(t, + "Error: "+errorMessage+"\n", + stderr.String()) +} + func assertDocumentError(t *testing.T, status int, errorMessage string) { client := &mock.HTTPClient{} client.NextResponseString(status, errorMessage) diff --git a/client/go/internal/cli/cmd/feed_test.go b/client/go/internal/cli/cmd/feed_test.go index bd0b9544e37..96df24f2035 100644 --- a/client/go/internal/cli/cmd/feed_test.go +++ b/client/go/internal/cli/cmd/feed_test.go @@ -2,6 +2,7 @@ package cmd import ( "bytes" + "fmt" "os" "path/filepath" "testing" @@ -78,4 +79,12 @@ func TestFeed(t *testing.T) { httpClient.NextResponseString(200, `{"message":"OK"}`) require.Nil(t, cli.Run("feed", "-")) assert.Equal(t, want, stdout.String()) + + httpClient.NextResponseString(500, `{"message":"it's broken yo"}`) + require.Nil(t, cli.Run("feed", jsonFile1)) + assert.Equal(t, "feed: got status 500 ({\"message\":\"it's broken yo\"}) for put id:ns:type::doc1: retrying\n", stderr.String()) + stderr.Reset() + httpClient.NextResponseError(fmt.Errorf("something else is broken")) + require.Nil(t, cli.Run("feed", jsonFile1)) + assert.Equal(t, "feed: got error \"something else is broken\" (no body) for put id:ns:type::doc1: retrying\n", stderr.String()) } |