This is an automated email from the ASF dual-hosted git repository.
diqiu50 pushed a commit to branch branch-jdk
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-jdk by this push:
new 1d1eb201ab [#7823] feat(server): upgrade Gravitino server and Iceberg
REST server mini JDK version to 17 (#7832)
1d1eb201ab is described below
commit 1d1eb201aba77a127304a48cb9e0293cfd0246d8
Author: FANNG <[email protected]>
AuthorDate: Wed Jul 30 16:07:21 2025 +0800
[#7823] feat(server): upgrade Gravitino server and Iceberg REST server mini
JDK version to 17 (#7832)
### What changes were proposed in this pull request?
1. Upgrade Gravitino server and Iceberg REST server minimal JDK version
to 17
2. Adjust the Integration test for the current module:
a. JDK17 module: support JDK17 for embedded and deploy mode.
b. Non-JDK17 module: support JDK17 for deploy mode only.
3. Move integration test from `catalog-model` and `client-java` to
`integration-test` module, which supports JDK17 in embedded mode and JDK
7,11,17 in deploy mode.
JDK17 modules: server-related modules: `:server`, `:iceberg`,
`:catalogs`, `:lineage`, `authorizations`.
`:catalogs:catalogs-fileset` `:catalogs:hadoop-common` is the special
case because `bundles` modle is JDK 8 compatible and relies on them, so
they are JDK 8, not 17.
### Why are the changes needed?
We could upgrade the Iceberg version only if we upgrade the IRC and
Gravitino server
Fix: #7823
### Does this PR introduce _any_ user-facing change?
Yes, the server couldn't run under JDK8, JDK11
### How was this patch tested?
adding ITs
---
.../workflows/backend-integration-test-action.yml | 6 ++
.github/workflows/backend-integration-test.yml | 2 +-
.../workflows/flink-integration-test-action.yml | 5 +-
.github/workflows/flink-integration-test.yml | 4 +-
...test-action.yml => integration-test-action.yml} | 17 ++--
...d-integration-test.yml => integration-test.yml} | 13 +--
.github/workflows/spark-integration-test.yml | 8 +-
build.gradle.kts | 98 +++++++++++++++++++++-
catalogs/catalog-fileset/build.gradle.kts | 1 -
clients/cli/build.gradle.kts | 3 -
.../cli/integration/test/TableFormatOutputIT.java | 2 +
clients/client-java/build.gradle.kts | 1 -
clients/client-python/build.gradle.kts | 7 +-
clients/filesystem-hadoop3/build.gradle.kts | 1 -
.../test/GravitinoVirtualFileSystemIT.java | 2 +
.../test/GravitinoVirtualFileSystemS3IT.java | 2 +
...vitinoVirtualFilesystemWithFSOpsDisabledIT.java | 2 +
flink-connector/flink/build.gradle.kts | 1 -
.../connector/integration/test/FlinkEnvIT.java | 2 +
.../test/IcebergRestKerberosHiveCatalogIT.java | 19 ++++-
.../util/IcebergRESTServerManagerForDeploy.java | 8 +-
integration-test-common/build.gradle.kts | 1 -
.../gravitino/integration/test/MiniGravitino.java | 17 ++--
.../gravitino/integration/test/util/BaseIT.java | 16 ++--
.../integration/test/util/GravitinoITUtils.java | 16 +++-
.../gravitino/integration/test/util/ITUtils.java | 2 +
.../build.gradle.kts | 19 ++---
.../catalogs/build.gradle.kts | 19 ++---
.../catalogs/catalog-model-it}/build.gradle.kts | 74 +++++++---------
.../integration/test/ModelCatalogOperationsIT.java | 0
.../src/test/resources/log4j2.properties | 73 ++++++++++++++++
.../clients/build.gradle.kts | 19 ++---
.../clients/client-java-it}/build.gradle.kts | 41 +++------
.../gravitino/client/integration/test/AuditIT.java | 0
.../client/integration/test/CatalogIT.java | 0
.../client/integration/test/MetalakeIT.java | 36 ++++----
.../gravitino/client/integration/test/TagIT.java | 0
.../integration/test/VersionOperationsIT.java | 0
.../test/authorization/AccessControlIT.java | 0
.../authorization/AccessControlNotAllowIT.java | 0
.../authorization/BaseRestApiAuthorizationIT.java | 0
.../test/authorization/CatalogAuthorizationIT.java | 0
.../test/authorization/CheckCurrentUserIT.java | 5 +-
.../test/authorization/FilesetAuthorizationIT.java | 0
.../test/authorization/GroupAuthorizationIT.java | 0
.../test/authorization/KerberosOperationsIT.java | 0
.../authorization/MetalakeAuthorizationIT.java | 0
.../test/authorization/ModelAuthorizationIT.java | 0
.../test/authorization/MultiAuthOperationsIT.java | 3 +-
.../test/authorization/OAuth2OperationsIT.java | 0
.../test/authorization/OwnerAuthorizationIT.java | 0
.../integration/test/authorization/OwnerIT.java | 0
.../authorization/PermissionAuthorizationIT.java | 0
.../test/authorization/RoleAuthorizationIT.java | 0
.../test/authorization/SchemaAuthorizationIT.java | 0
.../test/authorization/TableAuthorizationIT.java | 0
.../test/authorization/TopicAuthorizationIT.java | 0
.../test/authorization/UserAuthorizationIT.java | 0
.../src/test/resources/log4j2.properties | 73 ++++++++++++++++
settings.gradle.kts | 1 +
spark-connector/spark-common/build.gradle.kts | 3 -
.../connector/integration/test/SparkEnvIT.java | 2 +
spark-connector/v3.3/spark/build.gradle.kts | 10 ---
spark-connector/v3.4/spark/build.gradle.kts | 10 ---
spark-connector/v3.5/spark/build.gradle.kts | 10 ---
65 files changed, 429 insertions(+), 225 deletions(-)
diff --git a/.github/workflows/backend-integration-test-action.yml
b/.github/workflows/backend-integration-test-action.yml
index 9d69a2914e..ab97d73346 100644
--- a/.github/workflows/backend-integration-test-action.yml
+++ b/.github/workflows/backend-integration-test-action.yml
@@ -62,6 +62,12 @@ jobs:
-x :spark-connector:spark-runtime-3.3:test -x
:spark-connector:spark-runtime-3.4:test -x
:spark-connector:spark-runtime-3.5:test
-x :trino-connector:integration-test:test -x
:trino-connector:trino-connector:test
-x :authorizations:authorization-chain:test -x
:authorizations:authorization-ranger:test
+ -x :integration-test:test -x :catalogs:catalog-fileset:test
+
+ - name: Test catalog fileset
+ if: ${{ inputs.test-mode == 'deploy' }}
+ run: |
+ ./gradlew :catalogs:catalog-fileset:test -PjdkVersion=${{
inputs.java-version }} -PjdbcBackend=${{ inputs.backend }}
-PskipDockerTests=false -PtestMode=deploy
- name: Upload integrate tests reports
uses: actions/upload-artifact@v4
diff --git a/.github/workflows/backend-integration-test.yml
b/.github/workflows/backend-integration-test.yml
index d5cc20a8c7..0aeb4fc1bb 100644
--- a/.github/workflows/backend-integration-test.yml
+++ b/.github/workflows/backend-integration-test.yml
@@ -54,7 +54,7 @@ jobs:
strategy:
matrix:
architecture: [linux/amd64]
- java-version: [ 8, 11, 17 ]
+ java-version: [ 17 ]
backend: [ h2, mysql, postgresql ]
test-mode: [ embedded, deploy ]
exclude:
diff --git a/.github/workflows/flink-integration-test-action.yml
b/.github/workflows/flink-integration-test-action.yml
index 55d7250fca..6e23539095 100644
--- a/.github/workflows/flink-integration-test-action.yml
+++ b/.github/workflows/flink-integration-test-action.yml
@@ -46,9 +46,8 @@ jobs:
- name: Flink Integration Test
id: integrationTest
- # run embedded mode and deploy mode integration tests
+ # run deploy mode integration tests
run: |
- ./gradlew -PskipTests -PtestMode=embedded -PjdkVersion=${{
inputs.java-version }} -PskipDockerTests=false :flink-connector:flink:test
--tests "org.apache.gravitino.flink.connector.integration.test.**"
./gradlew -PskipTests -PtestMode=deploy -PjdkVersion=${{
inputs.java-version }} -PskipDockerTests=false :flink-connector:flink:test
--tests "org.apache.gravitino.flink.connector.integration.test.**"
- name: Upload integrate tests reports
@@ -63,4 +62,4 @@ jobs:
distribution/package/logs/gravitino-server.out
distribution/package/logs/gravitino-server.log
catalogs/**/*.log
- catalogs/**/*.tar
\ No newline at end of file
+ catalogs/**/*.tar
diff --git a/.github/workflows/flink-integration-test.yml
b/.github/workflows/flink-integration-test.yml
index 2bd91792cf..ca62e1ad1f 100644
--- a/.github/workflows/flink-integration-test.yml
+++ b/.github/workflows/flink-integration-test.yml
@@ -53,7 +53,7 @@ jobs:
strategy:
matrix:
architecture: [linux/amd64]
- java-version: [ 8, 11, 17 ]
+ java-version: [ 17 ]
uses: ./.github/workflows/flink-integration-test-action.yml
with:
architecture: ${{ matrix.architecture }}
@@ -69,4 +69,4 @@ jobs:
uses: ./.github/workflows/flink-integration-test-action.yml
with:
architecture: ${{ matrix.architecture }}
- java-version: ${{ matrix.java-version }}
\ No newline at end of file
+ java-version: ${{ matrix.java-version }}
diff --git a/.github/workflows/backend-integration-test-action.yml
b/.github/workflows/integration-test-action.yml
similarity index 65%
copy from .github/workflows/backend-integration-test-action.yml
copy to .github/workflows/integration-test-action.yml
index 9d69a2914e..529507f785 100644
--- a/.github/workflows/backend-integration-test-action.yml
+++ b/.github/workflows/integration-test-action.yml
@@ -1,6 +1,6 @@
-name: Backend Integration Test Action
+name: New Integration Test Action
-# run backend integration test
+# run integration test
on:
workflow_call:
inputs:
@@ -53,15 +53,10 @@ jobs:
run: |
dev/ci/util_free_space.sh
- - name: Backend Integration Test (JDK${{ inputs.java-version }}-${{
inputs.test-mode }}-${{ inputs.backend }})
+ - name: Integration Test (JDK${{ inputs.java-version }}-${{
inputs.test-mode }}-${{ inputs.backend }})
id: integrationTest
run: >
- ./gradlew test -PskipTests -PtestMode=${{ inputs.test-mode }}
-PjdkVersion=${{ inputs.java-version }} -PjdbcBackend=${{ inputs.backend }}
-PskipDockerTests=false
- -x :web:web:test -x :web:integration-test:test -x
:clients:client-python:test -x :flink-connector:flink:test -x
:spark-connector:spark-common:test
- -x :spark-connector:spark-3.3:test -x
:spark-connector:spark-3.4:test -x :spark-connector:spark-3.5:test
- -x :spark-connector:spark-runtime-3.3:test -x
:spark-connector:spark-runtime-3.4:test -x
:spark-connector:spark-runtime-3.5:test
- -x :trino-connector:integration-test:test -x
:trino-connector:trino-connector:test
- -x :authorizations:authorization-chain:test -x
:authorizations:authorization-ranger:test
+ ./gradlew :integration-test:test -PtestMode=${{ inputs.test-mode }}
-PjdkVersion=${{ inputs.java-version }} -PjdbcBackend=${{ inputs.backend }}
-PskipDockerTests=false
- name: Upload integrate tests reports
uses: actions/upload-artifact@v4
@@ -73,6 +68,6 @@ jobs:
iceberg/iceberg-rest-server/build/*.log
distribution/package/logs/*.out
distribution/package/logs/*.log
- catalogs/**/*.log
- catalogs/**/*.tar
+ integration-test/**/**/*.log
+ integration-test/**/**/*.tar
distribution/**/*.log
diff --git a/.github/workflows/backend-integration-test.yml
b/.github/workflows/integration-test.yml
similarity index 90%
copy from .github/workflows/backend-integration-test.yml
copy to .github/workflows/integration-test.yml
index d5cc20a8c7..a055dc9454 100644
--- a/.github/workflows/backend-integration-test.yml
+++ b/.github/workflows/integration-test.yml
@@ -1,4 +1,4 @@
-name: Backend Integration Test
+name: New Integration Test
# Controls when the workflow will run
on:
@@ -36,6 +36,7 @@ jobs:
- gradle/**
- iceberg/**
- integration-test-common/**
+ - integration-test/**
- meta/**
- scripts/**
- server/**
@@ -55,7 +56,7 @@ jobs:
matrix:
architecture: [linux/amd64]
java-version: [ 8, 11, 17 ]
- backend: [ h2, mysql, postgresql ]
+ backend: [ h2, postgresql ]
test-mode: [ embedded, deploy ]
exclude:
- test-mode: 'embedded'
@@ -64,7 +65,7 @@ jobs:
backend: 'postgresql'
- test-mode: 'deploy'
backend: 'h2'
- uses: ./.github/workflows/backend-integration-test-action.yml
+ uses: ./.github/workflows/integration-test-action.yml
with:
architecture: ${{ matrix.architecture }}
java-version: ${{ matrix.java-version }}
@@ -77,8 +78,8 @@ jobs:
strategy:
matrix:
architecture: [ linux/amd64 ]
- java-version: [ 17 ]
- backend: [ h2, mysql, postgresql ]
+ java-version: [ 8, 11, 17 ]
+ backend: [ mysql ]
test-mode: [ embedded, deploy ]
exclude:
- test-mode: 'embedded'
@@ -87,7 +88,7 @@ jobs:
backend: 'postgresql'
- test-mode: 'deploy'
backend: 'h2'
- uses: ./.github/workflows/backend-integration-test-action.yml
+ uses: ./.github/workflows/integration-test-action.yml
with:
architecture: ${{ matrix.architecture }}
java-version: ${{ matrix.java-version }}
diff --git a/.github/workflows/spark-integration-test.yml
b/.github/workflows/spark-integration-test.yml
index 2b6364cbcf..47b95af1a9 100644
--- a/.github/workflows/spark-integration-test.yml
+++ b/.github/workflows/spark-integration-test.yml
@@ -53,9 +53,9 @@ jobs:
matrix:
# Integration test for AMD64 architecture
architecture: [linux/amd64]
- java-version: [ 8, 11, 17 ]
+ java-version: [ 17 ]
scala-version: [ 2.12 ]
- test-mode: [ embedded, deploy ]
+ test-mode: [ deploy ]
uses: ./.github/workflows/spark-integration-test-action.yml
with:
architecture: ${{ matrix.architecture }}
@@ -72,10 +72,10 @@ jobs:
architecture: [linux/amd64]
java-version: [ 17 ]
scala-version: [ 2.12 ]
- test-mode: [ embedded, deploy ]
+ test-mode: [ deploy ]
uses: ./.github/workflows/spark-integration-test-action.yml
with:
architecture: ${{ matrix.architecture }}
java-version: ${{ matrix.java-version }}
scala-version: ${{ matrix.scala-version }}
- test-mode: ${{ matrix.test-mode }}
\ No newline at end of file
+ test-mode: ${{ matrix.test-mode }}
diff --git a/build.gradle.kts b/build.gradle.kts
index 6f3a334b93..51f8a4652e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -76,7 +76,10 @@ if (scalaVersion !in listOf("2.12", "2.13")) {
throw GradleException("Scala version $scalaVersion is not supported.")
}
-project.extra["extraJvmArgs"] = if (extra["jdkVersion"] in listOf("8", "11")) {
+rootProject.extra["isTestModeEmbedded"] = project.properties["testMode"] as?
String ?: "embedded" == "embedded"
+var JAVA_17 = JavaLanguageVersion.of(17)
+
+project.extra["extraJvmArgs"] = if (getJdkVersionForTest(project) != JAVA_17) {
listOf()
} else {
listOf(
@@ -105,6 +108,53 @@ project.extra["extraJvmArgs"] = if (extra["jdkVersion"] in
listOf("8", "11")) {
)
}
+fun useJDK17(project: Project): Boolean {
+ val name = project.name.lowercase()
+ val path = project.path.lowercase()
+
+ // bundles module rely on catalog-fileset module
+ if (name == "catalog-common" || name == "hadoop-common" || name ==
"catalog-fileset") {
+ return false
+ }
+
+ if (path.startsWith(":catalogs:") || path.startsWith(":iceberg:") ||
path.startsWith(":authorizations:")) {
+ return true
+ }
+
+ if (path == ":trino-connector:integration-test" || path ==
":web:integration-test") {
+ return true
+ }
+
+ if (name in listOf("server", "lineage")) {
+ return true
+ }
+
+ // All ITs could only run embedded mode in JDK17
+ if (path.startsWith(":integration-test:") &&
rootProject.extra["isTestModeEmbedded"] == true) {
+ return true
+ }
+
+ return false
+}
+
+// Use JDK 17 for embedded mode, use the JDK from `jdkVersion` for deploy mode
+fun getJdkVersionForTest(project: Project): JavaLanguageVersion {
+ if (rootProject.extra["isTestModeEmbedded"] == true) {
+ return JAVA_17
+ }
+
+ return JavaLanguageVersion.of(extra["jdkVersion"].toString())
+}
+
+val toolchainService: JavaToolchainService = extensions.getByType()
+fun getJdkHome(version: Int): Provider<File> {
+ return toolchainService.launcherFor {
+ languageVersion.set(JavaLanguageVersion.of(version))
+ }.map { it.metadata.installationPath.asFile }
+}
+val jdk17Home = getJdkHome(17).get()
+rootProject.extra["jdk17Home"] = jdk17Home
+
val pythonVersion: String = project.properties["pythonVersion"] as? String ?:
project.extra["pythonVersion"].toString()
project.extra["pythonVersion"] = pythonVersion
@@ -170,6 +220,7 @@ allprojects {
}
param.environment("HADOOP_HOME", "/tmp")
param.environment("PROJECT_VERSION", project.version)
+ param.environment("JDK17_HOME", jdk17Home)
// Gravitino CI Docker image
param.environment("GRAVITINO_CI_HIVE_DOCKER_IMAGE",
"apache/gravitino-ci:hive-0.1.20")
@@ -273,6 +324,39 @@ subprojects {
mavenLocal()
}
+ tasks.register("printJvm") {
+ group = "help"
+ description = "print JVM information"
+
+ doLast {
+
+ val compileJvmVersion =
tasks.withType<JavaCompile>().firstOrNull()?.javaCompiler?.get()
+ ?.metadata?.languageVersion?.asInt() ?: "undefined"
+
+ val testJvmVersion =
tasks.withType<Test>().firstOrNull()?.javaLauncher?.get()
+ ?.metadata?.languageVersion?.asInt() ?: "undefined"
+
+ val testJvmArgs = tasks.withType<Test>().firstOrNull()?.jvmArgs ?:
listOf()
+
+ val targetJvmVersion = (java.targetCompatibility?.majorVersion ?:
"undefined")
+
+ val sourceJvmVersion = (java.sourceCompatibility?.majorVersion ?:
"undefined")
+
+ println(
+ """
+ |=== ${project.name} JVM information===
+ | project path: ${project.path}
+ | JVM for compile: $compileJvmVersion
+ | JVM for test: $testJvmVersion
+ | JVM test args: $testJvmArgs
+ | target JVM version: $targetJvmVersion
+ | source JVM version: $sourceJvmVersion
+ |==================================
+ """.trimMargin()
+ )
+ }
+ }
+
java {
toolchain {
// Some JDK vendors like Homebrew installed OpenJDK 17 have problems in
building trino-connector:
@@ -283,7 +367,11 @@ subprojects {
if (OperatingSystem.current().isMacOsX) {
vendor.set(JvmVendorSpec.AMAZON)
}
- languageVersion.set(JavaLanguageVersion.of(17))
+ languageVersion.set(JAVA_17)
+ } else if (useJDK17(getProject())) {
+ languageVersion.set(JAVA_17)
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
} else {
languageVersion.set(JavaLanguageVersion.of(extra["jdkVersion"].toString().toInt()))
sourceCompatibility = JavaVersion.VERSION_1_8
@@ -472,6 +560,12 @@ subprojects {
}
tasks.configureEach<Test> {
+ javaLauncher.set(
+ javaToolchains.launcherFor {
+ languageVersion.set(getJdkVersionForTest(project))
+ }
+ )
+
if (project.name != "server-common") {
val initTest = project.extra.get("initTestParam") as (Test) -> Unit
initTest(this)
diff --git a/catalogs/catalog-fileset/build.gradle.kts
b/catalogs/catalog-fileset/build.gradle.kts
index 88382a38a8..449dfcb26c 100644
--- a/catalogs/catalog-fileset/build.gradle.kts
+++ b/catalogs/catalog-fileset/build.gradle.kts
@@ -71,7 +71,6 @@ dependencies {
testImplementation(project(":bundles:aliyun-bundle", configuration =
"shadow"))
testImplementation(project(":bundles:azure-bundle", configuration =
"shadow"))
testImplementation(project(":integration-test-common", "testArtifacts"))
- testImplementation(project(":server"))
testImplementation(project(":server-common"))
testImplementation(libs.bundles.log4j)
testImplementation(libs.hadoop3.gcs)
diff --git a/clients/cli/build.gradle.kts b/clients/cli/build.gradle.kts
index 9358808f9f..a37e72536d 100644
--- a/clients/cli/build.gradle.kts
+++ b/clients/cli/build.gradle.kts
@@ -42,9 +42,6 @@ dependencies {
testImplementation(project(":core")) {
exclude("org.apache.logging.log4j")
}
- testImplementation(project(":server")) {
- exclude("org.apache.logging.log4j")
- }
testImplementation(project(":server-common")) {
exclude("org.apache.logging.log4j")
}
diff --git
a/clients/cli/src/test/java/org/apache/gravitino/cli/integration/test/TableFormatOutputIT.java
b/clients/cli/src/test/java/org/apache/gravitino/cli/integration/test/TableFormatOutputIT.java
index bca9e960ff..7e1fe98e09 100644
---
a/clients/cli/src/test/java/org/apache/gravitino/cli/integration/test/TableFormatOutputIT.java
+++
b/clients/cli/src/test/java/org/apache/gravitino/cli/integration/test/TableFormatOutputIT.java
@@ -29,7 +29,9 @@ import org.apache.gravitino.cli.commands.Command;
import org.apache.gravitino.integration.test.util.BaseIT;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledIf;
+@DisabledIf("org.apache.gravitino.integration.test.util.ITUtils#isEmbedded")
public class TableFormatOutputIT extends BaseIT {
private String gravitinoUrl;
diff --git a/clients/client-java/build.gradle.kts
b/clients/client-java/build.gradle.kts
index 30b3a15deb..fe630667fa 100644
--- a/clients/client-java/build.gradle.kts
+++ b/clients/client-java/build.gradle.kts
@@ -42,7 +42,6 @@ dependencies {
testImplementation(project(":core"))
testImplementation(project(":integration-test-common", "testArtifacts"))
- testImplementation(project(":server"))
testImplementation(project(":server-common"))
testImplementation(libs.bundles.jersey)
diff --git a/clients/client-python/build.gradle.kts
b/clients/client-python/build.gradle.kts
index a9873ea22c..24be469be1 100644
--- a/clients/client-python/build.gradle.kts
+++ b/clients/client-python/build.gradle.kts
@@ -31,6 +31,8 @@ pythonPlugin {
pythonVersion.set(project.rootProject.extra["pythonVersion"].toString())
}
+var jdk17Home = rootProject.extra["jdk17Home"]
+
fun deleteCacheDir(targetDir: String) {
project.fileTree(project.projectDir).matching {
include("**/$targetDir/**")
@@ -79,7 +81,10 @@ fun waitForServerIsReady(host: String = "http://localhost",
port: Int = 8090, ti
}
fun gravitinoServer(operation: String) {
- val process =
ProcessBuilder("${project.rootDir.path}/distribution/package/bin/gravitino.sh",
operation).start()
+ val processBuilder =
ProcessBuilder("${project.rootDir.path}/distribution/package/bin/gravitino.sh",
operation)
+ var env = processBuilder.environment();
+ env["JAVA_HOME"] = jdk17Home.toString()
+ var process = processBuilder.start()
val exitCode = process.waitFor()
if (exitCode == 0) {
val currentContext = process.inputStream.bufferedReader().readText()
diff --git a/clients/filesystem-hadoop3/build.gradle.kts
b/clients/filesystem-hadoop3/build.gradle.kts
index ace9fa42d9..7f68f35268 100644
--- a/clients/filesystem-hadoop3/build.gradle.kts
+++ b/clients/filesystem-hadoop3/build.gradle.kts
@@ -44,7 +44,6 @@ dependencies {
testImplementation(project(":core"))
testImplementation(project(":catalogs:catalog-fileset"))
testImplementation(project(":common"))
- testImplementation(project(":server"))
testImplementation(project(":server-common"))
testImplementation(project(":clients:client-java"))
testImplementation(project(":integration-test-common", "testArtifacts"))
diff --git
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemIT.java
b/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemIT.java
index 0b5c5995e1..f5840c1b35 100644
---
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemIT.java
+++
b/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemIT.java
@@ -54,10 +54,12 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledIf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Tag("gravitino-docker-test")
+@DisabledIf("org.apache.gravitino.integration.test.util.ITUtils#isEmbedded")
public class GravitinoVirtualFileSystemIT extends BaseIT {
private static final Logger LOG =
LoggerFactory.getLogger(GravitinoVirtualFileSystemIT.class);
protected static final ContainerSuite containerSuite =
ContainerSuite.getInstance();
diff --git
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemS3IT.java
b/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemS3IT.java
index 05fc78475c..5f1f292dd0 100644
---
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemS3IT.java
+++
b/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemS3IT.java
@@ -38,11 +38,13 @@ import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.condition.DisabledIf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Container;
import org.testcontainers.shaded.org.awaitility.Awaitility;
+@DisabledIf("org.apache.gravitino.integration.test.util.ITUtils#isEmbedded")
public class GravitinoVirtualFileSystemS3IT extends
GravitinoVirtualFileSystemIT {
private static final Logger LOG =
LoggerFactory.getLogger(GravitinoVirtualFileSystemS3IT.class);
diff --git
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
b/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
index 2564bac84f..8a24bebf68 100644
---
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
+++
b/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
@@ -20,8 +20,10 @@ package
org.apache.gravitino.filesystem.hadoop.integration.test;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.condition.DisabledIf;
@Tag("gravitino-docker-test")
+@DisabledIf("org.apache.gravitino.integration.test.util.ITUtils#isEmbedded")
public class GravitinoVirtualFilesystemWithFSOpsDisabledIT extends
GravitinoVirtualFileSystemIT {
@BeforeAll
diff --git a/flink-connector/flink/build.gradle.kts
b/flink-connector/flink/build.gradle.kts
index ea0a2d0e76..1dddd22480 100644
--- a/flink-connector/flink/build.gradle.kts
+++ b/flink-connector/flink/build.gradle.kts
@@ -88,7 +88,6 @@ dependencies {
testImplementation(project(":core"))
testImplementation(project(":common"))
testImplementation(project(":integration-test-common", "testArtifacts"))
- testImplementation(project(":server"))
testImplementation(project(":server-common"))
testImplementation(libs.junit.jupiter.api)
testImplementation(libs.junit.jupiter.params)
diff --git
a/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
index e2cdbbd69b..8baf604d51 100644
---
a/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
+++
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
@@ -48,9 +48,11 @@ import org.apache.gravitino.server.web.JettyServerConfig;
import org.apache.hadoop.fs.FileSystem;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.condition.DisabledIf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@DisabledIf("org.apache.gravitino.integration.test.util.ITUtils#isEmbedded")
public abstract class FlinkEnvIT extends BaseIT {
private static final Logger LOG = LoggerFactory.getLogger(FlinkEnvIT.class);
private static final ContainerSuite CONTAINER_SUITE =
ContainerSuite.getInstance();
diff --git
a/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/IcebergRestKerberosHiveCatalogIT.java
b/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/IcebergRestKerberosHiveCatalogIT.java
index cea5ced31b..7ab4be49a7 100644
---
a/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/IcebergRestKerberosHiveCatalogIT.java
+++
b/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/IcebergRestKerberosHiveCatalogIT.java
@@ -19,6 +19,7 @@
package org.apache.gravitino.iceberg.integration.test;
import java.io.File;
+import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.HashMap;
@@ -81,7 +82,7 @@ public class IcebergRestKerberosHiveCatalogIT extends
IcebergRESTHiveCatalogIT {
System.setProperty("java.security.krb5.realm", "HADOOPKRB");
System.setProperty("java.security.krb5.kdc", ip);
- sun.security.krb5.Config.refresh();
+ refreshKerberosConfig();
resetDefaultRealm();
// Give cli@HADOOPKRB permission to access the hdfs
@@ -157,4 +158,20 @@ public class IcebergRestKerberosHiveCatalogIT extends
IcebergRESTHiveCatalogIT {
return Objects.equals(mode, ITUtils.EMBEDDED_TEST_MODE);
}
+
+ private static void refreshKerberosConfig() {
+ Class<?> classRef;
+ try {
+ if (System.getProperty("java.vendor").contains("IBM")) {
+ classRef = Class.forName("com.ibm.security.krb5.internal.Config");
+ } else {
+ classRef = Class.forName("sun.security.krb5.Config");
+ }
+
+ Method refershMethod = classRef.getMethod("refresh");
+ refershMethod.invoke(null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git
a/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/util/IcebergRESTServerManagerForDeploy.java
b/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/util/IcebergRESTServerManagerForDeploy.java
index ca4ba0cc41..d32032fef5 100644
---
a/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/util/IcebergRESTServerManagerForDeploy.java
+++
b/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/util/IcebergRESTServerManagerForDeploy.java
@@ -18,6 +18,7 @@
*/
package org.apache.gravitino.iceberg.integration.test.util;
+import com.google.common.collect.ImmutableMap;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
@@ -30,7 +31,6 @@ import
org.apache.gravitino.integration.test.util.CommandExecutor;
import org.apache.gravitino.integration.test.util.DownloaderUtils;
import org.apache.gravitino.integration.test.util.ProcessData;
import org.apache.gravitino.integration.test.util.ProcessData.TypesOfData;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableMap;
public class IcebergRESTServerManagerForDeploy extends
IcebergRESTServerManager {
@@ -55,6 +55,7 @@ public class IcebergRESTServerManagerForDeploy extends
IcebergRESTServerManager
SQLITE_DRIVER_DOWNLOAD_URL,
Paths.get(icebergRESTServerHome.toString(), "iceberg-rest-server",
"libs").toString());
+ String jdk17Home = System.getenv("JDK17_HOME");
String gravitinoRestStartShell = icebergRESTServerHome.toString() +
"/bin/" + SCRIPT_NAME;
String krb5Path = System.getProperty("java.security.krb5.conf");
if (krb5Path != null) {
@@ -76,7 +77,10 @@ public class IcebergRESTServerManagerForDeploy extends
IcebergRESTServerManager
tmp.setExecutable(true);
LOG.info("modifiedGravitinoStartShell content: \n{}", content);
CommandExecutor.executeCommandLocalHost(
- modifiedGravitinoStartShell + " start", false,
ProcessData.TypesOfData.OUTPUT);
+ modifiedGravitinoStartShell + " start",
+ false,
+ ProcessData.TypesOfData.OUTPUT,
+ ImmutableMap.of("JAVA_HOME", jdk17Home));
} catch (Exception e) {
LOG.error("Can replace /etc/krb5.conf with real kerberos
configuration", e);
}
diff --git a/integration-test-common/build.gradle.kts
b/integration-test-common/build.gradle.kts
index bd15dc2a34..419ba2818d 100644
--- a/integration-test-common/build.gradle.kts
+++ b/integration-test-common/build.gradle.kts
@@ -30,7 +30,6 @@ dependencies {
testImplementation(project(":clients:client-java"))
testImplementation(project(":common"))
testImplementation(project(":core"))
- testImplementation(project(":server"))
testImplementation(project(":server-common"))
testImplementation(libs.bundles.jetty)
testImplementation(libs.bundles.jersey)
diff --git
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/MiniGravitino.java
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/MiniGravitino.java
index d0ce1710d7..1a86637f82 100644
---
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/MiniGravitino.java
+++
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/MiniGravitino.java
@@ -47,7 +47,6 @@ import org.apache.gravitino.integration.test.util.ITUtils;
import org.apache.gravitino.integration.test.util.KerberosProviderHelper;
import org.apache.gravitino.integration.test.util.OAuthMockDataProvider;
import org.apache.gravitino.rest.RESTUtils;
-import org.apache.gravitino.server.GravitinoServer;
import org.apache.gravitino.server.ServerConfig;
import org.apache.gravitino.server.web.JettyServerConfig;
import org.slf4j.Logger;
@@ -93,7 +92,7 @@ public class MiniGravitino {
// Generate random Gravitino Server port and backend storage path,
avoiding conflicts
customizeConfigFile(
ITUtils.joinPath(gravitinoRootDir, "conf", "gravitino.conf.template"),
- ITUtils.joinPath(mockConfDir.getAbsolutePath(),
GravitinoServer.CONF_FILE));
+ ITUtils.joinPath(mockConfDir.getAbsolutePath(),
ITUtils.GRAVITINO_CONF_FILE));
Files.copy(
Paths.get(ITUtils.joinPath(gravitinoRootDir, "conf",
"gravitino-env.sh.template")),
@@ -114,7 +113,7 @@ public class MiniGravitino {
// Initialize the REST client
JettyServerConfig jettyServerConfig =
- JettyServerConfig.fromConfig(serverConfig,
GravitinoServer.WEBSERVER_CONF_PREFIX);
+ JettyServerConfig.fromConfig(serverConfig,
ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX);
this.host = jettyServerConfig.getHost();
this.port = jettyServerConfig.getHttpPort();
String URI = String.format("http://%s:%d", host, port);
@@ -145,10 +144,12 @@ public class MiniGravitino {
executor.submit(
() -> {
try {
- GravitinoServer.main(
- new String[] {
- ITUtils.joinPath(mockConfDir.getAbsolutePath(),
"gravitino.conf")
- });
+ String configPath =
+ ITUtils.joinPath(mockConfDir.getAbsolutePath(),
"gravitino.conf");
+ String[] args = new String[] {configPath};
+ Class<?> gravitinoServerClass =
+
Class.forName("org.apache.gravitino.server.GravitinoServer");
+ gravitinoServerClass.getMethod("main",
String[].class).invoke(null, (Object) args);
} catch (Exception e) {
LOG.error("Exception in startup MiniGravitino Server ", e);
throw new RuntimeException(e);
@@ -235,7 +236,7 @@ public class MiniGravitino {
throws IOException {
Map<String, String> configMap = new HashMap<>();
configMap.put(
- GravitinoServer.WEBSERVER_CONF_PREFIX +
JettyServerConfig.WEBSERVER_HTTP_PORT.getKey(),
+ ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX +
JettyServerConfig.WEBSERVER_HTTP_PORT.getKey(),
String.valueOf(RESTUtils.findAvailablePort(2000, 3000)));
configMap.putAll(getIcebergRestServiceConfigs());
diff --git
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/BaseIT.java
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/BaseIT.java
index 72923341b9..4ee8a04d8f 100644
---
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/BaseIT.java
+++
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/BaseIT.java
@@ -21,7 +21,6 @@ package org.apache.gravitino.integration.test.util;
import static org.apache.gravitino.Configs.ENTITY_RELATIONAL_JDBC_BACKEND_PATH;
import static
org.apache.gravitino.integration.test.util.TestDatabaseName.PG_CATALOG_POSTGRESQL_IT;
import static
org.apache.gravitino.integration.test.util.TestDatabaseName.PG_JDBC_BACKEND;
-import static
org.apache.gravitino.server.GravitinoServer.WEBSERVER_CONF_PREFIX;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableMap;
@@ -60,7 +59,6 @@ import
org.apache.gravitino.integration.test.MiniGravitinoContext;
import org.apache.gravitino.integration.test.container.ContainerSuite;
import org.apache.gravitino.integration.test.container.MySQLContainer;
import org.apache.gravitino.integration.test.container.PostgreSQLContainer;
-import org.apache.gravitino.server.GravitinoServer;
import org.apache.gravitino.server.ServerConfig;
import org.apache.gravitino.server.web.JettyServerConfig;
import org.apache.hadoop.security.UserGroupInformation;
@@ -125,7 +123,7 @@ public class BaseIT {
public int getGravitinoServerPort() {
JettyServerConfig jettyServerConfig =
- JettyServerConfig.fromConfig(serverConfig, WEBSERVER_CONF_PREFIX);
+ JettyServerConfig.fromConfig(serverConfig,
ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX);
return jettyServerConfig.getHttpPort();
}
@@ -135,7 +133,7 @@ public class BaseIT {
private void rewriteGravitinoServerConfig() throws IOException {
String gravitinoHome = System.getenv("GRAVITINO_HOME");
- Path configPath = Paths.get(gravitinoHome, "conf",
GravitinoServer.CONF_FILE);
+ Path configPath = Paths.get(gravitinoHome, "conf",
ITUtils.GRAVITINO_CONF_FILE);
if (originConfig == null) {
originConfig = FileUtils.readFileToString(configPath.toFile(),
StandardCharsets.UTF_8);
}
@@ -144,7 +142,7 @@ public class BaseIT {
return;
}
- String tmpFileName = GravitinoServer.CONF_FILE + ".tmp";
+ String tmpFileName = ITUtils.GRAVITINO_CONF_FILE + ".tmp";
Path tmpPath = Paths.get(gravitinoHome, "conf", tmpFileName);
Files.deleteIfExists(tmpPath);
@@ -154,7 +152,7 @@ public class BaseIT {
private void recoverGravitinoServerConfig() throws IOException {
String gravitinoHome = System.getenv("GRAVITINO_HOME");
- Path configPath = Paths.get(gravitinoHome, "conf",
GravitinoServer.CONF_FILE);
+ Path configPath = Paths.get(gravitinoHome, "conf",
ITUtils.GRAVITINO_CONF_FILE);
if (originConfig != null) {
Files.deleteIfExists(configPath);
@@ -337,14 +335,14 @@ public class BaseIT {
serverConfig = miniGravitino.getServerConfig();
} else {
rewriteGravitinoServerConfig();
- serverConfig.loadFromFile(GravitinoServer.CONF_FILE);
+ serverConfig.loadFromFile(ITUtils.GRAVITINO_CONF_FILE);
setupJdbcDrivers();
GravitinoITUtils.startGravitinoServer();
JettyServerConfig jettyServerConfig =
- JettyServerConfig.fromConfig(serverConfig, WEBSERVER_CONF_PREFIX);
+ JettyServerConfig.fromConfig(serverConfig,
ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX);
String checkServerUrl =
"http://"
+ jettyServerConfig.getHost()
@@ -358,7 +356,7 @@ public class BaseIT {
}
JettyServerConfig jettyServerConfig =
- JettyServerConfig.fromConfig(serverConfig, WEBSERVER_CONF_PREFIX);
+ JettyServerConfig.fromConfig(serverConfig,
ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX);
serverUri = "http://" + jettyServerConfig.getHost() + ":" +
jettyServerConfig.getHttpPort();
diff --git
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/GravitinoITUtils.java
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/GravitinoITUtils.java
index 4ed7fbf295..b5177bcb22 100644
---
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/GravitinoITUtils.java
+++
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/GravitinoITUtils.java
@@ -18,10 +18,13 @@
*/
package org.apache.gravitino.integration.test.util;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableMap;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,6 +37,9 @@ public class GravitinoITUtils {
public static void startGravitinoServer() {
String gravitinoStartShell = System.getenv("GRAVITINO_HOME") +
"/bin/gravitino.sh";
+ // Gravitino server could only start with JDK17
+ String jdk17Home = System.getenv("JDK17_HOME");
+ Preconditions.checkArgument(StringUtils.isNotBlank(jdk17Home), "JDK17_HOME
is not set");
String krb5Path = System.getProperty("java.security.krb5.conf");
if (krb5Path != null) {
@@ -54,13 +60,19 @@ public class GravitinoITUtils {
tmp.setExecutable(true);
LOG.info("modifiedGravitinoStartShell content: \n{}", content);
CommandExecutor.executeCommandLocalHost(
- modifiedGravitinoStartShell + " start", false,
ProcessData.TypesOfData.OUTPUT);
+ modifiedGravitinoStartShell + " start",
+ false,
+ ProcessData.TypesOfData.OUTPUT,
+ ImmutableMap.of("JAVA_HOME", jdk17Home));
} catch (Exception e) {
LOG.error("Can replace /etc/krb5.conf with real kerberos
configuration", e);
}
} else {
CommandExecutor.executeCommandLocalHost(
- gravitinoStartShell + " start", false,
ProcessData.TypesOfData.OUTPUT);
+ gravitinoStartShell + " start",
+ false,
+ ProcessData.TypesOfData.OUTPUT,
+ ImmutableMap.of("JAVA_HOME", jdk17Home));
}
// wait for server to start.
sleep(3000, false);
diff --git
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/ITUtils.java
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/ITUtils.java
index 508c5fb42e..fe894689b6 100644
---
a/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/ITUtils.java
+++
b/integration-test-common/src/test/java/org/apache/gravitino/integration/test/util/ITUtils.java
@@ -52,6 +52,8 @@ public class ITUtils {
public static final String TEST_MODE = "testMode";
public static final String EMBEDDED_TEST_MODE = "embedded";
public static final String DEPLOY_TEST_MODE = "deploy";
+ public static final String GRAVITINO_CONF_FILE = "gravitino.conf";
+ public static final String GRAVITINO_WEBSERVER_CONF_PREFIX =
"gravitino.server.webserver.";
public static String joinPath(String... dirs) {
return String.join(File.separator, dirs);
diff --git
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
b/integration-test/build.gradle.kts
similarity index 66%
copy from
clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
copy to integration-test/build.gradle.kts
index 2564bac84f..42311aa45b 100644
---
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
+++ b/integration-test/build.gradle.kts
@@ -16,18 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.gravitino.filesystem.hadoop.integration.test;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Tag;
-
-@Tag("gravitino-docker-test")
-public class GravitinoVirtualFilesystemWithFSOpsDisabledIT extends
GravitinoVirtualFileSystemIT {
+tasks.all {
+ enabled = false
+}
- @BeforeAll
- @Override
- public void startUp() throws Exception {
- properties.put("disable-filesystem-ops", "true");
- super.startUp();
- }
+tasks.named<Test>("test") {
+ subprojects.forEach { sub ->
+ dependsOn(sub.tasks.named("test"))
+ }
}
diff --git
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
b/integration-test/catalogs/build.gradle.kts
similarity index 66%
copy from
clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
copy to integration-test/catalogs/build.gradle.kts
index 2564bac84f..42311aa45b 100644
---
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
+++ b/integration-test/catalogs/build.gradle.kts
@@ -16,18 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.gravitino.filesystem.hadoop.integration.test;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Tag;
-
-@Tag("gravitino-docker-test")
-public class GravitinoVirtualFilesystemWithFSOpsDisabledIT extends
GravitinoVirtualFileSystemIT {
+tasks.all {
+ enabled = false
+}
- @BeforeAll
- @Override
- public void startUp() throws Exception {
- properties.put("disable-filesystem-ops", "true");
- super.startUp();
- }
+tasks.named<Test>("test") {
+ subprojects.forEach { sub ->
+ dependsOn(sub.tasks.named("test"))
+ }
}
diff --git a/clients/cli/build.gradle.kts
b/integration-test/catalogs/catalog-model-it/build.gradle.kts
similarity index 61%
copy from clients/cli/build.gradle.kts
copy to integration-test/catalogs/catalog-model-it/build.gradle.kts
index 9358808f9f..cdb18f75cb 100644
--- a/clients/cli/build.gradle.kts
+++ b/integration-test/catalogs/catalog-model-it/build.gradle.kts
@@ -16,63 +16,53 @@
* specific language governing permissions and limitations
* under the License.
*/
+description = "catalog-model-it"
+
plugins {
`maven-publish`
id("java")
id("idea")
}
+val isTestModeEmbedded = rootProject.extra["isTestModeEmbedded"] as Boolean
+
dependencies {
- implementation(libs.commons.cli.new)
- implementation(libs.commons.csv)
- implementation(libs.guava)
- implementation(libs.slf4j.api)
- implementation(libs.slf4j.simple)
- implementation(project(":api"))
- implementation(project(":clients:client-java"))
- implementation(project(":common"))
+ testImplementation(project(":api")) {
+ exclude(group = "*")
+ }
+ testImplementation(project(":catalogs:catalog-common")) {
+ exclude(group = "*")
+ }
+ testImplementation(project(":common")) {
+ exclude(group = "*")
+ }
+ testImplementation(project(":core")) {
+ exclude(group = "*")
+ }
+ testImplementation(project(":clients:client-java"))
+ testImplementation(project(":integration-test-common", "testArtifacts"))
+ if (isTestModeEmbedded) {
+ testImplementation(project(":server"))
+ }
+ testImplementation(project(":server-common"))
- testImplementation(libs.junit.jupiter.api)
- testImplementation(libs.junit.jupiter.params)
+ testImplementation(libs.bundles.log4j)
+ testImplementation(libs.commons.io)
+ testImplementation(libs.commons.lang3)
testImplementation(libs.mockito.core)
+ testImplementation(libs.mockito.inline)
testImplementation(libs.mysql.driver)
+ testImplementation(libs.junit.jupiter.api)
+ testImplementation(libs.junit.jupiter.params)
+ testImplementation(libs.guava)
testImplementation(libs.postgresql.driver)
+ testImplementation(libs.slf4j.api)
testImplementation(libs.testcontainers)
+ testImplementation(libs.testcontainers.mysql)
- testImplementation(project(":core")) {
- exclude("org.apache.logging.log4j")
- }
- testImplementation(project(":server")) {
- exclude("org.apache.logging.log4j")
- }
- testImplementation(project(":server-common")) {
- exclude("org.apache.logging.log4j")
- }
- testImplementation(project(":integration-test-common", "testArtifacts"))
testRuntimeOnly(libs.junit.jupiter.engine)
}
-tasks.build {
- dependsOn("javadoc")
-}
-
-tasks.clean {
- delete("target")
- delete("tmp")
-}
-
-tasks.jar {
- manifest {
- attributes["Main-Class"] = "org.apache.gravitino.cli.Main"
- }
- val dependencies = configurations
- .runtimeClasspath
- .get()
- .map(::zipTree)
- from(dependencies)
- duplicatesStrategy = DuplicatesStrategy.EXCLUDE
-}
-
tasks.test {
val skipITs = project.hasProperty("skipITs")
if (skipITs) {
@@ -80,6 +70,6 @@ tasks.test {
exclude("**/integration/test/**")
} else {
dependsOn(tasks.jar)
- dependsOn(":catalogs:catalog-jdbc-postgresql:jar",
":catalogs:catalog-jdbc-postgresql:runtimeJars")
+ dependsOn(":catalogs:catalog-model:jar")
}
}
diff --git
a/catalogs/catalog-model/src/test/java/org/apache/gravtitino/catalog/model/integration/test/ModelCatalogOperationsIT.java
b/integration-test/catalogs/catalog-model-it/src/test/java/org/apache/gravtitino/catalog/model/integration/test/ModelCatalogOperationsIT.java
similarity index 100%
rename from
catalogs/catalog-model/src/test/java/org/apache/gravtitino/catalog/model/integration/test/ModelCatalogOperationsIT.java
rename to
integration-test/catalogs/catalog-model-it/src/test/java/org/apache/gravtitino/catalog/model/integration/test/ModelCatalogOperationsIT.java
diff --git
a/integration-test/catalogs/catalog-model-it/src/test/resources/log4j2.properties
b/integration-test/catalogs/catalog-model-it/src/test/resources/log4j2.properties
new file mode 100644
index 0000000000..88da637c15
--- /dev/null
+++
b/integration-test/catalogs/catalog-model-it/src/test/resources/log4j2.properties
@@ -0,0 +1,73 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Set to debug or trace if log4j initialization is failing
+status = info
+
+# Name of the configuration
+name = ConsoleLogConfig
+
+# Console appender configuration
+appender.console.type = Console
+appender.console.name = consoleLogger
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{1}:%L -
%m%n
+
+# Log files location
+property.logPath =
${sys:gravitino.log.path:-build/catalog-model-integration-test.log}
+
+# File appender configuration
+appender.file.type = File
+appender.file.name = fileLogger
+appender.file.fileName = ${logPath}
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c - %m%n
+
+# Root logger level
+rootLogger.level = info
+
+# Root logger referring to console and file appenders
+rootLogger.appenderRef.stdout.ref = consoleLogger
+rootLogger.appenderRef.file.ref = fileLogger
+
+# File appender configuration for testcontainers
+appender.testcontainersFile.type = File
+appender.testcontainersFile.name = testcontainersLogger
+appender.testcontainersFile.fileName = build/testcontainers.log
+appender.testcontainersFile.layout.type = PatternLayout
+appender.testcontainersFile.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%t]
%-5p %c - %m%n
+
+# Logger for testcontainers
+logger.testcontainers.name = org.testcontainers
+logger.testcontainers.level = debug
+logger.testcontainers.additivity = false
+logger.testcontainers.appenderRef.file.ref = testcontainersLogger
+
+logger.tc.name = tc
+logger.tc.level = debug
+logger.tc.additivity = false
+logger.tc.appenderRef.file.ref = testcontainersLogger
+
+logger.docker.name = com.github.dockerjava
+logger.docker.level = warn
+logger.docker.additivity = false
+logger.docker.appenderRef.file.ref = testcontainersLogger
+
+logger.http.name =
com.github.dockerjava.zerodep.shaded.org.apache.hc.client5.http.wire
+logger.http.level = off
diff --git
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
b/integration-test/clients/build.gradle.kts
similarity index 66%
copy from
clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
copy to integration-test/clients/build.gradle.kts
index 2564bac84f..42311aa45b 100644
---
a/clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFilesystemWithFSOpsDisabledIT.java
+++ b/integration-test/clients/build.gradle.kts
@@ -16,18 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.gravitino.filesystem.hadoop.integration.test;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Tag;
-
-@Tag("gravitino-docker-test")
-public class GravitinoVirtualFilesystemWithFSOpsDisabledIT extends
GravitinoVirtualFileSystemIT {
+tasks.all {
+ enabled = false
+}
- @BeforeAll
- @Override
- public void startUp() throws Exception {
- properties.put("disable-filesystem-ops", "true");
- super.startUp();
- }
+tasks.named<Test>("test") {
+ subprojects.forEach { sub ->
+ dependsOn(sub.tasks.named("test"))
+ }
}
diff --git a/clients/client-java/build.gradle.kts
b/integration-test/clients/client-java-it/build.gradle.kts
similarity index 70%
copy from clients/client-java/build.gradle.kts
copy to integration-test/clients/client-java-it/build.gradle.kts
index 30b3a15deb..ed66145621 100644
--- a/clients/client-java/build.gradle.kts
+++ b/integration-test/clients/client-java-it/build.gradle.kts
@@ -16,33 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
+description = "client-java-it"
+
plugins {
`maven-publish`
id("java")
id("idea")
}
-dependencies {
- implementation(project(":api"))
- implementation(project(":common"))
- implementation(libs.jackson.databind)
- implementation(libs.jackson.annotations)
- implementation(libs.jackson.datatype.jdk8)
- implementation(libs.jackson.datatype.jsr310)
- implementation(libs.guava)
- implementation(libs.httpclient5) {
- exclude(group = "org.slf4j")
- }
- implementation(libs.commons.lang3)
+val isTestModeEmbedded = rootProject.extra["isTestModeEmbedded"] as Boolean
- compileOnly(libs.lombok)
- annotationProcessor(libs.lombok)
+dependencies {
testCompileOnly(libs.lombok)
testAnnotationProcessor(libs.lombok)
+ testImplementation(project(":api"))
+ testImplementation(project(":clients:client-java"))
+ testImplementation(project(":common"))
testImplementation(project(":core"))
testImplementation(project(":integration-test-common", "testArtifacts"))
- testImplementation(project(":server"))
+ if (isTestModeEmbedded) {
+ testImplementation(project(":server"))
+ }
testImplementation(project(":server-common"))
testImplementation(libs.bundles.jersey)
@@ -62,10 +57,6 @@ dependencies {
testRuntimeOnly(libs.junit.jupiter.engine)
}
-tasks.build {
- dependsOn("javadoc")
-}
-
tasks.test {
val skipITs = project.hasProperty("skipITs")
if (skipITs) {
@@ -77,18 +68,6 @@ tasks.test {
}
}
-tasks.javadoc {
- dependsOn(":api:javadoc", ":common:javadoc")
- source =
- sourceSets["main"].allJava +
- project(":api").sourceSets["main"].allJava +
- project(":common").sourceSets["main"].allJava
-
- classpath = configurations["compileClasspath"] +
- project(":api").configurations["runtimeClasspath"] +
- project(":common").configurations["runtimeClasspath"]
-}
-
tasks.clean {
delete("target")
delete("tmp")
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/AuditIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/AuditIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/AuditIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/AuditIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/MetalakeIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/MetalakeIT.java
similarity index 91%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/MetalakeIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/MetalakeIT.java
index 7911f02cdf..383e65689b 100644
---
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/MetalakeIT.java
+++
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/MetalakeIT.java
@@ -80,7 +80,7 @@ public class MetalakeIT extends BaseIT {
client.createMetalake(metalakeNameA, "metalake A comment",
Collections.emptyMap());
metaLakes = client.listMetalakes();
assertEquals(1, metaLakes.length);
- assertEquals(metaLakes[0].name(), metalakeNameA);
+ Assertions.assertEquals(metaLakes[0].name(), metalakeNameA);
// two metalakes
client.createMetalake(metalakeNameB, "metalake B comment",
Collections.emptyMap());
@@ -98,8 +98,8 @@ public class MetalakeIT extends BaseIT {
// metalake exists
client.createMetalake(metalakeNameA, "metalake A comment",
Collections.emptyMap());
GravitinoMetalake metaLakeA = client.loadMetalake(metalakeNameA);
- assertEquals(metaLakeA.name(), metalakeNameA);
- assertEquals("true", metaLakeA.properties().get(PROPERTY_IN_USE));
+ Assertions.assertEquals(metaLakeA.name(), metalakeNameA);
+ Assertions.assertEquals("true",
metaLakeA.properties().get(PROPERTY_IN_USE));
// metalake does not exist
NameIdentifier noexist = NameIdentifier.of(metalakeNameB);
@@ -124,14 +124,14 @@ public class MetalakeIT extends BaseIT {
MetalakeChange.rename(newName), MetalakeChange.updateComment("new
metalake comment")
};
GravitinoMetalake metaLake = client.alterMetalake(metalakeNameA, changes);
- assertEquals(newName, metaLake.name());
- assertEquals("new metalake comment", metaLake.comment());
- assertEquals(AuthConstants.ANONYMOUS_USER, metaLake.auditInfo().creator());
+ Assertions.assertEquals(newName, metaLake.name());
+ Assertions.assertEquals("new metalake comment", metaLake.comment());
+ Assertions.assertEquals(AuthConstants.ANONYMOUS_USER,
metaLake.auditInfo().creator());
// Reload metadata via new name to check if the changes are applied
GravitinoMetalake newMetalake = client.loadMetalake(newName);
- assertEquals(newName, newMetalake.name());
- assertEquals("new metalake comment", newMetalake.comment());
+ Assertions.assertEquals(newName, newMetalake.name());
+ Assertions.assertEquals("new metalake comment", newMetalake.comment());
// Old name does not exist
NameIdentifier old = NameIdentifier.of(metalakeNameA);
@@ -159,10 +159,10 @@ public class MetalakeIT extends BaseIT {
public void testCreateMetalake() {
client.createMetalake(metalakeNameA, "metalake A comment",
Collections.emptyMap());
GravitinoMetalake metalake = client.loadMetalake(metalakeNameA);
- assertEquals(metalakeNameA, metalake.name());
- assertEquals("metalake A comment", metalake.comment());
- assertEquals(AuthConstants.ANONYMOUS_USER, metalake.auditInfo().creator());
- assertEquals("true", metalake.properties().get(PROPERTY_IN_USE));
+ Assertions.assertEquals(metalakeNameA, metalake.name());
+ Assertions.assertEquals("metalake A comment", metalake.comment());
+ Assertions.assertEquals(AuthConstants.ANONYMOUS_USER,
metalake.auditInfo().creator());
+ Assertions.assertEquals("true",
metalake.properties().get(PROPERTY_IN_USE));
// Test metalake name already exists
Map<String, String> emptyMap = Collections.emptyMap();
@@ -178,9 +178,9 @@ public class MetalakeIT extends BaseIT {
public void testCreateMetalakeWithChinese() {
client.createMetalake(metalakeNameA, "这是中文comment",
Collections.emptyMap());
GravitinoMetalake metalake = client.loadMetalake(metalakeNameA);
- assertEquals(metalakeNameA, metalake.name());
- assertEquals("这是中文comment", metalake.comment());
- assertEquals(AuthConstants.ANONYMOUS_USER, metalake.auditInfo().creator());
+ Assertions.assertEquals(metalakeNameA, metalake.name());
+ Assertions.assertEquals("这是中文comment", metalake.comment());
+ Assertions.assertEquals(AuthConstants.ANONYMOUS_USER,
metalake.auditInfo().creator());
// Test metalake name already exists
Map<String, String> emptyMap = Collections.emptyMap();
@@ -213,13 +213,13 @@ public class MetalakeIT extends BaseIT {
public void testUpdateMetalakeWithNullableComment() {
client.createMetalake(metalakeNameA, null, Collections.emptyMap());
GravitinoMetalake metalake = client.loadMetalake(metalakeNameA);
- assertEquals(metalakeNameA, metalake.name());
- assertEquals(null, metalake.comment());
+ Assertions.assertEquals(metalakeNameA, metalake.name());
+ Assertions.assertEquals(null, metalake.comment());
MetalakeChange[] changes =
new MetalakeChange[] {MetalakeChange.updateComment("new metalake
comment")};
GravitinoMetalake updatedMetalake = client.alterMetalake(metalakeNameA,
changes);
- assertEquals("new metalake comment", updatedMetalake.comment());
+ Assertions.assertEquals("new metalake comment", updatedMetalake.comment());
GravitinoMetalake updateNullComment =
client.alterMetalake(metalakeNameA,
MetalakeChange.updateComment(null));
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/TagIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/TagIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/TagIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/TagIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/VersionOperationsIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/VersionOperationsIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/VersionOperationsIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/VersionOperationsIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlNotAllowIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlNotAllowIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlNotAllowIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlNotAllowIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/BaseRestApiAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/BaseRestApiAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/BaseRestApiAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/BaseRestApiAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/CatalogAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/CatalogAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/CatalogAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/CatalogAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/CheckCurrentUserIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/CheckCurrentUserIT.java
similarity index 98%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/CheckCurrentUserIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/CheckCurrentUserIT.java
index a7339ba0db..6802f9aa7f 100644
---
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/CheckCurrentUserIT.java
+++
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/CheckCurrentUserIT.java
@@ -18,8 +18,6 @@
*/
package org.apache.gravitino.client.integration.test.authorization;
-import static
org.apache.gravitino.server.GravitinoServer.WEBSERVER_CONF_PREFIX;
-
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.Collections;
@@ -39,6 +37,7 @@ import
org.apache.gravitino.integration.test.container.ContainerSuite;
import org.apache.gravitino.integration.test.container.HiveContainer;
import org.apache.gravitino.integration.test.container.KafkaContainer;
import org.apache.gravitino.integration.test.util.BaseIT;
+import org.apache.gravitino.integration.test.util.ITUtils;
import org.apache.gravitino.rel.Column;
import org.apache.gravitino.rel.types.Types;
import org.apache.gravitino.server.web.JettyServerConfig;
@@ -85,7 +84,7 @@ public class CheckCurrentUserIT extends BaseIT {
KafkaContainer.DEFAULT_BROKER_PORT);
JettyServerConfig jettyServerConfig =
- JettyServerConfig.fromConfig(serverConfig, WEBSERVER_CONF_PREFIX);
+ JettyServerConfig.fromConfig(serverConfig,
ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX);
String uri = "http://" + jettyServerConfig.getHost() + ":" +
jettyServerConfig.getHttpPort();
System.setProperty("user.name", "test");
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/FilesetAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/FilesetAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/FilesetAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/FilesetAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/GroupAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/GroupAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/GroupAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/GroupAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/KerberosOperationsIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/KerberosOperationsIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/KerberosOperationsIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/KerberosOperationsIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/ModelAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/ModelAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/ModelAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/ModelAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MultiAuthOperationsIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/MultiAuthOperationsIT.java
similarity index 98%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MultiAuthOperationsIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/MultiAuthOperationsIT.java
index 01628d95d1..6a4fbaaf4a 100644
---
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MultiAuthOperationsIT.java
+++
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/MultiAuthOperationsIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.gravitino.client.integration.test.authorization;
-import static
org.apache.gravitino.server.GravitinoServer.WEBSERVER_CONF_PREFIX;
import static org.apache.gravitino.server.authentication.KerberosConfig.KEYTAB;
import static
org.apache.gravitino.server.authentication.KerberosConfig.PRINCIPAL;
import static org.apache.hadoop.minikdc.MiniKdc.MAX_TICKET_LIFETIME;
@@ -94,7 +93,7 @@ public class MultiAuthOperationsIT extends BaseIT {
.build();
JettyServerConfig jettyServerConfig =
- JettyServerConfig.fromConfig(serverConfig, WEBSERVER_CONF_PREFIX);
+ JettyServerConfig.fromConfig(serverConfig,
ITUtils.GRAVITINO_WEBSERVER_CONF_PREFIX);
serverUri = "http://localhost:" + jettyServerConfig.getHttpPort();
kerberosClient =
GravitinoAdminClient.builder(serverUri)
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/OAuth2OperationsIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/OAuth2OperationsIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/OAuth2OperationsIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/OAuth2OperationsIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/OwnerIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/PermissionAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/PermissionAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/PermissionAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/PermissionAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/RoleAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/RoleAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/RoleAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/RoleAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/SchemaAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/SchemaAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/SchemaAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/SchemaAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/TableAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/TableAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/TableAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/TableAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/TopicAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/TopicAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/TopicAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/TopicAuthorizationIT.java
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/UserAuthorizationIT.java
b/integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/UserAuthorizationIT.java
similarity index 100%
rename from
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/UserAuthorizationIT.java
rename to
integration-test/clients/client-java-it/src/test/java/org/apache/gravitino/client/integration/test/authorization/UserAuthorizationIT.java
diff --git
a/integration-test/clients/client-java-it/src/test/resources/log4j2.properties
b/integration-test/clients/client-java-it/src/test/resources/log4j2.properties
new file mode 100644
index 0000000000..2ee58e894b
--- /dev/null
+++
b/integration-test/clients/client-java-it/src/test/resources/log4j2.properties
@@ -0,0 +1,73 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Set to debug or trace if log4j initialization is failing
+status = info
+
+# Name of the configuration
+name = ConsoleLogConfig
+
+# Console appender configuration
+appender.console.type = Console
+appender.console.name = consoleLogger
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{1}:%L -
%m%n
+
+# Log files location
+property.logPath =
${sys:gravitino.log.path:-build/client-java-integration-test.log}
+
+# File appender configuration
+appender.file.type = File
+appender.file.name = fileLogger
+appender.file.fileName = ${logPath}
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c - %m%n
+
+# Root logger level
+rootLogger.level = info
+
+# Root logger referring to console and file appenders
+rootLogger.appenderRef.stdout.ref = consoleLogger
+rootLogger.appenderRef.file.ref = fileLogger
+
+# File appender configuration for testcontainers
+appender.testcontainersFile.type = File
+appender.testcontainersFile.name = testcontainersLogger
+appender.testcontainersFile.fileName = build/testcontainers.log
+appender.testcontainersFile.layout.type = PatternLayout
+appender.testcontainersFile.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%t]
%-5p %c - %m%n
+
+# Logger for testcontainers
+logger.testcontainers.name = org.testcontainers
+logger.testcontainers.level = debug
+logger.testcontainers.additivity = false
+logger.testcontainers.appenderRef.file.ref = testcontainersLogger
+
+logger.tc.name = tc
+logger.tc.level = debug
+logger.tc.additivity = false
+logger.tc.appenderRef.file.ref = testcontainersLogger
+
+logger.docker.name = com.github.dockerjava
+logger.docker.level = warn
+logger.docker.additivity = false
+logger.docker.appenderRef.file.ref = testcontainersLogger
+
+logger.http.name =
com.github.dockerjava.zerodep.shaded.org.apache.hc.client5.http.wire
+logger.http.level = off
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 6b8b3fcd06..fdf7bb5b32 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -84,3 +84,4 @@ include(":bundles:aliyun", ":bundles:aliyun-bundle")
include(":bundles:azure", ":bundles:azure-bundle")
include(":catalogs:hadoop-common")
include(":lineage")
+include(":integration-test:catalogs:catalog-model-it",
":integration-test:clients:client-java-it")
diff --git a/spark-connector/spark-common/build.gradle.kts
b/spark-connector/spark-common/build.gradle.kts
index 5a61934295..faac9bc717 100644
--- a/spark-connector/spark-common/build.gradle.kts
+++ b/spark-connector/spark-common/build.gradle.kts
@@ -73,9 +73,6 @@ dependencies {
testImplementation(project(":common")) {
exclude("org.apache.logging.log4j")
}
- testImplementation(project(":server")) {
- exclude("org.apache.logging.log4j")
- }
testImplementation(project(":server-common")) {
exclude("org.apache.logging.log4j")
}
diff --git
a/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/integration/test/SparkEnvIT.java
b/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/integration/test/SparkEnvIT.java
index 5bcdc9a2cb..3d5c7a25a2 100644
---
a/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/integration/test/SparkEnvIT.java
+++
b/spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/integration/test/SparkEnvIT.java
@@ -42,10 +42,12 @@ import org.apache.spark.sql.SparkSession;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.condition.DisabledIf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Setup Hive, Gravitino, Spark, Metalake environment to execute SparkSQL. */
+@DisabledIf("org.apache.gravitino.integration.test.util.ITUtils#isEmbedded")
public abstract class SparkEnvIT extends SparkUtilIT {
private static final Logger LOG = LoggerFactory.getLogger(SparkEnvIT.class);
diff --git a/spark-connector/v3.3/spark/build.gradle.kts
b/spark-connector/v3.3/spark/build.gradle.kts
index 257020a84c..ce2e94f76a 100644
--- a/spark-connector/v3.3/spark/build.gradle.kts
+++ b/spark-connector/v3.3/spark/build.gradle.kts
@@ -52,12 +52,6 @@ dependencies {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
}
- testImplementation(project(":catalogs:catalog-jdbc-common")) {
- exclude("org.apache.logging.log4j")
- }
- testImplementation(project(":catalogs:hive-metastore-common")) {
- exclude("*")
- }
testImplementation(project(":clients:client-java")) {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
@@ -74,10 +68,6 @@ dependencies {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
}
- testImplementation(project(":server")) {
- exclude("org.apache.logging.log4j")
- exclude("org.slf4j")
- }
testImplementation(project(":server-common")) {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
diff --git a/spark-connector/v3.4/spark/build.gradle.kts
b/spark-connector/v3.4/spark/build.gradle.kts
index 7789017bd9..c853a2dddf 100644
--- a/spark-connector/v3.4/spark/build.gradle.kts
+++ b/spark-connector/v3.4/spark/build.gradle.kts
@@ -53,12 +53,6 @@ dependencies {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
}
- testImplementation(project(":catalogs:catalog-jdbc-common")) {
- exclude("org.apache.logging.log4j")
- }
- testImplementation(project(":catalogs:hive-metastore-common")) {
- exclude("*")
- }
testImplementation(project(":clients:client-java")) {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
@@ -75,10 +69,6 @@ dependencies {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
}
- testImplementation(project(":server")) {
- exclude("org.apache.logging.log4j")
- exclude("org.slf4j")
- }
testImplementation(project(":server-common")) {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
diff --git a/spark-connector/v3.5/spark/build.gradle.kts
b/spark-connector/v3.5/spark/build.gradle.kts
index f6a5417ac2..878b15e1e9 100644
--- a/spark-connector/v3.5/spark/build.gradle.kts
+++ b/spark-connector/v3.5/spark/build.gradle.kts
@@ -53,12 +53,6 @@ dependencies {
testImplementation(project(":api")) {
exclude("org.apache.logging.log4j")
}
- testImplementation(project(":catalogs:catalog-jdbc-common")) {
- exclude("org.apache.logging.log4j")
- }
- testImplementation(project(":catalogs:hive-metastore-common")) {
- exclude("*")
- }
testImplementation(project(":clients:client-java")) {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
@@ -75,10 +69,6 @@ dependencies {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")
}
- testImplementation(project(":server")) {
- exclude("org.apache.logging.log4j")
- exclude("org.slf4j")
- }
testImplementation(project(":server-common")) {
exclude("org.apache.logging.log4j")
exclude("org.slf4j")