-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix 'Client.Endpoint' to not 'cancel' when bufferedStream #776
Changes from all commits
c8e2326
1fd618d
d5a7f52
f37c50f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -98,8 +98,12 @@ func TestHTTPClient(t *testing.T) { | |
} | ||
|
||
func TestHTTPClientBufferedStream(t *testing.T) { | ||
// bodysize has a size big enought to make the resopnse.Body not an instant read | ||
// so if the response is cancelled it wount be all readed and the test would fail | ||
// The 6000 has not a particular meaning, it big enough to fulfill the usecase. | ||
const bodysize = 6000 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I guess my question was more like: why is 6000 big enough, and 9000 too big? Is there a constant or default buffer size or something defined in the stdlib net/http package? If so, can you refer to that? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would also want to know that ... but I've tried to search for it, where the body is setted on a response and how is the Also the 9000 it's not "too big" but it simply makes the
So the next read to the body would return the I think is on the way the body is read, I think that it's read by "chunks" from the "sender" instead of buffering all the body. |
||
var ( | ||
testbody = "testbody" | ||
testbody = string(make([]byte, bodysize)) | ||
encode = func(context.Context, *http.Request, interface{}) error { return nil } | ||
decode = func(_ context.Context, r *http.Response) (interface{}, error) { | ||
return TestResponse{r.Body, ""}, nil | ||
|
@@ -129,6 +133,9 @@ func TestHTTPClientBufferedStream(t *testing.T) { | |
if !ok { | ||
t.Fatal("response should be TestResponse") | ||
} | ||
defer response.Body.Close() | ||
// Faking work | ||
time.Sleep(time.Second * 1) | ||
|
||
// Check that response body was NOT closed | ||
b := make([]byte, len(testbody)) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A comment here to motivate this wrapper would also be welcome. Something like this, feel free to rephrase if I got something wrong: