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 extends 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 extends 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 extends 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 extends ExasolContainer>> EXASOL = new ExasolContainer<>()
+ .withExposedPorts(8563)
+ .withReuse(true);
+
+ @Test
+ void testExposedPorts() {
+ assertThat(EXASOL.getExposedPorts(), containsInAnyOrder(8563));
+ }
+}
\ No newline at end of file