Skip to content

Merge core.json into operations, and add case origins and S3 checksums - #6

Merged
tiptenbrink merged 2 commits into
masterfrom
case-origins-and-checksums
Sep 28, 2026
Merged

tiptenbrink merged 2 commits into
masterfrom
case-origins-and-checksums

Conversation

@tiptenbrink

Copy link
Copy Markdown
Collaborator

Summary

  • Case origins. A case may declare origin: observed (the default, left out), transient (the service sends the response, but not on demand, such as a 503 under load) or constructed (no service is known to send it). The grader grades every origin alike. 37 cases carry a non-default origin.
  • operations/s3/list-encoding-ignored, a constructed case: a service that ignores encoding-type=url sends raw keys and no EncodingType. The keys hold a % that begins no escape, which reads as text.
  • core.json is merged into operations.json.
    • 42 core cases were already covered by an operations case and are dropped. So are six that checked only an error kind beside the status and code, and four binary-body cases that the gzip cases already round-trip.
    • The other 25 moved under operations names, such as operations/s3/get-xml-looking, operations/s3/get-version and operations/azure/list-pagination.
    • Three stay as the grader's own test fixture, tests/cases.json, so the grader's tests no longer depend on the corpus.
  • S3 checksums.
    • put-with-crc32 sends one additional checksum.
    • put-two-checksums expects S3's 400 InvalidRequest for two x-amz-checksum- headers, and permits a local refusal over checksums.
    • list-checksum-algorithm has list entries report checksum_algorithm as one name. S3's API model makes ChecksumAlgorithm a list, but S3 keeps one checksum per object.

Every moved and new case was verified live against S3 and Azure, except list-encoding-ignored, which S3 cannot be made to send.

For clients

  • Grading core.json stops working. Its cases now live in operations.json under new ids, so an expected-unsupported list that names core ids needs updating.
  • An adapter that leaves out checksum_algorithm on list entries gets list-checksum-algorithm wrong, unless it declares the field in unsupported_fields.

Test plan

  • cargo test --locked, cargo clippy --locked --all-targets -- -D warnings and cargo fmt --check pass.
  • object-tests validate passes for cases/operations.json (713 cases) and cases/s3-express.json (164 cases).

tiptenbrink and others added 2 commits September 28, 2026 21:36
A case may declare its origin: observed, transient or constructed. The new constructed case list-encoding-ignored answers encoding-type=url with raw keys and no EncodingType.
core.json is gone. The 25 cases that operations did not cover moved into operations.json, and three stay as the grader's own fixture in tests/cases.json.
New S3 cases put-with-crc32, put-two-checksums and list-checksum-algorithm show that S3 keeps one checksum per object, and list entries report checksum_algorithm.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@tiptenbrink
tiptenbrink merged commit 7cb4306 into master Sep 28, 2026
2 checks passed
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.

1 participant