diff --git a/api/server/runner_test.go b/api/server/runner_test.go index 57de18adb..e8c3a7bda 100644 --- a/api/server/runner_test.go +++ b/api/server/runner_test.go @@ -124,6 +124,14 @@ func TestRouteRunnerPost(t *testing.T) { func TestRouteRunnerExecution(t *testing.T) { buf := setLogBuffer() + isFailure := false + // Log once after we are done, flow of events are important (hot/cold containers, idle timeout, etc.) + // for figuring out why things failed. + defer func() { + if isFailure { + t.Log(buf.String()) + } + }() ds := datastore.NewMockInit( []*models.App{ @@ -187,24 +195,28 @@ func TestRouteRunnerExecution(t *testing.T) { _, rec := routerRequest(t, srv.Router, test.method, test.path, body) respBytes, _ := ioutil.ReadAll(rec.Body) respBody := string(respBytes) + maxLog := len(respBody) + if maxLog > 1024 { + maxLog = 1024 + } if rec.Code != test.expectedCode { - t.Log(buf.String()) + isFailure = true t.Errorf("Test %d: Expected status code to be %d but was %d. body: %s", - i, test.expectedCode, rec.Code, respBody) + i, test.expectedCode, rec.Code, respBody[:maxLog]) } if test.expectedErrSubStr != "" && !strings.Contains(respBody, test.expectedErrSubStr) { - t.Log(buf.String()) + isFailure = true t.Errorf("Test %d: Expected response to include %s but got body: %s", - i, test.expectedErrSubStr, respBody) + i, test.expectedErrSubStr, respBody[:maxLog]) } if test.expectedHeaders != nil { for name, header := range test.expectedHeaders { if header[0] != rec.Header().Get(name) { - t.Log(buf.String()) + isFailure = true t.Errorf("Test %d: Expected header `%s` to be %s but was %s", i, name, header[0], rec.Header().Get(name)) } diff --git a/api/server/server_test.go b/api/server/server_test.go index 93a3df47a..0e566fca9 100644 --- a/api/server/server_test.go +++ b/api/server/server_test.go @@ -26,6 +26,7 @@ var tmpDatastoreTests = "/tmp/func_test_datastore.db" func testServer(ds models.Datastore, mq models.MessageQueue, logDB models.LogStore, rnr agent.Agent, nodeType ServerNodeType) *Server { return New(context.Background(), + WithLogLevel(getEnv(EnvLogLevel, DefaultLogLevel)), WithDatastore(ds), WithMQ(mq), WithLogstore(logDB), diff --git a/images/fn-test-utils/fn-test-utils.go b/images/fn-test-utils/fn-test-utils.go index 31a30e023..7049d2087 100644 --- a/images/fn-test-utils/fn-test-utils.go +++ b/images/fn-test-utils/fn-test-utils.go @@ -44,7 +44,7 @@ type AppRequest struct { // fill created with with zero bytes of specified size CreateFileSize int `json:"createFileSize,omitempty"` // allocate RAM and hold until next request - AllocateMemory int `json:"allocateMemory,om itempty"` + AllocateMemory int `json:"allocateMemory,omitempty"` // leak RAM forever LeakMemory int `json:"leakMemory,omitempty"` // respond with partial output