mirror of
https://github.com/openfaas/faas.git
synced 2025-06-19 04:26:35 +00:00
Add x-duration-seconds for all functions via watchdog
This commit is contained in:
@ -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)
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
Reference in New Issue
Block a user