Skip to content

Commit 402686b

Browse files
committed
Add new integration-tests for server
This `integration-tests` directory makes it possible to write Rust code that you can run directly against the generated servers from the protocol test models. This makes it easier to test things like event streams behavior and other specifics that are hard to test with protocol tests alone.
1 parent 5b71235 commit 402686b

File tree

10 files changed

+2439
-6
lines changed

10 files changed

+2439
-6
lines changed

buildSrc/src/main/kotlin/CodegenTestCommon.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ fun Project.registerGenerateSmithyBuildTask(
241241
val resolvedPath = project.projectDir.resolve(it)
242242
if (resolvedPath.exists()) {
243243
inputs.file(resolvedPath)
244+
outputs.file(resolvedPath)
244245
}
245246
}
246247

codegen-core/common-test-models/rpcv2Cbor-extras.smithy

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,12 @@ structure StreamingOperationInput {
3737

3838
@streaming
3939
union Events {
40-
A: Unit,
41-
B: Unit
40+
A: Event,
41+
B: Event,
42+
C: Event,
43+
}
44+
45+
structure Event {
4246
}
4347

4448

codegen-server-test/build.gradle.kts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ plugins {
1313
java
1414
alias(libs.plugins.smithy.gradle.base)
1515
alias(libs.plugins.smithy.gradle.jar)
16+
id("com.dorongold.task-tree") version "2.1.1"
1617
}
1718

1819
val properties = PropertyRetriever(rootProject, project)
@@ -35,8 +36,16 @@ smithy {
3536

3637
val allCodegenTests = "../codegen-core/common-test-models".let { commonModels ->
3738
listOf(
38-
CodegenTest("crate#Config", "naming_test_ops", imports = listOf("$commonModels/naming-obstacle-course-ops.smithy")),
39-
CodegenTest("casing#ACRONYMInside_Service", "naming_test_casing", imports = listOf("$commonModels/naming-obstacle-course-casing.smithy")),
39+
CodegenTest(
40+
"crate#Config",
41+
"naming_test_ops",
42+
imports = listOf("$commonModels/naming-obstacle-course-ops.smithy"),
43+
),
44+
CodegenTest(
45+
"casing#ACRONYMInside_Service",
46+
"naming_test_casing",
47+
imports = listOf("$commonModels/naming-obstacle-course-casing.smithy"),
48+
),
4049
CodegenTest(
4150
"naming_obs_structs#NamingObstacleCourseStructs",
4251
"naming_test_structs",
@@ -47,7 +56,7 @@ val allCodegenTests = "../codegen-core/common-test-models".let { commonModels ->
4756
CodegenTest(
4857
"smithy.protocoltests.rpcv2Cbor#RpcV2CborService",
4958
"rpcv2Cbor_extras",
50-
imports = listOf("$commonModels/rpcv2Cbor-extras.smithy")
59+
imports = listOf("$commonModels/rpcv2Cbor-extras.smithy"),
5160
),
5261
CodegenTest(
5362
"com.amazonaws.constraints#ConstraintsService",
@@ -105,11 +114,18 @@ project.registerGenerateCargoWorkspaceTask(rootProject, pluginName, allCodegenTe
105114
project.registerGenerateCargoConfigTomlTask(layout.buildDirectory.dir(workingDirUnderBuildDir).get().asFile)
106115

107116
tasks["smithyBuild"].dependsOn("generateSmithyBuild")
117+
tasks["smithyBuild"].inputs.files(tasks["generateSmithyBuild"].outputs)
108118
tasks["assemble"].finalizedBy("generateCargoWorkspace", "generateCargoConfigToml")
109119

110120
project.registerModifyMtimeTask()
111121
project.registerCargoCommandsTasks(layout.buildDirectory.dir(workingDirUnderBuildDir).get().asFile)
112122

113-
tasks["test"].finalizedBy(cargoCommands(properties).map { it.toString })
123+
tasks.register<Exec>("cargoTestIntegration") {
124+
dependsOn("assemble")
125+
workingDir(projectDir.resolve("integration-tests"))
126+
commandLine("cargo", "test")
127+
}
128+
129+
tasks["test"].finalizedBy(cargoCommands(properties).map { it.toString }, "cargoTestIntegration")
114130

115131
tasks["clean"].doFirst { delete("smithy-build.json") }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Cargo.lock

0 commit comments

Comments
 (0)