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. 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