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

feat: Add minifyJson param to request minified JSON responses when using the REST fallback #1632

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

MarkDuckworth
Copy link

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Make sure to open an issue as a bug/issue before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕

@MarkDuckworth MarkDuckworth requested review from a team as code owners July 11, 2024 22:04
@product-auto-label product-auto-label bot added the size: xs Pull request size is extra small. label Jul 11, 2024
@product-auto-label product-auto-label bot added size: s Pull request size is small. and removed size: xs Pull request size is extra small. labels Jul 11, 2024
@product-auto-label product-auto-label bot added size: m Pull request size is medium. and removed size: s Pull request size is small. labels Jul 12, 2024
@MarkDuckworth MarkDuckworth changed the title fix: Disable pretty-print for JSON responses when using the REST fallback feat: Add minifyJson param to request minified JSON responses when using the REST fallback Jul 12, 2024
gax/src/fallback.ts Show resolved Hide resolved
@@ -61,6 +62,13 @@ export function encodeRequest(
'$alt=json%3Benum-encoding=int';
}

// If minifyJson feature is requsted, disable pretty-print JSON responses
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
// If minifyJson feature is requsted, disable pretty-print JSON responses
// If minifyJson feature is requested, disable pretty-print JSON responses

Copy link
Author

Choose a reason for hiding this comment

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

Thanks, fixed.

@@ -202,7 +207,10 @@ describe('REGAPIC', () => {

gaxGrpc.createStub(libraryService, stubOptions).then(libStub => {
libStub.getShelf(requestObject, {}, {}, (err?: {}, result?: {}) => {
assert.strictEqual(spy.getCall(0).returnValue?.queryString, '');
assert.doesNotMatch(
Copy link
Contributor

Choose a reason for hiding this comment

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

Not sure what this is testing (what is $alt)? If possible, could we search for what we are looking for? This will also allow readability in the code (it will help future maintainers understand what the behavior should look like). Or, if we also want to test it does not contain $alt, let's also add a positive-looking test. It's also a bit confusing to test the first call OR an empty string?

Copy link
Author

Choose a reason for hiding this comment

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

Good call. I reverted these changes. They were artifacts from a different implementation, but I left them in because I thought they made the tests more robust. However, with your comment I see the downsides.

@@ -237,7 +245,10 @@ describe('REGAPIC', () => {
);
gaxGrpc.createStub(libraryService, stubOptions).then(libStub => {
libStub.createShelf(requestObject, {}, {}, (err?: {}) => {
assert.strictEqual(spy.getCall(0).returnValue?.queryString, '');
assert.doesNotMatch(
Copy link
Contributor

Choose a reason for hiding this comment

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

same comment as above.

Copy link
Author

Choose a reason for hiding this comment

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

same

.then(libStub => {
libStub.getShelf(requestObject, {}, {}, (err?: {}, result?: {}) => {
assert.match(
spy.getCall(0).returnValue?.queryString ?? '',
Copy link
Contributor

Choose a reason for hiding this comment

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

In general I don't think we should be unsure of what we're matching (I don't think we should be using the nullish coalescing operator in tests)

Copy link
Author

Choose a reason for hiding this comment

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

I updated this. It was just a way to force the argument to be a string.

@@ -569,4 +583,86 @@ describe('REGAPIC', () => {
}, /* catch: */ done);
});
});

Copy link
Contributor

Choose a reason for hiding this comment

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

should we also add a test that confirms the response was minified? it seems like we're testing data integrity and that we're sending the prettyPrint request, but maybe we could also see if the actual size of the response is smaller. We have a similar test here that could be useful!

Copy link
Author

Choose a reason for hiding this comment

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

I agree that this test would be useful, but I think it requires a system test that hits a real service endpoint. It's not clear to me how to implement that.

@danielbankhead danielbankhead added the owlbot:run Add this label to trigger the Owlbot post processor. label Aug 30, 2024
@gcf-owl-bot gcf-owl-bot bot removed the owlbot:run Add this label to trigger the Owlbot post processor. label Aug 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size: m Pull request size is medium.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants