Add x-duration-seconds for all functions via watchdog

This commit is contained in:
Alex
2017-05-03 08:56:41 +01:00
committed by Alex Ellis
parent 6c732fb143
commit fbb9646377
2 changed files with 32 additions and 0 deletions

View File

@ -42,6 +42,8 @@ func debugHeaders(source *http.Header, direction string) {
}
func pipeRequest(config *WatchdogConfig, w http.ResponseWriter, r *http.Request) {
startTime := time.Now()
parts := strings.Split(config.faasProcess, " ")
if config.debugHeaders {
@ -103,6 +105,9 @@ func pipeRequest(config *WatchdogConfig, w http.ResponseWriter, r *http.Request)
}
}
execTime := time.Since(startTime).Seconds()
w.Header().Set("X-Duration-Seconds", fmt.Sprintf("%f", execTime))
w.WriteHeader(200)
w.Write(out)

View File

@ -20,6 +20,33 @@ func TestHandler_make(t *testing.T) {
}
}
func TestHandler_HasXDurationSecondsHeader(t *testing.T) {
rr := httptest.NewRecorder()
body := "hello"
req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
if err != nil {
t.Fatal(err)
}
config := WatchdogConfig{
faasProcess: "cat",
}
handler := makeRequestHandler(&config)
handler(rr, req)
required := http.StatusOK
if status := rr.Code; status != required {
t.Errorf("handler returned wrong status code: got %v, but wanted %v",
status, required)
}
seconds := rr.Header().Get("X-Duration-Seconds")
if len(seconds) == 0 {
t.Errorf("Exec of cat should have given a duration as an X-Duration-Seconds header\n")
}
}
func TestHandler_StatusOKAllowed_ForPOST(t *testing.T) {
rr := httptest.NewRecorder()