Skip to content
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

test: refactor test-http-information-processing #32547

Merged
merged 1 commit into from
Mar 31, 2020
Merged

Conversation

Trott
Copy link
Member

@Trott Trott commented Mar 29, 2020

Replace magic numbers with constant.
Use for loop for repeated code.
Reduce console logging.
Remove unneeded countdown module use.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • commit message follows commit guidelines

@nodejs-github-bot nodejs-github-bot added the test Issues and PRs related to the tests. label Mar 29, 2020
@Trott Trott added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Mar 29, 2020
@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

nodejs-github-bot commented Mar 29, 2020

console.error('Server sending full response...');
res.writeHead(200, {
'Content-Type': 'text/plain',
'ABCD': '1'
});
res.end(test_res_body);
res.end(testResBody);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

common.mustCall variant can be used here.

Copy link
Member Author

@Trott Trott Mar 30, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could, but I'm not sure we should. This test isn't checking to see if res.end() fires its callback or not. If the response isn't sent, the test will fail. We don't need the extra check. Adding checks that are unrelated to the test case makes it harder for someone reading the code to understand what the test is actually supposed to be testing.

This makes it sound like I'm much more opposed to the idea than I actually am. I'm on the fence, around a -0 or so.

I was a -1 about 10 minutes ago, so 10 minutes from now, I'll probably be an enthusiastic +1.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test isn't checking to see if res.end() fires its callback or not

correct me if I am wrong, but isn't that the case with most of 100+ http test cases?

  • intent of the test does not cover explicit checking on res.end
  • but as a matter of practice, they do that check
    if you can generalize a statement around whether http tests should check life cycle events are met or not I can also work towards implementing this across other tests too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • intent of the test does not cover explicit checking on res.end
  • but as a matter of practice, they do that check

I'm not seeing that with res.end() calls. I'm using grep and doing a naive/superficial check, so results may be imperfect but close enough to draw reasonable conclusions:

  • Almost none of the 200+ calls to res.end() in parallel/test-http* have a callback wrapped in mustCall(). The majority of them are like the call here where res.endI() is called and no callback is provided.
  • Of those that do wrap a callback in muscCall(), only one file checks empty callback: test-http-outgoing-end-multiple.js. That makes sense for that test because it is literally checking that calling res.end() multiple times will work as expected.

I don't think we should add a check for a callback here that we're not using. Again, I'm not strongly opposed, but I am mildly resistant. 😀

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used this command grep -e "res.on('end" -e "response.on('end" test-http*.js | grep "mustCall" | wc -l and got around 50 instances. Unfortunately I don't have the insight to validate their context. so I will leave it at that. Thank you!

Replace magic numbers with constant.
Use for loop for repeated code.
Reduce console logging.
Remove unneeded countdown module use.

PR-URL: nodejs#32547
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
@Trott
Copy link
Member Author

Trott commented Mar 31, 2020

Landed in 8905be2

@Trott Trott merged commit 8905be2 into nodejs:master Mar 31, 2020
@Trott Trott deleted the info-proc branch March 31, 2020 20:12
@Trott
Copy link
Member Author

Trott commented Mar 31, 2020

I honestly have no idea what happened. I did make that change, but yeah, clearly I didn't push it up or something....

@Trott
Copy link
Member Author

Trott commented Mar 31, 2020

I wonder if I did it on some other PR but left the comment and clicked "Resolve" in this one....

@jasnell
Copy link
Member

jasnell commented Mar 31, 2020

No worries, I'll mark it as a todo for a future round of edits.

@Trott
Copy link
Member Author

Trott commented Mar 31, 2020

No worries, I'll mark it as a todo for a future round of edits.

#32588

MylesBorins pushed a commit that referenced this pull request Mar 31, 2020
Replace magic numbers with constant.
Use for loop for repeated code.
Reduce console logging.
Remove unneeded countdown module use.

PR-URL: #32547
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
targos pushed a commit that referenced this pull request Apr 22, 2020
Replace magic numbers with constant.
Use for loop for repeated code.
Reduce console logging.
Remove unneeded countdown module use.

PR-URL: #32547
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. test Issues and PRs related to the tests.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants