Skip to content

refactor(storage): Migrate conformance tests to StorageTransport and enhance retry logic - #9134

Open
thiyaguk09 wants to merge 216 commits into
googleapis:storage-gaxios-migrationfrom
thiyaguk09:test/storage-conformance-gaxios
Open

refactor(storage): Migrate conformance tests to StorageTransport and enhance retry logic#9134
thiyaguk09 wants to merge 216 commits into
googleapis:storage-gaxios-migrationfrom
thiyaguk09:test/storage-conformance-gaxios

Conversation

@thiyaguk09

Copy link
Copy Markdown
Contributor

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> 🦕

thiyaguk09 added 30 commits May 7, 2026 09:10
…ration

- Updated StorageTransport to properly handle Gaxios interceptors.
- Resolved type mismatches in response handlers for Node 18.
- Fixed surgical restore logic in system-tests.
- Updated conformance test expectations for Gaxios/Node 18 transport.
- Fixed header persistence issues during retry cycles.
- Aligned test infrastructure with storage-node-18 branch requirements.
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
…sport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18
thiyaguk09 and others added 17 commits August 6, 2026 06:38
…es (googleapis#8190)

Hoists the generation of `persistentInvocationId` to the beginning of
the
upload process in `Bucket.upload` and `File.save`. This ensures that
retried multipart upload attempts reuse the same invocation ID in the
`x-goog-api-client` header, rather than generating a new one for each
attempt.

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](https://github.com/googleapis/{{metadata['repo']['name']}}/issues)
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> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(storage): standardize URL formatting and enhance transport retry

* fix storage transport & retry issues

* fix

* Update handwritten/storage/src/file.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(storage): interceptors test

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* feat: implement robust storage conformance test retry framework with request interception and test bench integration

* fix: correct response handler for binary/resumable uploads and improve etag check

- Updated `responseHandler` to correctly handle different payload types:
- Plain objects are mutated with `.headers` and `.status` and
returned.
- Binary payloads (Buffer/Stream) return raw data to prevent dangerous
mutations.
- Primitives (e.g., empty strings) return the full `GaxiosResponse`
wrapper to preserve access to headers like `Location` for resumable
upload initiation.
- Fixed `hasPrecondition` logic to safely parse stringified JSON or
inspect objects directly for an `etag` property. This prevents false
positives on raw text payloads containing the word "etag" and false
negatives on object payloads.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods

* fix: update file request URL construction to support custom protocol endpoints

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class

* fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios responses in storage tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor: improve type safety and validation logic in isBucket helper function

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190)

Hoists the generation of `persistentInvocationId` to the beginning of
the
upload process in `Bucket.upload` and `File.save`. This ensures that
retried multipart upload attempts reuse the same invocation ID in the
`x-goog-api-client` header, rather than generating a new one for each
attempt.

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](https://github.com/googleapis/{{metadata['repo']['name']}}/issues)
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> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(storage): standardize URL formatting and enhance transport retry

* fix storage transport & retry issues

* fix

* Update handwritten/storage/src/file.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(storage): interceptors test

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* feat: implement robust storage conformance test retry framework with request interception and test bench integration

* fix: correct response handler for binary/resumable uploads and improve etag check

- Updated `responseHandler` to correctly handle different payload types:
- Plain objects are mutated with `.headers` and `.status` and
returned.
- Binary payloads (Buffer/Stream) return raw data to prevent dangerous
mutations.
- Primitives (e.g., empty strings) return the full `GaxiosResponse`
wrapper to preserve access to headers like `Location` for resumable
upload initiation.
- Fixed `hasPrecondition` logic to safely parse stringified JSON or
inspect objects directly for an `etag` property. This prevents false
positives on raw text payloads containing the word "etag" and false
negatives on object payloads.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods

* fix: update file request URL construction to support custom protocol endpoints

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class

* fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios responses in storage tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor: improve type safety and validation logic in isBucket helper function

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190)

Hoists the generation of `persistentInvocationId` to the beginning of
the
upload process in `Bucket.upload` and `File.save`. This ensures that
retried multipart upload attempts reuse the same invocation ID in the
`x-goog-api-client` header, rather than generating a new one for each
attempt.

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](https://github.com/googleapis/{{metadata['repo']['name']}}/issues)
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> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(storage): standardize URL formatting and enhance transport retry

* fix storage transport & retry issues

* fix

* Update handwritten/storage/src/file.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(storage): interceptors test

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* feat: implement robust storage conformance test retry framework with request interception and test bench integration

* fix: correct response handler for binary/resumable uploads and improve etag check

- Updated `responseHandler` to correctly handle different payload types:
- Plain objects are mutated with `.headers` and `.status` and
returned.
- Binary payloads (Buffer/Stream) return raw data to prevent dangerous
mutations.
- Primitives (e.g., empty strings) return the full `GaxiosResponse`
wrapper to preserve access to headers like `Location` for resumable
upload initiation.
- Fixed `hasPrecondition` logic to safely parse stringified JSON or
inspect objects directly for an `etag` property. This prevents false
positives on raw text payloads containing the word "etag" and false
negatives on object payloads.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods

* fix: update file request URL construction to support custom protocol endpoints

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class

* fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios responses in storage tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor: improve type safety and validation logic in isBucket helper function

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190)

Hoists the generation of `persistentInvocationId` to the beginning of
the
upload process in `Bucket.upload` and `File.save`. This ensures that
retried multipart upload attempts reuse the same invocation ID in the
`x-goog-api-client` header, rather than generating a new one for each
attempt.

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](https://github.com/googleapis/{{metadata['repo']['name']}}/issues)
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> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@product-auto-label product-auto-label Bot added the api: storage Issues related to the Cloud Storage API. label Aug 12, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the storage conformance tests to use StorageTransport directly for making API requests, updates test bench configurations, and improves URL normalization and error handling in StorageTransport. The reviewer feedback highlights several critical improvements: returning the chained promise in StorageTransport.makeRequest to prevent unhandled promise rejections, avoiding dynamic require() in favor of synchronous fs reads for service account keys, ensuring bucket and object names are URL-encoded in libraryMethods.ts, and removing an unnecessary promise return in Storage.createHmacKey to prevent conflicts with promisification.

Comment thread handwritten/storage/src/storage-transport.ts
Comment thread handwritten/storage/conformance-test/conformanceCommon.ts
Comment thread handwritten/storage/conformance-test/conformanceCommon.ts Outdated
Comment thread handwritten/storage/conformance-test/libraryMethods.ts
Comment thread handwritten/storage/src/storage.ts Outdated
@thiyaguk09
thiyaguk09 marked this pull request as ready for review August 12, 2026 08:53
@thiyaguk09
thiyaguk09 requested a review from a team as a code owner August 12, 2026 08:53
thiyaguk09 and others added 4 commits August 13, 2026 08:14
* fix(storage): standardize URL formatting and enhance transport retry

* fix storage transport & retry issues

* fix

* Update handwritten/storage/src/file.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(storage): interceptors test

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* feat: implement robust storage conformance test retry framework with request interception and test bench integration

* fix: correct response handler for binary/resumable uploads and improve etag check

- Updated `responseHandler` to correctly handle different payload types:
- Plain objects are mutated with `.headers` and `.status` and
returned.
- Binary payloads (Buffer/Stream) return raw data to prevent dangerous
mutations.
- Primitives (e.g., empty strings) return the full `GaxiosResponse`
wrapper to preserve access to headers like `Location` for resumable
upload initiation.
- Fixed `hasPrecondition` logic to safely parse stringified JSON or
inspect objects directly for an `etag` property. This prevents false
positives on raw text payloads containing the word "etag" and false
negatives on object payloads.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities.

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods

* fix: update file request URL construction to support custom protocol endpoints

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class

* fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios responses in storage tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* test: add bytes method to mock Gaxios response in acl and headers tests

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* fix(storage): standardize URL formatting and enhance transport retry

* refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283)

- Remove Service.ts and common.ts files from handwritten/storage

- Migrate remaining functionality to StorageTransport

- chore(ci): upgrade conformance tests to Node 18

* refactor: improve type safety and validation logic in isBucket helper function

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190)

Hoists the generation of `persistentInvocationId` to the beginning of
the
upload process in `Bucket.upload` and `File.save`. This ensures that
retried multipart upload attempts reuse the same invocation ID in the
`x-goog-api-client` header, rather than generating a new one for each
attempt.

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](https://github.com/googleapis/{{metadata['repo']['name']}}/issues)
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> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@thiyaguk09
thiyaguk09 force-pushed the storage-gaxios-migration branch from 9e95e7a to 7945c91 Compare August 13, 2026 08:22
@thiyaguk09
thiyaguk09 force-pushed the storage-gaxios-migration branch from 7945c91 to 0c27d9e Compare August 14, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: storage Issues related to the Cloud Storage API.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant