From d27d687586ba68ebe37da6c4af6222ea30c77e7c Mon Sep 17 00:00:00 2001 From: Patrick East Date: Wed, 19 Feb 2020 10:39:29 -0800 Subject: [PATCH] Increase timeout deltas for http.send timeout test The original was using very short (1us) timeouts but it seemed to be inconsistent, especially on travis. There are now larger deltas between the timeouts and longer base ones. The overall impact to the unit test times are still pretty minimal. Signed-off-by: Patrick East --- topdown/http_test.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/topdown/http_test.go b/topdown/http_test.go index 7b8a42471d..64d6cc0942 100644 --- a/topdown/http_test.go +++ b/topdown/http_test.go @@ -395,7 +395,9 @@ func TestHTTPSendTimeout(t *testing.T) { w.WriteHeader(http.StatusOK) _, _ = w.Write([]byte(`hello`)) })) - defer ts.Close() + // Note: We don't Close() the test server as it will block waiting for the + // timed out clients connections to shut down gracefully (they wont). + // We don't need to clean it up nicely for the unit test. tests := []struct { note string @@ -415,39 +417,39 @@ func TestHTTPSendTimeout(t *testing.T) { note: "default timeout", rule: `p = x { http.send({"method": "get", "url": "%URL%" }, x) }`, evalTimeout: 1 * time.Minute, - serverDelay: 500 * time.Millisecond, - defaultTimeout: 1 * time.Microsecond, + serverDelay: 5 * time.Second, + defaultTimeout: 500 * time.Millisecond, expected: &Error{Code: BuiltinErr, Message: "http.send: Get %URL%: request timed out"}, }, { note: "eval timeout", rule: `p = x { http.send({"method": "get", "url": "%URL%" }, x) }`, - evalTimeout: 1 * time.Microsecond, - serverDelay: 500 * time.Millisecond, + evalTimeout: 500 * time.Millisecond, + serverDelay: 5 * time.Second, defaultTimeout: 1 * time.Minute, expected: &Error{Code: BuiltinErr, Message: "http.send: Get %URL%: context deadline exceeded"}, }, { note: "param timeout less than default", - rule: `p = x { http.send({"method": "get", "url": "%URL%", "timeout": "1ms"}, x) }`, + rule: `p = x { http.send({"method": "get", "url": "%URL%", "timeout": "500ms"}, x) }`, evalTimeout: 1 * time.Minute, - serverDelay: 500 * time.Millisecond, + serverDelay: 5 * time.Second, defaultTimeout: 1 * time.Minute, expected: &Error{Code: BuiltinErr, Message: "http.send: Get %URL%: request timed out"}, }, { note: "param timeout greater than default", - rule: `p = x { http.send({"method": "get", "url": "%URL%", "timeout": "1ms"}, x) }`, + rule: `p = x { http.send({"method": "get", "url": "%URL%", "timeout": "500ms"}, x) }`, evalTimeout: 1 * time.Minute, - serverDelay: 500 * time.Millisecond, - defaultTimeout: 1 * time.Microsecond, + serverDelay: 5 * time.Second, + defaultTimeout: 1 * time.Millisecond, expected: &Error{Code: BuiltinErr, Message: "http.send: Get %URL%: request timed out"}, }, { note: "eval timeout less than param", rule: `p = x { http.send({"method": "get", "url": "%URL%", "timeout": "1m" }, x) }`, - evalTimeout: 1 * time.Millisecond, - serverDelay: 100 * time.Millisecond, + evalTimeout: 500 * time.Millisecond, + serverDelay: 5 * time.Second, defaultTimeout: 1 * time.Minute, expected: &Error{Code: BuiltinErr, Message: "http.send: Get %URL%: context deadline exceeded"}, },