aboutsummaryrefslogtreecommitdiffstats
path: root/client/go/internal/cli/cmd
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-06-13 12:50:18 +0200
committerMartin Polden <mpolden@mpolden.no>2023-06-13 13:10:17 +0200
commit1b7a8fdcc52166fd3033d5ed85e902d6a775d9ab (patch)
treecba892172b1e9695f478f059e08ab7495e75b6b6 /client/go/internal/cli/cmd
parenta8588e074f7f556eb275c631a2b1d67299d21aba (diff)
Report details of feed transport error
Diffstat (limited to 'client/go/internal/cli/cmd')
-rw-r--r--client/go/internal/cli/cmd/document.go3
-rw-r--r--client/go/internal/cli/cmd/document_test.go18
-rw-r--r--client/go/internal/cli/cmd/feed_test.go9
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())
}