diff --git a/.github/workflows/maven-build-all.yml b/.github/workflows/maven-build-all.yml index afe75d98..13a2b9ea 100644 --- a/.github/workflows/maven-build-all.yml +++ b/.github/workflows/maven-build-all.yml @@ -31,7 +31,8 @@ jobs: run: mvn -B package --file aws-lambda-java-events-sdk-transformer/pom.xml - name: Build log4j2 with Maven run: mvn -B package --file aws-lambda-java-log4j2/pom.xml - - name: Build serialization with Maven - run: mvn -B package --file aws-lambda-java-serialization/pom.xml - - name: Build runtime-interface-client with Maven - run: mvn -B package --file aws-lambda-java-runtime-interface-client/pom.xml + + # Test Runtime Interface Client + - name: Run 'pr' target + working-directory: ./aws-lambda-java-runtime-interface-client + run: make pr diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md index 7b77b35a..c77f0307 100644 --- a/aws-lambda-java-runtime-interface-client/README.md +++ b/aws-lambda-java-runtime-interface-client/README.md @@ -15,7 +15,7 @@ Choose a preferred base image. The Runtime Interface Client is tested on Amazon * built for x86_64 * contains Java >= 8 -* contains glibc >= 2.12 or musl +* contains glibc >= 2.17 or musl ### Example diff --git a/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc b/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc index 658d8548..ae29f7e8 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc +++ b/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc @@ -1,10 +1,11 @@ -# we use centos 6 to build against glibc 2.12 -FROM centos:6 +# we use centos 7 to build against glibc 2.17 +FROM centos:7 # aws-lambda-cpp requires cmake3, it's available in EPEL RUN yum install -y epel-release RUN yum install -y \ cmake3 \ + make \ gcc \ gcc-c++ \ glibc-devel \ diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/CustomerClassLoaderTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/CustomerClassLoaderTest.java index c6e302cd..5d270ba9 100644 --- a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/CustomerClassLoaderTest.java +++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/CustomerClassLoaderTest.java @@ -95,24 +95,37 @@ private List strip(String base, URL[] urls) { @Test @DisabledOnOs(MAC) // test fails on systems with case-insensitive volumes public void customerClassLoaderFunction() throws IOException { - Path rootDir = fakeFileSystem(EXAMPLE_FUNCTION); - - URLClassLoader customerClassLoader = new CustomerClassLoader( - rootDir.resolve("user/path").toString(), - rootDir.resolve("opt/java").toString(), - ClassLoader.getSystemClassLoader()); - - List res = strip("file:" + rootDir.toString(), customerClassLoader.getURLs()); - - Assertions.assertEquals(Arrays.asList( - "/user/path/", - "/user/path/lib/4.jar", - "/user/path/lib/A.jar", - "/user/path/lib/a.jar", - "/user/path/lib/b.jar", - "/user/path/lib/z.jar", - "/user/path/lib/λ.jar"), - res); + try { + Path rootDir = fakeFileSystem(EXAMPLE_FUNCTION); + + URLClassLoader customerClassLoader = new CustomerClassLoader( + rootDir.resolve("user/path").toString(), + rootDir.resolve("opt/java").toString(), + ClassLoader.getSystemClassLoader()); + + List res = strip("file:" + rootDir.toString(), customerClassLoader.getURLs()); + + Assertions.assertEquals(Arrays.asList( + "/user/path/", + "/user/path/lib/4.jar", + "/user/path/lib/A.jar", + "/user/path/lib/a.jar", + "/user/path/lib/b.jar", + "/user/path/lib/z.jar", + "/user/path/lib/λ.jar"), + res); + } catch(Throwable t) { + // this system property is the name of the charset used when encoding/decoding file paths + // exception is expected if it is not set to a UTF variant or not set at all + String systemEncoding = System.getProperty("sun.jnu.encoding"); + + if (systemEncoding != null && !systemEncoding.toLowerCase().contains("utf")){ + Assertions.assertTrue(t.getMessage().contains("Malformed input or input contains unmappable characters")); + } + else { + throw t; + } + } } @Test diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/codebuild_build.sh b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/codebuild_build.sh index 64af5222..ffadfa30 100755 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/codebuild_build.sh +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/codebuild_build.sh @@ -95,7 +95,7 @@ then exit 1 fi -docker_command="docker run -it " +docker_command="docker run " if isOSWindows then docker_command+="-v //var/run/docker.sock:/var/run/docker.sock -e " diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml index b7e25091..24b9edc0 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml @@ -15,7 +15,6 @@ batch: env: variables: DISTRO_VERSION: - - "6" - "7" - "8" RUNTIME_VERSION: