summaryrefslogtreecommitdiffstats
path: root/client/go/vespa/target_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/go/vespa/target_test.go')
-rw-r--r--client/go/vespa/target_test.go68
1 files changed, 49 insertions, 19 deletions
diff --git a/client/go/vespa/target_test.go b/client/go/vespa/target_test.go
index 2c90baefbbc..ed924059297 100644
--- a/client/go/vespa/target_test.go
+++ b/client/go/vespa/target_test.go
@@ -1,9 +1,12 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package vespa
import (
"bytes"
"crypto/tls"
"fmt"
+ "io"
+ "io/ioutil"
"net/http"
"net/http/httptest"
"testing"
@@ -40,6 +43,11 @@ func (v *mockVespaApi) mockVespaHandler(w http.ResponseWriter, req *http.Request
case "/application/v2/tenant/default/application/default/environment/prod/region/default/instance/default/serviceconverge":
response := fmt.Sprintf(`{"converged": %t}`, v.deploymentConverged)
w.Write([]byte(response))
+ case "/application/v4/tenant/t1/application/a1/instance/i1/environment/dev/region/us-north-1/logs":
+ log := `1632738690.905535 host1a.dev.aws-us-east-1c 806/53 logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication info Switching to the latest deployed set of configurations and components. Application config generation: 52532
+1632738698.600189 host1a.dev.aws-us-east-1c 1723/33590 config-sentinel sentinel.sentinel.config-owner config Sentinel got 3 service elements [tenant(vespa-team), application(music), instance(mpolden)] for config generation 52532
+`
+ w.Write([]byte(log))
case "/status.html":
w.Write([]byte("OK"))
case "/ApplicationStatus":
@@ -92,6 +100,44 @@ func TestCloudTargetWait(t *testing.T) {
defer srv.Close()
vc.serverURL = srv.URL
+ var logWriter bytes.Buffer
+ target := createCloudTarget(t, srv.URL, &logWriter)
+ assertServiceWait(t, 200, target, "deploy")
+
+ _, err := target.Service("query", time.Millisecond, 42)
+ assert.NotNil(t, err)
+
+ vc.deploymentConverged = true
+ _, err = target.Service("query", time.Millisecond, 42)
+ assert.Nil(t, err)
+
+ assertServiceWait(t, 500, target, "query")
+ assertServiceWait(t, 500, target, "document")
+
+ // Log timestamp is converted to local time, do the same here in case the local time where tests are run varies
+ tm := time.Unix(1631707708, 431000)
+ expectedTime := tm.Format("[15:04:05]")
+ assert.Equal(t, expectedTime+" info Deploying platform version 7.465.17 and application version 1.0.2 ...\n", logWriter.String())
+}
+
+func TestLog(t *testing.T) {
+ vc := mockVespaApi{}
+ srv := httptest.NewServer(http.HandlerFunc(vc.mockVespaHandler))
+ defer srv.Close()
+ vc.serverURL = srv.URL
+ vc.deploymentConverged = true
+
+ var buf bytes.Buffer
+ target := createCloudTarget(t, srv.URL, ioutil.Discard)
+ if err := target.PrintLog(LogOptions{Writer: &buf, Level: 3}); err != nil {
+ t.Fatal(err)
+ }
+ expected := "[2021-09-27 10:31:30.905535] host1a.dev.aws-us-east-1c info logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication\tSwitching to the latest deployed set of configurations and components. Application config generation: 52532\n" +
+ "[2021-09-27 10:31:38.600189] host1a.dev.aws-us-east-1c config config-sentinel sentinel.sentinel.config-owner\tSentinel got 3 service elements [tenant(vespa-team), application(music), instance(mpolden)] for config generation 52532\n"
+ assert.Equal(t, expected, buf.String())
+}
+
+func createCloudTarget(t *testing.T, url string, logWriter io.Writer) Target {
kp, err := CreateKeyPair()
assert.Nil(t, err)
@@ -100,7 +146,6 @@ func TestCloudTargetWait(t *testing.T) {
apiKey, err := CreateAPIKey()
assert.Nil(t, err)
- var logWriter bytes.Buffer
target := CloudTarget(
"https://example.com",
Deployment{
@@ -109,28 +154,13 @@ func TestCloudTargetWait(t *testing.T) {
},
apiKey,
TLSOptions{KeyPair: x509KeyPair},
- LogOptions{Writer: &logWriter})
+ LogOptions{Writer: logWriter})
if ct, ok := target.(*cloudTarget); ok {
- ct.apiURL = srv.URL
+ ct.apiURL = url
} else {
t.Fatalf("Wrong target type %T", ct)
}
- assertServiceWait(t, 200, target, "deploy")
-
- _, err = target.Service("query", time.Millisecond, 42)
- assert.NotNil(t, err)
-
- vc.deploymentConverged = true
- _, err = target.Service("query", time.Millisecond, 42)
- assert.Nil(t, err)
-
- assertServiceWait(t, 500, target, "query")
- assertServiceWait(t, 500, target, "document")
-
- // Log timestamp is converted to local time, do the same here in case the local time where tests are run varies
- tm := time.Unix(1631707708, 431000)
- expectedTime := tm.Format("[15:04:05]")
- assert.Equal(t, expectedTime+" info Deploying platform version 7.465.17 and application version 1.0.2 ...\n", logWriter.String())
+ return target
}
func assertServiceURL(t *testing.T, url string, target Target, service string) {