Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: smoke tests #1388

Merged
merged 31 commits into from
Sep 26, 2024
Merged

feat: smoke tests #1388

merged 31 commits into from
Sep 26, 2024

Conversation

0marperez
Copy link
Contributor

@0marperez 0marperez commented Aug 23, 2024

Issue #

Description of changes

Adds gradle support for smoke tests

Companion PR: smithy-lang/smithy-kotlin#1141

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Copy link

A new generated diff is ready to view.

This comment has been minimized.

@0marperez 0marperez marked this pull request as ready for review August 23, 2024 15:57
@0marperez 0marperez requested a review from a team as a code owner August 23, 2024 15:57
Copy link
Member

Choose a reason for hiding this comment

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

opinion: I don't think we need a changelog entry here in aws-sdk-kotlin, it's not customer-facing

Comment on lines 26 to 33
private var hasSmokeTests = AtomicBoolean(false)

// Only used to access settings - will always be true
override fun enabledForService(model: Model, settings: KotlinSettings): Boolean {
hasSmokeTests.set(model.operations(settings.service).any { it.hasTrait<SmokeTestsTrait>() })
return super.enabledForService(model, settings)
}

Copy link
Member

Choose a reason for hiding this comment

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

You can access ctx.settings in generateGradleBuild, do you need this atomic boolean / enabledForService?

withBlock("compilations {", "}") {
write("val main = getByName(\"main\")")
withBlock("tasks {", "}") {
withBlock("register<Jar>(\"smokeTestJar\") {", "}") {
Copy link
Member

Choose a reason for hiding this comment

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

Use #S instead of managing the quotes yourself

Comment on lines 97 to 99
tasks.register<Exec>("unstageServices") {
commandLine("git", "clean", "-fdx", "services")
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Correctness: This is an unsafe command to use in a cleaning task because it cleans too much. For example, if a developer has added new files in services/ but not yet staged them, this will remove those files irretrievably.

As far as I can see, removing generated code as part of gg clean hasn't been necessary in any of our previous codegen. Why is it necessary now?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh I see, this task only cleans <sdk root dir>/tests/codegen/smoke-tests/services. That's the directory where the code-generated services for the E2E tests go. It doesn't clean the <sdk root dir>/services folder. I don't see a case where we should be writing any code there but I can see how it's unsafe. I added it as a QOL utility I guess. It's not necessary though so I can get rid of it.

smithyKotlinPlugin {
serviceShapeId = projection.serviceShapeId
packageName = "aws.sdk.kotlin.test.smoketests"
packageVersion = "1.0"
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: We should version this properly

Copy link
Contributor Author

Choose a reason for hiding this comment

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

With the SDK version? Is there a reason why? These projections are just for testing

Copy link
Contributor

Choose a reason for hiding this comment

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

If config this is just for generated service clients from the smoke tests test suite then it doesn't matter. Disregard!

Comment on lines 62 to 68
// generated services by smoke tests - test suite
file("tests/codegen/smoke-tests/services").listFiles().forEach {
if (it.isServiceDir) {
include(":tests:codegen:smoke-tests:services:${it.name}")
}
}

Copy link
Contributor

Choose a reason for hiding this comment

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

Correctness: The tests/ modules are intended to test our own SDK-developed code. These smoke tests will actually be verifying model correctness, which is a slightly different scope and intent. Moreover, I believe we'll want to package these up and distribute them to test runners at some point, which is more reason for them not to live here.

Have we explored codegenning into the services/ modules directly? We don't have to include them in the main publication (so they're not included in our Maven Central artifacts) but we can create a new publication that would include them separately.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The actual smoke tests runners are being code-generated directly into the services module. The path is something like: <sdk root dir>/services/<relevant service>/generated-src-jvm/test/java/aws/sdk/kotlin/services/<relevant service>/smoketest/SmokeTests.kt. This block of code is for including the code-generated services that are meant for E2E testing into the project.

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh I think I must've gotten confused by the word "services". So /tests/codegen/smoke-tests/services contains generated clients for the services defined in smoke-tests-failure.smithy and smoke-tests-success.smithy? Our other tests/ projects generate those into a build directory so they get cleaned automatically, don't get checked-in, etc. It also means that the set of loaded Gradle subprojects isn't changing dynamically.

For example, our event streams test project codegens the client, model, and serde files into tests/codegen/event-stream/build/smithyprojections/event-stream/restJson1/kotlin-codegen.

Can we do something similar here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

So /tests/codegen/smoke-tests/services contains generated clients for the services defined in smoke-tests-failure.smithy and smoke-tests-success.smithy?

Yeah, that's right

For example, our event streams test project codegens the client, model, and serde files into tests/codegen/event-stream/build/smithyprojections/event-stream/restJson1/kotlin-codegen.

Can we do something similar here?

I don't think we can because the generated test services need to be inside a gradle project so we can run the gg smokeTest task. I'm not sure that we can run a gradle task from the build directory.

Copy link
Contributor

Choose a reason for hiding this comment

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

Our other codegen tests also need to be run after generating them. The event streams tests generate sources via our Smithy build plugin (which go into the build dir) and then add each of the generated client roots to the Kotlin source. Then, statically written tests can invoke the generated code.

It seems to me like a similar setup could work for the smoke tests: use Smithy build plugin (may require new options/tweaks to support smoke test codegen) to generate tests into the build dir and then invoke those tests in statically-written code.

One of my concerns here is repo hygene and consistency. We had to add new .gitignore entries for this which seems wrong. Maybe it's not and this is the best option but I'd like to at least verify this can't be done in a manner more similar to other codegenned tests.

Comment on lines +6 to +13
class SmokeTestE2ETest {
@Test
fun successService() {
val smokeTestRunnerOutput = runSmokeTests("successService")

assertContains(smokeTestRunnerOutput, "ok SuccessService SuccessTest - no error expected from service")
assertContains(smokeTestRunnerOutput, "ok SuccessService SuccessTestWithTags - no error expected from service")
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Question: Are any of these tests SDK specific? Could they live in smithy-kotlin instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

They're sort of SDK specific. The tests and infra around them mock the setup we have for copying directories from the smithy projections into the dedicated services folders. So mocking <sdk root dir>/services/<relevant service> but in <sdk root dir>/tests/codegen/smoke-tests/services/<relevant service> for our tests. This includes the gg smokeTest task that I created for the SDK repo and that is not available in smithy kotlin.

They also test the actual runner which doesn't need to be tested in the SDK but it's a lot easier to test here rather than in smithy kotlin. If we move the tests to smithy kotlin we would lose a lot of test coverage around all this SDK specific stuff I mentioned.

Copy link
Contributor

@ianbotsf ianbotsf Sep 16, 2024

Choose a reason for hiding this comment

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

the setup we have for copying directories from the smithy projections into the dedicated services folders

Can you elaborate more? Is this setup defined in our smoke test generators or our manually-maintained build files?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The smoke tests integration from smithy kotlin writes the smoke test runner file to <relevant service smithy projection dir>/jvm-src/test/java/ and then the stageSdks task that we created moves the whole jvm-src directory into the <sdk root dir>/services/<relevant service>/generated-src-jvm directory.

This is also done for the regular service code generated code. I'm not sure where <relevant service smithy projection dir>/src is created but you can see where it is copied over to <sdk root dir>/services/<relevant service>/generated-src in the stageSdks task.

Comment on lines +9 to +31
@trait(selector: "service")
structure failedResponseTrait { }

@failedResponseTrait
@awsJson1_0
@service(sdkId: "Failure")
@endpointRuleSet(
version: "1.0",
parameters: {},
rules: [
{
"type": "endpoint",
"conditions": [],
"endpoint": {
"url": "https://static.endpoint"
}
}
]
)
service FailureService {
version: "1.0.0",
operations: [ TestOperation ],
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Question: Were these model files copied or adapted from somewhere? If so, let's include a comment with a link back to them in case we ever need to refresh them. (If you wrote these from scratch then never mind!)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

These were very loosely based on this example. I don't know if we need to keep up to date with it though, they're only very loosely based on the example. If something changes in the smithy syntax, then the E2E tests would probably break anyway. Do you feel like we should link that example? And do you have a reason in mind for why we should?

Copy link
Contributor

Choose a reason for hiding this comment

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

No, we only need a link if it's something we think should be kept up-to-date with some source. Seems like that's not necessary here so never mind.

Comment on lines 85 to 93
private fun generateSmokeTestConfig(writer: GradleWriter, sdkId: String, ctx: CodegenContext) {
val formattedDenyList = smokeTestDenyList.joinToString(",", "setOf(", ")") { it.dq() }
writer.withBlock("if (#S !in #L) {", "}", sdkId, formattedDenyList) {
generateSmokeTestJarTask(writer, ctx)
emptyLine()
generateSmokeTestTask(writer, ctx)
}
}

Copy link
Member

Choose a reason for hiding this comment

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

We have the sdkId and the smokeTestDenyList at codegen time, can't we skip generating a smoke test here in codegen instead of doing a runtime check?

val hasSuccessResponseTrait = ctx.model.expectShape<ServiceShape>(ctx.settings.service).hasTrait(SuccessResponseTrait.ID)
val hasFailedResponseTrait = ctx.model.expectShape<ServiceShape>(ctx.settings.service).hasTrait(FailedResponseTrait.ID)

// E2E tests don't have sdkVersion in jar names
Copy link
Member

Choose a reason for hiding this comment

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

Can you describe this more? Why is there a difference if we're in a testing environment or not?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The regular environment would be <sdk root dir>/services/<relevant service>/build/libs that's where the JARs are. I noticed that even though I'm setting the JAR name for the smoke test runner to <relevant service>-smoketestshere, something in the SDK would later add the SDK version to the end of it. So it would turn the JAR name into <relevant service>-smoketests-<SDK version>.

I didn't find what's doing that but it's not happening in the E2E test environment. I tried replicating it with gradle tasks but I had a really hard time trying to do so. Do you know about anything that might be adding the SDK version to the JAR names?

Comment on lines 29 to 31
/**
* SDK ID's of services that model smoke tests incorrectly
*/
Copy link
Member

Choose a reason for hiding this comment

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

Were you able to open issues with the services / Smithy team to track the deny list? This will likely help other SDKs that implement this in the coming months

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I still need to writes these up but I'll make sure to do so before I'm done with this task

@0marperez 0marperez added the no-changelog Indicates that a changelog entry isn't required for a pull request. Use sparingly. label Sep 18, 2024
Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

This comment has been minimized.

Comment on lines 104 to 105
write("dependsOn(build)")
write("mustRunAfter(build)")
Copy link
Member

Choose a reason for hiding this comment

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

dependsOn and mustRunAfter seem redundant, why do we need both?

Copy link
Contributor Author

@0marperez 0marperez Sep 23, 2024

Choose a reason for hiding this comment

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

mustRunAfter only tells gradle that if both tasks are being run then one must run after the other. But it doesn't force both tasks to run. That's what dependsOn is for. Not very intuitive imo.

For each supplied task, this action adds a task 'ordering', and does not specify a 'dependency' between the tasks.

https://docs.gradle.org/8.5/kotlin-dsl/gradle/org.gradle.api/-task/must-run-after.html

Copy link
Contributor Author

Choose a reason for hiding this comment

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

And when running a task with the parallel flag , dependsOn only guarantees that the task that is depended on starts first but not that it ends first. So mustRunAfter fixes that

Copy link
Contributor

Choose a reason for hiding this comment

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

And when running a task with the parallel flag , dependsOn only guarantees that the task that is depended on starts first but not that it ends first.

That's kind of surprising. Is that documented somewhere? Or were you seeing errors in the build without this ordering constraint?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't think it's documented anywhere but I was seeing errors in the build without the ordering constraint.

Copy link

A new generated diff is ready to view.

This comment has been minimized.

Comment on lines 104 to 105
write("dependsOn(build)")
write("mustRunAfter(build)")
Copy link
Contributor

Choose a reason for hiding this comment

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

And when running a task with the parallel flag , dependsOn only guarantees that the task that is depended on starts first but not that it ends first.

That's kind of surprising. Is that documented somewhere? Or were you seeing errors in the build without this ordering constraint?

Copy link

A new generated diff is ready to view.

Copy link

A new generated diff is ready to view.

This comment has been minimized.

@ianbotsf ianbotsf self-requested a review September 24, 2024 18:35
Comment on lines +29 to +36
/**
* SDK ID's of services that model smoke tests incorrectly
*/
val smokeTestDenyList = setOf(
"Application Auto Scaling",
"SWF",
"WAFV2",
)
Copy link
Contributor

Choose a reason for hiding this comment

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

Question: Do we have issues which track fixing these in the models? If so, let's link them here.

Comment on lines 7 to 23
/**
* Indicates the annotated service should always return a failed response.
*/
class FailedResponseTrait(node: ObjectNode) : AnnotationTrait(ID, node) {
companion object {
val ID: ShapeId = ShapeId.from("smithy.kotlin.traits#failedResponseTrait")
}
}

/**
* Indicates the annotated service should always return a success response.
*/
class SuccessResponseTrait(node: ObjectNode) : AnnotationTrait(ID, node) {
companion object {
val ID: ShapeId = ShapeId.from("smithy.kotlin.traits#successResponseTrait")
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: Now that you've clarified how these are used by our codegen tests only, I think they should be renamed and documented appropriately to reduce future confusion—some wording that clearly describes these relate to locally-run tests only (vs real smoke tests run against a service endpoint).

It'd be ideal if things like our HTTP client overrides could be driven solely off of expectations already defined in the smoke test trait in addition to the code generator knowing that it was being invoked for creating E2E tests (e.g., by a smithyKotlinPlugin config setting). But if that's not possible or not easy then let's at least clarify these synthetic traits a little bit.

Comment on lines 19 to 22
/**
* Adds [FailedResponseTrait] support to smoke tests
*/
class SmokeTestFailHttpEngineIntegration : KotlinIntegration {
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: Same comment about naming relative to purpose. I wonder if this integration could be combined with SmokeTestSuccessHttpEngineIntegration and named something like SmokeTestLocalOnlyIntegration.

class SmokeTestFailHttpEngineIntegration : KotlinIntegration {
override fun enabledForService(model: Model, settings: KotlinSettings): Boolean =
model.topDownOperations(settings.service).any { it.hasTrait<SmokeTestsTrait>() } &&
settings.sdkId !in smokeTestDenyList &&
Copy link
Contributor

Choose a reason for hiding this comment

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

Question: Is checking against the denylist required here? Will the plugin even activate for a service in the denylist?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's not required, I ended up removing this check

Comment on lines 23 to 44
override val sectionWriters: List<SectionWriterBinding>
get() = listOf(
SectionWriterBinding(SmokeTestAdditionalEnvVars, envVars),
SectionWriterBinding(SmokeTestDefaultConfig, region),
SectionWriterBinding(SmokeTestRegionDefault, regionDefault),
)

private val envVars = SectionWriter { writer, _ ->
writer.write(
"private val regionOverride = #T(#S)",
RuntimeTypes.Core.SmokeTests.getEnv,
"AWS_SMOKE_TEST_REGION",
)
}

private val region = SectionWriter { writer, _ ->
writer.write("region = regionOverride")
}

private val regionDefault = SectionWriter { writer, _ ->
writer.write("regionOverride ?:")
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Fun fact: you can also include writer code inline with the SectionWriterBinding:

override val sectionWriters: List<SectionWriterBinding>
    get() = listOf(
        SectionWriterBinding(SmokeTestAdditionalEnvVars, envVars),
        SectionWriterBinding(SmokeTestDefaultConfig) { w, _ -> w.write("region = regionOverride") },
        SectionWriterBinding(SmokeTestRegionDefault) { w, _ -> w.write("regionOverride ?:") },
    )

That doesn't always make the code cleaner and I'm not asking you to change it if you're already happy with it, just an FYI.

Copy link

sonarcloud bot commented Sep 25, 2024

Copy link

A new generated diff is ready to view.

Copy link

Affected Artifacts

Changed in size
Artifact Pull Request (bytes) Latest Release (bytes) Delta (bytes) Delta (percentage)
kinesisvideowebrtcstorage-jvm.jar closure 7,927,985 7,922,968 5,017 0.06%
marketplaceentitlementservice-jvm.jar closure 7,937,837 7,932,819 5,018 0.06%
apigatewaymanagementapi-jvm.jar closure 7,940,112 7,935,094 5,018 0.06%
inspectorscan-jvm.jar closure 7,943,126 7,938,108 5,018 0.06%
workmailmessageflow-jvm.jar closure 7,947,190 7,942,173 5,017 0.06%
kinesisvideomedia-jvm.jar closure 7,951,262 7,946,245 5,017 0.06%
marketplacecommerceanalytics-jvm.jar closure 7,955,135 7,950,119 5,016 0.06%
forecastquery-jvm.jar closure 7,962,354 7,957,335 5,019 0.06%
cloudtraildata-jvm.jar closure 7,958,080 7,953,064 5,016 0.06%
appconfigdata-jvm.jar closure 7,967,879 7,962,860 5,019 0.06%
kinesisvideosignaling-jvm.jar closure 7,967,270 7,962,253 5,017 0.06%
freetier-jvm.jar closure 7,971,080 7,966,064 5,016 0.06%
sagemakermetrics-jvm.jar closure 7,976,632 7,971,615 5,017 0.06%
eksauth-jvm.jar closure 7,989,331 7,984,314 5,017 0.06%
personalizeruntime-jvm.jar closure 7,993,315 7,988,299 5,016 0.06%
sso-jvm.jar closure 8,003,601 7,998,584 5,017 0.06%
ec2instanceconnect-jvm.jar closure 8,010,254 8,005,235 5,019 0.06%
marketplacedeployment-jvm.jar closure 8,015,386 8,010,369 5,017 0.06%
connectcontactlens-jvm.jar closure 8,018,379 8,013,362 5,017 0.06%
mediastoredata-jvm.jar closure 8,020,685 8,015,667 5,018 0.06%
migrationhubconfig-jvm.jar closure 8,022,923 8,017,906 5,017 0.06%
supplychain-jvm.jar closure 8,022,229 8,017,213 5,016 0.06%
sagemakeredge-jvm.jar closure 8,024,546 8,019,530 5,016 0.06%
cloudsearchdomain-jvm.jar closure 8,034,610 8,029,591 5,019 0.06%
personalizeevents-jvm.jar closure 8,040,174 8,035,156 5,018 0.06%
iotjobsdataplane-jvm.jar closure 8,053,824 8,048,806 5,018 0.06%
sagemakerfeaturestoreruntime-jvm.jar closure 8,072,174 8,067,158 5,016 0.06%
sagemakera2iruntime-jvm.jar closure 8,074,292 8,069,275 5,017 0.06%
route53recoverycluster-jvm.jar closure 8,076,248 8,071,231 5,017 0.06%
elasticinference-jvm.jar closure 8,082,347 8,077,330 5,017 0.06%
qldbsession-jvm.jar closure 8,087,362 8,082,345 5,017 0.06%
ssooidc-jvm.jar closure 8,088,905 8,083,888 5,017 0.06%
s3outposts-jvm.jar closure 8,091,924 8,086,907 5,017 0.06%
cloudfrontkeyvaluestore-jvm.jar closure 8,093,395 8,088,379 5,016 0.06%
iotfleethub-jvm.jar closure 8,096,649 8,091,632 5,017 0.06%
applicationcostprofiler-jvm.jar closure 8,097,260 8,092,244 5,016 0.06%
sagemakerruntime-jvm.jar closure 8,102,570 8,097,553 5,017 0.06%
iotdataplane-jvm.jar closure 8,108,750 8,103,734 5,016 0.06%
pricing-jvm.jar closure 8,111,993 8,106,976 5,017 0.06%
dynamodbstreams-jvm.jar closure 8,119,339 8,114,323 5,016 0.06%
artifact-jvm.jar closure 8,125,448 8,120,432 5,016 0.06%
iotsecuretunneling-jvm.jar closure 8,130,701 8,125,682 5,019 0.06%
supportapp-jvm.jar closure 8,145,002 8,139,984 5,018 0.06%
marketplacemetering-jvm.jar closure 8,161,664 8,156,647 5,017 0.06%
controlcatalog-jvm.jar closure 8,158,825 8,153,810 5,015 0.06%
ebs-jvm.jar closure 8,166,781 8,161,764 5,017 0.06%
pinpointsmsvoice-jvm.jar closure 8,170,647 8,165,630 5,017 0.06%
costandusagereportservice-jvm.jar closure 8,179,152 8,174,132 5,020 0.06%
sts-jvm.jar closure 8,183,292 8,178,274 5,018 0.06%
kendraranking-jvm.jar closure 8,188,789 8,183,772 5,017 0.06%
repostspace-jvm.jar closure 8,198,268 8,193,251 5,017 0.06%
rdsdata-jvm.jar closure 8,207,812 8,202,795 5,017 0.06%
resourcegroupstaggingapi-jvm.jar closure 8,212,379 8,207,361 5,018 0.06%
account-jvm.jar closure 8,227,511 8,222,493 5,018 0.06%
iot1clickdevicesservice-jvm.jar closure 8,227,746 8,222,729 5,017 0.06%
lexruntimeservice-jvm.jar closure 8,249,515 8,244,497 5,018 0.06%
rbin-jvm.jar closure 8,250,518 8,245,501 5,017 0.06%
ssmquicksetup-jvm.jar closure 8,265,316 8,260,299 5,017 0.06%
licensemanagerlinuxsubscriptions-jvm.jar closure 8,266,217 8,261,202 5,015 0.06%
connectparticipant-jvm.jar closure 8,271,852 8,266,835 5,017 0.06%
networkmonitor-jvm.jar closure 8,276,404 8,271,387 5,017 0.06%
pcaconnectorscep-jvm.jar closure 8,297,516 8,292,498 5,018 0.06%
kinesisvideoarchivedmedia-jvm.jar closure 8,298,983 8,293,966 5,017 0.06%
iot1clickprojects-jvm.jar closure 8,300,068 8,295,052 5,016 0.06%
marketplaceagreement-jvm.jar closure 8,314,073 8,309,057 5,016 0.06%
cloudcontrol-jvm.jar closure 8,320,274 8,315,257 5,017 0.06%
cloud9-jvm.jar closure 8,320,864 8,315,847 5,017 0.06%
redshiftdata-jvm.jar closure 8,324,353 8,319,336 5,017 0.06%
launchwizard-jvm.jar closure 8,325,649 8,320,632 5,017 0.06%
licensemanagerusersubscriptions-jvm.jar closure 8,332,711 8,327,692 5,019 0.06%
autoscalingplans-jvm.jar closure 8,332,964 8,327,947 5,017 0.06%
oam-jvm.jar closure 8,339,600 8,334,581 5,019 0.06%
mwaa-jvm.jar closure 8,337,557 8,332,540 5,017 0.06%
timestreaminfluxdb-jvm.jar closure 8,344,788 8,339,770 5,018 0.06%
iotdeviceadvisor-jvm.jar closure 8,349,846 8,344,828 5,018 0.06%
cloudhsm-jvm.jar closure 8,353,321 8,348,304 5,017 0.06%
codestarnotifications-jvm.jar closure 8,356,620 8,351,603 5,017 0.06%
route53profiles-jvm.jar closure 8,372,215 8,367,198 5,017 0.06%
serverlessapplicationrepository-jvm.jar closure 8,385,946 8,380,928 5,018 0.06%
savingsplans-jvm.jar closure 8,385,491 8,380,474 5,017 0.06%
arczonalshift-jvm.jar closure 8,393,909 8,388,891 5,018 0.06%
docdbelastic-jvm.jar closure 8,397,205 8,392,188 5,017 0.06%
mediastore-jvm.jar closure 8,400,788 8,395,770 5,018 0.06%
bcmdataexports-jvm.jar closure 8,411,163 8,406,146 5,017 0.06%
healthlake-jvm.jar closure 8,411,355 8,406,338 5,017 0.06%
simspaceweaver-jvm.jar closure 8,421,573 8,416,556 5,017 0.06%
cognitosync-jvm.jar closure 8,424,207 8,419,190 5,017 0.06%
snowdevicemanagement-jvm.jar closure 8,430,609 8,425,591 5,018 0.06%
cloudhsmv2-jvm.jar closure 8,441,348 8,436,330 5,018 0.06%
osis-jvm.jar closure 8,445,554 8,440,535 5,019 0.06%
codegurusecurity-jvm.jar closure 8,443,682 8,438,665 5,017 0.06%
pi-jvm.jar closure 8,446,132 8,441,115 5,017 0.06%
trustedadvisor-jvm.jar closure 8,453,727 8,448,708 5,019 0.06%
migrationhub-jvm.jar closure 8,456,130 8,451,112 5,018 0.06%
ivschat-jvm.jar closure 8,461,046 8,456,028 5,018 0.06%
scheduler-jvm.jar closure 8,464,348 8,459,330 5,018 0.06%
polly-jvm.jar closure 8,477,665 8,472,648 5,017 0.06%
workspacesthinclient-jvm.jar closure 8,480,914 8,475,896 5,018 0.06%
opsworkscm-jvm.jar closure 8,482,346 8,477,331 5,015 0.06%
qldb-jvm.jar closure 8,486,858 8,481,841 5,017 0.06%
dlm-jvm.jar closure 8,492,363 8,487,347 5,016 0.06%
rum-jvm.jar closure 8,496,756 8,491,738 5,018 0.06%
support-jvm.jar closure 8,498,357 8,493,340 5,017 0.06%
transcribestreaming-jvm.jar closure 8,501,288 8,496,270 5,018 0.06%
directoryservicedata-jvm.jar closure 8,502,900 8,497,883 5,017 0.06%
managedblockchainquery-jvm.jar closure 8,508,747 8,503,729 5,018 0.06%
datapipeline-jvm.jar closure 8,515,740 8,510,723 5,017 0.06%
ioteventsdata-jvm.jar closure 8,525,806 8,520,788 5,018 0.06%
taxsettings-jvm.jar closure 8,526,170 8,521,152 5,018 0.06%
health-jvm.jar closure 8,531,495 8,526,478 5,017 0.06%
identitystore-jvm.jar closure 8,551,634 8,546,617 5,017 0.06%
resourcegroups-jvm.jar closure 8,557,821 8,552,804 5,017 0.06%
resourceexplorer2-jvm.jar closure 8,588,232 8,583,215 5,017 0.06%
keyspaces-jvm.jar closure 8,592,248 8,587,231 5,017 0.06%
acm-jvm.jar closure 8,596,396 8,591,379 5,017 0.06%
servicequotas-jvm.jar closure 8,598,492 8,593,475 5,017 0.06%
internetmonitor-jvm.jar closure 8,601,406 8,596,389 5,017 0.06%
signer-jvm.jar closure 8,605,376 8,600,359 5,017 0.06%
codegurureviewer-jvm.jar closure 8,610,648 8,605,629 5,019 0.06%
connectcampaigns-jvm.jar closure 8,616,026 8,611,009 5,017 0.06%
applicationautoscaling-jvm.jar closure 8,617,377 8,612,360 5,017 0.06%
route53recoverycontrolconfig-jvm.jar closure 8,617,772 8,612,755 5,017 0.06%
cognitoidentity-jvm.jar closure 8,624,133 8,619,116 5,017 0.06%
backupgateway-jvm.jar closure 8,624,959 8,619,942 5,017 0.06%
medicalimaging-jvm.jar closure 8,624,594 8,619,579 5,015 0.06%
chimesdkmeetings-jvm.jar closure 8,635,201 8,630,184 5,017 0.06%
secretsmanager-jvm.jar closure 8,635,405 8,630,388 5,017 0.06%
mediapackagevod-jvm.jar closure 8,640,632 8,635,615 5,017 0.06%
servicecatalogappregistry-jvm.jar closure 8,649,398 8,644,381 5,017 0.06%
braket-jvm.jar closure 8,656,100 8,651,082 5,018 0.06%
timestreamquery-jvm.jar closure 8,663,022 8,658,005 5,017 0.06%
lexruntimev2-jvm.jar closure 8,665,135 8,660,120 5,015 0.06%
codeguruprofiler-jvm.jar closure 8,670,030 8,665,014 5,016 0.06%
appintegrations-jvm.jar closure 8,679,898 8,674,881 5,017 0.06%
worklink-jvm.jar closure 8,680,455 8,675,438 5,017 0.06%
costoptimizationhub-jvm.jar closure 8,679,167 8,674,151 5,016 0.06%
pcs-jvm.jar closure 8,683,114 8,678,097 5,017 0.06%
synthetics-jvm.jar closure 8,683,776 8,678,760 5,016 0.06%
applicationsignals-jvm.jar closure 8,687,306 8,682,288 5,018 0.06%
emrserverless-jvm.jar closure 8,688,671 8,683,654 5,017 0.06%
schemas-jvm.jar closure 8,707,666 8,702,649 5,017 0.06%
translate-jvm.jar closure 8,719,901 8,714,885 5,016 0.06%
ssmsap-jvm.jar closure 8,726,284 8,721,266 5,018 0.06%
paymentcryptography-jvm.jar closure 8,725,416 8,720,399 5,017 0.06%
mq-jvm.jar closure 8,727,127 8,722,111 5,016 0.06%
elastictranscoder-jvm.jar closure 8,732,212 8,727,197 5,015 0.06%
rolesanywhere-jvm.jar closure 8,739,433 8,734,416 5,017 0.06%
amp-jvm.jar closure 8,740,339 8,735,324 5,015 0.06%
lookoutvision-jvm.jar closure 8,746,012 8,740,995 5,017 0.06%
dax-jvm.jar closure 8,756,530 8,751,513 5,017 0.06%
sqs-jvm.jar closure 8,786,913 8,781,897 5,016 0.06%
cleanroomsml-jvm.jar closure 8,790,308 8,785,291 5,017 0.06%
timestreamwrite-jvm.jar closure 8,794,043 8,789,025 5,018 0.06%
ecrpublic-jvm.jar closure 8,797,795 8,792,778 5,017 0.06%
mediapackage-jvm.jar closure 8,803,698 8,798,680 5,018 0.06%
appfabric-jvm.jar closure 8,802,718 8,797,701 5,017 0.06%
paymentcryptographydata-jvm.jar closure 8,803,965 8,798,948 5,017 0.06%
qapps-jvm.jar closure 8,814,153 8,809,136 5,017 0.06%
b2bi-jvm.jar closure 8,811,544 8,806,531 5,013 0.06%
kafkaconnect-jvm.jar closure 8,826,939 8,821,922 5,017 0.06%
codeconnections-jvm.jar closure 8,831,407 8,826,390 5,017 0.06%
codestarconnections-jvm.jar closure 8,831,838 8,826,821 5,017 0.06%
grafana-jvm.jar closure 8,835,000 8,829,983 5,017 0.06%
privatenetworks-jvm.jar closure 8,846,644 8,841,626 5,018 0.06%
migrationhubrefactorspaces-jvm.jar closure 8,847,013 8,841,995 5,018 0.06%
route53recoveryreadiness-jvm.jar closure 8,848,935 8,843,918 5,017 0.06%
chatbot-jvm.jar closure 8,859,509 8,854,493 5,016 0.06%
detective-jvm.jar closure 8,858,650 8,853,635 5,015 0.06%
chimesdkidentity-jvm.jar closure 8,863,565 8,858,549 5,016 0.06%
controltower-jvm.jar closure 8,875,076 8,870,059 5,017 0.06%
emrcontainers-jvm.jar closure 8,903,137 8,898,121 5,016 0.06%
machinelearning-jvm.jar closure 8,907,696 8,902,680 5,016 0.06%
applicationinsights-jvm.jar closure 8,912,706 8,907,689 5,017 0.06%
neptunegraph-jvm.jar closure 8,920,781 8,915,765 5,016 0.06%
kinesisanalytics-jvm.jar closure 8,945,891 8,940,874 5,017 0.06%
securitylake-jvm.jar closure 8,943,918 8,938,903 5,015 0.06%
cloudsearch-jvm.jar closure 8,948,368 8,943,351 5,017 0.06%
bedrockruntime-jvm.jar closure 8,962,492 8,957,476 5,016 0.06%
acmpca-jvm.jar closure 8,967,737 8,962,720 5,017 0.06%
finspacedata-jvm.jar closure 8,966,020 8,961,005 5,015 0.06%
mediapackagev2-jvm.jar closure 8,970,530 8,965,513 5,017 0.06%
comprehendmedical-jvm.jar closure 8,994,253 8,989,234 5,019 0.06%
migrationhuborchestrator-jvm.jar closure 8,995,564 8,990,547 5,017 0.06%
managedblockchain-jvm.jar closure 9,008,646 9,003,628 5,018 0.06%
fis-jvm.jar closure 9,006,864 9,001,847 5,017 0.06%
elasticloadbalancing-jvm.jar closure 9,009,298 9,004,281 5,017 0.06%
voiceid-jvm.jar closure 9,013,276 9,008,259 5,017 0.06%
mturk-jvm.jar closure 9,018,606 9,013,589 5,017 0.06%
outposts-jvm.jar closure 9,026,967 9,021,950 5,017 0.06%
glacier-jvm.jar closure 9,032,309 9,027,292 5,017 0.06%
ivs-jvm.jar closure 9,051,867 9,046,849 5,018 0.06%
kinesisvideo-jvm.jar closure 9,050,749 9,045,732 5,017 0.06%
iotthingsgraph-jvm.jar closure 9,053,941 9,048,924 5,017 0.06%
amplify-jvm.jar closure 9,056,294 9,051,276 5,018 0.06%
shield-jvm.jar closure 9,055,422 9,050,405 5,017 0.06%
applicationdiscoveryservice-jvm.jar closure 9,068,256 9,063,239 5,017 0.06%
servicediscovery-jvm.jar closure 9,076,065 9,071,047 5,018 0.06%
tnb-jvm.jar closure 9,073,773 9,068,758 5,015 0.06%
snowball-jvm.jar closure 9,097,449 9,092,431 5,018 0.06%
efs-jvm.jar closure 9,114,154 9,109,137 5,017 0.06%
amplifybackend-jvm.jar closure 9,148,777 9,143,760 5,017 0.05%
opensearchserverless-jvm.jar closure 9,151,523 9,146,506 5,017 0.05%
ssmincidents-jvm.jar closure 9,162,883 9,157,866 5,017 0.05%
ram-jvm.jar closure 9,169,721 9,164,703 5,018 0.05%
textract-jvm.jar closure 9,204,065 9,199,048 5,017 0.05%
sms-jvm.jar closure 9,206,991 9,201,974 5,017 0.05%
greengrassv2-jvm.jar closure 9,213,083 9,208,065 5,018 0.05%
marketplacecatalog-jvm.jar closure 9,213,367 9,208,349 5,018 0.05%
codecatalyst-jvm.jar closure 9,221,993 9,216,976 5,017 0.05%
pcaconnectorad-jvm.jar closure 9,227,322 9,222,305 5,017 0.05%
pipes-jvm.jar closure 9,227,712 9,222,695 5,017 0.05%
ssmcontacts-jvm.jar closure 9,226,199 9,221,183 5,016 0.05%
xray-jvm.jar closure 9,234,583 9,229,566 5,017 0.05%
appconfig-jvm.jar closure 9,242,051 9,237,034 5,017 0.05%
connectcases-jvm.jar closure 9,242,345 9,237,328 5,017 0.05%
ivsrealtime-jvm.jar closure 9,242,381 9,237,364 5,017 0.05%
sns-jvm.jar closure 9,247,277 9,242,260 5,017 0.05%
sagemakergeospatial-jvm.jar closure 9,255,257 9,250,240 5,017 0.05%
pinpointemail-jvm.jar closure 9,258,732 9,253,715 5,017 0.05%
route53domains-jvm.jar closure 9,279,935 9,274,918 5,017 0.05%
m2-jvm.jar closure 9,290,169 9,285,152 5,017 0.05%
iotevents-jvm.jar closure 9,293,733 9,288,717 5,016 0.05%
apprunner-jvm.jar closure 9,297,915 9,292,898 5,017 0.05%
verifiedpermissions-jvm.jar closure 9,301,648 9,296,631 5,017 0.05%
panorama-jvm.jar closure 9,309,570 9,304,552 5,018 0.05%
lookoutmetrics-jvm.jar closure 9,343,992 9,338,975 5,017 0.05%
apptest-jvm.jar closure 9,381,447 9,376,430 5,017 0.05%
entityresolution-jvm.jar closure 9,393,595 9,388,578 5,017 0.05%
inspector-jvm.jar closure 9,394,062 9,389,045 5,017 0.05%
billingconductor-jvm.jar closure 9,393,218 9,388,202 5,016 0.05%
evidently-jvm.jar closure 9,409,485 9,404,467 5,018 0.05%
groundstation-jvm.jar closure 9,409,832 9,404,815 5,017 0.05%
migrationhubstrategy-jvm.jar closure 9,412,612 9,407,594 5,018 0.05%
lexmodelbuildingservice-jvm.jar closure 9,465,659 9,460,640 5,019 0.05%
dataexchange-jvm.jar closure 9,464,391 9,459,375 5,016 0.05%
cloudwatch-jvm.jar closure 9,466,512 9,461,495 5,017 0.05%
neptunedata-jvm.jar closure 9,467,532 9,462,515 5,017 0.05%
codeartifact-jvm.jar closure 9,469,203 9,464,186 5,017 0.05%
bedrockagentruntime-jvm.jar closure 9,469,930 9,464,913 5,017 0.05%
wisdom-jvm.jar closure 9,501,990 9,496,974 5,016 0.05%
iotanalytics-jvm.jar closure 9,568,876 9,563,859 5,017 0.05%
chimesdkmessaging-jvm.jar closure 9,570,740 9,565,723 5,017 0.05%
mediatailor-jvm.jar closure 9,577,816 9,572,799 5,017 0.05%
workspacesweb-jvm.jar closure 9,586,110 9,581,093 5,017 0.05%
vpclattice-jvm.jar closure 9,586,382 9,581,365 5,017 0.05%
amplifyuibuilder-jvm.jar closure 9,586,319 9,581,304 5,015 0.05%
redshiftserverless-jvm.jar closure 9,588,665 9,583,649 5,016 0.05%
firehose-jvm.jar closure 9,622,925 9,617,908 5,017 0.05%
lookoutequipment-jvm.jar closure 9,646,082 9,641,065 5,017 0.05%
workdocs-jvm.jar closure 9,656,651 9,651,635 5,016 0.05%
memorydb-jvm.jar closure 9,715,084 9,710,066 5,018 0.05%
transcribe-jvm.jar closure 9,711,536 9,706,520 5,016 0.05%
sfn-jvm.jar closure 9,717,647 9,712,630 5,017 0.05%
databrew-jvm.jar closure 9,725,530 9,720,513 5,017 0.05%
finspace-jvm.jar closure 9,749,993 9,744,976 5,017 0.05%
budgets-jvm.jar closure 8,981,046 8,976,426 4,620 0.05%
networkfirewall-jvm.jar closure 9,751,021 9,746,005 5,016 0.05%
globalaccelerator-jvm.jar closure 9,761,174 9,756,157 5,017 0.05%
batch-jvm.jar closure 9,793,482 9,788,464 5,018 0.05%
nimble-jvm.jar closure 9,813,270 9,808,253 5,017 0.05%
devopsguru-jvm.jar closure 9,820,474 9,815,457 5,017 0.05%
cloudwatchevents-jvm.jar closure 9,832,102 9,827,084 5,018 0.05%
licensemanager-jvm.jar closure 9,836,668 9,831,652 5,016 0.05%
directconnect-jvm.jar closure 9,875,607 9,870,590 5,017 0.05%
accessanalyzer-jvm.jar closure 9,877,223 9,872,206 5,017 0.05%
qconnect-jvm.jar closure 9,912,463 9,907,446 5,017 0.05%
kms-jvm.jar closure 9,911,037 9,906,021 5,016 0.05%
apigatewayv2-jvm.jar closure 9,924,723 9,919,705 5,018 0.05%
chimesdkmediapipelines-jvm.jar closure 9,923,058 9,918,041 5,017 0.05%
elasticbeanstalk-jvm.jar closure 9,930,268 9,925,250 5,018 0.05%
mailmanager-jvm.jar closure 9,940,441 9,935,425 5,016 0.05%
iottwinmaker-jvm.jar closure 9,944,652 9,939,635 5,017 0.05%
organizations-jvm.jar closure 9,953,508 9,948,492 5,016 0.05%
fms-jvm.jar closure 9,965,885 9,960,869 5,016 0.05%
lakeformation-jvm.jar closure 9,977,350 9,972,333 5,017 0.05%
ecr-jvm.jar closure 9,982,808 9,977,791 5,017 0.05%
swf-jvm.jar closure 10,002,029 9,997,011 5,018 0.05%
bedrock-jvm.jar closure 10,002,685 9,997,668 5,017 0.05%
auditmanager-jvm.jar closure 10,031,828 10,026,812 5,016 0.05%
location-jvm.jar closure 10,082,458 10,077,440 5,018 0.05%
eventbridge-jvm.jar closure 10,086,434 10,081,416 5,018 0.05%
appsync-jvm.jar closure 10,130,940 10,125,923 5,017 0.05%
transfer-jvm.jar closure 10,141,366 10,136,349 5,017 0.05%
iotfleetwise-jvm.jar closure 10,152,579 10,147,561 5,018 0.05%
drs-jvm.jar closure 10,158,026 10,153,009 5,017 0.05%
ssoadmin-jvm.jar closure 10,173,587 10,168,571 5,016 0.05%
athena-jvm.jar closure 10,181,958 10,176,940 5,018 0.05%
kinesisanalyticsv2-jvm.jar closure 10,179,350 10,174,334 5,016 0.05%
route53resolver-jvm.jar closure 10,186,355 10,181,338 5,017 0.05%
customerprofiles-jvm.jar closure 10,195,285 10,190,267 5,018 0.05%
docdb-jvm.jar closure 10,197,306 10,192,289 5,017 0.05%
ses-jvm.jar closure 10,200,255 10,195,239 5,016 0.05%
opsworks-jvm.jar closure 10,208,955 10,203,938 5,017 0.05%
kafka-jvm.jar closure 10,213,623 10,208,605 5,018 0.05%
datasync-jvm.jar closure 10,216,098 10,211,080 5,018 0.05%
codebuild-jvm.jar closure 10,232,226 10,227,209 5,017 0.05%
mediaconnect-jvm.jar closure 10,236,345 10,231,328 5,017 0.05%
elasticloadbalancingv2-jvm.jar closure 10,239,393 10,234,375 5,018 0.05%
costexplorer-jvm.jar closure 10,249,862 10,244,845 5,017 0.05%
cloudtrail-jvm.jar closure 10,216,134 10,211,140 4,994 0.05%
robomaker-jvm.jar closure 10,268,345 10,263,327 5,018 0.05%
elasticsearchservice-jvm.jar closure 10,268,660 10,263,644 5,016 0.05%
workmail-jvm.jar closure 10,287,883 10,282,866 5,017 0.05%
resiliencehub-jvm.jar closure 10,294,431 10,289,414 5,017 0.05%
forecast-jvm.jar closure 10,301,182 10,296,165 5,017 0.05%
frauddetector-jvm.jar closure 10,331,299 10,326,282 5,017 0.05%
greengrass-jvm.jar closure 10,390,869 10,385,853 5,016 0.05%
directoryservice-jvm.jar closure 10,414,919 10,409,900 5,019 0.05%
eks-jvm.jar closure 10,411,510 10,406,493 5,017 0.05%
personalize-jvm.jar closure 10,459,445 10,454,428 5,017 0.05%
cloudwatchlogs-jvm.jar closure 10,461,511 10,456,494 5,017 0.05%
wellarchitected-jvm.jar closure 10,475,961 10,470,944 5,017 0.05%
storagegateway-jvm.jar closure 10,565,117 10,560,099 5,018 0.05%
devicefarm-jvm.jar closure 10,569,097 10,564,082 5,015 0.05%
codepipeline-jvm.jar closure 10,574,084 10,569,067 5,017 0.05%
appstream-jvm.jar closure 10,578,983 10,573,966 5,017 0.05%
computeoptimizer-jvm.jar closure 10,601,678 10,596,659 5,019 0.05%
autoscaling-jvm.jar closure 10,615,755 10,610,739 5,016 0.05%
waf-jvm.jar closure 10,625,152 10,620,135 5,017 0.05%
emr-jvm.jar closure 10,641,088 10,636,070 5,018 0.05%
chimesdkvoice-jvm.jar closure 10,642,096 10,637,078 5,018 0.05%
appmesh-jvm.jar closure 10,684,187 10,679,170 5,017 0.05%
route53-jvm.jar closure 10,750,411 10,745,395 5,016 0.05%
wafregional-jvm.jar closure 10,759,555 10,754,537 5,018 0.05%
appflow-jvm.jar closure 10,761,342 10,756,325 5,017 0.05%
mgn-jvm.jar closure 10,792,532 10,787,515 5,017 0.05%
proton-jvm.jar closure 10,813,903 10,808,886 5,017 0.05%
backup-jvm.jar closure 10,821,887 10,816,870 5,017 0.05%
neptune-jvm.jar closure 10,839,756 10,834,739 5,017 0.05%
qbusiness-jvm.jar closure 10,841,434 10,836,417 5,017 0.05%
servicecatalog-jvm.jar closure 10,877,552 10,872,535 5,017 0.05%
clouddirectory-jvm.jar closure 10,905,444 10,900,427 5,017 0.05%
fsx-jvm.jar closure 10,933,417 10,928,401 5,016 0.05%
codedeploy-jvm.jar closure 10,941,047 10,936,031 5,016 0.05%
lambda-jvm.jar closure 10,978,449 10,973,432 5,017 0.05%
networkmanager-jvm.jar closure 10,992,970 10,987,953 5,017 0.05%
opensearch-jvm.jar closure 11,013,083 11,008,066 5,017 0.05%
omics-jvm.jar closure 11,066,499 11,061,482 5,017 0.05%
sesv2-jvm.jar closure 11,132,178 11,127,161 5,017 0.05%
dynamodb-jvm.jar closure 11,184,433 11,179,416 5,017 0.04%
bedrockagent-jvm.jar closure 11,203,092 11,198,075 5,017 0.04%
imagebuilder-jvm.jar closure 11,226,022 11,221,005 5,017 0.04%
wafv2-jvm.jar closure 11,267,911 11,262,894 5,017 0.04%
ecs-jvm.jar closure 11,284,834 11,279,817 5,017 0.04%
workspaces-jvm.jar closure 11,295,676 11,290,659 5,017 0.04%
cleanrooms-jvm.jar closure 11,314,911 11,309,893 5,018 0.04%
apigateway-jvm.jar closure 11,354,731 11,349,714 5,017 0.04%
comprehend-jvm.jar closure 11,486,589 11,481,572 5,017 0.04%
elasticache-jvm.jar closure 11,571,333 11,566,316 5,017 0.04%
macie2-jvm.jar closure 11,586,956 11,581,939 5,017 0.04%
iotsitewise-jvm.jar closure 11,590,159 11,585,142 5,017 0.04%
cloudformation-jvm.jar closure 11,602,336 11,597,319 5,017 0.04%
rekognition-jvm.jar closure 11,739,262 11,734,245 5,017 0.04%
guardduty-jvm.jar closure 11,743,502 11,738,485 5,017 0.04%
s3control-jvm.jar closure 11,879,854 11,874,837 5,017 0.04%
cognitoidentityprovider-jvm.jar closure 11,902,020 11,897,003 5,017 0.04%
inspector2-jvm.jar closure 11,934,757 11,929,740 5,017 0.04%
iotwireless-jvm.jar closure 11,943,305 11,938,288 5,017 0.04%
kendra-jvm.jar closure 12,026,988 12,021,971 5,017 0.04%
deadline-jvm.jar closure 12,056,175 12,051,160 5,015 0.04%
gamelift-jvm.jar closure 12,130,343 12,125,326 5,017 0.04%
codecommit-jvm.jar closure 12,144,492 12,139,474 5,018 0.04%
s3-jvm.jar closure 12,147,424 12,142,406 5,018 0.04%
databasemigrationservice-jvm.jar closure 12,264,965 12,259,948 5,017 0.04%
iam-jvm.jar closure 12,359,715 12,354,698 5,017 0.04%
configservice-jvm.jar closure 12,567,120 12,562,102 5,018 0.04%
pinpoint-jvm.jar closure 13,020,188 13,015,171 5,017 0.04%
chime-jvm.jar closure 13,373,057 13,368,040 5,017 0.04%
lightsail-jvm.jar closure 13,623,362 13,618,347 5,015 0.04%
cloudfront-jvm.jar closure 13,723,029 13,718,011 5,018 0.04%
redshift-jvm.jar closure 13,729,524 13,724,507 5,017 0.04%
datazone-jvm.jar closure 13,867,514 13,862,497 5,017 0.04%
lexmodelsv2-jvm.jar closure 14,159,391 14,154,374 5,017 0.04%
mediaconvert-jvm.jar closure 14,449,341 14,444,322 5,019 0.03%
rds-jvm.jar closure 15,177,128 15,172,111 5,017 0.03%
ssm-jvm.jar closure 15,336,114 15,331,097 5,017 0.03%
kinesis-jvm.jar closure 9,083,096 9,080,345 2,751 0.03%
medialive-jvm.jar closure 16,760,251 16,755,234 5,017 0.03%
iot-jvm.jar closure 16,942,789 16,937,772 5,017 0.03%
connect-jvm.jar closure 18,367,643 18,362,626 5,017 0.03%
glue-jvm.jar closure 18,681,289 18,676,271 5,018 0.03%
securityhub-jvm.jar closure 19,690,328 19,685,310 5,018 0.03%
quicksight-jvm.jar closure 25,573,725 25,568,707 5,018 0.02%
ec2-jvm.jar closure 35,554,707 35,549,700 5,007 0.01%
ec2-jvm.jar 27,756,683 27,756,693 -10 -0.00%
cloudtrail-jvm.jar 2,418,110 2,418,133 -23 -0.00%
budgets-jvm.jar 1,183,022 1,183,419 -397 -0.03%
sagemaker-jvm.jar closure 26,532,469 26,550,900 -18,431 -0.07%
sagemaker-jvm.jar 18,734,445 18,757,893 -23,448 -0.13%
kinesis-jvm.jar 1,200,802 1,203,068 -2,266 -0.19%
pinpointsmsvoicev2-jvm.jar closure 11,255,533 11,324,545 -69,012 -0.61%
pinpointsmsvoicev2-jvm.jar 3,457,509 3,531,538 -74,029 -2.10%

@0marperez 0marperez merged commit 5715cbc into main Sep 26, 2024
17 checks passed
@0marperez 0marperez deleted the smoke-tests-trait branch September 27, 2024 16:01
0marperez added a commit that referenced this pull request Sep 27, 2024
This was referenced Sep 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-changelog Indicates that a changelog entry isn't required for a pull request. Use sparingly.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants