diff --git a/.gitattributes b/.gitattributes
index 0f292c3..c6d9be7 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -10,3 +10,6 @@ server/versionsMavenPluginRules.xml linguist-gene
dependencies.md linguist-generated=true
doc/changes/changelog.md linguist-generated=true
go-client/go.sum linguist-generated=true
+
+server/.settings/org.eclipse.jdt.core.prefs linguist-generated=true
+server/.settings/org.eclipse.jdt.ui.prefs linguist-generated=true
diff --git a/.github/workflows/broken_links_checker.yml b/.github/workflows/broken_links_checker.yml
index c4ff3be..82ec1cd 100644
--- a/.github/workflows/broken_links_checker.yml
+++ b/.github/workflows/broken_links_checker.yml
@@ -15,16 +15,18 @@ jobs:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Configure broken links checker
run: |
mkdir -p ./target
echo '{"aliveStatusCodes": [429, 200], "ignorePatterns": [' \
'{"pattern": "^https?://(www|dev).mysql.com/"},' \
'{"pattern": "^https?://(www.)?opensource.org"}' \
+ '{"pattern": "^https?://(www.)?eclipse.org"}' \
+ '{"pattern": "^https?://projects.eclipse.org"}' \
']}' > ./target/broken_links_checker.json
- uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
- use-quiet-mode: 'yes'
- use-verbose-mode: 'yes'
+ use-quiet-mode: "yes"
+ use-verbose-mode: "yes"
config-file: ./target/broken_links_checker.json
diff --git a/.github/workflows/ci-build-next-java.yml b/.github/workflows/ci-build-next-java.yml
index e267b27..3ef61de 100644
--- a/.github/workflows/ci-build-next-java.yml
+++ b/.github/workflows/ci-build-next-java.yml
@@ -14,15 +14,15 @@ jobs:
cancel-in-progress: true
steps:
- name: Checkout the repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: "temurin"
java-version: 17
- cache: 'maven'
+ cache: "maven"
- name: Run tests and build with Maven
run: |
mvn --file server/ --batch-mode --update-snapshots clean package -DtrimStackTrace=false \
diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index c0129ce..c116424 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -13,20 +13,23 @@ jobs:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
+ - name: Free Disk Space
+ run: |
+ sudo rm -rf /usr/local/lib/android
+ sudo rm -rf /usr/share/dotnet
- name: Checkout the repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: "temurin"
java-version: 11
- name: Set up Go
uses: actions/setup-go@v3
with:
- go-version: 1.19
- id: go
+ go-version: "1.20"
- name: Cache local Maven repository
uses: actions/cache@v3
with:
diff --git a/.github/workflows/dependencies_check.yml b/.github/workflows/dependencies_check.yml
index b091a55..368541b 100644
--- a/.github/workflows/dependencies_check.yml
+++ b/.github/workflows/dependencies_check.yml
@@ -9,12 +9,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: "temurin"
java-version: 11
- cache: 'maven'
+ cache: "maven"
- name: Checking dependencies for vulnerabilities
- run: mvn --batch-mode org.sonatype.ossindex.maven:ossindex-maven-plugin:audit --file server/pom.xml
\ No newline at end of file
+ run: mvn --batch-mode org.sonatype.ossindex.maven:ossindex-maven-plugin:audit --file server/pom.xml
diff --git a/.github/workflows/project-keeper-verify.yml b/.github/workflows/project-keeper-verify.yml
index 5c20418..5744029 100644
--- a/.github/workflows/project-keeper-verify.yml
+++ b/.github/workflows/project-keeper-verify.yml
@@ -14,7 +14,7 @@ jobs:
cancel-in-progress: true
steps:
- name: Checkout the repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -25,9 +25,9 @@ jobs:
java-version: 11
- name: Set up Go
- uses: actions/setup-go@v3
+ uses: actions/setup-go@v4
with:
- go-version: 1.19
+ go-version: "1.20"
diff --git a/.github/workflows/project-keeper.sh b/.github/workflows/project-keeper.sh
index 4911800..e75b381 100755
--- a/.github/workflows/project-keeper.sh
+++ b/.github/workflows/project-keeper.sh
@@ -5,7 +5,7 @@ set -o nounset
set -o pipefail
readonly pk_mode="${1-verify}";
-readonly version="2.9.7"
+readonly version="2.9.12"
readonly pk_jar="$HOME/.m2/repository/com/exasol/project-keeper-cli/$version/project-keeper-cli-$version.jar"
diff --git a/.github/workflows/release_droid_prepare_original_checksum.yml b/.github/workflows/release_droid_prepare_original_checksum.yml
index 50dabcc..ceba664 100644
--- a/.github/workflows/release_droid_prepare_original_checksum.yml
+++ b/.github/workflows/release_droid_prepare_original_checksum.yml
@@ -8,15 +8,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: "temurin"
java-version: 11
- cache: 'maven'
+ cache: "maven"
- name: Enable testcontainer reuse
run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties"
- name: Run tests and build with Maven
@@ -28,4 +28,4 @@ jobs:
with:
name: original_checksum
retention-days: 5
- path: original_checksum
\ No newline at end of file
+ path: original_checksum
diff --git a/.github/workflows/release_droid_print_quick_checksum.yml b/.github/workflows/release_droid_print_quick_checksum.yml
index 7c018f1..a74ce0e 100644
--- a/.github/workflows/release_droid_print_quick_checksum.yml
+++ b/.github/workflows/release_droid_print_quick_checksum.yml
@@ -8,17 +8,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: "temurin"
java-version: 11
- cache: 'maven'
+ cache: "maven"
- name: Build with Maven skipping tests
run: mvn --file server/pom.xml --batch-mode clean verify -DskipTests
- name: Print checksum
run: echo 'checksum_start==';find server/target -maxdepth 1 -name *.jar -exec sha256sum "{}" + | xargs;echo '==checksum_end'
-
diff --git a/.github/workflows/release_droid_upload_github_release_assets.yml b/.github/workflows/release_droid_upload_github_release_assets.yml
index 4bf7f4e..057f3e4 100644
--- a/.github/workflows/release_droid_upload_github_release_assets.yml
+++ b/.github/workflows/release_droid_upload_github_release_assets.yml
@@ -4,7 +4,7 @@ on:
workflow_dispatch:
inputs:
upload_url:
- description: 'Assets upload URL'
+ description: "Assets upload URL"
required: true
jobs:
@@ -12,15 +12,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: "temurin"
java-version: 11
- cache: 'maven'
+ cache: "maven"
- name: Build with Maven skipping tests
run: mvn --file server/pom.xml --batch-mode clean verify -DskipTests
- name: Generate sha256sum files
@@ -41,4 +41,4 @@ jobs:
uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.inputs.upload_url }}
- asset_path: target/error_code_report.json
\ No newline at end of file
+ asset_path: target/error_code_report.json
diff --git a/.golangci.yaml b/.golangci.yaml
index aa826b8..e3ed06c 100644
--- a/.golangci.yaml
+++ b/.golangci.yaml
@@ -1,3 +1,30 @@
# https://golangci-lint.run/usage/configuration/
linters:
- enable-all: false
\ No newline at end of file
+ enable-all: false
+ presets:
+ - bugs
+ - comment
+ - complexity
+ - error
+ - format
+ - import
+ - metalinter
+ - module
+ - performance
+ - sql
+ #- style
+ - test
+ - unused
+ disable:
+ - gofumpt # "gofmt" is OK for us, no need for stricter rules (https://github.com/mvdan/gofumpt)
+ - gci # No need to explicitly format imports using GCI (https://github.com/daixiang0/gci)
+ - depguard # No need to restrict imported packages (https://github.com/OpenPeeDeeP/depguard)
+ - goerr113 # Using static errors is not necessary (https://github.com/Djarvur/go-err113)
+ - wrapcheck # Wrapping errors is not necessary (https://github.com/tomarrell/wrapcheck#tldr)
+ - paralleltest # Running tests in parallel is not possible
+
+ # Fix later
+ - revive # Many naming issues, may cause breaking changes
+ - testpackage # Naming of test package causes compile errors in test
+run:
+ tests: true
diff --git a/.project-keeper.yml b/.project-keeper.yml
index 52c72fc..2b1e321 100644
--- a/.project-keeper.yml
+++ b/.project-keeper.yml
@@ -8,4 +8,4 @@ sources:
path: go-client/go.mod
linkReplacements:
- https://javalin.io/javalin|https://javalin.io/
-version: 0.3.3
+version: 0.3.4
diff --git a/README.md b/README.md
index 7db09e9..9b209ca 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,11 @@ package test
import testSetupAbstraction "github.com/exasol/exasol-test-setup-abstraction-server/go-client"
func myTest() {
- exasol, err := testSetupAbstraction.New().CloudSetupConfigFilePath("myConfig.json").DockerDbVersion("7.1.21").Start()
+ exasol, err := testSetupAbstraction.New().
+ CloudSetupConfigFilePath("myConfig.json").
+ DockerDbVersion("7.1.23").
+ StartupTimeout(time.Minute * 10).
+ Start()
if err != nil {
panic("failed to start test setup")
}
diff --git a/dependencies.md b/dependencies.md
index cc76c71..938aaef 100644
--- a/dependencies.md
+++ b/dependencies.md
@@ -17,15 +17,15 @@
| [JUnit Jupiter Engine][4] | [Eclipse Public License v2.0][5] |
| [JUnit Jupiter Params][4] | [Eclipse Public License v2.0][5] |
| [Hamcrest][6] | [BSD License 3][7] |
-| [mockito-junit-jupiter][8] | [The MIT License][9] |
+| [mockito-junit-jupiter][8] | [MIT][9] |
| [REST Assured][10] | [Apache 2.0][11] |
| [JUnit5 System Extensions][12] | [Eclipse Public License v2.0][13] |
### Runtime Dependencies
-| Dependency | License |
-| ------------------------- | ----------------- |
-| [SLF4J JDK14 Binding][14] | [MIT License][15] |
+| Dependency | License |
+| -------------------------- | ----------------- |
+| [SLF4J JDK14 Provider][14] | [MIT License][15] |
### Plugin Dependencies
@@ -40,7 +40,7 @@
| [Maven Surefire Plugin][24] | [Apache-2.0][19] |
| [Versions Maven Plugin][25] | [Apache License, Version 2.0][19] |
| [duplicate-finder-maven-plugin Maven Mojo][26] | [Apache License 2.0][11] |
-| [Apache Maven Assembly Plugin][27] | [Apache License, Version 2.0][19] |
+| [Apache Maven Assembly Plugin][27] | [Apache-2.0][19] |
| [Apache Maven JAR Plugin][28] | [Apache License, Version 2.0][19] |
| [Artifact reference checker and unifier][29] | [MIT License][30] |
| [Maven Failsafe Plugin][31] | [Apache-2.0][19] |
@@ -60,14 +60,14 @@
| Dependency | License |
| ---------------------------------- | --------- |
| github.com/exasol/exasol-driver-go | [MIT][42] |
+| github.com/stretchr/testify | [MIT][43] |
+| gopkg.in/yaml.v3 | [MIT][44] |
### Test Dependencies
| Dependency | License |
| --------------------------- | --------- |
-| github.com/antchfx/xmlquery | [MIT][43] |
-| github.com/stretchr/testify | [MIT][44] |
-| gopkg.in/yaml.v3 | [MIT][45] |
+| github.com/antchfx/xmlquery | [MIT][45] |
[0]: https://github.com/exasol/exasol-test-setup-abstraction-java/
[1]: https://github.com/exasol/exasol-test-setup-abstraction-java/blob/main/LICENSE
@@ -95,7 +95,7 @@
[23]: https://sonatype.github.io/ossindex-maven/maven-plugin/
[24]: https://maven.apache.org/surefire/maven-surefire-plugin/
[25]: https://www.mojohaus.org/versions/versions-maven-plugin/
-[26]: https://github.com/basepom/duplicate-finder-maven-plugin
+[26]: https://basepom.github.io/duplicate-finder-maven-plugin
[27]: https://maven.apache.org/plugins/maven-assembly-plugin/
[28]: https://maven.apache.org/plugins/maven-jar-plugin/
[29]: https://github.com/exasol/artifact-reference-checker-maven-plugin/
@@ -111,7 +111,7 @@
[39]: http://maven.apache.org/plugins/maven-install-plugin/
[40]: http://maven.apache.org/plugins/maven-deploy-plugin/
[41]: http://maven.apache.org/plugins/maven-site-plugin/
-[42]: https://github.com/exasol/exasol-driver-go/blob/v1.0.0/LICENSE
-[43]: https://github.com/antchfx/xmlquery/blob/HEAD/LICENSE
-[44]: https://github.com/stretchr/testify/blob/HEAD/LICENSE
-[45]: https://github.com/go-yaml/yaml/blob/v3.0.1/LICENSE
+[42]: https://github.com/exasol/exasol-driver-go/blob/v1.0.3/LICENSE
+[43]: https://github.com/stretchr/testify/blob/v1.8.4/LICENSE
+[44]: https://github.com/go-yaml/yaml/blob/v3.0.1/LICENSE
+[45]: https://github.com/antchfx/xmlquery/blob/HEAD/LICENSE
diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md
index 0bb81fe..16bdf90 100644
--- a/doc/changes/changelog.md
+++ b/doc/changes/changelog.md
@@ -1,5 +1,6 @@
# Changes
+* [0.3.4](changes_0.3.4.md)
* [0.3.3](changes_0.3.3.md)
* [0.3.2](changes_0.3.2.md)
* [0.3.1](changes_0.3.1.md)
diff --git a/doc/changes/changes_0.3.4.md b/doc/changes/changes_0.3.4.md
new file mode 100644
index 0000000..e385f8e
--- /dev/null
+++ b/doc/changes/changes_0.3.4.md
@@ -0,0 +1,62 @@
+# Exasol Test Setup Abstraction Server 0.3.4, released 2023-10-19
+
+Code name: Configure startup timeout
+
+## Summary
+
+This release increases the timeout for starting the server using the Go client from 500s to 10 minutes. This might be necessary in case of a slow machine. The release also allows configuring the timeout.
+
+The release also upgrades the default Exasol version to 7.1.23.
+
+**Note**: This release contains the following third party libraries with vulnerabilities:
+* `io.netty:netty-handler`: CVE-2023-4586 CWE-300: Channel Accessible by Non-Endpoint ('Man-in-the-Middle') (6.5);
+* `fr.turri:aXMLRPC`: CVE-2020-36641 CWE-611: Improper Restriction of XML External Entity Reference ('XXE') (9.8);
+
+We assume that these vulnerabilities are not exploitable.
+
+## Features
+
+* #41: Added configuration for server startup timeout
+
+## Dependency Updates
+
+### Server for the Exasol Test-Setup Abstraction
+
+#### Compile Dependency Updates
+
+* Updated `com.exasol:exasol-test-setup-abstraction-java:2.0.2` to `2.0.4`
+* Updated `io.javalin:javalin:5.6.1` to `5.6.3`
+
+#### Runtime Dependency Updates
+
+* Updated `org.slf4j:slf4j-jdk14:2.0.7` to `2.0.9`
+
+#### Test Dependency Updates
+
+* Updated `io.rest-assured:rest-assured:5.3.1` to `5.3.2`
+* Updated `org.junit.jupiter:junit-jupiter-engine:5.9.3` to `5.10.0`
+* Updated `org.junit.jupiter:junit-jupiter-params:5.9.3` to `5.10.0`
+* Updated `org.mockito:mockito-junit-jupiter:5.4.0` to `5.6.0`
+
+#### Plugin Dependency Updates
+
+* Updated `com.exasol:error-code-crawler-maven-plugin:1.2.3` to `1.3.0`
+* Updated `org.apache.maven.plugins:maven-assembly-plugin:3.5.0` to `3.6.0`
+* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.3.0` to `3.4.0`
+* Updated `org.apache.maven.plugins:maven-failsafe-plugin:3.0.0` to `3.1.2`
+* Updated `org.apache.maven.plugins:maven-surefire-plugin:3.0.0` to `3.1.2`
+* Updated `org.basepom.maven:duplicate-finder-maven-plugin:1.5.1` to `2.0.1`
+* Updated `org.codehaus.mojo:flatten-maven-plugin:1.4.1` to `1.5.0`
+* Updated `org.codehaus.mojo:versions-maven-plugin:2.15.0` to `2.16.0`
+* Updated `org.jacoco:jacoco-maven-plugin:0.8.9` to `0.8.10`
+
+### Go-client
+
+#### Compile Dependency Updates
+
+* Updated `golang:1.19` to `1.20`
+* Updated `github.com/exasol/exasol-driver-go:v1.0.0` to `v1.0.3`
+
+#### Test Dependency Updates
+
+* Updated `github.com/antchfx/xmlquery:v1.3.17` to `v1.3.18`
diff --git a/go-client/Builder.go b/go-client/Builder.go
index 25da01b..ac44782 100644
--- a/go-client/Builder.go
+++ b/go-client/Builder.go
@@ -1,13 +1,20 @@
package exasol_test_setup_abstraction_go
+import "time"
+
type Builder struct {
configFilePath string
dockerDbVersion string
+ startupTimeout time.Duration
}
// New creates a new builder that allows creating a new TestSetupAbstraction.
func New() Builder {
- return Builder{}
+ return Builder{
+ configFilePath: "",
+ dockerDbVersion: "",
+ startupTimeout: time.Minute * 10,
+ }
}
// CloudSetupConfigFilePath sets the path to the cloud setup config file.
@@ -25,6 +32,13 @@ func (c Builder) DockerDbVersion(dockerDbVersion string) Builder {
return c
}
+// StartupTimeout sets the timeout for starting the Exasol test setup.
+// This defaults to 10 minutes.
+func (c Builder) StartupTimeout(timeout time.Duration) Builder {
+ c.startupTimeout = timeout
+ return c
+}
+
// Start launches the test setup using the given configuration.
// Don't forget to stop the setup after usage by calling TestSetupAbstraction.Stop().
func (c Builder) Start() (*TestSetupAbstraction, error) {
diff --git a/go-client/Builder_test.go b/go-client/Builder_test.go
index 976c553..890c968 100644
--- a/go-client/Builder_test.go
+++ b/go-client/Builder_test.go
@@ -4,13 +4,14 @@ import (
"os"
"path"
"testing"
+ "time"
"github.com/stretchr/testify/suite"
)
-// Default version specified in exasol-test-setup-abstraction-java
-const DEFAULT_EXASOL_VERSION = "7.1.19"
-const NON_DEFAULT_EXASOL_VERSION = "7.1.21"
+// Default version specified in exasol-test-setup-abstraction-java.
+const DEFAULT_EXASOL_VERSION = "7.1.23"
+const NON_DEFAULT_EXASOL_VERSION = "8.23.0"
type BuilderSuite struct {
suite.Suite
@@ -48,11 +49,18 @@ func (suite *BuilderSuite) TestCustomMissingConfigFile() {
func (suite *BuilderSuite) TestConfigFileWithInvalidContent() {
var err error
suite.setup, err = New().CloudSetupConfigFilePath(suite.writeTempFile("invalid json content")).Start()
- suite.ErrorContains(err, "failed to start server. The server did not print a port number")
+ suite.ErrorContains(err, "server stopped after")
suite.ErrorContains(err, "E-ETSAS-7: Failed to start server: 'Unexpected char 105 at")
suite.Nil(suite.setup)
}
+func (suite *BuilderSuite) TestTimeoutTooShort() {
+ var err error
+ suite.setup, err = New().StartupTimeout(time.Second * 1).Start()
+ suite.ErrorContains(err, "failed to start server. Server did not print a port number after")
+ suite.Nil(suite.setup)
+}
+
func (suite *BuilderSuite) TestCustomExasolVersion() {
var err error
suite.setup, err = New().DockerDbVersion(NON_DEFAULT_EXASOL_VERSION).Start()
diff --git a/go-client/TestSetupAbstraction.go b/go-client/TestSetupAbstraction.go
index 80bfc27..3758993 100644
--- a/go-client/TestSetupAbstraction.go
+++ b/go-client/TestSetupAbstraction.go
@@ -1,6 +1,7 @@
package exasol_test_setup_abstraction_go
import (
+ "context"
"database/sql"
_ "embed"
"encoding/json"
@@ -18,7 +19,7 @@ type TestSetupAbstraction struct {
server *serverProcess
}
-const serverVersion = "0.3.3"
+const serverVersion = "0.3.4"
// Create creates a new Exasol test setup with the given path to the config file
// and starts a local server.
@@ -47,33 +48,35 @@ func (testSetup *TestSetupAbstraction) GetConnectionInfo() (*ConnectionInfo, err
}
func (testSetup *TestSetupAbstraction) makeApiRequest(method string, path string, jsonResult interface{}, payload url.Values) error {
+ //nolint:exhaustruct // default values are OK
client := http.Client{}
- req, err := http.NewRequest(method, testSetup.server.serverEndpoint+path, strings.NewReader(payload.Encode()))
+ req, err := http.NewRequestWithContext(context.Background(), method, testSetup.server.serverEndpoint+path, strings.NewReader(payload.Encode()))
if err != nil {
- return fmt.Errorf("failed to create http request for the server. Cause: %v", err.Error())
+ return fmt.Errorf("failed to create http request for the server. Cause: %w", err)
}
if payload != nil {
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
}
response, err := client.Do(req)
if err != nil {
- return fmt.Errorf("failed to execute %v %v from test-setup-abstraction server. Cause %v", method, path, err.Error())
+ return fmt.Errorf("failed to execute %v %v from test-setup-abstraction server. Cause %w", method, path, err)
}
+ defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil {
- return fmt.Errorf("failed to read response body. Cause %v", err.Error())
+ return fmt.Errorf("failed to read response body. Cause %w", err)
}
if response.StatusCode != 200 {
return fmt.Errorf("request failed with status %d (%v). Response: %q", response.StatusCode, response.Status, body)
}
err = json.Unmarshal(body, &jsonResult)
if err != nil {
- return fmt.Errorf("invalid JSON response:\n%v\nCause: %v", string(body), err.Error())
+ return fmt.Errorf("invalid JSON response:\n%v\nCause: %w", string(body), err)
}
return nil
}
-// Contains information required for connecting to an exasol database
+// Contains information required for connecting to an exasol database.
type ConnectionInfo struct {
Host string `json:"host"` // Host name
Port int `json:"port"` // Port number
@@ -99,7 +102,7 @@ func (testSetup *TestSetupAbstraction) CreateConnectionWithConfig(autocommit boo
Autocommit(autocommit).
String())
if err != nil {
- return nil, fmt.Errorf("failed to connect to the database. Cause %v", err.Error())
+ return nil, fmt.Errorf("failed to connect to the database. Cause %w", err)
}
return connection, nil
}
@@ -121,7 +124,7 @@ func (testSetup *TestSetupAbstraction) MakeDatabaseTcpServiceAccessibleFromLocal
// MakeLocalTcpServiceAccessibleFromDatabase makes a local TCP service available from within the Exasol database.
// You can use this method for example for accessing a local s3 bucket implementation from inside the Exasol database.
// Another example is to connect from UDFs to a debugger running on the test PC.
-// Returns the address under which the service is available from within the exasol database (same port)
+// Returns the address under which the service is available from within the exasol database (same port).
func (testSetup *TestSetupAbstraction) MakeLocalTcpServiceAccessibleFromDatabase(localPort int) (*ServiceAddress, error) {
var serviceAddress ServiceAddress
err := testSetup.makeApiRequest("POST", "makeLocalTcpServiceAccessibleFromDatabase", &serviceAddress, url.Values{
@@ -148,7 +151,7 @@ func (testSetup *TestSetupAbstraction) MakeTcpServiceAccessibleFromDatabase(serv
// UploadFile uploads a local file to the default BucketFS bucket.
func (testSetup TestSetupAbstraction) UploadFile(localPath string, remoteName string) error {
- return testSetup.makeApiRequest("POST", "bfs/uploadFile", &successResult{}, url.Values{
+ return testSetup.makeApiRequest("POST", "bfs/uploadFile", &successResult{Success: true}, url.Values{
"localPath": {localPath},
"remoteName": {remoteName},
})
@@ -156,7 +159,7 @@ func (testSetup TestSetupAbstraction) UploadFile(localPath string, remoteName st
// UploadStringContent uploads the given string content to a file in the default BucketFS bucket.
func (testSetup TestSetupAbstraction) UploadStringContent(stringContent string, remoteName string) error {
- return testSetup.makeApiRequest("POST", "bfs/uploadStringContent", &successResult{}, url.Values{
+ return testSetup.makeApiRequest("POST", "bfs/uploadStringContent", &successResult{Success: true}, url.Values{
"stringContent": {stringContent},
"remoteName": {remoteName},
})
@@ -168,6 +171,7 @@ type downloadFileAsStringResult struct {
// DownloadFileAsString downloads a file from the default BucketFS bucket.
func (testSetup TestSetupAbstraction) DownloadFileAsString(path string) (string, error) {
+ //nolint:exhaustruct // struct will be filled during unmarshal
result := downloadFileAsStringResult{}
err := testSetup.makeApiRequest("GET", "bfs/downloadFileAsString?path="+url.QueryEscape(path), &result, url.Values{})
if err != nil {
@@ -178,18 +182,19 @@ func (testSetup TestSetupAbstraction) DownloadFileAsString(path string) (string,
// DownloadFile downloads a file from the default BucketFS bucket to a local file.
func (testSetup TestSetupAbstraction) DownloadFile(remotePath string, localPath string) error {
- return testSetup.makeApiRequest("GET", "bfs/downloadFile?remotePath="+url.QueryEscape(remotePath)+"&localPath="+url.QueryEscape(localPath), &successResult{}, url.Values{})
+ return testSetup.makeApiRequest("GET", "bfs/downloadFile?remotePath="+url.QueryEscape(remotePath)+"&localPath="+url.QueryEscape(localPath), &successResult{Success: true}, url.Values{})
}
// DeleteFile deletes a file from the default BucketFS bucket.
func (testSetup TestSetupAbstraction) DeleteFile(path string) error {
- return testSetup.makeApiRequest("DELETE", "bfs/deleteFile", &successResult{}, url.Values{
+ return testSetup.makeApiRequest("DELETE", "bfs/deleteFile", &successResult{Success: true}, url.Values{
"path": {path},
})
}
// ListFiles lists files in the default BucketFS bucket.
func (testSetup TestSetupAbstraction) ListFiles(path string) ([]string, error) {
+ //nolint:exhaustruct // struct will be filled during unmarshal
result := &listResult{}
err := testSetup.makeApiRequest("GET", "bfs/listFiles?path="+url.QueryEscape(path), result, url.Values{
"path": {path},
diff --git a/go-client/download.go b/go-client/download.go
index 36268ad..f392729 100644
--- a/go-client/download.go
+++ b/go-client/download.go
@@ -10,9 +10,10 @@ import (
func downloadFile(url, localPath string) error {
log.Printf("Downloading %q to local path %q...", url, localPath)
+ //nolint:gosec,noctx // HTTP request with variable URL is wanted here, omitting context is ok here
resp, err := http.Get(url)
if err != nil {
- return fmt.Errorf("download failed: %v", err.Error())
+ return fmt.Errorf("download failed: %w", err)
}
if resp.StatusCode != 200 {
return fmt.Errorf("download of %q failed with status %d: %q", url, resp.StatusCode, resp.Status)
@@ -22,15 +23,16 @@ func downloadFile(url, localPath string) error {
defer func() {
err = out.Close()
if err != nil {
- panic(fmt.Sprintf("failed to close server file. Cause: %v", err.Error()))
+ panic(fmt.Sprintf("failed to close server file. Cause: %v", err))
}
}()
if err != nil {
- return fmt.Errorf("failed to create file for: %v", err.Error())
+ return fmt.Errorf("failed to create file for: %w", err)
}
- _, err = io.Copy(out, resp.Body)
+ fileSize, err := io.Copy(out, resp.Body)
if err != nil {
- return fmt.Errorf("failed to download from %q to %q: %v", url, localPath, err.Error())
+ return fmt.Errorf("failed to download from %q to %q: %w", url, localPath, err)
}
+ log.Printf("File downloaded with size %d bytes", fileSize)
return nil
}
diff --git a/go-client/go.mod b/go-client/go.mod
index 7fc4a5a..3e61405 100644
--- a/go-client/go.mod
+++ b/go-client/go.mod
@@ -1,13 +1,13 @@
module github.com/exasol/exasol-test-setup-abstraction-server/go-client
-go 1.19
+go 1.20
-require github.com/exasol/exasol-driver-go v1.0.0
+require github.com/exasol/exasol-driver-go v1.0.3
require github.com/stretchr/testify v1.8.4
require (
- github.com/antchfx/xmlquery v1.3.17
+ github.com/antchfx/xmlquery v1.3.18
gopkg.in/yaml.v3 v3.0.1
)
@@ -19,8 +19,9 @@ require (
github.com/gorilla/websocket v1.5.0 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- golang.org/x/net v0.11.0 // indirect
- golang.org/x/sync v0.3.0 // indirect
- golang.org/x/text v0.10.0 // indirect
+ github.com/stretchr/objx v0.5.1 // indirect
+ golang.org/x/net v0.17.0 // indirect
+ golang.org/x/sync v0.4.0 // indirect
+ golang.org/x/text v0.13.0 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
)
diff --git a/go-client/go.sum b/go-client/go.sum
index c6b8fd4..5e05d50 100644
--- a/go-client/go.sum
+++ b/go-client/go.sum
@@ -1,5 +1,5 @@
-github.com/antchfx/xmlquery v1.3.17 h1:d0qWjPp/D+vtRw7ivCwT5ApH/3CkQU8JOeo3245PpTk=
-github.com/antchfx/xmlquery v1.3.17/go.mod h1:Afkq4JIeXut75taLSuI31ISJ/zeq+3jG7TunF7noreA=
+github.com/antchfx/xmlquery v1.3.18 h1:FSQ3wMuphnPPGJOFhvc+cRQ2CT/rUj4cyQXkJcjOwz0=
+github.com/antchfx/xmlquery v1.3.18/go.mod h1:Afkq4JIeXut75taLSuI31ISJ/zeq+3jG7TunF7noreA=
github.com/antchfx/xpath v1.2.4 h1:dW1HB/JxKvGtJ9WyVGJ0sIoEcqftV3SqIstujI+B9XY=
github.com/antchfx/xpath v1.2.4/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -8,8 +8,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/exasol/error-reporting-go v0.2.0 h1:nKIe4zYiTHbYrKJRlSNJcmGjTJCZredDh5akVHfIbRs=
github.com/exasol/error-reporting-go v0.2.0/go.mod h1:lUzRJqKLiSuYpqRUN2LVyj08WeHzhMEC/8Gmgtuqh1Y=
-github.com/exasol/exasol-driver-go v1.0.0 h1:+CbB2noe8QDKnzdd4NM2tKAIczyw9prU0Gf5o9+gPqk=
-github.com/exasol/exasol-driver-go v1.0.0/go.mod h1:p/saPOXAA5ZX5AtBJ6LuRycJzzGl1XtO7WpgjXjLX8U=
+github.com/exasol/exasol-driver-go v1.0.3 h1:Q2rnp8Zlh2Ef8fqjskRNH/3cq/alIsGdSwS7orKF2Nc=
+github.com/exasol/exasol-driver-go v1.0.3/go.mod h1:5lkVe9phxZ6u/IYginlXwHXfHxQyHhd2Msa4rMA3Hno=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
@@ -25,10 +25,16 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsK
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0=
+github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@@ -39,12 +45,12 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU=
-golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
+golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -58,8 +64,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58=
-golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
diff --git a/go-client/project_version_test.go b/go-client/project_version_test.go
index 9f7c022..6164d8d 100644
--- a/go-client/project_version_test.go
+++ b/go-client/project_version_test.go
@@ -37,6 +37,7 @@ func readProjectKeeperConf(t *testing.T) *projectKeeperConfig {
if err != nil {
t.Fatalf("failed to read project keeper file: %v", err)
}
+ //nolint:exhaustruct // struct will be filled during unmarshal
config := &projectKeeperConfig{}
err = yaml.Unmarshal(yamlFile, config)
if err != nil {
diff --git a/go-client/server.go b/go-client/server.go
index 718ee52..0539d2d 100644
--- a/go-client/server.go
+++ b/go-client/server.go
@@ -21,22 +21,22 @@ type serverProcess struct {
errorStream *bytes.Buffer
}
-// startServer starts the server in the given version and with the given config file
+// startServer starts the server in the given version and with the given config file.
func startServer(serverVersion string, config Builder) (*serverProcess, error) {
serverPath, err := downloadServerIfNotPresent()
if err != nil {
return nil, err
}
args := getServerProcessArguments(serverPath, config)
- log.Printf("Starting server with arguments %v", args)
+ log.Printf("Starting server version %s with arguments %v", serverVersion, args)
process := exec.Command("java", args...)
- var output, errorStream bytes.Buffer
- process.Stdout = &output
+ var outputStream, errorStream bytes.Buffer
+ process.Stdout = &outputStream
process.Stderr = &errorStream
stoppedMutex := &sync.Mutex{}
stopped := false
- go waitForServer(process, &errorStream, &stopped, stoppedMutex)
- port, err := getServerPort(&stopped, &output, &errorStream)
+ go waitForServer(process, &errorStream, &outputStream, &stopped, stoppedMutex)
+ port, err := getServerPort(config.startupTimeout, &stopped, &outputStream, &errorStream)
if err != nil {
return nil, err
}
@@ -59,13 +59,13 @@ func getServerProcessArguments(serverPath string, config Builder) []string {
func downloadServerIfNotPresent() (string, error) {
homeDir, err := os.UserHomeDir()
if err != nil {
- return "", fmt.Errorf("failed to get home dir. Cause: %v", err.Error())
+ return "", fmt.Errorf("failed to get home dir. Cause: %w", err)
}
serverDir := path.Join(homeDir, ".test-setup-abstraction-server")
if _, err := os.Stat(serverDir); os.IsNotExist(err) {
err := os.Mkdir(serverDir, 0700)
if err != nil {
- return "", fmt.Errorf("failed to create directory %q: %v", serverDir, err.Error())
+ return "", fmt.Errorf("failed to create directory %q: %w", serverDir, err)
}
}
const serverJar = "exasol-test-setup-abstraction-server-" + serverVersion + ".jar"
@@ -80,9 +80,10 @@ func downloadServerIfNotPresent() (string, error) {
return localPath, nil
}
-func getServerPort(stopped *bool, output *bytes.Buffer, errorStream *bytes.Buffer) (int, error) {
- for counter := 0; counter < 500; counter++ { // we need to wait quite long here if the server can't reuse a testcontainer
- pattern := regexp.MustCompile("Server running on port: (\\d+)\n")
+func getServerPort(timeout time.Duration, stopped *bool, output *bytes.Buffer, errorStream *bytes.Buffer) (int, error) {
+ startTime := time.Now()
+ pattern := regexp.MustCompile("Server running on port: (\\d+)\n")
+ for {
result := pattern.FindSubmatch(output.Bytes())
if len(result) != 0 {
portString := string(result[1])
@@ -92,17 +93,22 @@ func getServerPort(stopped *bool, output *bytes.Buffer, errorStream *bytes.Buffe
}
return int(port), nil
}
+ duration := time.Since(startTime)
+ if duration >= timeout {
+ return -1, fmt.Errorf("failed to start server. Server did not print a port number after %v seconds. Output: '%s', Error: '%s'", duration, output, errorStream)
+ }
if !*stopped {
time.Sleep(1 * time.Second)
+ } else {
+ return -1, fmt.Errorf("server stopped after %v seconds. Output: '%s', Error: '%s'", duration, output, errorStream)
}
}
- return -1, fmt.Errorf("failed to start server. The server did not print a port number. Output: %q, error stream: %q", output, errorStream)
}
-func waitForServer(serverProcess *exec.Cmd, errorStream *bytes.Buffer, stopped *bool, stoppedMutex *sync.Mutex) {
+func waitForServer(serverProcess *exec.Cmd, errorStream *bytes.Buffer, outputStream *bytes.Buffer, stopped *bool, stoppedMutex *sync.Mutex) {
err := serverProcess.Run()
if err != nil && !isStopped(stopped, stoppedMutex) { // after we killed the thread we expect an error
- fmt.Println(errorStream.String())
+ fmt.Printf("failed to start server: %v. Error output: '%s', output stream: '%s'\n", err, errorStream.String(), outputStream.String())
}
stoppedMutex.Lock()
*stopped = true
@@ -121,7 +127,7 @@ func (testSetup *serverProcess) stop() error {
testSetup.stoppedMutex.Unlock()
err := testSetup.process.Process.Signal(os.Kill)
if err != nil {
- return fmt.Errorf("failed to stop test-setup-abstraction server. Cause: %v", err.Error())
+ return fmt.Errorf("failed to stop test-setup-abstraction server. Cause: %w", err)
}
return nil
}
diff --git a/server/.settings/org.eclipse.jdt.core.prefs b/server/.settings/org.eclipse.jdt.core.prefs
index 8b5a9aa..bb40c3f 100644
--- a/server/.settings/org.eclipse.jdt.core.prefs
+++ b/server/.settings/org.eclipse.jdt.core.prefs
@@ -111,7 +111,7 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.processAnnotations=enabled
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
diff --git a/server/pk_generated_parent.pom b/server/pk_generated_parent.pom
index 8b613b9..2003d8b 100644
--- a/server/pk_generated_parent.pom
+++ b/server/pk_generated_parent.pom
@@ -3,7 +3,7 @@
4.0.0
com.exasol
exasol-test-setup-abstraction-server-generated-parent
- 0.3.3
+ 0.3.4
pom
UTF-8
@@ -51,7 +51,7 @@
org.apache.maven.plugins
maven-enforcer-plugin
- 3.3.0
+ 3.4.0
enforce-maven
@@ -71,7 +71,7 @@
org.codehaus.mojo
flatten-maven-plugin
- 1.4.1
+ 1.5.0
true
oss
@@ -110,7 +110,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.0.0
+ 3.1.2
@@ -121,7 +121,7 @@
org.codehaus.mojo
versions-maven-plugin
- 2.15.0
+ 2.16.0
display-updates
@@ -139,7 +139,7 @@
org.basepom.maven
duplicate-finder-maven-plugin
- 1.5.1
+ 2.0.1
default
@@ -157,7 +157,6 @@
true
true
false
- true
true
false
@@ -165,7 +164,7 @@
org.apache.maven.plugins
maven-assembly-plugin
- 3.5.0
+ 3.6.0
src/assembly/all-dependencies.xml
@@ -215,7 +214,7 @@
org.apache.maven.plugins
maven-failsafe-plugin
- 3.0.0
+ 3.1.2
@@ -236,7 +235,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.9
+ 0.8.10
prepare-agent
@@ -277,7 +276,7 @@
com.exasol
error-code-crawler-maven-plugin
- 1.2.3
+ 1.3.0
verify
diff --git a/server/pom.xml b/server/pom.xml
index c081366..9bc3a29 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -1,33 +1,30 @@
-
+
4.0.0
com.exasol
exasol-test-setup-abstraction-server
- 0.3.3
+ 0.3.4
Server for the Exasol Test-Setup Abstraction
Test setup abstraction backend for Go and other languages.
https://github.com/exasol/exasol-test-setup-abstraction-server/
- 5.9.3
+ 5.10.0
com.exasol
exasol-test-setup-abstraction-java
- 2.0.2
+ 2.0.4
io.javalin
javalin
- 5.6.1
+ 5.6.3
-
org.slf4j
slf4j-jdk14
- 2.0.7
+ 2.0.9
runtime
@@ -52,13 +49,13 @@
org.mockito
mockito-junit-jupiter
- 5.4.0
+ 5.6.0
test
io.rest-assured
rest-assured
- 5.3.1
+ 5.3.2
test
@@ -123,6 +120,9 @@
CVE-2020-36641 is reported to be fixed in aXMLRPC 1.12.1. We use version
1.13.0, so this is a false positive. -->
CVE-2020-36641
+
+ CVE-2023-4586
@@ -141,7 +141,7 @@
exasol-test-setup-abstraction-server-generated-parent
com.exasol
- 0.3.3
+ 0.3.4
pk_generated_parent.pom