smithy-rs/codegen-client-test
ysaito1001 36b50b3dac
Add client-support for RPC v2 CBOR (#3767)
## Motivation and Context
Follow-up on https://github.com/smithy-lang/smithy-rs/pull/2544 to add
client-side support for the protocol

## Description
The client implementation mainly focuses on a sub-section
[Requests](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html#requests)
in the spec. To that end, this PR addresses `TODO` for the client to
fill in the blanks and includes additional adjustments/refactoring to
pass client protocol tests.

## Testing
- Existing tests in CI
- Upstream protocol test `rpcv2Cbor`
- Our handwritten protocol test `rpcv2Cbor-extras.smithy`

----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._
2024-07-31 19:22:03 +00:00
..
model Upgrade Smithy to 1.45 (#3470) 2024-03-08 13:16:02 -08:00
.gitignore Establish the `codegen-core` module (#1697) 2022-09-07 09:31:46 -07:00
README.md Break up `RustCodegenDecorator` (#2099) 2022-12-14 13:26:55 -08:00
build.gradle.kts Add client-support for RPC v2 CBOR (#3767) 2024-07-31 19:22:03 +00:00

README.md

Codegen Integration Tests

This module defines integration tests of the code generation machinery. ./build.gradle.kts will generate a smithy-build.json file as part of the build. The rust-client-codegen Smithy build plugin then invokes our codegen machinery and generates Rust crates, one for each of the integration test services defined under model/.

Usage

These commands are all meant to be run from the repository root.

To run all protocol tests of all the integration test services:

./gradlew codegen-client-test:build

To run only a subset of the integration test services (refer to ./build.gradle.kts for a full list):

./gradlew codegen-client-test:build -P modules='simple,rest_json'

The Gradle task will run cargo check, cargo test, cargo docs and cargo clippy by default on all the generated Rust crates. You can also specify a subset of these commands. For instance, if you're working on documentation and want to check that the crates also compile, you can run:

./gradlew codegen-client-test:build -P cargoCommands='check,docs'

For fast development iteration cycles on protocol tests, we recommend you write a codegen unit test with a minimal service definition and only run that unit test. Alternatively, you can write a minimal integration test service definition in model/simple.smithy and run:

./gradlew codegen-client-test:build -P cargoCommands='test' -P modules='simple'