diff --git a/.builder/actions/aws_crt_java_test.py b/.builder/actions/aws_crt_java_test.py
index f1d308d19..2c2c26161 100644
--- a/.builder/actions/aws_crt_java_test.py
+++ b/.builder/actions/aws_crt_java_test.py
@@ -11,6 +11,8 @@ def _run_java_tests(self, *extra_args):
os.remove('log.txt')
profiles = 'continuous-integration'
+ if os.getenv("GRAAL_VM") is not None:
+ profiles = 'graalvm-native'
cmd_args = [
"mvn", "-B",
@@ -40,18 +42,20 @@ def start_maven_tests(self, env):
self._run_java_tests("-DrerunFailingTestsCount=5")
- # run the ShutdownTest by itself
- env.shell.setenv('AWS_CRT_SHUTDOWN_TESTING', '1')
- self._run_java_tests("-Dtest=ShutdownTest")
- # run the InitTest by itself. This creates an environment where the test itself is the one that
- # causes the CRT to be loaded and initialized.
- self._run_java_tests("-Dtest=InitTest")
+ if os.getenv("GRAAL_VM") is None:
+ # run the ShutdownTest by itself
+ env.shell.setenv('AWS_CRT_SHUTDOWN_TESTING', '1')
+ self._run_java_tests("-Dtest=ShutdownTest")
- # run the elasticurl integration tests
- python = sys.executable
- env.shell.exec(python, 'crt/aws-c-http/integration-testing/http_client_test.py',
- python, 'integration-testing/java_elasticurl_runner.py', check=True)
+ # run the InitTest by itself. This creates an environment where the test itself is the one that
+ # causes the CRT to be loaded and initialized.
+ self._run_java_tests("-Dtest=InitTest")
+
+ # run the elasticurl integration tests
+ python = sys.executable
+ env.shell.exec(python, 'crt/aws-c-http/integration-testing/http_client_test.py',
+ python, 'integration-testing/java_elasticurl_runner.py', check=True)
def run(self, env):
self.env = env
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8f445bdfd..da2159f39 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -20,347 +20,371 @@ env:
AWS_DEVICE_FARM_REGION: us-west-2 # Device Farm only available in us-west-2 region
jobs:
- linux-compat:
- runs-on: ubuntu-22.04 # latest
- strategy:
- matrix:
- image:
- - manylinux2014-x64
- - manylinux2014-x86
- - al2-x64
- - fedora-34-x64
- - opensuse-leap
- - rhel8-x64
- #- manylinux2014-x86 until we find 32-bit linux binaries we can use
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
- ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
+ # linux-compat:
+ # runs-on: ubuntu-22.04 # latest
+ # strategy:
+ # matrix:
+ # image:
+ # - manylinux2014-x64
+ # - manylinux2014-x86
+ # - al2-x64
+ # - fedora-34-x64
+ # - opensuse-leap
+ # - rhel8-x64
+ # #- manylinux2014-x86 until we find 32-bit linux binaries we can use
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
+ # ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
- linux-compiler-compat:
- runs-on: ubuntu-22.04 # latest
- strategy:
- matrix:
- compiler:
- - clang-3
- - clang-6
- - clang-8
- - clang-9
- - clang-10
- - clang-11
- - gcc-4.8
- - gcc-5
- - gcc-6
- - gcc-7
- - gcc-8
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
- ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler }}
+ # linux-compiler-compat:
+ # runs-on: ubuntu-22.04 # latest
+ # strategy:
+ # matrix:
+ # compiler:
+ # - clang-3
+ # - clang-6
+ # - clang-8
+ # - clang-9
+ # - clang-10
+ # - clang-11
+ # - gcc-4.8
+ # - gcc-5
+ # - gcc-6
+ # - gcc-7
+ # - gcc-8
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
+ # ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler }}
- linux-arm:
- name: ARM (${{ matrix.arch }})
- runs-on: ubuntu-22.04 # latest
- strategy:
- matrix:
- arch: [armv6, armv7, arm64]
- steps:
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
- chmod a+x builder
- ./builder build -p ${{ env.PACKAGE_NAME }} --target=linux-${{ matrix.arch }} --spec=downstream
+ # linux-arm:
+ # name: ARM (${{ matrix.arch }})
+ # runs-on: ubuntu-22.04 # latest
+ # strategy:
+ # matrix:
+ # arch: [armv6, armv7, arm64]
+ # steps:
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
+ # chmod a+x builder
+ # ./builder build -p ${{ env.PACKAGE_NAME }} --target=linux-${{ matrix.arch }} --spec=downstream
- linux-musl:
- runs-on: ubuntu-22.04 # latest
- strategy:
- matrix:
- image:
- - alpine-3.16-x64
- - alpine-3.16-arm64
- - openwrt-x64-openjdk8
- steps:
- - name: Install qemu/docker
- run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- - name: Checkout Sources
- uses: actions/checkout@v2
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
- ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
+ # linux-musl:
+ # runs-on: ubuntu-22.04 # latest
+ # strategy:
+ # matrix:
+ # image:
+ # - alpine-3.16-x64
+ # - alpine-3.16-arm64
+ # - openwrt-x64-openjdk8
+ # steps:
+ # - name: Install qemu/docker
+ # run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
+ # - name: Checkout Sources
+ # uses: actions/checkout@v2
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
+ # ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
- linux-fips-x64:
- runs-on: ubuntu-22.04 # latest
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v4
- with:
- submodules: true
- fetch-depth: 0
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- bash codebuild/cd/test-fips-branch.sh
- export CRT_FIPS=ON
- python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
- chmod a+x builder
- ./builder build -p ${{ env.PACKAGE_NAME }}
+ # linux-fips-x64:
+ # runs-on: ubuntu-22.04 # latest
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v4
+ # with:
+ # submodules: true
+ # fetch-depth: 0
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # bash codebuild/cd/test-fips-branch.sh
+ # export CRT_FIPS=ON
+ # python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
+ # chmod a+x builder
+ # ./builder build -p ${{ env.PACKAGE_NAME }}
- linux-fips-armv8:
- runs-on: ubuntu-22.04 # latest
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v4
- with:
- submodules: true
- fetch-depth: 0
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- bash codebuild/cd/test-fips-branch.sh
- export CRT_FIPS=ON
- python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
- chmod a+x builder
- ./builder build -p ${{ env.PACKAGE_NAME }} --target=linux-arm64 --spec=downstream --cmake-extra=-DCRT_FIPS=ON
+ # linux-fips-armv8:
+ # runs-on: ubuntu-22.04 # latest
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v4
+ # with:
+ # submodules: true
+ # fetch-depth: 0
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # bash codebuild/cd/test-fips-branch.sh
+ # export CRT_FIPS=ON
+ # python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
+ # chmod a+x builder
+ # ./builder build -p ${{ env.PACKAGE_NAME }} --target=linux-arm64 --spec=downstream --cmake-extra=-DCRT_FIPS=ON
- # armv7 needs its own action due to inability to differentiate at runtime armv6 vs armv7 in the jvm:
- #
- # At build time we can properly figure out that we're targeting armv7.
- # At run time we have to force armv7 (via environment variable) in order to achieve proper resource path
- # resolution.
- linux-musl-armv7:
- runs-on: ubuntu-20.04 # latest
- steps:
- - name: Install qemu/docker
- run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- - name: Checkout Sources
- uses: actions/checkout@v2
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
- ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-alpine-3.16-armv7 build -p ${{ env.PACKAGE_NAME }} --classifier "armv7"
+ # # armv7 needs its own action due to inability to differentiate at runtime armv6 vs armv7 in the jvm:
+ # #
+ # # At build time we can properly figure out that we're targeting armv7.
+ # # At run time we have to force armv7 (via environment variable) in order to achieve proper resource path
+ # # resolution.
+ # linux-musl-armv7:
+ # runs-on: ubuntu-20.04 # latest
+ # steps:
+ # - name: Install qemu/docker
+ # run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
+ # - name: Checkout Sources
+ # uses: actions/checkout@v2
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
+ # ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-alpine-3.16-armv7 build -p ${{ env.PACKAGE_NAME }} --classifier "armv7"
- raspberry:
- runs-on: ubuntu-22.04 # latest
- strategy:
- fail-fast: false
- matrix:
- image:
- - raspbian-bullseye
- steps:
- # set arm arch
- - name: Install qemu/docker
- run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
- ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
+ # raspberry:
+ # runs-on: ubuntu-22.04 # latest
+ # strategy:
+ # fail-fast: false
+ # matrix:
+ # image:
+ # - raspbian-bullseye
+ # steps:
+ # # set arm arch
+ # - name: Install qemu/docker
+ # run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
+ # ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
- windows:
- runs-on: windows-2022 # latest
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }} + consumers
- run: |
- python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
- python builder.pyz build -p ${{ env.PACKAGE_NAME }} --spec=downstream
+ # windows:
+ # runs-on: windows-2022 # latest
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ # run: |
+ # python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
+ # python builder.pyz build -p ${{ env.PACKAGE_NAME }} --spec=downstream
- windows-vc14:
- runs-on: windows-2019 # windows-2019 is last env with Visual Studio 2015 (v14.0)
- strategy:
- matrix:
- arch: [x86, x64]
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }} + consumers
- env:
- AWS_CMAKE_TOOLSET: v140
- run: |
- python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
- python builder.pyz build -p ${{ env.PACKAGE_NAME }} downstream
+ # windows-vc14:
+ # runs-on: windows-2019 # windows-2019 is last env with Visual Studio 2015 (v14.0)
+ # strategy:
+ # matrix:
+ # arch: [x86, x64]
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ # env:
+ # AWS_CMAKE_TOOLSET: v140
+ # run: |
+ # python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
+ # python builder.pyz build -p ${{ env.PACKAGE_NAME }} downstream
- osx: # With integration tests
- runs-on: macos-13 # latest
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }} + consumers
- run: |
- python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
- chmod a+x builder
- ./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream
+ # osx: # With integration tests
+ # runs-on: macos-13 # latest
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ # run: |
+ # python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
+ # chmod a+x builder
+ # ./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream
- osx-arm64:
- runs-on: macos-13 # latest
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }} + consumers
- run: |
- mvn -B compile -P mac-arm64
- - name: verify backward compatibility
- run: |
- python3 codebuild/macos_compatibility_check.py armv8
+ # osx-arm64:
+ # runs-on: macos-13 # latest
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ # run: |
+ # mvn -B compile -P mac-arm64
+ # - name: verify backward compatibility
+ # run: |
+ # python3 codebuild/macos_compatibility_check.py armv8
- osx-x64:
- runs-on: macos-13
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v2
- with:
- submodules: true
- - name: Build ${{ env.PACKAGE_NAME }} + consumers
- run: |
- mvn -B compile -P mac-x64
- - name: verify backward compatibility
- run: |
- python3 codebuild/macos_compatibility_check.py
+ # osx-x64:
+ # runs-on: macos-13
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v2
+ # with:
+ # submodules: true
+ # - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ # run: |
+ # mvn -B compile -P mac-x64
+ # - name: verify backward compatibility
+ # run: |
+ # python3 codebuild/macos_compatibility_check.py
- android:
- # ubuntu-20.04 comes with Android tooling, see:
- # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#android
- name: Android
- runs-on: ubuntu-20.04 # latest
- steps:
- - name: Checkout Sources
- uses: actions/checkout@v2
- with:
- submodules: true
- # Setup JDK 11
- - name: set up JDK 11
- uses: actions/setup-java@v3
- with:
- java-version: '11'
- distribution: 'temurin'
- cache: 'gradle'
- # Build and publish locally for the test app to find the SNAPSHOT version
- - name: Build ${{ env.PACKAGE_NAME }}
- run: |
- ./gradlew :android:crt:build
- ./gradlew -PnewVersion="1.0.0-SNAPSHOT" :android:crt:publishToMavenLocal
- # Setup files required by test app for Device Farm testing
- - name: Setup Android Test Files
- run: |
- cd src/test/android/testapp/src/main/assets
- python3 -m pip install boto3
- python3 ./android_file_creation.py
- - name: Build Test App
- run: |
- cd src/test/android/testapp
- ../../../../gradlew assembledebug
- ../../../../gradlew assembleAndroidTest
- - name: Device Farm Tests
- run: |
- echo "Running Device Farm Python Script"
- python3 ./.github/workflows/run_android_ci.py \
- --run_id ${{ github.run_id }} \
- --run_attempt ${{ github.run_attempt }} \
- --project_arn $(aws secretsmanager get-secret-value --region us-east-1 --secret-id "ci/DeviceFarm/ProjectArn" --query "SecretString" | cut -f5 -d\" | cut -f1 -d'\') \
- --device_pool_arn $(aws secretsmanager get-secret-value --region us-east-1 --secret-id "ci/DeviceFarm/DevicePoolArn" --query "SecretString" | cut -f5 -d\" | cut -f1 -d'\')
+ # android:
+ # # ubuntu-20.04 comes with Android tooling, see:
+ # # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#android
+ # name: Android
+ # runs-on: ubuntu-20.04 # latest
+ # steps:
+ # - name: Checkout Sources
+ # uses: actions/checkout@v2
+ # with:
+ # submodules: true
+ # # Setup JDK 11
+ # - name: set up JDK 11
+ # uses: actions/setup-java@v3
+ # with:
+ # java-version: '11'
+ # distribution: 'temurin'
+ # cache: 'gradle'
+ # # Build and publish locally for the test app to find the SNAPSHOT version
+ # - name: Build ${{ env.PACKAGE_NAME }}
+ # run: |
+ # ./gradlew :android:crt:build
+ # ./gradlew -PnewVersion="1.0.0-SNAPSHOT" :android:crt:publishToMavenLocal
+ # # Setup files required by test app for Device Farm testing
+ # - name: Setup Android Test Files
+ # run: |
+ # cd src/test/android/testapp/src/main/assets
+ # python3 -m pip install boto3
+ # python3 ./android_file_creation.py
+ # - name: Build Test App
+ # run: |
+ # cd src/test/android/testapp
+ # ../../../../gradlew assembledebug
+ # ../../../../gradlew assembleAndroidTest
+ # - name: Device Farm Tests
+ # run: |
+ # echo "Running Device Farm Python Script"
+ # python3 ./.github/workflows/run_android_ci.py \
+ # --run_id ${{ github.run_id }} \
+ # --run_attempt ${{ github.run_attempt }} \
+ # --project_arn $(aws secretsmanager get-secret-value --region us-east-1 --secret-id "ci/DeviceFarm/ProjectArn" --query "SecretString" | cut -f5 -d\" | cut -f1 -d'\') \
+ # --device_pool_arn $(aws secretsmanager get-secret-value --region us-east-1 --secret-id "ci/DeviceFarm/DevicePoolArn" --query "SecretString" | cut -f5 -d\" | cut -f1 -d'\')
- # check that docs can still build
- check-docs:
- runs-on: ubuntu-22.04 # latest
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: Check docs
- run: |
- ./make-docs.sh
+ # # check that docs can still build
+ # check-docs:
+ # runs-on: ubuntu-22.04 # latest
+ # steps:
+ # - uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Check docs
+ # run: |
+ # ./make-docs.sh
- check-submodules:
- runs-on: ubuntu-22.04 # latest
- steps:
- - name: Checkout Source
- uses: actions/checkout@v3
- with:
- submodules: true
- fetch-depth: 0
- - name: Check Submodules
- # note: using "@main" because "@${{env.BUILDER_VERSION}}" doesn't work
- # https://github.com/actions/runner/issues/480
- uses: awslabs/aws-crt-builder/.github/actions/check-submodules@main
+ # check-submodules:
+ # runs-on: ubuntu-22.04 # latest
+ # steps:
+ # - name: Checkout Source
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # fetch-depth: 0
+ # - name: Check Submodules
+ # # note: using "@main" because "@${{env.BUILDER_VERSION}}" doesn't work
+ # # https://github.com/actions/runner/issues/480
+ # uses: awslabs/aws-crt-builder/.github/actions/check-submodules@main
- localhost-test-linux:
- runs-on: ubuntu-22.04 # latest
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Configure local host
- run: |
- python3 -m pip install h2
- cd crt/aws-c-http/tests/py_localhost/
- python3 server.py &
- python3 non_tls_server.py &
- - name: Build and test
- run: |
- python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
- python builder.pyz localhost-test -p ${{ env.PACKAGE_NAME }} --spec=downstream
+ # localhost-test-linux:
+ # runs-on: ubuntu-22.04 # latest
+ # steps:
+ # - name: Checkout
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Configure local host
+ # run: |
+ # python3 -m pip install h2
+ # cd crt/aws-c-http/tests/py_localhost/
+ # python3 server.py &
+ # python3 non_tls_server.py &
+ # - name: Build and test
+ # run: |
+ # python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
+ # python builder.pyz localhost-test -p ${{ env.PACKAGE_NAME }} --spec=downstream
- localhost-test-mac:
- runs-on: macos-13 # latest
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Configure local host
- run: |
- python3 -m pip install h2
- cd crt/aws-c-http/tests/py_localhost/
- python3 server.py &
- python3 non_tls_server.py &
- - name: Build and test
- run: |
- python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
- chmod a+x builder
- ./builder localhost-test -p ${{ env.PACKAGE_NAME }} --spec=downstream
+ # localhost-test-mac:
+ # runs-on: macos-13 # latest
+ # steps:
+ # - name: Checkout
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Configure local host
+ # run: |
+ # python3 -m pip install h2
+ # cd crt/aws-c-http/tests/py_localhost/
+ # python3 server.py &
+ # python3 non_tls_server.py &
+ # - name: Build and test
+ # run: |
+ # python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
+ # chmod a+x builder
+ # ./builder localhost-test -p ${{ env.PACKAGE_NAME }} --spec=downstream
+
+ # localhost-test-win:
+ # runs-on: windows-2022 # latest
+ # steps:
+ # - name: Checkout
+ # uses: actions/checkout@v3
+ # with:
+ # submodules: true
+ # - name: Configure local host
+ # run: |
+ # python -m pip install h2
+ # - name: Build and test
+ # run: |
+ # cd crt/aws-c-http/tests/py_localhost/
+ # Start-Process -NoNewWindow python .\server.py
+ # Start-Process -NoNewWindow python .\non_tls_server.py
+ # python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
+ # python builder.pyz localhost-test -p ${{ env.PACKAGE_NAME }} downstream
- localhost-test-win:
- runs-on: windows-2022 # latest
+
+ GraalVM:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [macos-latest, windows-latest, ubuntu-latest]
+ java-version: ['22', '21', '17']
steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- submodules: true
- - name: Configure local host
- run: |
- python -m pip install h2
- - name: Build and test
- run: |
- cd crt/aws-c-http/tests/py_localhost/
- Start-Process -NoNewWindow python .\server.py
- Start-Process -NoNewWindow python .\non_tls_server.py
- python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
- python builder.pyz localhost-test -p ${{ env.PACKAGE_NAME }} downstream
+ - name: Checkout Sources
+ uses: actions/checkout@v2
+ with:
+ submodules: true
+ - name: Setup GraalVM
+ uses: graalvm/setup-graalvm@v1
+ with:
+ java-version: ${{ matrix.java-version }}
+ distribution: 'graalvm'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ run: |
+ python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
+ python builder.pyz build -p ${{ env.PACKAGE_NAME }} --variant=graalvm downstream
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index e8e8aef6e..d3e42af04 100644
--- a/.gitignore
+++ b/.gitignore
@@ -96,3 +96,5 @@ log.txt
# docs are updated automatically by .github/workflows/docs.yml
docs/
+# graalvm manually generated config files
+graalvm-configuration
\ No newline at end of file
diff --git a/builder.json b/builder.json
index 92b5e126b..d24023390 100644
--- a/builder.json
+++ b/builder.json
@@ -142,5 +142,16 @@
"mvn -B test -DrerunFailingTestsCount=5"
]
}
+ },
+ "variants":{
+ "graalvm": {
+ "!packages": [],
+ "!imports": [
+ ],
+ "!test_env": {
+ "GRAAL_VM": true
+ },
+ "!build_env": {}
+ }
}
}
diff --git a/crt/s2n b/crt/s2n
index 171c96a23..38d769c9c 160000
--- a/crt/s2n
+++ b/crt/s2n
@@ -1 +1 @@
-Subproject commit 171c96a232eb2bf45415340378b55b3bb6dd29cd
+Subproject commit 38d769c9cd079b4bbe250032acdc7fdafbfaab51
diff --git a/pom.xml b/pom.xml
index 3178ba924..248384604 100644
--- a/pom.xml
+++ b/pom.xml
@@ -214,6 +214,39 @@
+
+ graalvm-native
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ 0.10.2
+ true
+
+
+ test-native
+
+ test
+
+ test
+
+
+
+
+ true
+
+ aws-crt-java
+
+ --no-fallback
+ --initialize-at-build-time=org.junit.Ignore,java.lang.annotation.Annotation,org.junit.runners.model.FrameworkField
+ --verbose
+
+
+
+
+
+
release
@@ -286,13 +319,36 @@
+
+ generate-graalvm-files
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.2.3
+
+ -agentlib:native-image-agent=config-output-dir=graalvm-configuration -Daws.crt.memory.tracing=2 -Xcheck:jni
+ 1
+
+
+
+
+
junit
junit
- 4.13.1
+ 4.13.2
+ test
+
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ 5.10.2
test
@@ -320,6 +376,10 @@
**/*.a
+
+
+ src/main/resources
+
@@ -410,7 +470,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 2.21.0
+ 3.2.3
${crt.classifier}
diff --git a/src/main/java/software/amazon/awssdk/crt/s3/ResumeToken.java b/src/main/java/software/amazon/awssdk/crt/s3/ResumeToken.java
index 8fc3307a7..376e01298 100644
--- a/src/main/java/software/amazon/awssdk/crt/s3/ResumeToken.java
+++ b/src/main/java/software/amazon/awssdk/crt/s3/ResumeToken.java
@@ -55,7 +55,7 @@ public PutResumeTokenBuilder withUploadId(String uploadId) {
public ResumeToken build() {
return new ResumeToken(this);
- }
+ }
};
private int nativeType;
@@ -71,6 +71,10 @@ public ResumeToken(PutResumeTokenBuilder builder) {
this.numPartsCompleted = builder.numPartsCompleted;
this.uploadId = builder.uploadId;
}
+ /**
+ * Default constructor
+ */
+ private ResumeToken() {}
/******
* Common Fields.
@@ -106,7 +110,7 @@ public long getNumPartsCompleted() {
}
/******
- * Upload Specific fields.
+ * Upload Specific fields.
******/
/**
* @return upload Id
diff --git a/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/jni-config.json b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/jni-config.json
new file mode 100644
index 000000000..ae449c89d
--- /dev/null
+++ b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/jni-config.json
@@ -0,0 +1,478 @@
+[
+ {
+ "name":"[Lsoftware.amazon.awssdk.crt.SystemInfo$CpuInfo;"
+ },
+ {
+ "name":"java.lang.Boolean",
+ "methods":[{"name":"","parameterTypes":["boolean"] }, {"name":"booleanValue","parameterTypes":[] }, {"name":"getBoolean","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Integer",
+ "methods":[{"name":"","parameterTypes":["int"] }, {"name":"intValue","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.Long",
+ "methods":[{"name":"","parameterTypes":["long"] }, {"name":"longValue","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.NullPointerException",
+ "methods":[{"name":"","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.String",
+ "methods":[{"name":"lastIndexOf","parameterTypes":["int"] }, {"name":"substring","parameterTypes":["int"] }]
+ },
+ {
+ "name":"java.lang.System",
+ "methods":[{"name":"getProperty","parameterTypes":["java.lang.String"] }, {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }]
+ },
+ {
+ "name":"java.nio.Buffer",
+ "methods":[{"name":"capacity","parameterTypes":[] }, {"name":"limit","parameterTypes":[] }, {"name":"position","parameterTypes":[] }, {"name":"remaining","parameterTypes":[] }]
+ },
+ {
+ "name":"java.nio.ByteBuffer",
+ "allDeclaredConstructors" : true,
+ "allPublicConstructors" : true,
+ "allDeclaredMethods" : true,
+ "allPublicMethods" : true,
+ "allDeclaredClasses" : true,
+ "allPublicClasses" : true
+ },
+ {
+ "name":"java.util.ArrayList",
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"java.util.List",
+ "methods":[{"name":"add","parameterTypes":["java.lang.Object"] }, {"name":"get","parameterTypes":["int"] }, {"name":"size","parameterTypes":[] }]
+ },
+ {
+ "name":"java.util.concurrent.CompletableFuture",
+ "methods":[{"name":"complete","parameterTypes":["java.lang.Object"] }, {"name":"completeExceptionally","parameterTypes":["java.lang.Throwable"] }]
+ },
+ {
+ "name":"java.util.function.Predicate",
+ "methods":[{"name":"test","parameterTypes":["java.lang.Object"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.AsyncCallback",
+ "methods":[{"name":"onFailure","parameterTypes":["java.lang.Throwable"] }, {"name":"onSuccess","parameterTypes":[] }, {"name":"onSuccess","parameterTypes":["java.lang.Object"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.CRT",
+ "methods":[{"name":"testJniException","parameterTypes":["boolean"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.CrtResource",
+ "methods":[{"name":"addRef","parameterTypes":[] }, {"name":"close","parameterTypes":[] }, {"name":"getNativeHandle","parameterTypes":[] }, {"name":"releaseReferences","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.CrtRuntimeException",
+ "fields":[{"name":"errorCode"}],
+ "methods":[{"name":"","parameterTypes":["int"] }, {"name":"","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.SystemInfo$CpuInfo",
+ "methods":[{"name":"","parameterTypes":["int","boolean"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.auth.credentials.Credentials",
+ "fields":[{"name":"accessKeyId"}, {"name":"expirationTimePointSecs"}, {"name":"secretAccessKey"}, {"name":"sessionToken"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.auth.credentials.CredentialsProvider",
+ "methods":[{"name":"onGetCredentialsComplete","parameterTypes":["java.util.concurrent.CompletableFuture","software.amazon.awssdk.crt.auth.credentials.Credentials"] }, {"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.auth.credentials.DelegateCredentialsHandler",
+ "methods":[{"name":"getCredentials","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.auth.signing.AwsSigningConfig",
+ "fields":[{"name":"algorithm"}, {"name":"credentials"}, {"name":"credentialsProvider"}, {"name":"expirationInSeconds"}, {"name":"omitSessionToken"}, {"name":"region"}, {"name":"service"}, {"name":"shouldNormalizeUriPath"}, {"name":"shouldSignHeader"}, {"name":"signatureType"}, {"name":"signedBodyHeader"}, {"name":"signedBodyValue"}, {"name":"time"}, {"name":"useDoubleUriEncode"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.auth.signing.AwsSigningResult",
+ "fields":[{"name":"signature"}, {"name":"signedRequest"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.cal.EccKeyPair",
+ "methods":[{"name":"","parameterTypes":["long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ClientConnectionContinuationHandler",
+ "methods":[{"name":"onContinuationClosedShim","parameterTypes":[] }, {"name":"onContinuationMessageShim","parameterTypes":["byte[]","byte[]","int","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ClientConnectionHandler",
+ "methods":[{"name":"onConnectionClosedShim","parameterTypes":["int"] }, {"name":"onConnectionSetupShim","parameterTypes":["long","int"] }, {"name":"onProtocolMessage","parameterTypes":["byte[]","byte[]","int","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.MessageFlushCallback",
+ "methods":[{"name":"onCallbackInvoked","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ServerConnection",
+ "methods":[{"name":"","parameterTypes":["long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ServerConnectionContinuation",
+ "methods":[{"name":"","parameterTypes":["long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ServerConnectionContinuationHandler",
+ "methods":[{"name":"onContinuationClosedShim","parameterTypes":[] }, {"name":"onContinuationMessageShim","parameterTypes":["byte[]","byte[]","int","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ServerConnectionHandler",
+ "methods":[{"name":"onIncomingStream","parameterTypes":["software.amazon.awssdk.crt.eventstream.ServerConnectionContinuation","byte[]"] }, {"name":"onProtocolMessage","parameterTypes":["byte[]","byte[]","int","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ServerListener",
+ "methods":[{"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.eventstream.ServerListenerHandler",
+ "methods":[{"name":"onConnectionShutdownShim","parameterTypes":["software.amazon.awssdk.crt.eventstream.ServerConnection","int"] }, {"name":"onNewConnection","parameterTypes":["software.amazon.awssdk.crt.eventstream.ServerConnection","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.Http2Stream",
+ "methods":[{"name":"","parameterTypes":["long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.Http2StreamManager",
+ "methods":[{"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpClientConnection",
+ "methods":[{"name":"onConnectionAcquired","parameterTypes":["java.util.concurrent.CompletableFuture","long","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpClientConnectionManager",
+ "methods":[{"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpHeader",
+ "methods":[{"name":"","parameterTypes":["byte[]","byte[]"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpManagerMetrics",
+ "methods":[{"name":"","parameterTypes":["long","long","long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpProxyOptions",
+ "methods":[{"name":"getAuthorizationPassword","parameterTypes":[] }, {"name":"getAuthorizationType","parameterTypes":[] }, {"name":"getAuthorizationUsername","parameterTypes":[] }, {"name":"getConnectionType","parameterTypes":[] }, {"name":"getHost","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getTlsContext","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpProxyOptions$HttpProxyConnectionType",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpRequest",
+ "methods":[{"name":"","parameterTypes":["java.nio.ByteBuffer","software.amazon.awssdk.crt.http.HttpRequestBodyStream"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpRequestBase",
+ "fields":[{"name":"bodyStream"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpRequestBodyStream",
+ "methods":[{"name":"getLength","parameterTypes":[] }, {"name":"resetPosition","parameterTypes":[] }, {"name":"sendRequestBody","parameterTypes":["java.nio.ByteBuffer"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpStream",
+ "methods":[{"name":"","parameterTypes":["long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpStream$HttpStreamWriteChunkCompletionCallback",
+ "methods":[{"name":"onChunkCompleted","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpStreamMetrics",
+ "methods":[{"name":"","parameterTypes":["long","long","long","long","long","long","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpStreamResponseHandlerNativeAdapter",
+ "methods":[{"name":"onMetrics","parameterTypes":["software.amazon.awssdk.crt.http.HttpStreamBase","software.amazon.awssdk.crt.http.HttpStreamMetrics"] }, {"name":"onResponseBody","parameterTypes":["software.amazon.awssdk.crt.http.HttpStreamBase","java.nio.ByteBuffer"] }, {"name":"onResponseComplete","parameterTypes":["software.amazon.awssdk.crt.http.HttpStreamBase","int"] }, {"name":"onResponseHeaders","parameterTypes":["software.amazon.awssdk.crt.http.HttpStreamBase","int","int","java.nio.ByteBuffer"] }, {"name":"onResponseHeadersDone","parameterTypes":["software.amazon.awssdk.crt.http.HttpStreamBase","int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.ClientBootstrap",
+ "methods":[{"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.DirectoryEntry",
+ "fields":[{"name":"fileSize"}, {"name":"isDirectory"}, {"name":"isFile"}, {"name":"isSymLink"}, {"name":"path"}, {"name":"relativePath"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.DirectoryTraversalHandler",
+ "methods":[{"name":"onDirectoryEntry","parameterTypes":["software.amazon.awssdk.crt.io.DirectoryEntry"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.EventLoopGroup",
+ "methods":[{"name":"onCleanupComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.ExponentialBackoffRetryOptions",
+ "fields":[{"name":"backoffScaleFactorMS"}, {"name":"eventLoopGroup"}, {"name":"jitterMode"}, {"name":"maxRetries"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.ExponentialBackoffRetryOptions$JitterMode",
+ "fields":[{"name":"value"}],
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.StandardRetryOptions",
+ "fields":[{"name":"backoffRetryOptions"}, {"name":"initialBucketCapacity"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.TlsContextCustomKeyOperationOptions",
+ "fields":[{"name":"certificateFileContents"}, {"name":"certificateFilePath"}, {"name":"operationHandler"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.TlsContextPkcs11Options",
+ "fields":[{"name":"certificateFileContents"}, {"name":"certificateFilePath"}, {"name":"pkcs11Lib"}, {"name":"privateKeyObjectLabel"}, {"name":"slotId"}, {"name":"tokenLabel"}, {"name":"userPin"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.TlsKeyOperation",
+ "methods":[{"name":"","parameterTypes":["long","byte[]","int","int","int"] }, {"name":"invokePerformOperation","parameterTypes":["software.amazon.awssdk.crt.io.TlsKeyOperationHandler","software.amazon.awssdk.crt.io.TlsKeyOperation"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.io.TlsKeyOperationHandler",
+ "methods":[{"name":"performOperation","parameterTypes":["software.amazon.awssdk.crt.io.TlsKeyOperation"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt.MqttClientConnection",
+ "methods":[{"name":"onConnectionClosed","parameterTypes":[] }, {"name":"onConnectionComplete","parameterTypes":["int","boolean"] }, {"name":"onConnectionFailure","parameterTypes":["int"] }, {"name":"onConnectionInterrupted","parameterTypes":["int","software.amazon.awssdk.crt.AsyncCallback"] }, {"name":"onConnectionResumed","parameterTypes":["boolean"] }, {"name":"onConnectionSuccess","parameterTypes":["boolean"] }, {"name":"onWebsocketHandshake","parameterTypes":["software.amazon.awssdk.crt.http.HttpRequest","long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt.MqttClientConnection$MessageHandler",
+ "methods":[{"name":"deliver","parameterTypes":["java.lang.String","byte[]","boolean","int","boolean"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt.MqttClientConnectionOperationStatistics",
+ "fields":[{"name":"incompleteOperationCount"}, {"name":"incompleteOperationSize"}, {"name":"unackedOperationCount"}, {"name":"unackedOperationSize"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt.MqttException",
+ "methods":[{"name":"","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5Client",
+ "fields":[{"name":"websocketHandshakeTransform"}],
+ "methods":[{"name":"onWebsocketHandshake","parameterTypes":["software.amazon.awssdk.crt.http.HttpRequest","long"] }, {"name":"setIsConnected","parameterTypes":["boolean"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOperationStatistics",
+ "fields":[{"name":"incompleteOperationCount"}, {"name":"incompleteOperationSize"}, {"name":"unackedOperationCount"}, {"name":"unackedOperationSize"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOptions",
+ "fields":[{"name":"ackTimeoutSeconds"}, {"name":"connackTimeoutMs"}, {"name":"extendedValidationAndFlowControlOptions"}, {"name":"hostName"}, {"name":"httpProxyOptions"}, {"name":"lifecycleEvents"}, {"name":"maxReconnectDelayMs"}, {"name":"minConnectedTimeToResetReconnectDelayMs"}, {"name":"minReconnectDelayMs"}, {"name":"offlineQueueBehavior"}, {"name":"pingTimeoutMs"}, {"name":"port"}, {"name":"publishEvents"}, {"name":"retryJitterMode"}, {"name":"sessionBehavior"}, {"name":"topicAliasingOptions"}],
+ "methods":[{"name":"getBootstrap","parameterTypes":[] }, {"name":"getExtendedValidationAndFlowControlOptions","parameterTypes":[] }, {"name":"getOfflineQueueBehavior","parameterTypes":[] }, {"name":"getRetryJitterMode","parameterTypes":[] }, {"name":"getSessionBehavior","parameterTypes":[] }, {"name":"getSocketOptions","parameterTypes":[] }, {"name":"getTlsContext","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOptions$ClientOfflineQueueBehavior",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOptions$ClientSessionBehavior",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOptions$ExtendedValidationAndFlowControlOptions",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOptions$LifecycleEvents",
+ "methods":[{"name":"onAttemptingConnect","parameterTypes":["software.amazon.awssdk.crt.mqtt5.Mqtt5Client","software.amazon.awssdk.crt.mqtt5.OnAttemptingConnectReturn"] }, {"name":"onConnectionFailure","parameterTypes":["software.amazon.awssdk.crt.mqtt5.Mqtt5Client","software.amazon.awssdk.crt.mqtt5.OnConnectionFailureReturn"] }, {"name":"onConnectionSuccess","parameterTypes":["software.amazon.awssdk.crt.mqtt5.Mqtt5Client","software.amazon.awssdk.crt.mqtt5.OnConnectionSuccessReturn"] }, {"name":"onDisconnection","parameterTypes":["software.amazon.awssdk.crt.mqtt5.Mqtt5Client","software.amazon.awssdk.crt.mqtt5.OnDisconnectionReturn"] }, {"name":"onStopped","parameterTypes":["software.amazon.awssdk.crt.mqtt5.Mqtt5Client","software.amazon.awssdk.crt.mqtt5.OnStoppedReturn"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.Mqtt5ClientOptions$PublishEvents",
+ "methods":[{"name":"onMessageReceived","parameterTypes":["software.amazon.awssdk.crt.mqtt5.Mqtt5Client","software.amazon.awssdk.crt.mqtt5.PublishReturn"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.NegotiatedSettings",
+ "fields":[{"name":"assignedClientID"}, {"name":"maximumPacketSizeToServer"}, {"name":"maximumQOS"}, {"name":"receiveMaximumFromServer"}, {"name":"rejoinedSession"}, {"name":"retainAvailable"}, {"name":"serverKeepAlive"}, {"name":"sessionExpiryInterval"}, {"name":"sharedSubscriptionsAvailable"}, {"name":"subscriptionIdentifiersAvailable"}, {"name":"topicAliasMaximumToClient"}, {"name":"topicAliasMaximumToServer"}, {"name":"wildcardSubscriptionsAvailable"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"nativeSetQOS","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.OnAttemptingConnectReturn",
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.OnConnectionFailureReturn",
+ "methods":[{"name":"","parameterTypes":["int","software.amazon.awssdk.crt.mqtt5.packets.ConnAckPacket"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.OnConnectionSuccessReturn",
+ "methods":[{"name":"","parameterTypes":["software.amazon.awssdk.crt.mqtt5.packets.ConnAckPacket","software.amazon.awssdk.crt.mqtt5.NegotiatedSettings"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.OnDisconnectionReturn",
+ "methods":[{"name":"","parameterTypes":["int","software.amazon.awssdk.crt.mqtt5.packets.DisconnectPacket"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.OnStoppedReturn",
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.PublishResult",
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["software.amazon.awssdk.crt.mqtt5.packets.PubAckPacket"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.PublishReturn",
+ "methods":[{"name":"","parameterTypes":["software.amazon.awssdk.crt.mqtt5.packets.PublishPacket"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.QOS",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.TopicAliasingOptions",
+ "fields":[{"name":"inboundBehavior"}, {"name":"inboundCacheMaxSize"}, {"name":"outboundBehavior"}, {"name":"outboundCacheMaxSize"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.TopicAliasingOptions$InboundTopicAliasBehaviorType",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.TopicAliasingOptions$OutboundTopicAliasBehaviorType",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.ConnAckPacket",
+ "fields":[{"name":"assignedClientIdentifier"}, {"name":"maximumPacketSize"}, {"name":"maximumQOS"}, {"name":"reasonCode"}, {"name":"reasonString"}, {"name":"receiveMaximum"}, {"name":"responseInformation"}, {"name":"retainAvailable"}, {"name":"serverKeepAlive"}, {"name":"serverReference"}, {"name":"sessionExpiryIntervalSeconds"}, {"name":"sessionPresent"}, {"name":"sharedSubscriptionsAvailable"}, {"name":"subscriptionIdentifiersAvailable"}, {"name":"topicAliasMaximum"}, {"name":"userProperties"}, {"name":"wildcardSubscriptionsAvailable"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"nativeAddMaximumQOS","parameterTypes":["int"] }, {"name":"nativeAddReasonCode","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.ConnAckPacket$ConnectReasonCode",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.ConnectPacket",
+ "fields":[{"name":"clientId"}, {"name":"keepAliveIntervalSeconds"}, {"name":"maximumPacketSizeBytes"}, {"name":"password"}, {"name":"receiveMaximum"}, {"name":"requestProblemInformation"}, {"name":"requestResponseInformation"}, {"name":"sessionExpiryIntervalSeconds"}, {"name":"userProperties"}, {"name":"username"}, {"name":"will"}, {"name":"willDelayIntervalSeconds"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.DisconnectPacket",
+ "fields":[{"name":"reasonCode"}, {"name":"reasonString"}, {"name":"serverReference"}, {"name":"sessionExpiryIntervalSeconds"}, {"name":"userProperties"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"getReasonCode","parameterTypes":[] }, {"name":"nativeAddDisconnectReasonCode","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.DisconnectPacket$DisconnectReasonCode",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.PubAckPacket",
+ "fields":[{"name":"reasonCode"}, {"name":"reasonString"}, {"name":"userProperties"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"nativeAddReasonCode","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.PubAckPacket$PubAckReasonCode",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.PublishPacket",
+ "fields":[{"name":"contentType"}, {"name":"correlationData"}, {"name":"messageExpiryIntervalSeconds"}, {"name":"packetQOS"}, {"name":"payload"}, {"name":"payloadFormat"}, {"name":"responseTopic"}, {"name":"retain"}, {"name":"subscriptionIdentifiers"}, {"name":"topic"}, {"name":"topicAlias"}, {"name":"userProperties"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"getPayloadFormat","parameterTypes":[] }, {"name":"getQOS","parameterTypes":[] }, {"name":"nativeSetPayloadFormatIndicator","parameterTypes":["int"] }, {"name":"nativeSetQOS","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.PublishPacket$PayloadFormatIndicator",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.SubAckPacket",
+ "fields":[{"name":"reasonCodes"}, {"name":"reasonString"}, {"name":"userProperties"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"nativeAddSubackCode","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.SubAckPacket$SubAckReasonCode",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.SubscribePacket",
+ "fields":[{"name":"subscriptionIdentifier"}, {"name":"subscriptions"}, {"name":"userProperties"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.SubscribePacket$RetainHandlingType",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.SubscribePacket$Subscription",
+ "fields":[{"name":"noLocal"}, {"name":"retainAsPublished"}],
+ "methods":[{"name":"getNoLocal","parameterTypes":[] }, {"name":"getQOS","parameterTypes":[] }, {"name":"getRetainAsPublished","parameterTypes":[] }, {"name":"getRetainHandlingType","parameterTypes":[] }, {"name":"getTopicFilter","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.UnsubAckPacket",
+ "fields":[{"name":"reasonCodes"}, {"name":"reasonString"}, {"name":"userProperties"}],
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"nativeAddUnsubackCode","parameterTypes":["int"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.UnsubAckPacket$UnsubAckReasonCode",
+ "methods":[{"name":"getEnumValueFromInteger","parameterTypes":["int"] }, {"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.UnsubscribePacket",
+ "fields":[{"name":"subscriptions"}, {"name":"userProperties"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.mqtt5.packets.UserProperty",
+ "fields":[{"name":"key"}, {"name":"value"}],
+ "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.ResumeToken",
+ "fields":[{"name":"nativeType"}, {"name":"numPartsCompleted"}, {"name":"partSize"}, {"name":"totalNumParts"}, {"name":"uploadId"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3Client",
+ "methods":[{"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3ExpressCredentialsProperties",
+ "fields":[{"name":"hostValue"}, {"name":"region"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3ExpressCredentialsProvider",
+ "methods":[{"name":"destroyProvider","parameterTypes":[] }, {"name":"getS3ExpressCredentials","parameterTypes":["software.amazon.awssdk.crt.s3.S3ExpressCredentialsProperties","software.amazon.awssdk.crt.auth.credentials.Credentials","long"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3ExpressCredentialsProviderFactory",
+ "methods":[{"name":"createS3ExpressCredentialsProvider","parameterTypes":["software.amazon.awssdk.crt.s3.S3Client"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3MetaRequest",
+ "methods":[{"name":"onShutdownComplete","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3MetaRequestProgress",
+ "fields":[{"name":"bytesTransferred"}, {"name":"contentLength"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.http.HttpProxyOptions$HttpProxyAuthorizationType",
+ "methods":[{"name":"getValue","parameterTypes":[] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3MetaRequestResponseHandlerNativeAdapter",
+ "methods":[{"name":"onFinished","parameterTypes":["int","int","byte[]","int","boolean","java.lang.Throwable","java.nio.ByteBuffer"] }, {"name":"onProgress","parameterTypes":["software.amazon.awssdk.crt.s3.S3MetaRequestProgress"] }, {"name":"onResponseBody","parameterTypes":["byte[]","long","long"] }, {"name":"onResponseHeaders","parameterTypes":["int","java.nio.ByteBuffer"] }]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.s3.S3TcpKeepAliveOptions",
+ "fields":[{"name":"keepAliveIntervalSec"}, {"name":"keepAliveMaxFailedProbes"}, {"name":"keepAliveTimeoutSec"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"sun.management.VMManagementImpl",
+ "fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}]
+ }
+]
diff --git a/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/native-image.properties b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/native-image.properties
new file mode 100644
index 000000000..28b958f66
--- /dev/null
+++ b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/native-image.properties
@@ -0,0 +1 @@
+Args=-H:ClassInitialization=org.slf4j:build_time
\ No newline at end of file
diff --git a/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/reflect-config.json b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/reflect-config.json
new file mode 100644
index 000000000..a1ebe604a
--- /dev/null
+++ b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/reflect-config.json
@@ -0,0 +1,41 @@
+[
+ {
+ "name":"java.lang.Object",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+ },
+ {
+ "name":"java.lang.Throwable",
+ "methods":[{"name":"getSuppressed","parameterTypes":[] }]
+ },
+ {
+ "name":"org.hamcrest.core.Every",
+ "queryAllDeclaredMethods":true
+ },
+ {
+ "name":"java.util.concurrent.atomic.AtomicBoolean",
+ "fields":[{"name":"value"}]
+ },
+ {
+ "name":"java.util.concurrent.atomic.AtomicReference",
+ "fields":[{"name":"value"}]
+ },
+ {
+ "name":"software.amazon.awssdk.crt.CRT"
+ },
+ {
+ "name":"software.amazon.awssdk.crt.CrtResource"
+ },
+ {
+ "name":"sun.security.provider.NativePRNG",
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"sun.security.provider.SHA",
+ "methods":[{"name":"","parameterTypes":[] }]
+ },
+ {
+ "name":"sun.security.provider.SHA2$SHA256",
+ "methods":[{"name":"","parameterTypes":[] }]
+ }
+]
diff --git a/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/resource-config.json b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/resource-config.json
new file mode 100644
index 000000000..4ba5991fd
--- /dev/null
+++ b/src/main/resources/META-INF/native-image/software.amazon.awssdk/crt/aws-crt/resource-config.json
@@ -0,0 +1,10 @@
+{
+ "resources": {
+ "includes": [
+ {"pattern":".*libaws-crt-jni.dylib"},
+ {"pattern":".*libaws-crt-jni.so"},
+ {"pattern":".*aws-crt-jni.dll"}
+ ]
+ },
+ "bundles": []
+}
\ No newline at end of file
diff --git a/src/native/java_class_ids.c b/src/native/java_class_ids.c
index adfc305bf..af0b627c7 100644
--- a/src/native/java_class_ids.c
+++ b/src/native/java_class_ids.c
@@ -967,18 +967,23 @@ static void s_cache_s3_meta_request_resume_token(JNIEnv *env) {
AWS_FATAL_ASSERT(cls);
s3_meta_request_resume_token_properties.s3_meta_request_resume_token_class = (*env)->NewGlobalRef(env, cls);
- s3_meta_request_resume_token_properties.s3_meta_request_resume_token_constructor_method_id =
- (*env)->GetMethodID(env, s3_meta_request_progress_properties.s3_meta_request_progress_class, "", "()V");
+ s3_meta_request_resume_token_properties.s3_meta_request_resume_token_constructor_method_id = (*env)->GetMethodID(
+ env, s3_meta_request_resume_token_properties.s3_meta_request_resume_token_class, "", "()V");
+ AWS_FATAL_ASSERT(s3_meta_request_resume_token_properties.s3_meta_request_resume_token_constructor_method_id);
s3_meta_request_resume_token_properties.native_type_field_id = (*env)->GetFieldID(env, cls, "nativeType", "I");
AWS_FATAL_ASSERT(s3_meta_request_resume_token_properties.native_type_field_id);
s3_meta_request_resume_token_properties.part_size_field_id = (*env)->GetFieldID(env, cls, "partSize", "J");
+ AWS_FATAL_ASSERT(s3_meta_request_resume_token_properties.part_size_field_id);
s3_meta_request_resume_token_properties.total_num_parts_field_id =
(*env)->GetFieldID(env, cls, "totalNumParts", "J");
+ AWS_FATAL_ASSERT(s3_meta_request_resume_token_properties.total_num_parts_field_id);
s3_meta_request_resume_token_properties.num_parts_completed_field_id =
(*env)->GetFieldID(env, cls, "numPartsCompleted", "J");
+ AWS_FATAL_ASSERT(s3_meta_request_resume_token_properties.num_parts_completed_field_id);
s3_meta_request_resume_token_properties.upload_id_field_id =
(*env)->GetFieldID(env, cls, "uploadId", "Ljava/lang/String;");
+ AWS_FATAL_ASSERT(s3_meta_request_resume_token_properties.upload_id_field_id);
}
struct java_aws_mqtt5_connack_packet_properties mqtt5_connack_packet_properties;
diff --git a/src/test/java/software/amazon/awssdk/crt/test/CrtTestFixture.java b/src/test/java/software/amazon/awssdk/crt/test/CrtTestFixture.java
index 0e49c8643..15ba8f8fa 100644
--- a/src/test/java/software/amazon/awssdk/crt/test/CrtTestFixture.java
+++ b/src/test/java/software/amazon/awssdk/crt/test/CrtTestFixture.java
@@ -308,4 +308,8 @@ protected void skipIfAndroid() {
Assume.assumeFalse(platform.getOSIdentifier().contains("android"));
}
}
+
+ protected void skipIfNativeImage() {
+ Assume.assumeFalse(System.getProperty("org.graalvm.nativeimage.imagecode") != null);
+ }
}
diff --git a/src/test/java/software/amazon/awssdk/crt/test/Http2StreamManagerTest.java b/src/test/java/software/amazon/awssdk/crt/test/Http2StreamManagerTest.java
index e030d4d08..9f1978035 100644
--- a/src/test/java/software/amazon/awssdk/crt/test/Http2StreamManagerTest.java
+++ b/src/test/java/software/amazon/awssdk/crt/test/Http2StreamManagerTest.java
@@ -4,6 +4,14 @@
*/
package software.amazon.awssdk.crt.test;
+import org.junit.Assert;
+import org.junit.Test;
+import software.amazon.awssdk.crt.CRT;
+import software.amazon.awssdk.crt.CrtResource;
+import software.amazon.awssdk.crt.Log;
+import software.amazon.awssdk.crt.http.*;
+import software.amazon.awssdk.crt.io.*;
+
import java.net.URI;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
@@ -11,20 +19,6 @@
import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Test;
-import software.amazon.awssdk.crt.CRT;
-import software.amazon.awssdk.crt.CrtResource;
-import software.amazon.awssdk.crt.CrtRuntimeException;
-import software.amazon.awssdk.crt.http.*;
-import software.amazon.awssdk.crt.io.ClientBootstrap;
-import software.amazon.awssdk.crt.io.EventLoopGroup;
-import software.amazon.awssdk.crt.io.HostResolver;
-import software.amazon.awssdk.crt.io.SocketOptions;
-import software.amazon.awssdk.crt.io.TlsContext;
-import software.amazon.awssdk.crt.io.TlsContextOptions;
-import software.amazon.awssdk.crt.Log;
public class Http2StreamManagerTest extends HttpClientTestFixture {
private final static Charset UTF8 = StandardCharsets.UTF_8;
@@ -195,6 +189,7 @@ public void testSanitizer() throws Exception {
@Test
public void testSerialRequests() throws Exception {
skipIfAndroid();
+ skipIfNativeImage();
skipIfNetworkUnavailable();
testParallelRequestsWithLeakCheck(1, NUM_REQUESTS / NUM_THREADS);
}
@@ -202,6 +197,7 @@ public void testSerialRequests() throws Exception {
@Test
public void testMaxParallelRequests() throws Exception {
skipIfAndroid();
+ skipIfNativeImage();
skipIfNetworkUnavailable();
testParallelRequestsWithLeakCheck(NUM_THREADS, NUM_REQUESTS);
}
diff --git a/src/test/java/software/amazon/awssdk/crt/test/HttpClientConnectionTest.java b/src/test/java/software/amazon/awssdk/crt/test/HttpClientConnectionTest.java
index 7f89f272b..be636991c 100644
--- a/src/test/java/software/amazon/awssdk/crt/test/HttpClientConnectionTest.java
+++ b/src/test/java/software/amazon/awssdk/crt/test/HttpClientConnectionTest.java
@@ -78,7 +78,7 @@ private void testConnectionWithAllCiphers(URI uri, boolean expectConnected, Stri
SocketOptions socketOptions = new SocketOptions();
TlsContext tlsCtx = new TlsContext(tlsOpts)) {
- socketOptions.connectTimeoutMs = 10000;
+ socketOptions.connectTimeoutMs = 6000000;
resp = testConnection(uri, bootstrap, socketOptions, tlsCtx);
}
}