diff --git a/.gitattributes b/.gitattributes index 643044fd..fae5060d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,4 +8,4 @@ pk_generated_parent.pom linguist-generated=true .github/workflows/dependencies_update.yml linguist-generated=true .github/workflows/release.yml linguist-generated=true .settings/org.eclipse.jdt.core.prefs linguist-generated=true -.settings/org.eclipse.jdt.core.prefs linguist-generated=true +.settings/org.eclipse.jdt.ui.prefs linguist-generated=true diff --git a/.github/workflows/ci-build-next-java.yml b/.github/workflows/ci-build-next-java.yml index e8302fe9..712a7cbd 100644 --- a/.github/workflows/ci-build-next-java.yml +++ b/.github/workflows/ci-build-next-java.yml @@ -1,36 +1,39 @@ -# Generated by Project Keeper -# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/ci-build-next-java.yml +# This file was generated by Project Keeper. name: CI Build next Java on: push: - branches: - - main - pull_request: - + branches: [ + main + ] + + pull_request: null jobs: - java-17-compatibility: + next-java-compatibility: runs-on: ubuntu-latest defaults: - run: - shell: "bash" - permissions: + run: { + shell: bash + } + permissions: { contents: read - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + } + concurrency: { + group: '${{ github.workflow }}-${{ github.ref }}', cancel-in-progress: true + } steps: - name: Checkout the repository uses: actions/checkout@v4 - with: + with: { fetch-depth: 0 + } - name: Set up JDK 17 uses: actions/setup-java@v4 - with: - distribution: "temurin" - java-version: 17 - cache: "maven" - - name: Run tests and build with Maven + with: { + distribution: temurin, + java-version: '17', + cache: maven + } + - name: Run tests and build with Maven 17 run: | - mvn --batch-mode --update-snapshots clean package -DtrimStackTrace=false \ - -Djava.version=17 \ - -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + mvn --batch-mode clean package -DtrimStackTrace=false -Djava.version=17 diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index ee43136f..5df96e16 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -25,12 +25,12 @@ jobs: fail-fast: false matrix: exasol_db_version: [ - 8.29.1, - 7.1.29 + 8.32.0, + 7.1.30 ] env: { - DEFAULT_EXASOL_DB_VERSION: 8.29.1 + DEFAULT_EXASOL_DB_VERSION: 8.32.0 } steps: - name: Free Disk Space @@ -50,7 +50,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: | + java-version: |- 11 17 cache: maven @@ -125,7 +125,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: | + java-version: |- 11 17 cache: maven diff --git a/.github/workflows/dependencies_check.yml b/.github/workflows/dependencies_check.yml index 9c2365cf..02c5aa06 100644 --- a/.github/workflows/dependencies_check.yml +++ b/.github/workflows/dependencies_check.yml @@ -35,7 +35,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: | + java-version: |- 11 17 cache: maven diff --git a/.github/workflows/dependencies_update.yml b/.github/workflows/dependencies_update.yml index 0fa71800..c9015062 100644 --- a/.github/workflows/dependencies_update.yml +++ b/.github/workflows/dependencies_update.yml @@ -35,7 +35,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: | + java-version: |- 11 17 cache: maven diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5be64c86..e4682a32 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -52,7 +52,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: | + java-version: |- 11 17 cache: maven @@ -67,7 +67,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: | + java-version: |- 11 17 cache: maven diff --git a/.project-keeper.yml b/.project-keeper.yml index 4a51c449..66c1afb5 100644 --- a/.project-keeper.yml +++ b/.project-keeper.yml @@ -8,8 +8,8 @@ build: runnerOs: ubuntu-latest freeDiskSpace: true exasolDbVersions: - - "8.29.1" - - "7.1.29" + - "8.32.0" + - "7.1.30" workflows: - name: ci-build.yml stepCustomizations: diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index bb40c3fa..43365b06 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,15 +1,19 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull=javax.annotation.Nonnull org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=javax.annotation.ParametersAreNonnullByDefault org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.notowning=org.eclipse.jdt.annotation.NotOwning +org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.Nullable org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled +org.eclipse.jdt.core.compiler.annotation.owning=org.eclipse.jdt.annotation.Owning +org.eclipse.jdt.core.compiler.annotation.resourceanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.methodParameters=generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=11 @@ -17,6 +21,7 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.autoboxing=ignore @@ -39,8 +44,10 @@ org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompatibleOwningContract=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.insufficientResourceAnalysis=warning org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore @@ -56,15 +63,15 @@ org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning @@ -78,7 +85,8 @@ org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs index 1add06a7..54d02acc 100644 --- a/.settings/org.eclipse.jdt.ui.prefs +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -76,6 +76,7 @@ sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_missing_override_annotations_interface_methods=true sp_cleanup.add_serial_version_id=false +sp_cleanup.also_simplify_lambda=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=true sp_cleanup.always_use_this_for_non_static_field_access=true @@ -130,6 +131,7 @@ sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false sp_cleanup.operand_factorization=false sp_cleanup.organize_imports=true sp_cleanup.overridden_assignment=false +sp_cleanup.overridden_assignment_move_decl=false sp_cleanup.plain_replacement=false sp_cleanup.precompile_regex=false sp_cleanup.primitive_comparison=false @@ -159,10 +161,12 @@ sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=true sp_cleanup.remove_unused_imports=true sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_method_parameters=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true +sp_cleanup.replace_deprecated_calls=false sp_cleanup.return_expression=false sp_cleanup.simplify_lambda_expression_and_method_ref=false sp_cleanup.single_used_field=false @@ -174,6 +178,8 @@ sp_cleanup.strictly_equal_or_different=false sp_cleanup.stringbuffer_to_stringbuilder=false sp_cleanup.stringbuilder=false sp_cleanup.stringbuilder_for_local_vars=false +sp_cleanup.stringconcat_stringbuffer_stringbuilder=false +sp_cleanup.stringconcat_to_textblock=false sp_cleanup.substring=false sp_cleanup.switch=false sp_cleanup.system_property=false diff --git a/dependencies.md b/dependencies.md index 595412ba..c09aecc7 100644 --- a/dependencies.md +++ b/dependencies.md @@ -40,26 +40,31 @@ | Dependency | License | | ------------------------------------------------------- | ------------------------------------- | -| [SonarQube Scanner for Maven][31] | [GNU LGPL 3][32] | -| [Apache Maven Toolchains Plugin][33] | [Apache-2.0][22] | -| [Apache Maven Compiler Plugin][34] | [Apache-2.0][22] | -| [Apache Maven Enforcer Plugin][35] | [Apache-2.0][22] | -| [Maven Flatten Plugin][36] | [Apache Software Licenese][22] | -| [org.sonatype.ossindex.maven:ossindex-maven-plugin][37] | [ASL2][18] | -| [Maven Surefire Plugin][38] | [Apache-2.0][22] | -| [Versions Maven Plugin][39] | [Apache License, Version 2.0][22] | -| [duplicate-finder-maven-plugin Maven Mojo][40] | [Apache License 2.0][41] | -| [Apache Maven Deploy Plugin][42] | [Apache-2.0][22] | -| [Apache Maven GPG Plugin][43] | [Apache-2.0][22] | -| [Apache Maven Source Plugin][44] | [Apache License, Version 2.0][22] | -| [Apache Maven Javadoc Plugin][45] | [Apache-2.0][22] | -| [Nexus Staging Maven Plugin][46] | [Eclipse Public License][47] | -| [Project Keeper Maven plugin][48] | [The MIT License][49] | -| [OpenFastTrace Maven Plugin][50] | [GNU General Public License v3.0][51] | -| [Maven Failsafe Plugin][52] | [Apache-2.0][22] | -| [JaCoCo :: Maven Plugin][53] | [EPL-2.0][54] | -| [error-code-crawler-maven-plugin][55] | [MIT License][56] | -| [Reproducible Build Maven Plugin][57] | [Apache 2.0][18] | +| [Apache Maven Clean Plugin][31] | [Apache-2.0][22] | +| [Apache Maven Install Plugin][32] | [Apache-2.0][22] | +| [Apache Maven Resources Plugin][33] | [Apache-2.0][22] | +| [Apache Maven Site Plugin][34] | [Apache License, Version 2.0][22] | +| [SonarQube Scanner for Maven][35] | [GNU LGPL 3][36] | +| [Apache Maven Toolchains Plugin][37] | [Apache-2.0][22] | +| [Apache Maven Compiler Plugin][38] | [Apache-2.0][22] | +| [Apache Maven Enforcer Plugin][39] | [Apache-2.0][22] | +| [Maven Flatten Plugin][40] | [Apache Software Licenese][22] | +| [org.sonatype.ossindex.maven:ossindex-maven-plugin][41] | [ASL2][18] | +| [Maven Surefire Plugin][42] | [Apache-2.0][22] | +| [Versions Maven Plugin][43] | [Apache License, Version 2.0][22] | +| [duplicate-finder-maven-plugin Maven Mojo][44] | [Apache License 2.0][45] | +| [Apache Maven Deploy Plugin][46] | [Apache-2.0][22] | +| [Apache Maven GPG Plugin][47] | [Apache-2.0][22] | +| [Apache Maven Source Plugin][48] | [Apache License, Version 2.0][22] | +| [Apache Maven Javadoc Plugin][49] | [Apache-2.0][22] | +| [Nexus Staging Maven Plugin][50] | [Eclipse Public License][51] | +| [Project Keeper Maven plugin][52] | [The MIT License][53] | +| [OpenFastTrace Maven Plugin][54] | [GNU General Public License v3.0][55] | +| [Maven Failsafe Plugin][56] | [Apache-2.0][22] | +| [JaCoCo :: Maven Plugin][57] | [EPL-2.0][58] | +| [Quality Summarizer Maven Plugin][59] | [MIT License][60] | +| [error-code-crawler-maven-plugin][61] | [MIT License][62] | +| [Reproducible Build Maven Plugin][63] | [Apache 2.0][18] | [0]: https://java.testcontainers.org [1]: http://opensource.org/licenses/MIT @@ -92,30 +97,36 @@ [28]: https://commons.apache.org/proper/commons-compress/ [29]: http://www.exasol.com/ [30]: https://repo1.maven.org/maven2/com/exasol/exasol-jdbc/24.1.1/exasol-jdbc-24.1.1-license.txt -[31]: http://sonarsource.github.io/sonar-scanner-maven/ -[32]: http://www.gnu.org/licenses/lgpl.txt -[33]: https://maven.apache.org/plugins/maven-toolchains-plugin/ -[34]: https://maven.apache.org/plugins/maven-compiler-plugin/ -[35]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ -[36]: https://www.mojohaus.org/flatten-maven-plugin/ -[37]: https://sonatype.github.io/ossindex-maven/maven-plugin/ -[38]: https://maven.apache.org/surefire/maven-surefire-plugin/ -[39]: https://www.mojohaus.org/versions/versions-maven-plugin/ -[40]: https://basepom.github.io/duplicate-finder-maven-plugin -[41]: http://www.apache.org/licenses/LICENSE-2.0.html -[42]: https://maven.apache.org/plugins/maven-deploy-plugin/ -[43]: https://maven.apache.org/plugins/maven-gpg-plugin/ -[44]: https://maven.apache.org/plugins/maven-source-plugin/ -[45]: https://maven.apache.org/plugins/maven-javadoc-plugin/ -[46]: http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/ -[47]: http://www.eclipse.org/legal/epl-v10.html -[48]: https://github.com/exasol/project-keeper/ -[49]: https://github.com/exasol/project-keeper/blob/main/LICENSE -[50]: https://github.com/itsallcode/openfasttrace-maven-plugin -[51]: https://www.gnu.org/licenses/gpl-3.0.html -[52]: https://maven.apache.org/surefire/maven-failsafe-plugin/ -[53]: https://www.jacoco.org/jacoco/trunk/doc/maven.html -[54]: https://www.eclipse.org/legal/epl-2.0/ -[55]: https://github.com/exasol/error-code-crawler-maven-plugin/ -[56]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE -[57]: http://zlika.github.io/reproducible-build-maven-plugin +[31]: https://maven.apache.org/plugins/maven-clean-plugin/ +[32]: https://maven.apache.org/plugins/maven-install-plugin/ +[33]: https://maven.apache.org/plugins/maven-resources-plugin/ +[34]: https://maven.apache.org/plugins/maven-site-plugin/ +[35]: http://sonarsource.github.io/sonar-scanner-maven/ +[36]: http://www.gnu.org/licenses/lgpl.txt +[37]: https://maven.apache.org/plugins/maven-toolchains-plugin/ +[38]: https://maven.apache.org/plugins/maven-compiler-plugin/ +[39]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ +[40]: https://www.mojohaus.org/flatten-maven-plugin/ +[41]: https://sonatype.github.io/ossindex-maven/maven-plugin/ +[42]: https://maven.apache.org/surefire/maven-surefire-plugin/ +[43]: https://www.mojohaus.org/versions/versions-maven-plugin/ +[44]: https://basepom.github.io/duplicate-finder-maven-plugin +[45]: http://www.apache.org/licenses/LICENSE-2.0.html +[46]: https://maven.apache.org/plugins/maven-deploy-plugin/ +[47]: https://maven.apache.org/plugins/maven-gpg-plugin/ +[48]: https://maven.apache.org/plugins/maven-source-plugin/ +[49]: https://maven.apache.org/plugins/maven-javadoc-plugin/ +[50]: http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/ +[51]: http://www.eclipse.org/legal/epl-v10.html +[52]: https://github.com/exasol/project-keeper/ +[53]: https://github.com/exasol/project-keeper/blob/main/LICENSE +[54]: https://github.com/itsallcode/openfasttrace-maven-plugin +[55]: https://www.gnu.org/licenses/gpl-3.0.html +[56]: https://maven.apache.org/surefire/maven-failsafe-plugin/ +[57]: https://www.jacoco.org/jacoco/trunk/doc/maven.html +[58]: https://www.eclipse.org/legal/epl-2.0/ +[59]: https://github.com/exasol/quality-summarizer-maven-plugin/ +[60]: https://github.com/exasol/quality-summarizer-maven-plugin/blob/main/LICENSE +[61]: https://github.com/exasol/error-code-crawler-maven-plugin/ +[62]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE +[63]: http://zlika.github.io/reproducible-build-maven-plugin diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md index 36c552a3..116bf405 100644 --- a/doc/changes/changelog.md +++ b/doc/changes/changelog.md @@ -1,5 +1,6 @@ # Changes +* [7.1.2](changes_7.1.2.md) * [7.1.1](changes_7.1.1.md) * [7.1.0](changes_7.1.0.md) * [7.0.1](changes_7.0.1.md) diff --git a/doc/changes/changes_7.1.2.md b/doc/changes/changes_7.1.2.md new file mode 100644 index 00000000..bad94d7c --- /dev/null +++ b/doc/changes/changes_7.1.2.md @@ -0,0 +1,32 @@ +# Test Containers for Exasol on Docker 7.1.2, released 2024-??-?? + +Code name: Allow withExposedPorts + +## Summary + +This release fixes an issue that prevented the container startup when using the option `withExposedPorts`. +The installation of ScriptLanguageContainers requires the BucketFS internal port to be available, but this shouldn't +be the case when no SLC has been requested to be installed. + +It also bumps default docker image to 7.1.30. + +## Bugfix + +* #257: Container startup fails when using withExposedPorts() + +## Dependency Updates + +### Plugin Dependency Updates + +* Updated `com.exasol:project-keeper-maven-plugin:4.3.3` to `4.4.0` +* Added `com.exasol:quality-summarizer-maven-plugin:0.2.0` +* Updated `io.github.zlika:reproducible-build-maven-plugin:0.16` to `0.17` +* Updated `org.apache.maven.plugins:maven-clean-plugin:2.5` to `3.4.0` +* Updated `org.apache.maven.plugins:maven-failsafe-plugin:3.2.5` to `3.5.1` +* Updated `org.apache.maven.plugins:maven-gpg-plugin:3.2.4` to `3.2.7` +* Updated `org.apache.maven.plugins:maven-install-plugin:2.4` to `3.1.3` +* Updated `org.apache.maven.plugins:maven-javadoc-plugin:3.7.0` to `3.10.1` +* Updated `org.apache.maven.plugins:maven-resources-plugin:2.6` to `3.3.1` +* Updated `org.apache.maven.plugins:maven-site-plugin:3.3` to `3.9.1` +* Updated `org.apache.maven.plugins:maven-surefire-plugin:3.2.5` to `3.5.1` +* Updated `org.codehaus.mojo:versions-maven-plugin:2.16.2` to `2.17.1` diff --git a/error_code_config.yml b/error_code_config.yml index 45934316..4a2bda6e 100644 --- a/error_code_config.yml +++ b/error_code_config.yml @@ -5,4 +5,4 @@ error-tags: - com.exasol.support - com.exasol.clusterlogs - com.exasol.bucketfs.testcontainers - highest-index: 42 + highest-index: 43 diff --git a/pk_generated_parent.pom b/pk_generated_parent.pom index 283dcb11..74c39b17 100644 --- a/pk_generated_parent.pom +++ b/pk_generated_parent.pom @@ -3,7 +3,7 @@ 4.0.0 com.exasol exasol-testcontainers-generated-parent - 7.1.1 + 7.1.2 pom UTF-8 @@ -47,6 +47,26 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-site-plugin + 3.9.1 + org.sonarsource.scanner.maven sonar-maven-plugin @@ -150,7 +170,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.2.5 + 3.5.1 @@ -161,7 +181,7 @@ org.codehaus.mojo versions-maven-plugin - 2.16.2 + 2.17.1 display-updates @@ -223,7 +243,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.4 + 3.2.7 sign-artifacts @@ -259,7 +279,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.7.0 + 3.10.1 attach-javadocs @@ -302,7 +322,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.2.5 + 3.5.1 -Djava.util.logging.config.file=src/test/resources/logging.properties ${argLine} @@ -360,6 +380,19 @@ + + com.exasol + quality-summarizer-maven-plugin + 0.2.0 + + + summarize-metrics + + summarize + + + + com.exasol error-code-crawler-maven-plugin @@ -376,7 +409,7 @@ io.github.zlika reproducible-build-maven-plugin - 0.16 + 0.17 strip-jar diff --git a/pom.xml b/pom.xml index 2d626b00..364236d0 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 exasol-testcontainers - 7.1.1 + 7.1.2 Test containers for Exasol on Docker This module provides abstraction for generation, startup, shutdown and use of an Exasol database running on Docker. @@ -176,7 +176,7 @@ com.exasol project-keeper-maven-plugin - 4.3.3 + 4.4.0 @@ -257,7 +257,7 @@ exasol-testcontainers-generated-parent com.exasol - 7.1.1 + 7.1.2 pk_generated_parent.pom diff --git a/src/main/java/com/exasol/bucketfs/testcontainers/TestcontainerBucketFactory.java b/src/main/java/com/exasol/bucketfs/testcontainers/TestcontainerBucketFactory.java index 6c13708e..4771767d 100644 --- a/src/main/java/com/exasol/bucketfs/testcontainers/TestcontainerBucketFactory.java +++ b/src/main/java/com/exasol/bucketfs/testcontainers/TestcontainerBucketFactory.java @@ -86,7 +86,7 @@ private int mapPort(final int internalPort) { final Integer port = this.portMappings.get(internalPort); if (port == null) { throw new IllegalStateException( - "Internal port " + internalPort + " is not mapped. Current port mappings: " + this.portMappings); + "Internal BucketFS port " + internalPort + " is not mapped. Current port mappings: " + this.portMappings); } return port.intValue(); } diff --git a/src/main/java/com/exasol/containers/ExasolContainer.java b/src/main/java/com/exasol/containers/ExasolContainer.java index 786af779..794b9f3d 100644 --- a/src/main/java/com/exasol/containers/ExasolContainer.java +++ b/src/main/java/com/exasol/containers/ExasolContainer.java @@ -529,6 +529,7 @@ protected void containerIsStarting(final InspectContainerResponse containerInfo, @Override public void start() { + checkScriptLanguageContainersRequiresExposedBucketFSPort(); super.start(); checkClusterConfigurationForMinimumSupportedDBVersion(); ContainerSynchronizationVerifier.create(ContainerTimeService.create(this)).verifyClocksInSync(); @@ -628,6 +629,10 @@ private void cleanUpDatabaseIfNecessary() { // [impl->dsn~install-custom-slc.only-if-required~1] private void installSlcIfNecessary() { + if (this.scriptLanguageContainers.isEmpty()) { + return; + } + final ScriptLanguageContainerInstaller slcManager = ScriptLanguageContainerInstaller.create(this); for (final ScriptLanguageContainer slc : this.scriptLanguageContainers) { if (this.status.isInstalled(slc)) { @@ -687,6 +692,15 @@ private void checkClusterConfigurationForMinimumSupportedDBVersion() { DBVersionChecker.minimumSupportedDbVersionCheck(dbVersion); } + private void checkScriptLanguageContainersRequiresExposedBucketFSPort() { + final int bucketfsPort = getDefaultInternalBucketfsPort(); + if (!scriptLanguageContainers.isEmpty() && !getExposedPorts().contains(bucketfsPort)) { + throw new ContainerLaunchException(ExaError.messageBuilder("E-ETC-43") + .message("Installation of ScriptLanguageContainer requires the BucketFS port {{port}} " + + "to be exposed", bucketfsPort).toString()); + } + } + /** * Copy local file to container. * diff --git a/src/main/java/com/exasol/containers/ExasolContainerConstants.java b/src/main/java/com/exasol/containers/ExasolContainerConstants.java index 2cae94f3..2230ba56 100644 --- a/src/main/java/com/exasol/containers/ExasolContainerConstants.java +++ b/src/main/java/com/exasol/containers/ExasolContainerConstants.java @@ -7,7 +7,7 @@ */ public final class ExasolContainerConstants { /** Version of the Exasol Docker image */ - public static final String EXASOL_DOCKER_IMAGE_VERSION = "7.1.29"; + public static final String EXASOL_DOCKER_IMAGE_VERSION = "7.1.30"; /** Reference name of the Exasol Docker image */ public static final String EXASOL_DOCKER_IMAGE_ID = "exasol/docker-db"; diff --git a/src/test/java/com/exasol/containers/ExasolContainerSlcIT.java b/src/test/java/com/exasol/containers/ExasolContainerSlcIT.java index eaa33240..29fee6b8 100644 --- a/src/test/java/com/exasol/containers/ExasolContainerSlcIT.java +++ b/src/test/java/com/exasol/containers/ExasolContainerSlcIT.java @@ -2,23 +2,21 @@ import static com.exasol.matcher.ResultSetStructureMatcher.table; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.lessThan; +import static org.hamcrest.Matchers.*; import static org.junit.jupiter.api.Assertions.assertAll; +import static org.junit.jupiter.api.Assertions.assertThrows; -import java.io.FileNotFoundException; import java.sql.*; import java.time.Duration; import java.time.Instant; -import java.util.concurrent.TimeoutException; import org.junit.jupiter.api.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.exasol.bucketfs.BucketAccessException; import com.exasol.containers.slc.ScriptLanguageContainer; import com.exasol.containers.slc.ScriptLanguageContainer.Language; +import org.testcontainers.containers.ContainerLaunchException; @Tag("slow") @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @@ -26,12 +24,22 @@ class ExasolContainerSlcIT { private static final Logger LOGGER = LoggerFactory.getLogger(ExasolContainerSlcIT.class); private static final long TIMESTAMP = System.currentTimeMillis(); + @Test + void installSlcFailsIfNoBucketFSPortExposed() { + try (final ExasolContainer> container = new ExasolContainer<>()) { + final ScriptLanguageContainer slc = createSlc(); + container.withExposedPorts(8563).withScriptLanguageContainer(slc); + ContainerLaunchException exception = assertThrows(ContainerLaunchException.class, container::start); + assertThat(exception.getMessage(), startsWith("E-ETC-43")); + } + } + @Test @Order(1) // [itest->dsn~install-custom-slc~1] // [itest->dsn~install-custom-slc.url~1] // [itest->dsn~install-custom-slc.verify-checksum~1] - void installSlc() throws FileNotFoundException, BucketAccessException, TimeoutException, SQLException { + void installSlc() { try (final ExasolContainer> container = new ExasolContainer<>()) { final ScriptLanguageContainer slc = createSlc(); container.withReuse(true).withScriptLanguageContainer(slc); @@ -45,8 +53,7 @@ void installSlc() throws FileNotFoundException, BucketAccessException, TimeoutEx @Test @Order(2) // [itest->dsn~install-custom-slc.only-if-required~1] - void installationSkippedWhenAlreadyInstalled() - throws FileNotFoundException, BucketAccessException, TimeoutException, SQLException { + void installationSkippedWhenAlreadyInstalled() { try (final ExasolContainer> container = new ExasolContainer<>()) { final ScriptLanguageContainer slc = createSlc(); container.withReuse(true).withScriptLanguageContainer(slc); diff --git a/src/test/java/com/exasol/containers/ExposedPortsIT.java b/src/test/java/com/exasol/containers/ExposedPortsIT.java new file mode 100644 index 00000000..f7bd68d6 --- /dev/null +++ b/src/test/java/com/exasol/containers/ExposedPortsIT.java @@ -0,0 +1,22 @@ +package com.exasol.containers; + +import org.junit.jupiter.api.Test; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsInAnyOrder; + +@Testcontainers +class ExposedPortsIT { + + @Container + private static final ExasolContainer> EXASOL = new ExasolContainer<>() + .withExposedPorts(8563) + .withReuse(true); + + @Test + void testExposedPorts() { + assertThat(EXASOL.getExposedPorts(), containsInAnyOrder(8563)); + } +} \ No newline at end of file