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

Make changes to make all of the test jobs green #1981

Merged
merged 13 commits into from Dec 9, 2021

Conversation

murgatroid99
Copy link
Member

@murgatroid99 murgatroid99 commented Dec 6, 2021

This skips three groups of tests:

  1. All tests against the native library on Node versions 14 and greater. The purpose of those tests is to test that grpc-js is interoperable and behaviorally consistent with the native library, not to test the function of the native library itself. That fails if the native library itself is not behaving correctly, so it's best to skip the tests where that is the case. We are still testing that in Node versions 10 and 12.
  2. The NoCompress flag test. We currently use the encoding argument of the write method to pass write flags in. This is not supported functionality, but it has worked for a long time. However, Node 16 apparently added validation for that argument, and any flags we pass in are not considered valid. So, that now does not work at all, and as a result we cannot pass in write flags at all. We will need to find a new way to do that, but for now we are skipping the test of the way it would work currently.
  3. The DNS resolver tests with the target names loopback4.unittest.grpc.io and loopback46.unittest.grpc.io. In the first case, since there is no IPv6 address, the Mac DNS resolver returns an IPv4-embedded IPv6 address, which is out of the scope of the test to test for. In the second case, that address should resolve to 127.0.0.1 and ::1, and it works correctly on Linux. However, on Windows we only get the IPv4 address and on Mac we only get the IPv6 address, so there is nothing we can consistently test for on all platforms.

That revealed an actual bug: with the introduction of compressed message handling on the server, the message handling code now performs an asynchronous operation, which can result in reordering of messages, or messages with the end of stream event. The second commit corrects that.

@murgatroid99
Copy link
Member Author

murgatroid99 commented Dec 8, 2021

The remaining Mac failure is bizarre. The failing test is to have the DNS resolver resolve the target name loopback4.unittest.grpc.io. On Linux and Windows, it correctly returns the IP address 127.0.0.1, but on Mac, it returns 64:ff9b::7f00:1, which appears nowhere in the DNS record.

EDIT: Wikipedia has the answer:

The address prefix 64:ff9b::/96 is a class of IPv4-embedded IPv6 addresses for use in NAT64 transition methods.

@murgatroid99 murgatroid99 force-pushed the grpc-js_green_tests branch 2 times, most recently from 0e58f6a to 770c50c Compare December 9, 2021 16:58
@murgatroid99 murgatroid99 changed the title Skip some tests to make the Linux test job green Make changes to make all of the test jobs green Dec 9, 2021
@murgatroid99 murgatroid99 merged commit e8af906 into grpc:master Dec 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants