@@ -7,93 +7,87 @@ package aws.sdk.kotlin.test.codegen.smoketest
77
88import aws.sdk.kotlin.codegen.smoketests.AWS_SERVICE_FILTER
99import aws.sdk.kotlin.codegen.smoketests.AWS_SKIP_TAGS
10- import aws.smithy.kotlin.runtime.util.OsFamily
11- import aws.smithy.kotlin.runtime.util.PlatformProvider
12- import java.io.File
10+ import aws.smithy.kotlin.runtime.util.TestPlatformProvider
11+ import kotlinx.coroutines.test.runTest
1312import kotlin.test.Test
1413import kotlin.test.assertContains
14+ import kotlin.test.assertFalse
1515import kotlin.test.assertTrue
1616
1717class SmokeTestE2ETest {
1818 @Test
19- fun successService () {
20- val smokeTestRunnerOutput = runSmokeTests(" successService" )
19+ fun successService () = runTest {
20+ val output = StringBuilder ()
21+ val runner = aws.sdk.kotlin.test.codegen.smoketest.successService.smoketests.SmokeTestRunner (
22+ TestPlatformProvider (),
23+ output,
24+ )
25+ val success = runner.runAllTests()
26+ assertTrue(success, " Unexpected failures running successService E2E smoke test. Full output: $output " )
2127
22- assertContains(smokeTestRunnerOutput , " ok SuccessService SuccessTest - no error expected from service" )
23- assertContains(smokeTestRunnerOutput , " ok SuccessService SuccessTestWithTags - no error expected from service" )
28+ assertContains(output , " ok SuccessService SuccessTest - no error expected from service" )
29+ assertContains(output , " ok SuccessService SuccessTestWithTags - no error expected from service" )
2430 }
2531
2632 @Test
27- fun failureService () {
28- val smokeTestRunnerOutput = runSmokeTests(" failureService" )
33+ fun failureService () = runTest {
34+ val output = StringBuilder ()
35+ val runner = aws.sdk.kotlin.test.codegen.smoketest.failureService.smoketests.SmokeTestRunner (
36+ TestPlatformProvider (),
37+ output,
38+ )
39+ val success = runner.runAllTests()
40+ assertTrue(success, " Unexpected failures running failureService E2E smoke test. Full output: $output " )
2941
30- assertContains(smokeTestRunnerOutput , " ok FailureService FailuresTest - error expected from service" )
42+ assertContains(output , " ok FailureService FailuresTest - error expected from service" )
3143 }
3244
3345 @Test
34- fun exceptionService () {
35- val smokeTestRunnerOutput = runSmokeTests(" exceptionService" , expectingFailure = true )
46+ fun exceptionService () = runTest {
47+ val output = StringBuilder ()
48+ val runner = aws.sdk.kotlin.test.codegen.smoketest.exceptionService.smoketests.SmokeTestRunner (
49+ TestPlatformProvider (),
50+ output,
51+ )
52+ val success = runner.runAllTests()
53+ assertFalse(success, " Unexpected success running exceptionService E2E smoke test. Full output: $output " )
3654
37- assertContains(smokeTestRunnerOutput, " not ok ExceptionService ExceptionTest - no error expected from service" )
38- assertContains(smokeTestRunnerOutput, " #aws.smithy.kotlin.runtime.http.interceptors.SmokeTestsFailureException: Smoke test failed with HTTP status code: 400" )
55+ assertContains(output, " not ok ExceptionService ExceptionTest - no error expected from service" )
56+ assertContains(
57+ output,
58+ " # aws.smithy.kotlin.runtime.http.interceptors.SmokeTestsFailureException: Smoke test failed with HTTP status code: 400" ,
59+ )
3960 }
4061
4162 @Test
42- fun successServiceSkipTags () {
43- val envVars = mapOf (AWS_SKIP_TAGS to " success" )
44- val smokeTestRunnerOutput = runSmokeTests(" successService" , envVars)
63+ fun successServiceSkipTags () = runTest {
64+ val output = StringBuilder ()
65+ val runner = aws.sdk.kotlin.test.codegen.smoketest.successService.smoketests.SmokeTestRunner (
66+ TestPlatformProvider (
67+ env = mapOf (AWS_SKIP_TAGS to " success" ),
68+ ),
69+ output,
70+ )
71+ val success = runner.runAllTests()
72+ assertTrue(success, " Unexpected failures running successService E2E smoke test. Full output: $output " )
4573
46- assertContains(smokeTestRunnerOutput , " ok SuccessService SuccessTest - no error expected from service" )
47- assertContains(smokeTestRunnerOutput , " ok SuccessService SuccessTestWithTags - no error expected from service # skip" )
74+ assertContains(output , " ok SuccessService SuccessTest - no error expected from service" )
75+ assertContains(output , " ok SuccessService SuccessTestWithTags - no error expected from service # skip" )
4876 }
4977
5078 @Test
51- fun successServiceServiceFilter () {
52- val envVars = mapOf (AWS_SERVICE_FILTER to " Failure" ) // Only run tests for services with this SDK ID
53- val smokeTestRunnerOutput = runSmokeTests(" successService" , envVars)
54-
55- assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTest - no error expected from service # skip" )
56- assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTestWithTags - no error expected from service # skip" )
57- }
58- }
59-
60- private fun runSmokeTests (
61- service : String ,
62- envVars : Map <String , String > = emptyMap(),
63- expectingFailure : Boolean = false,
64- ): String {
65- val sdkRootDir = System .getProperty(" user.dir" ) + " /../../../"
66- val processBuilder =
67- ProcessBuilder (
68- * gradleWrapperCommand(),
69- " :tests:codegen:smoke-tests:services:$service :smokeTest" ,
70- // Make sure unexpected errors are debuggable
71- " --stacktrace" ,
72- // FIXME: Remove `-Paws.kotlin.native=false` when Kotlin Native is ready
73- " -Paws.kotlin.native=false" ,
79+ fun successServiceServiceFilter () = runTest {
80+ val output = StringBuilder ()
81+ val runner = aws.sdk.kotlin.test.codegen.smoketest.successService.smoketests.SmokeTestRunner (
82+ TestPlatformProvider (
83+ env = mapOf (AWS_SERVICE_FILTER to " Failure" ), // Only run tests for services with this SDK ID
84+ ),
85+ output,
7486 )
75- .directory(File (sdkRootDir))
76- .redirectErrorStream(true )
77-
78- processBuilder.environment().putAll(envVars)
87+ val success = runner.runAllTests()
88+ assertTrue(success, " Unexpected failures running successService E2E smoke test. Full output: $output " )
7989
80- val process = processBuilder.start()
81- val output = process.inputStream.bufferedReader().use { it.readText() }
82- val exitCode = process.waitFor()
83-
84- if (expectingFailure) {
85- assertTrue(exitCode != 0 )
90+ assertContains(output, " ok SuccessService SuccessTest - no error expected from service # skip" )
91+ assertContains(output, " ok SuccessService SuccessTestWithTags - no error expected from service # skip" )
8692 }
87-
88- return output
8993}
90-
91- /* *
92- * Determines the appropriate Gradle wrapper command based on the operating system.
93- */
94- private fun gradleWrapperCommand () =
95- if (PlatformProvider .System .osInfo().family == OsFamily .Windows ) {
96- arrayOf(" cmd.exe" , " /c" , " gradlew.bat" )
97- } else {
98- arrayOf(" ./gradlew" )
99- }
0 commit comments