-
Notifications
You must be signed in to change notification settings - Fork 54
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
BREAKING CHANGE: feat: move StreamAllContext to netxlite #1490
Conversation
@@ -24,7 +24,7 @@ require ( | |||
github.com/miekg/dns v1.1.57 | |||
github.com/mitchellh/go-wordwrap v1.0.1 | |||
github.com/montanaflynn/stats v0.7.1 | |||
github.com/ooni/netem v0.0.0-20231213064826-3cc1ea5e942c | |||
github.com/ooni/netem v0.0.0-20240205182847-14e4ce92d41e |
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.
Updated to add additional throttling functions
@@ -267,7 +267,7 @@ func (t *CleartextFlow) httpTransaction(ctx context.Context, network, address, a | |||
t.CookieJar.SetCookies(req.URL, cookies) | |||
} | |||
reader := io.LimitReader(resp.Body, maxbody) | |||
body, err = StreamAllContext(ctx, reader) | |||
body, err = netxlite.StreamAllContext(ctx, reader) |
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.
Moved implementation
// expired when there's an error and decide what it is proper to | ||
// do in such a case. Typically, when streaming the HTTP response | ||
// body for Web Connectivity v0.5, the right thing to do is to | ||
// report the body as being truncated. |
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.
This documents the behavior change with respect to the previous implementation. I think it's more accurate to fail in Web Connectivity LTE in such a case as long as the response body is included into the response.
- TODO make sure this is true. DONE and added comments related to where this happens.
Oh noes, this test will probably fail badly if different environments throttle differently.
if err != nil { | ||
err = NewTopLevelGenericErrWrapper(err) | ||
} | ||
return data, err |
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.
Unlike the previous implementation, here I have separated the code and error wrapping to reduce the risk that refactoring leads us to miss adding error wrapping in all error paths.
// implemented inside Web Connectivity v0.5 transformed the | ||
// context.DeadlineExceeded error to nil. However, this is wrong | ||
// because it prevents distinguishing real EOF and the case in | ||
// which we timed out receiving from the socket. |
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.
This documents the BREAKING CHANGE mentioned in the commit message.
@@ -270,3 +270,133 @@ func TestCopyContext(t *testing.T) { | |||
wg.Wait() | |||
}) | |||
} | |||
|
|||
func TestStreamAllContext(t *testing.T) { |
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.
This adapts ReadAllContext
's test suite to StreamAllContext
.
Okay, I was expecting tests to fail but maybe I was overly pessimistic. The thing is that I assumed each run of the new added QA tests could product a different body because throttling is not deterministic. But, actually, the thing is that we do not regenerate the measurements at each run, we just use them along with the minipipeline. Because of this, we're fine! |
}, | ||
"response": { | ||
"body": { | ||
"data": "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", |
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.
This shows we download some body before timing out!
}, | ||
"response": { | ||
"body": { | ||
"data": "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", |
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.
This shows we download some body before timing out!
This diff moves the `StreamAllContext` implementation from `webconnectivitylte` to `netxlite`. We flagged this diff as BREAKING CHANGE because we also fixed a bug where, in case of context timeout, `StreamAllContext` was suppressing the error rather than reporting it. Re-reading the code, that felt incorrect because it did not allow us to clearly know that we timed out reading the body, which could be caused by throttling. The new behavior seems more accurate. Because of this change, I also felt it was time to add explicit tests for cases where we download fails because it takes too much time for us to fetch the whole response body. I am not 100% sure we are correctly flagging this case, but an `http-failure` probably seems fine at the moment and we can always revisit this as we learn more about throttling. Part of ooni/probe#2654.
This diff moves the
StreamAllContext
implementation fromwebconnectivitylte
tonetxlite
.We flagged this diff as BREAKING CHANGE because we also fixed a bug where, in case of context timeout,
StreamAllContext
was suppressing the error rather than reporting it. Re-reading the code, that felt incorrect because it did not allow us to clearly know that we timed out reading the body, which could be caused by throttling.The new behavior seems more accurate.
Because of this change, I also felt it was time to add explicit tests for cases where we download fails because it takes too much time for us to fetch the whole response body. I am not 100% sure we are correctly flagging this case, but an
http-failure
probably seems fine at the moment and we can always revisit this as we learn more about throttling.Part of ooni/probe#2654.