| # SDK Stability Regression Tests |
| |
| ## Description |
| This module contains stability regression tests. |
| |
| We define "stable" to mean that the SDK does not encounter any client-side errors for identified simple expected load |
| scenarios, and the number of transient service or network I/O related errors are relatively small. |
| |
| ## Test Case Acceptance |
| |
| As these tests will be running against live, running services, we can expect some subset of requests to fail due to transient |
| failures, network disruptions, throttling, etc. We cannot expect that all requests will always succeed. Instead, we will establish |
| that 5% or less of the total number of requests sent for a test case are allowed to fail. We specify that only errors that extend |
| from SdkServiceException, or a form of network error such as IOException or ReadTimeoutException may be counted towards the 5%. |
| Any other error type, such as SdkClientException will fail the test. |
| |
| |
| ## How to run |
| |
| - Run from your IDE |
| |
| - Run from maven command line |
| |
| ``` |
| mvn clean install -P stability-tests -pl :stability-tests |
| ``` |
| |
| - Build JAR and use the executable JAR |
| |
| First add tests to TestRunner Class, then run the following command. |
| |
| ``` |
| mvn clean install -pl :stability-tests --am -P quick |
| mvn clean install -pl :bom-inernal |
| cd test/stability-tests |
| mvn package -P test-jar |
| java -jar target/stability-tests-uber.jar |
| ``` |
| |
| ## Adding New Tests |
| |
| - The tests are built using [JUnit 5](https://junit.org/junit5/). Make sure you are using the correct APIs and mixing of |
| Junit 4 and Junit 5 APIs on the same test can have unexpected results. |
| |
| - All tests should have the suffix of `StabilityTests`, eg: `S3StabilityTests` |
| |
| |
| |