Skip to content

Commit 8cc53c3

Browse files
committed
misc: support additional smoke test vendor params
1 parent 3eba8b9 commit 8cc53c3

File tree

3 files changed

+94
-9
lines changed

3 files changed

+94
-9
lines changed

codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/KotlinDependency.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ data class KotlinDependency(
129129
val IDENTITY_API = KotlinDependency(GradleConfiguration.Implementation, "$RUNTIME_ROOT_NS", RUNTIME_GROUP, "identity-api", RUNTIME_VERSION)
130130
val SMITHY_RPCV2_PROTOCOLS = KotlinDependency(GradleConfiguration.Implementation, "$RUNTIME_ROOT_NS.awsprotocol.rpcv2", RUNTIME_GROUP, "smithy-rpcv2-protocols", RUNTIME_VERSION)
131131
val SMITHY_RPCV2_PROTOCOLS_CBOR = KotlinDependency(GradleConfiguration.Implementation, "$RUNTIME_ROOT_NS.awsprotocol.rpcv2.cbor", RUNTIME_GROUP, "smithy-rpcv2-protocols", RUNTIME_VERSION)
132+
val AWS_SIGNING_CRT = KotlinDependency(GradleConfiguration.Implementation, "$RUNTIME_ROOT_NS.auth.awssigning.crt", RUNTIME_GROUP, "aws-signing-crt", RUNTIME_VERSION)
132133

133134
// External third-party dependencies
134135
val KOTLIN_STDLIB = KotlinDependency(GradleConfiguration.Implementation, "kotlin", "org.jetbrains.kotlin", "kotlin-stdlib", KOTLIN_COMPILER_VERSION)

codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/RuntimeTypes.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,10 @@ object RuntimeTypes {
378378
val sigV4 = symbol("sigV4")
379379
val sigV4A = symbol("sigV4A")
380380
}
381+
382+
object AwsSigningCrt : RuntimeTypePackage(KotlinDependency.AWS_SIGNING_CRT) {
383+
val CrtAwsSigner = symbol("CrtAwsSigner")
384+
}
381385
}
382386

383387
object Observability {

codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/smoketests/SmokeTestsRunnerGenerator.kt

Lines changed: 89 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ package software.amazon.smithy.kotlin.codegen.rendering.smoketests
33
import software.amazon.smithy.codegen.core.Symbol
44
import software.amazon.smithy.kotlin.codegen.core.*
55
import software.amazon.smithy.kotlin.codegen.integration.SectionId
6+
import software.amazon.smithy.kotlin.codegen.integration.SectionKey
67
import software.amazon.smithy.kotlin.codegen.model.getTrait
78
import software.amazon.smithy.kotlin.codegen.model.hasTrait
9+
import software.amazon.smithy.kotlin.codegen.rendering.endpoints.EndpointParametersGenerator
10+
import software.amazon.smithy.kotlin.codegen.rendering.endpoints.EndpointProviderGenerator
11+
import software.amazon.smithy.kotlin.codegen.rendering.smoketests.SmokeTestUriValue.EndpointParameters
12+
import software.amazon.smithy.kotlin.codegen.rendering.smoketests.SmokeTestUriValue.EndpointProvider
813
import software.amazon.smithy.kotlin.codegen.rendering.util.format
914
import software.amazon.smithy.kotlin.codegen.utils.dq
1015
import software.amazon.smithy.kotlin.codegen.utils.toCamelCase
@@ -18,7 +23,21 @@ object SmokeTestsRunner : SectionId
1823
object SmokeTestAdditionalEnvVars : SectionId
1924
object SmokeTestDefaultConfig : SectionId
2025
object SmokeTestRegionDefault : SectionId
26+
object SmokeTestUseDualStackKey : SectionId
27+
object SmokeTestSigv4aRegionSetKey : SectionId
28+
object SmokeTestSigv4aRegionSetValue : SectionId
29+
object SmokeTestAccountIdBasedRoutingKey : SectionId
30+
object SmokeTestAccountIdBasedRoutingValue : SectionId
2131
object SmokeTestHttpEngineOverride : SectionId
32+
object SmokeTestUseAccelerateKey : SectionId
33+
object SmokeTestUseMultiRegionAccessPointsKey : SectionId
34+
object SmokeTestUseMultiRegionAccessPointsValue : SectionId
35+
object SmokeTestUseGlobalEndpoint : SectionId
36+
object SmokeTestUriKey : SectionId
37+
object SmokeTestUriValue : SectionId {
38+
val EndpointProvider: SectionKey<Symbol> = SectionKey("EndpointProvider")
39+
val EndpointParameters: SectionKey<Symbol> = SectionKey("EndpointParameters")
40+
}
2241

2342
const val SKIP_TAGS = "AWS_SMOKE_TEST_SKIP_TAGS"
2443
const val SERVICE_FILTER = "AWS_SMOKE_TEST_SERVICE_IDS"
@@ -31,10 +50,11 @@ class SmokeTestsRunnerGenerator(
3150
ctx: CodegenContext,
3251
) {
3352
private val model = ctx.model
34-
private val sdkId = ctx.settings.sdkId
53+
private val settings = ctx.settings
54+
private val sdkId = settings.sdkId
3555
private val symbolProvider = ctx.symbolProvider
36-
private val service = symbolProvider.toSymbol(model.expectShape(ctx.settings.service))
37-
private val operations = ctx.model.topDownOperations(ctx.settings.service).filter { it.hasTrait<SmokeTestsTrait>() }
56+
private val service = symbolProvider.toSymbol(model.expectShape(settings.service))
57+
private val operations = model.topDownOperations(settings.service).filter { it.hasTrait<SmokeTestsTrait>() }
3858

3959
internal fun render() {
4060
writer.declareSection(SmokeTestsRunner) {
@@ -108,12 +128,72 @@ class SmokeTestsRunnerGenerator(
108128
writer.withInlineBlock("#L {", "}", service) {
109129
if (testCase.vendorParams.isPresent) {
110130
testCase.vendorParams.get().members.forEach { vendorParam ->
111-
if (vendorParam.key.value == "region") {
112-
writeInline("#L = ", vendorParam.key.value.toCamelCase())
113-
declareSection(SmokeTestRegionDefault)
114-
write("#L", vendorParam.value.format())
115-
} else {
116-
write("#L = #L", vendorParam.key.value.toCamelCase(), vendorParam.value.format())
131+
when (vendorParam.key.value) {
132+
"region" -> {
133+
writeInline("#L = ", vendorParam.key.value.toCamelCase())
134+
declareSection(SmokeTestRegionDefault)
135+
write("#L", vendorParam.value.format())
136+
}
137+
"sigv4aRegionSet" -> {
138+
declareSection(SmokeTestSigv4aRegionSetKey) {
139+
writeInline("#L", vendorParam.key.value.toCamelCase())
140+
}
141+
writeInline(" = ")
142+
declareSection(SmokeTestSigv4aRegionSetValue) {
143+
write("#L", vendorParam.value.format())
144+
}
145+
}
146+
"uri" -> {
147+
declareSection(SmokeTestUriKey) {
148+
writeInline("#L", vendorParam.key.value.toCamelCase())
149+
}
150+
writeInline(" = ")
151+
declareSection(
152+
SmokeTestUriValue,
153+
mapOf(
154+
EndpointProvider to EndpointProviderGenerator.getSymbol(settings),
155+
EndpointParameters to EndpointParametersGenerator.getSymbol(settings),
156+
),
157+
) {
158+
write("#L", vendorParam.value.format())
159+
}
160+
}
161+
"useDualstack" -> {
162+
declareSection(SmokeTestUseDualStackKey) {
163+
writeInline("#L", vendorParam.key.value.toCamelCase())
164+
}
165+
write(" = #L", vendorParam.value.format())
166+
}
167+
"useAccountIdRouting" -> {
168+
declareSection(SmokeTestAccountIdBasedRoutingKey) {
169+
writeInline("#L", vendorParam.key.value.toCamelCase())
170+
}
171+
writeInline(" = ")
172+
declareSection(SmokeTestAccountIdBasedRoutingValue) {
173+
write("#L", vendorParam.value.format())
174+
}
175+
}
176+
"useAccelerate" -> {
177+
declareSection(SmokeTestUseAccelerateKey) {
178+
writeInline("#L", vendorParam.key.value.toCamelCase())
179+
}
180+
write(" = #L", vendorParam.value.format())
181+
}
182+
"useMultiRegionAccessPoints" -> {
183+
declareSection(SmokeTestUseMultiRegionAccessPointsKey) {
184+
writeInline("#L", vendorParam.key.value.toCamelCase())
185+
}
186+
writeInline(" = ")
187+
declareSection(SmokeTestUseMultiRegionAccessPointsValue) {
188+
write("#L", vendorParam.value.format())
189+
}
190+
}
191+
"useGlobalEndpoint" -> {
192+
declareSection(SmokeTestUseGlobalEndpoint) {
193+
write("#L = #L", vendorParam.key.value.toCamelCase(), vendorParam.value.format())
194+
}
195+
}
196+
else -> write("#L = #L", vendorParam.key.value.toCamelCase(), vendorParam.value.format())
117197
}
118198
}
119199
} else {

0 commit comments

Comments
 (0)