Skip to content

FAQ for implementing a conformance client or server #827

@jhump

Description

@jhump

We now have detailed docs for testing a client or server implementation.

But there are some issues that we've hit when implementing these that warrant a Frequently Asked Questions page.

Here are the issues I'm thinking we could seed the FAQ with:

  • Why do I see an "invalid error" for every request from my conformance client?
    • We need to review a little further how exactly this manifests, but this would likely be about not passing request headers from the client under test. The reference server requires one of the headers to always be present (a header that identifies the particular test case for the request), and rejects requests that don't have it. So if someone is trying out a client implementation to test, but haven't yet implemented passing request headers, nothing will actually work.
  • Why do I keep getting "timed out waiting for result from client"?
    • Something about flushing the output and making sure the client process cleanly exits at the end and responds to SIGTERM by exiting.
    • Probably also mention troubleshooting with --v and how to safely log from the program under test by writing to stderr.
  • Why am I seeing encoding errors?
    • Something here about incorrectly supporting "deflate" compression (using RFC 1951 instead of RFC 1950, which is a trivial and common mistake to make that even we made in earlier release candidates -- see Fix deflate algorithm to adhere to RFC 1950 #824 for more context).
    • Maybe something here also about making sure that client disables support for all compression algorithms other than the one indicated in the ClientCompatRequest (need more info the client docs for this, too).

@smaye81, @srikrsna-buf, @rebello95, @drice-buf, @jchadwick-buf: I'd love for all of you to add anything else you can think of regarding issues you encountered working with this stuff. Some of the FAQ items will likely also warrant some extra info in some of the other doc pages, too.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions