diff options
Diffstat (limited to 'client/go/vespa/target_test.go')
-rw-r--r-- | client/go/vespa/target_test.go | 68 |
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) { |