This is an automated email from the ASF dual-hosted git repository.
gaborgsomogyi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new adc9c1d1f61 [FLINK-39499][tests] Replace MinIO with SeaweedFS
adc9c1d1f61 is described below
commit adc9c1d1f61e00d9ff7f98c64c379786afef6e43
Author: Efrat Levitan <[email protected]>
AuthorDate: Thu Jun 25 09:31:53 2026 +0300
[FLINK-39499][tests] Replace MinIO with SeaweedFS
---
flink-end-to-end-tests/run-nightly-tests.sh | 3 ++
flink-end-to-end-tests/test-scripts/common_s3.sh | 2 +-
.../{common_s3_minio.sh => common_s3_seaweedfs.sh} | 59 +++++++++++++---------
.../test-scripts/test_batch_wordcount.sh | 17 ++++---
.../test-scripts/test_file_sink.sh | 7 +--
.../test_kubernetes_materialized_table.sh | 2 +-
flink-filesystems/flink-s3-fs-base/pom.xml | 4 +-
... HAApplicationRunOnSeaweedFsS3StoreITCase.java} | 30 ++++++-----
....java => HAJobRunOnSeaweedFsS3StoreITCase.java} | 29 ++++++-----
...inioITCase.java => S5CmdOnSeaweedFsITCase.java} | 29 ++++++-----
...tContainer.java => SeaweedFsTestContainer.java} | 33 ++++++------
...erTest.java => SeaweedFsTestContainerTest.java} | 16 +++---
...HAApplicationRunOnHadoopS3FileSystemITCase.java | 6 +--
.../HAJobRunOnHadoopS3FileSystemITCase.java | 6 +--
.../s3hadoop/S5CmdOnHadoopS3FileSystemITCase.java | 7 ++-
flink-filesystems/flink-s3-fs-native/README.md | 39 +++++++-------
...HAApplicationRunOnPrestoS3FileSystemITCase.java | 6 +--
.../HAJobRunOnPrestoS3FileSystemITCase.java | 6 +--
.../s3presto/S5CmdOnPrestoS3FileSystemITCase.java | 7 ++-
.../org/apache/flink/util/DockerImageVersions.java | 2 +-
20 files changed, 159 insertions(+), 151 deletions(-)
diff --git a/flink-end-to-end-tests/run-nightly-tests.sh
b/flink-end-to-end-tests/run-nightly-tests.sh
index 129aeb82f45..eab0f865604 100755
--- a/flink-end-to-end-tests/run-nightly-tests.sh
+++ b/flink-end-to-end-tests/run-nightly-tests.sh
@@ -189,6 +189,9 @@ function run_group_3 {
run_test "New File Sink end-to-end test"
"$END_TO_END_DIR/test-scripts/test_file_sink.sh local FileSink"
"skip_check_exceptions"
run_test "New File Sink s3 end-to-end test"
"$END_TO_END_DIR/test-scripts/test_file_sink.sh s3 FileSink"
"skip_check_exceptions"
+ run_test "Wordcount Hadoop S3 SeaweedFS read-write end-to-end test"
"$END_TO_END_DIR/test-scripts/test_batch_wordcount.sh hadoop_seaweedfs"
+ run_test "Wordcount Presto S3 SeaweedFS read end-to-end test"
"$END_TO_END_DIR/test-scripts/test_batch_wordcount.sh presto_seaweedfs_read"
+
run_test "Stateful stream job upgrade end-to-end test"
"$END_TO_END_DIR/test-scripts/test_stateful_stream_job_upgrade.sh 2 4"
run_test "Netty shuffle direct memory consumption end-to-end test"
"$END_TO_END_DIR/test-scripts/test_netty_shuffle_memory_control.sh"
diff --git a/flink-end-to-end-tests/test-scripts/common_s3.sh
b/flink-end-to-end-tests/test-scripts/common_s3.sh
index 903fb6a3ff8..6de1604a61c 100644
--- a/flink-end-to-end-tests/test-scripts/common_s3.sh
+++ b/flink-end-to-end-tests/test-scripts/common_s3.sh
@@ -18,7 +18,7 @@
################################################################################
if [[ $S3_SOURCED ]]; then
- echo "Only source common_s3.sh or common_s3_minio.sh in the same test,
previously sourced $S3_SOURCED" && exit 1
+ echo "Only source common_s3.sh or common_s3_seaweedfs.sh in the same test,
previously sourced $S3_SOURCED" && exit 1
fi
export S3_SOURCED="common_s3.sh"
diff --git a/flink-end-to-end-tests/test-scripts/common_s3_minio.sh
b/flink-end-to-end-tests/test-scripts/common_s3_seaweedfs.sh
similarity index 63%
rename from flink-end-to-end-tests/test-scripts/common_s3_minio.sh
rename to flink-end-to-end-tests/test-scripts/common_s3_seaweedfs.sh
index d3d08392caa..a8060aa8d14 100644
--- a/flink-end-to-end-tests/test-scripts/common_s3_minio.sh
+++ b/flink-end-to-end-tests/test-scripts/common_s3_seaweedfs.sh
@@ -18,9 +18,9 @@
################################################################################
if [[ $S3_SOURCED ]]; then
- echo "Only source common_s3.sh or common_s3_minio.sh in the same test,
previously sourced $S3_SOURCED" && exit 1
+ echo "Only source common_s3.sh or common_s3_seaweedfs.sh in the same test,
previously sourced $S3_SOURCED" && exit 1
fi
-export S3_SOURCED="common_s3_minio.sh"
+export S3_SOURCED="common_s3_seaweedfs.sh"
# export credentials into environment variables for AWS client
export AWS_REGION=us-east-1
@@ -32,48 +32,54 @@ IT_CASE_S3_BUCKET=test-data
S3_TEST_DATA_WORDS_URI="s3://$IT_CASE_S3_BUCKET/words"
###################################
-# Starts a docker container for s3 minio.
+# Starts a docker container for s3 seaweedfs.
#
# Globals:
# TEST_INFRA_DIR
# AWS_ACCESS_KEY_ID
# AWS_SECRET_ACCESS_KEY
# Exports:
-# MINIO_CONTAINER_ID
+# SEAWEEDFS_CONTAINER_ID
# S3_ENDPOINT
###################################
function s3_start {
- echo "Spawning minio for s3 tests"
- export MINIO_CONTAINER_ID=$(docker run -d \
+ echo "Spawning seaweedfs for s3 tests"
+ export SEAWEEDFS_CONTAINER_ID=$(docker run -d \
-P \
- --mount type=bind,source="$TEST_INFRA_DIR",target=/data \
- -e "MINIO_ACCESS_KEY=$AWS_ACCESS_KEY_ID" -e
"MINIO_SECRET_KEY=$AWS_SECRET_ACCESS_KEY" -e "MINIO_DOMAIN=localhost" \
- minio/minio \
+ -e "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" -e
"AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" \
+ chrislusf/seaweedfs:4.34 \
server \
- /data)
- while [[ "$(docker inspect -f {{.State.Running}} "$MINIO_CONTAINER_ID")" -ne
"true" ]]; do
+ -s3 \
+ -s3.port=8333 \
+ -dir=/data)
+ while [[ "$(docker inspect -f {{.State.Running}} "$SEAWEEDFS_CONTAINER_ID")"
-ne "true" ]]; do
sleep 0.1
done
- export S3_ENDPOINT="http://$(docker port "$MINIO_CONTAINER_ID" 9000 | grep
-F '0.0.0.0' | sed s'/0\.0\.0\.0/localhost/')"
- echo "Started minio @ $S3_ENDPOINT"
+ export S3_ENDPOINT="http://$(docker port "$SEAWEEDFS_CONTAINER_ID" 8333 |
grep -F '0.0.0.0' | sed s'/0\.0\.0\.0/localhost/')"
+ echo "Started seaweedfs @ $S3_ENDPOINT"
on_exit s3_stop
+
+ while [[ "$(curl -s -o /dev/null -w '%{http_code}' "$S3_ENDPOINT/healthz")"
!= "200" ]]; do
+ sleep 0.1
+ done
+ echo "Seaweedfs S3 gateway is up @ $S3_ENDPOINT"
}
###################################
-# Stops the docker container of minio.
+# Stops the docker container of seaweedfs.
#
# Globals:
-# MINIO_CONTAINER_ID
+# SEAWEEDFS_CONTAINER_ID
###################################
function s3_stop {
- docker kill "$MINIO_CONTAINER_ID"
- docker rm "$MINIO_CONTAINER_ID"
+ docker kill "$SEAWEEDFS_CONTAINER_ID"
+ docker rm "$SEAWEEDFS_CONTAINER_ID"
export S3_ENDPOINT=
- export MINIO_CONTAINER_ID=
+ export SEAWEEDFS_CONTAINER_ID=
}
-# always start it while sourcing, so that MINIO_CONTAINER_ID is available from
parent script
-if [[ $MINIO_CONTAINER_ID ]]; then
+# always start it while sourcing, so that SEAWEEDFS_CONTAINER_ID is available
from parent script
+if [[ $SEAWEEDFS_CONTAINER_ID ]]; then
s3_stop
fi
s3_start
@@ -95,9 +101,9 @@ function s3_setup {
set_config_key "s3.access-key" "$AWS_ACCESS_KEY_ID"
set_config_key "s3.secret-key" "$AWS_SECRET_ACCESS_KEY"
- # change endpoint to minio's location
+ # change endpoint to seaweedfs's location
set_config_key "s3.endpoint" "$S3_ENDPOINT"
- # If the test is using virtual host style (default), then it tries to reach
minio on <bucket>.localhost:<port>,
+ # If the test is using virtual host style (default), then it tries to reach
seaweedfs on <bucket>.localhost:<port>,
# which docker does not properly forward.
set_config_key "s3.path.style.access" "true"
set_config_key "s3.path-style-access" "true"
@@ -107,12 +113,17 @@ function s3_setup_with_provider {
add_optional_plugin "s3-fs-$1"
# reads (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
set_config_key "$2"
"com.amazonaws.auth.EnvironmentVariableCredentialsProvider"
- # change endpoint to minio's location
+ # change endpoint to seaweedfs's location
set_config_key "s3.endpoint" "$S3_ENDPOINT"
- # If the test is using virtual host style (default), then it tries to reach
minio on <bucket>.localhost:<port>,
+ # If the test is using virtual host style (default), then it tries to reach
seaweedfs on <bucket>.localhost:<port>,
# which docker does not properly forward.
set_config_key "s3.path.style.access" "true"
set_config_key "s3.path-style-access" "true"
}
source "$(dirname "$0")"/common_s3_operations.sh
+
+# SeaweedFS does not expose on-disk directories as S3 buckets,
+# so the bucket must be created explicitly
+aws_cli s3 mb "s3://$IT_CASE_S3_BUCKET"
+aws_cli s3 cp "/hostdir/test-data/words" "$S3_TEST_DATA_WORDS_URI"
diff --git a/flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh
b/flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh
index 62f2455d5ba..414fce66d19 100755
--- a/flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh
+++ b/flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh
@@ -38,11 +38,13 @@ case $INPUT_TYPE in
on_exit "s3_delete_by_full_path_prefix '$S3_PREFIX'"
fetch_complete_result=(s3_get_by_full_path_and_filename_prefix
"$OUTPUT_PATH" "${S3_PREFIX}" true)
;;
- (hadoop_minio)
- source "$(dirname "$0")"/common_s3_minio.sh
+ (hadoop_seaweedfs)
+ source "$(dirname "$0")"/common_s3_seaweedfs.sh
s3_setup hadoop
ARGS="--execution-mode BATCH --input ${S3_TEST_DATA_WORDS_URI}
--output s3://$IT_CASE_S3_BUCKET/$S3_PREFIX"
- OUTPUT_PATH="$TEST_INFRA_DIR/$IT_CASE_S3_BUCKET/$S3_PREFIX"
+ OUTPUT_PATH="$TEST_DATA_DIR/$S3_PREFIX"
+ on_exit "s3_delete_by_full_path_prefix '$S3_PREFIX'"
+ fetch_complete_result=(s3_get_by_full_path_and_filename_prefix
"$OUTPUT_PATH" "${S3_PREFIX}" true)
;;
(hadoop_with_provider)
source "$(dirname "$0")"/common_s3.sh
@@ -60,11 +62,10 @@ case $INPUT_TYPE in
on_exit "s3_delete_by_full_path_prefix '$S3_PREFIX'"
fetch_complete_result=(s3_get_by_full_path_and_filename_prefix
"$OUTPUT_PATH" "${S3_PREFIX}" true)
;;
- (presto_minio)
- source "$(dirname "$0")"/common_s3_minio.sh
+ (presto_seaweedfs_read)
+ source "$(dirname "$0")"/common_s3_seaweedfs.sh
s3_setup presto
- ARGS="--execution-mode BATCH --input ${S3_TEST_DATA_WORDS_URI}
--output s3://$IT_CASE_S3_BUCKET/$S3_PREFIX"
- OUTPUT_PATH="$TEST_INFRA_DIR/$IT_CASE_S3_BUCKET/$S3_PREFIX"
+ ARGS="--execution-mode BATCH --input ${S3_TEST_DATA_WORDS_URI}
--output ${OUTPUT_PATH}"
;;
(dummy-fs)
source "$(dirname "$0")"/common_dummy_fs.sh
@@ -84,7 +85,7 @@ start_cluster
# The test may run against different source types.
# But the sources should provide the same test data, so the checksum stays the
same for all tests.
${FLINK_DIR}/bin/flink run -p 1 ${FLINK_DIR}/examples/streaming/WordCount.jar
${ARGS}
-# Fetches result from AWS s3 to the OUTPUT_PATH, no-op for other filesystems
and minio-based tests
+# Fetches result from AWS s3 to the OUTPUT_PATH, no-op for other filesystems
and the presto_seaweedfs_read test
# it seems we need a function for retry_times
function fetch_it() {
diff --git a/flink-end-to-end-tests/test-scripts/test_file_sink.sh
b/flink-end-to-end-tests/test-scripts/test_file_sink.sh
index 47fba1d0c90..f35369f95f3 100755
--- a/flink-end-to-end-tests/test-scripts/test_file_sink.sh
+++ b/flink-end-to-end-tests/test-scripts/test_file_sink.sh
@@ -62,7 +62,7 @@ function get_total_number_of_valid_lines {
if [ "${OUT_TYPE}" == "local" ]; then
echo "[INFO] Test run in local environment: No S3 environment is loaded."
elif [ "${OUT_TYPE}" == "s3" ]; then
- source "$(dirname "$0")"/common_s3_minio.sh
+ source "$(dirname "$0")"/common_s3_seaweedfs.sh
s3_setup hadoop
# overwrites JOB_OUTPUT_PATH to point to S3
@@ -80,11 +80,6 @@ elif [ "${OUT_TYPE}" == "s3" ]; then
find "${LOCAL_JOB_OUTPUT_PATH}" -type f \( -iname "part-*" \) -exec cat {}
+ | sort -g
}
- # overwrites implementation for local runs
- function get_total_number_of_valid_lines {
- s3_get_number_of_lines_by_prefix "${S3_DATA_PREFIX}" "part-"
- }
-
# make sure we delete the file at the end
function out_cleanup {
s3_delete_by_full_path_prefix "${S3_DATA_PREFIX}"
diff --git
a/flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh
b/flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh
index addc04f28bd..cb810a6c86c 100755
--- a/flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh
+++ b/flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh
@@ -46,7 +46,7 @@ fi
# setup materialized table data dir
echo "[INFO] Start S3 env"
-source "$(dirname "$0")"/common_s3_minio.sh
+source "$(dirname "$0")"/common_s3_seaweedfs.sh
s3_setup hadoop
S3_TEST_DATA_WORDS_URI="s3://$IT_CASE_S3_BUCKET/"
MATERIALIZED_TABLE_DATA_DIR="${S3_TEST_DATA_WORDS_URI}/test_materialized_table-$(uuidgen)"
diff --git a/flink-filesystems/flink-s3-fs-base/pom.xml
b/flink-filesystems/flink-s3-fs-base/pom.xml
index b1d3246825d..fc3c6a66a54 100644
--- a/flink-filesystems/flink-s3-fs-base/pom.xml
+++ b/flink-filesystems/flink-s3-fs-base/pom.xml
@@ -34,7 +34,7 @@ under the License.
<fs.s3.aws.version>1.12.779</fs.s3.aws.version>
<japicmp.skip>true</japicmp.skip>
<surefire.module.config> <!--
- S5CmdOnMinioITCase uses ArraysAsListSerializer
indirectly
+ S5CmdOnSeaweedFsITCase uses ArraysAsListSerializer
indirectly
-->--add-opens=java.base/java.util=ALL-UNNAMED
</surefire.module.config>
</properties>
@@ -245,7 +245,7 @@ under the License.
</exclusions>
</dependency>
- <!-- flink-runtime and curator dependencies are needed for the
HAJobRunOnMinioS3StoreITCase -->
+ <!-- flink-runtime and curator dependencies are needed for the
HAJobRunOnSeaweedFsS3StoreITCase -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-runtime</artifactId>
diff --git
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAApplicationRunOnMinioS3StoreITCase.java
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAApplicationRunOnSeaweedFsS3StoreITCase.java
similarity index 84%
rename from
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAApplicationRunOnMinioS3StoreITCase.java
rename to
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAApplicationRunOnSeaweedFsS3StoreITCase.java
index b80a952fb2e..cb5a7521f43 100644
---
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAApplicationRunOnMinioS3StoreITCase.java
+++
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAApplicationRunOnSeaweedFsS3StoreITCase.java
@@ -44,20 +44,22 @@ import static
org.apache.flink.shaded.guava33.com.google.common.base.Predicates.
import static org.assertj.core.api.Assertions.assertThat;
/**
- * {@code ApplicationRunOnMinioS3StoreITCase} covers an application run where
the HA data is stored
- * in Minio. The implementation verifies whether the {@code JobResult} was
written into the
- * FileSystem-backed {@code ApplicationResultStore}.
+ * {@code HAApplicationRunOnSeaweedFsS3StoreITCase} covers an application run
where the HA data is
+ * stored in SeaweedFs. The implementation verifies whether the {@code
JobResult} was written into
+ * the FileSystem-backed {@code ApplicationResultStore}.
*/
-public abstract class HAApplicationRunOnMinioS3StoreITCase extends
AbstractHAApplicationRunITCase {
+public abstract class HAApplicationRunOnSeaweedFsS3StoreITCase
+ extends AbstractHAApplicationRunITCase {
private static final String CLUSTER_ID = "test-cluster";
private static final String APPLICATION_RESULT_STORE_FOLDER = "ars";
@RegisterExtension
@Order(2)
- private static final
AllCallbackWrapper<TestContainerExtension<MinioTestContainer>>
- MINIO_EXTENSION =
- new AllCallbackWrapper<>(new
TestContainerExtension<>(MinioTestContainer::new));
+ private static final
AllCallbackWrapper<TestContainerExtension<SeaweedFsTestContainer>>
+ SEAWEEDFS_EXTENSION =
+ new AllCallbackWrapper<>(
+ new
TestContainerExtension<>(SeaweedFsTestContainer::new));
@RegisterExtension
@Order(3)
@@ -71,19 +73,19 @@ public abstract class HAApplicationRunOnMinioS3StoreITCase
extends AbstractHAApp
.build();
});
- private static MinioTestContainer getMinioContainer() {
- return MINIO_EXTENSION.getCustomExtension().getTestContainer();
+ private static SeaweedFsTestContainer getSeaweedFsContainer() {
+ return SEAWEEDFS_EXTENSION.getCustomExtension().getTestContainer();
}
private static String createS3URIWithSubPath(String... subfolders) {
- return getMinioContainer().getS3UriForDefaultBucket() +
createSubPath(subfolders);
+ return getSeaweedFsContainer().getS3UriForDefaultBucket() +
createSubPath(subfolders);
}
private static List<S3ObjectSummary>
getObjectsFromApplicationResultStore() {
- return getMinioContainer()
+ return getSeaweedFsContainer()
.getClient()
.listObjects(
- getMinioContainer().getDefaultBucketName(),
+ getSeaweedFsContainer().getDefaultBucketName(),
createSubPath(CLUSTER_ID,
APPLICATION_RESULT_STORE_FOLDER))
.getObjectSummaries();
}
@@ -96,7 +98,7 @@ public abstract class HAApplicationRunOnMinioS3StoreITCase
extends AbstractHAApp
private static Configuration createConfiguration() {
final Configuration config = new Configuration();
- getMinioContainer().setS3ConfigOptions(config);
+ getSeaweedFsContainer().setS3ConfigOptions(config);
// ApplicationResultStore configuration
config.set(ApplicationResultStoreOptions.DELETE_ON_COMMIT,
Boolean.FALSE);
@@ -142,7 +144,7 @@ public abstract class HAApplicationRunOnMinioS3StoreITCase
extends AbstractHAApp
::hasValidDirtyApplicationResultStoreEntryExtension));
final String objContent =
- getMinioContainer()
+ getSeaweedFsContainer()
.getClient()
.getObjectAsString(objRef.getBucketName(),
objRef.getKey());
assertThat(objContent).contains(ApplicationState.FINISHED.name());
diff --git
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAJobRunOnMinioS3StoreITCase.java
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAJobRunOnSeaweedFsS3StoreITCase.java
similarity index 84%
rename from
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAJobRunOnMinioS3StoreITCase.java
rename to
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAJobRunOnSeaweedFsS3StoreITCase.java
index 95c1d33f473..d047d36f2d0 100644
---
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAJobRunOnMinioS3StoreITCase.java
+++
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/HAJobRunOnSeaweedFsS3StoreITCase.java
@@ -44,20 +44,21 @@ import static
org.apache.flink.shaded.guava33.com.google.common.base.Predicates.
import static org.assertj.core.api.Assertions.assertThat;
/**
- * {@code HAJobRunOnMinioS3StoreITCase} covers a job run where the HA data is
stored in Minio. The
- * implementation verifies whether the {@code JobResult} was written into the
FileSystem-backed
- * {@code JobResultStore}.
+ * {@code HAJobRunOnSeaweedFsS3StoreITCase} covers a job run where the HA data
is stored in
+ * SeaweedFs. The implementation verifies whether the {@code JobResult} was
written into the
+ * FileSystem-backed {@code JobResultStore}.
*/
-public abstract class HAJobRunOnMinioS3StoreITCase extends
AbstractHAJobRunITCase {
+public abstract class HAJobRunOnSeaweedFsS3StoreITCase extends
AbstractHAJobRunITCase {
private static final String CLUSTER_ID = "test-cluster";
private static final String JOB_RESULT_STORE_FOLDER = "jrs";
@RegisterExtension
@Order(2)
- private static final
AllCallbackWrapper<TestContainerExtension<MinioTestContainer>>
- MINIO_EXTENSION =
- new AllCallbackWrapper<>(new
TestContainerExtension<>(MinioTestContainer::new));
+ private static final
AllCallbackWrapper<TestContainerExtension<SeaweedFsTestContainer>>
+ SEAWEEDFS_EXTENSION =
+ new AllCallbackWrapper<>(
+ new
TestContainerExtension<>(SeaweedFsTestContainer::new));
@RegisterExtension
@Order(3)
@@ -71,19 +72,19 @@ public abstract class HAJobRunOnMinioS3StoreITCase extends
AbstractHAJobRunITCas
.build();
});
- private static MinioTestContainer getMinioContainer() {
- return MINIO_EXTENSION.getCustomExtension().getTestContainer();
+ private static SeaweedFsTestContainer getSeaweedFsContainer() {
+ return SEAWEEDFS_EXTENSION.getCustomExtension().getTestContainer();
}
private static String createS3URIWithSubPath(String... subfolders) {
- return getMinioContainer().getS3UriForDefaultBucket() +
createSubPath(subfolders);
+ return getSeaweedFsContainer().getS3UriForDefaultBucket() +
createSubPath(subfolders);
}
private static List<S3ObjectSummary> getObjectsFromJobResultStore() {
- return getMinioContainer()
+ return getSeaweedFsContainer()
.getClient()
.listObjects(
- getMinioContainer().getDefaultBucketName(),
+ getSeaweedFsContainer().getDefaultBucketName(),
createSubPath(CLUSTER_ID, JOB_RESULT_STORE_FOLDER))
.getObjectSummaries();
}
@@ -96,7 +97,7 @@ public abstract class HAJobRunOnMinioS3StoreITCase extends
AbstractHAJobRunITCas
private static Configuration createConfiguration() {
final Configuration config = new Configuration();
- getMinioContainer().setS3ConfigOptions(config);
+ getSeaweedFsContainer().setS3ConfigOptions(config);
// JobResultStore configuration
config.set(JobResultStoreOptions.DELETE_ON_COMMIT, Boolean.FALSE);
@@ -136,7 +137,7 @@ public abstract class HAJobRunOnMinioS3StoreITCase extends
AbstractHAJobRunITCas
.matches(not(FileSystemJobResultStore::hasValidDirtyJobResultStoreEntryExtension));
final String objContent =
- getMinioContainer()
+ getSeaweedFsContainer()
.getClient()
.getObjectAsString(objRef.getBucketName(),
objRef.getKey());
assertThat(objContent).contains(ApplicationStatus.SUCCEEDED.name());
diff --git
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/S5CmdOnMinioITCase.java
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/S5CmdOnSeaweedFsITCase.java
similarity index 93%
rename from
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/S5CmdOnMinioITCase.java
rename to
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/S5CmdOnSeaweedFsITCase.java
index cefcc3f1f81..8d7d469b279 100644
---
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/S5CmdOnMinioITCase.java
+++
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/S5CmdOnSeaweedFsITCase.java
@@ -73,20 +73,21 @@ import static
org.apache.flink.util.Preconditions.checkState;
import static org.assertj.core.api.Assertions.assertThat;
/**
- * {@code HAJobRunOnMinioS3StoreITCase} covers a job run where the HA data is
stored in Minio. The
- * implementation verifies whether the {@code JobResult} was written into the
FileSystem-backed
- * {@code JobResultStore}.
+ * {@code S5CmdOnSeaweedFsITCase} verifies that Flink uses the configured
s5cmd binary for S3 state
+ * transfers (e.g. downloading RocksDB state on recovery) when running against
a SeaweedFs-backed S3
+ * store.
*/
@ExtendWith(TestLoggerExtension.class)
-public abstract class S5CmdOnMinioITCase {
+public abstract class S5CmdOnSeaweedFsITCase {
private static final int CHECKPOINT_INTERVAL = 100;
@RegisterExtension
@Order(1)
- private static final
AllCallbackWrapper<TestContainerExtension<MinioTestContainer>>
- MINIO_EXTENSION =
- new AllCallbackWrapper<>(new
TestContainerExtension<>(MinioTestContainer::new));
+ private static final
AllCallbackWrapper<TestContainerExtension<SeaweedFsTestContainer>>
+ SEAWEEDFS_EXTENSION =
+ new AllCallbackWrapper<>(
+ new
TestContainerExtension<>(SeaweedFsTestContainer::new));
@RegisterExtension
@Order(2)
@@ -103,17 +104,17 @@ public abstract class S5CmdOnMinioITCase {
private static Configuration createConfiguration() {
final Configuration config = new Configuration();
- getMinioContainer().setS3ConfigOptions(config);
+ getSeaweedFsContainer().setS3ConfigOptions(config);
File credentialsFile = new File(temporaryDirectory, "credentials");
try {
// It looks like on the CI machines s5cmd by default is using some
other default
// authentication mechanism, that takes precedence over passing
secret and access keys
// via environment variables. For example maybe there exists a
credentials file in the
- // default location with secrets from the S3, not MinIO. To
circumvent it, lets use our
- // own credentials file with secrets for MinIO.
+ // default location with secrets from the S3, not SeaweedFs. To
circumvent it, lets use
+ // our own credentials file with secrets for SeaweedFs.
checkState(credentialsFile.createNewFile());
- getMinioContainer().writeCredentialsFile(credentialsFile);
+ getSeaweedFsContainer().writeCredentialsFile(credentialsFile);
config.set(
S5CMD_EXTRA_ARGS,
S5CMD_EXTRA_ARGS.defaultValue()
@@ -132,8 +133,8 @@ public abstract class S5CmdOnMinioITCase {
@TempDir public static File temporaryDirectory;
- private static MinioTestContainer getMinioContainer() {
- return MINIO_EXTENSION.getCustomExtension().getTestContainer();
+ private static SeaweedFsTestContainer getSeaweedFsContainer() {
+ return SEAWEEDFS_EXTENSION.getCustomExtension().getTestContainer();
}
@BeforeAll
@@ -342,7 +343,7 @@ public abstract class S5CmdOnMinioITCase {
}
private static String createS3URIWithSubPath(String... subfolders) {
- return getMinioContainer().getS3UriForDefaultBucket() +
createSubPath(subfolders);
+ return getSeaweedFsContainer().getS3UriForDefaultBucket() +
createSubPath(subfolders);
}
private static String createSubPath(String... subfolders) {
diff --git
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/MinioTestContainer.java
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/SeaweedFsTestContainer.java
similarity index 83%
rename from
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/MinioTestContainer.java
rename to
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/SeaweedFsTestContainer.java
index 162bf1cadd2..a1d8ceed187 100644
---
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/MinioTestContainer.java
+++
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/SeaweedFsTestContainer.java
@@ -39,38 +39,39 @@ import java.io.IOException;
import java.time.Duration;
import java.util.Locale;
-/** {@code MinioTestContainer} provides a {@code Minio} test instance. */
-class MinioTestContainer extends GenericContainer<MinioTestContainer> {
+/** {@code SeaweedFsTestContainer} provides a {@code SeaweedFs} test instance.
*/
+class SeaweedFsTestContainer extends GenericContainer<SeaweedFsTestContainer> {
- private static final int DEFAULT_PORT = 9000;
+ private static final int DEFAULT_PORT = 8333;
- private static final String MINIO_ACCESS_KEY = "MINIO_ROOT_USER";
- private static final String MINIO_SECRET_KEY = "MINIO_ROOT_PASSWORD";
+ private static final String AWS_ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID";
+ private static final String AWS_SECRET_ACCESS_KEY =
"AWS_SECRET_ACCESS_KEY";
private static final String DEFAULT_STORAGE_DIRECTORY = "/data";
- private static final String HEALTH_ENDPOINT = "/minio/health/ready";
+ private static final String HEALTH_ENDPOINT = "/healthz";
private final String accessKey;
private final String secretKey;
private final String defaultBucketName;
- public MinioTestContainer() {
+ public SeaweedFsTestContainer() {
this(randomString("bucket", 6));
}
- public MinioTestContainer(String defaultBucketName) {
- super(DockerImageVersions.MINIO);
+ public SeaweedFsTestContainer(String defaultBucketName) {
+ super(DockerImageVersions.SEAWEEDFS);
this.accessKey = randomString("accessKey", 10);
// secrets must have at least 8 characters
this.secretKey = randomString("secret", 10);
this.defaultBucketName = Preconditions.checkNotNull(defaultBucketName);
- withNetworkAliases(randomString("minio", 6));
+ withNetworkAliases(randomString("seaweedfs", 6));
addExposedPort(DEFAULT_PORT);
- withEnv(MINIO_ACCESS_KEY, this.accessKey);
- withEnv(MINIO_SECRET_KEY, this.secretKey);
- withCommand("server", DEFAULT_STORAGE_DIRECTORY);
+ withEnv(AWS_ACCESS_KEY_ID, this.accessKey);
+ withEnv(AWS_SECRET_ACCESS_KEY, this.secretKey);
+ withCommand(
+ "server", "-s3", "-s3.port=" + DEFAULT_PORT, "-dir=" +
DEFAULT_STORAGE_DIRECTORY);
setWaitStrategy(
new HttpWaitStrategy()
.forPort(DEFAULT_PORT)
@@ -91,7 +92,7 @@ class MinioTestContainer extends
GenericContainer<MinioTestContainer> {
return String.format("%s-%s", prefix,
Base58.randomString(length).toLowerCase(Locale.ROOT));
}
- /** Creates {@link AmazonS3} client for accessing the {@code Minio}
instance. */
+ /** Creates {@link AmazonS3} client for accessing the {@code SeaweedFs}
instance. */
public AmazonS3 getClient() {
return AmazonS3Client.builder()
.withCredentials(
@@ -109,9 +110,9 @@ class MinioTestContainer extends
GenericContainer<MinioTestContainer> {
}
/**
- * Initializes the Minio instance (i.e. creating the default bucket and
initializing Flink's
+ * Initializes the SeaweedFs instance (i.e. creating the default bucket
and initializing Flink's
* FileSystems). Additionally, the passed Flink {@link Configuration} is
extended by all
- * relevant parameter to access the {@code Minio} instance.
+ * relevant parameter to access the {@code SeaweedFs} instance.
*/
public void setS3ConfigOptions(Configuration config) {
config.set(AbstractS3FileSystemFactory.ENDPOINT, getHttpEndpoint());
diff --git
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/MinioTestContainerTest.java
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/SeaweedFsTestContainerTest.java
similarity index 89%
rename from
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/MinioTestContainerTest.java
rename to
flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/SeaweedFsTestContainerTest.java
index fd8e48c86b7..3e82b6f0234 100644
---
a/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/MinioTestContainerTest.java
+++
b/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/SeaweedFsTestContainerTest.java
@@ -35,22 +35,22 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
/**
- * {@code MinioTestContainerTest} tests some basic functionality provided by
{@link
- * MinioTestContainer}.
+ * {@code SeaweedFsTestContainerTest} tests some basic functionality provided
by {@link
+ * SeaweedFsTestContainer}.
*/
-class MinioTestContainerTest {
+class SeaweedFsTestContainerTest {
private static final String DEFAULT_BUCKET_NAME = "test-bucket";
@RegisterExtension
- private static final
EachCallbackWrapper<TestContainerExtension<MinioTestContainer>>
- MINIO_EXTENSION =
+ private static final
EachCallbackWrapper<TestContainerExtension<SeaweedFsTestContainer>>
+ SEAWEEDFS_EXTENSION =
new EachCallbackWrapper<>(
new TestContainerExtension<>(
- () -> new
MinioTestContainer(DEFAULT_BUCKET_NAME)));
+ () -> new
SeaweedFsTestContainer(DEFAULT_BUCKET_NAME)));
- private static MinioTestContainer getTestContainer() {
- return MINIO_EXTENSION.getCustomExtension().getTestContainer();
+ private static SeaweedFsTestContainer getTestContainer() {
+ return SEAWEEDFS_EXTENSION.getCustomExtension().getTestContainer();
}
private static AmazonS3 getClient() {
diff --git
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAApplicationRunOnHadoopS3FileSystemITCase.java
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAApplicationRunOnHadoopS3FileSystemITCase.java
index cd4bb089ff2..3db2cdfe39c 100644
---
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAApplicationRunOnHadoopS3FileSystemITCase.java
+++
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAApplicationRunOnHadoopS3FileSystemITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.fs.s3hadoop;
-import org.apache.flink.fs.s3.common.HAApplicationRunOnMinioS3StoreITCase;
+import org.apache.flink.fs.s3.common.HAApplicationRunOnSeaweedFsS3StoreITCase;
-/** Runs the {@link HAApplicationRunOnMinioS3StoreITCase} on the Hadoop S3
file system. */
-class HAApplicationRunOnHadoopS3FileSystemITCase extends
HAApplicationRunOnMinioS3StoreITCase {}
+/** Runs the {@link HAApplicationRunOnSeaweedFsS3StoreITCase} on the Hadoop S3
file system. */
+class HAApplicationRunOnHadoopS3FileSystemITCase extends
HAApplicationRunOnSeaweedFsS3StoreITCase {}
diff --git
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAJobRunOnHadoopS3FileSystemITCase.java
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAJobRunOnHadoopS3FileSystemITCase.java
index 22ec2ffe2b0..107235cf09a 100644
---
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAJobRunOnHadoopS3FileSystemITCase.java
+++
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HAJobRunOnHadoopS3FileSystemITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.fs.s3hadoop;
-import org.apache.flink.fs.s3.common.HAJobRunOnMinioS3StoreITCase;
+import org.apache.flink.fs.s3.common.HAJobRunOnSeaweedFsS3StoreITCase;
-/** Runs the {@link HAJobRunOnMinioS3StoreITCase} on the Hadoop S3 file
system. */
-class HAJobRunOnHadoopS3FileSystemITCase extends HAJobRunOnMinioS3StoreITCase
{}
+/** Runs the {@link HAJobRunOnSeaweedFsS3StoreITCase} on the Hadoop S3 file
system. */
+class HAJobRunOnHadoopS3FileSystemITCase extends
HAJobRunOnSeaweedFsS3StoreITCase {}
diff --git
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/S5CmdOnHadoopS3FileSystemITCase.java
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/S5CmdOnHadoopS3FileSystemITCase.java
index bae4d6c0b30..ea596b5ec5c 100644
---
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/S5CmdOnHadoopS3FileSystemITCase.java
+++
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/S5CmdOnHadoopS3FileSystemITCase.java
@@ -18,8 +18,7 @@
package org.apache.flink.fs.s3hadoop;
-import org.apache.flink.fs.s3.common.HAJobRunOnMinioS3StoreITCase;
-import org.apache.flink.fs.s3.common.S5CmdOnMinioITCase;
+import org.apache.flink.fs.s3.common.S5CmdOnSeaweedFsITCase;
-/** Runs the {@link HAJobRunOnMinioS3StoreITCase} on the Hadoop S3 file
system. */
-public class S5CmdOnHadoopS3FileSystemITCase extends S5CmdOnMinioITCase {}
+/** Runs the {@link S5CmdOnSeaweedFsITCase} on the Hadoop S3 file system. */
+public class S5CmdOnHadoopS3FileSystemITCase extends S5CmdOnSeaweedFsITCase {}
diff --git a/flink-filesystems/flink-s3-fs-native/README.md
b/flink-filesystems/flink-s3-fs-native/README.md
index a3dc5c866c5..96ac27a907a 100644
--- a/flink-filesystems/flink-s3-fs-native/README.md
+++ b/flink-filesystems/flink-s3-fs-native/README.md
@@ -63,8 +63,8 @@ input.sinkTo(FileSink.forRowFormat(new
Path("s3://my-bucket/output"),
| s3.access-key | (none) | AWS access key (fallback key: `s3.access.key`) |
| s3.secret-key | (none) | AWS secret key (fallback key: `s3.secret.key`) |
| s3.region | (auto-detect) | AWS region (auto-detected via AWS_REGION,
~/.aws/config, EC2 metadata) |
-| s3.endpoint | (none) | Custom S3 endpoint (for MinIO, LocalStack, etc.) |
-| s3.path-style-access | false | Use path-style access for S3 (required by
most S3-compatible servers such as MinIO; fallback key: `s3.path.style.access`)
|
+| s3.endpoint | (none) | Custom S3 endpoint (for SeaweedFS, LocalStack, etc.) |
+| s3.path-style-access | false | Use path-style access for S3 (required by
most S3-compatible servers such as SeaweedFS; fallback key:
`s3.path.style.access`) |
| s3.chunked-encoding.enabled | true | Enable chunked encoding for S3
requests. Disable for S3-compatible servers that do not support it |
| s3.checksum-validation.enabled | true | Enable checksum validation for S3
requests. Disable for S3-compatible servers that do not support it |
| s3.upload.min.part.size | 5242880 | Minimum part size for multipart uploads
(5MB to 5GB) |
@@ -271,20 +271,20 @@ s3.assume-role.session-duration: 3600 # 1 hour
}
```
-## MinIO and S3-Compatible Storage
+## SeaweedFS and S3-Compatible Storage
-For S3-compatible servers (MinIO, LocalStack, Ceph RGW, etc.), set the
endpoint plus any compatibility flags the server requires. These flags are not
auto-detected from the endpoint value — the defaults target AWS S3 and must be
overridden explicitly:
+For S3-compatible servers (SeaweedFS, LocalStack, Ceph RGW, etc.), set the
endpoint plus any compatibility flags the server requires. These flags are not
auto-detected from the endpoint value — the defaults target AWS S3 and must be
overridden explicitly:
```yaml
-s3.access-key: minioadmin
-s3.secret-key: minioadmin
-s3.endpoint: http://localhost:9000
+s3.endpoint: http://localhost:8333
+fs.s3.aws.credentials.provider: AnonymousCredentialsProvider
-# Required: MinIO does not support virtual-hosted-style addressing.
+# Required: SeaweedFS serves the S3 API in path-style and does not support
+# virtual-hosted-style addressing by default.
s3.path-style-access: true
-# Required: MinIO does not support AWS chunked encoding or AWS-style
-# checksum trailers used by the SDK by default.
+# Required: many S3-compatible servers do not support AWS chunked encoding or
+# AWS-style checksum trailers used by the SDK by default.
s3.chunked-encoding.enabled: false
s3.checksum-validation.enabled: false
```
@@ -402,25 +402,20 @@ Key classes:
mvn clean package
```
-## Testing with MinIO
+## Testing with SeaweedFS
```bash
-# Start MinIO
-docker run -d -p 9000:9000 -p 9001:9001 \
- -e "MINIO_ROOT_USER=minioadmin" \
- -e "MINIO_ROOT_PASSWORD=minioadmin" \
- minio/minio server /data --console-address ":9001"
+# Start SeaweedFS
+docker run -d --name seaweedfs -p 8333:8333 chrislusf/seaweedfs server -s3
-dir=/data
# Create bucket
-mc alias set local http://localhost:9000 minioadmin minioadmin
-mc mb local/test-bucket
+docker exec -i seaweedfs sh -c 'echo "s3.bucket.create -name test-bucket" |
weed shell'
-# Run Flink with MinIO
+# Run Flink with SeaweedFS
export FLINK_HOME=/path/to/flink
cat > $FLINK_HOME/conf/config.yaml <<EOF
-s3.endpoint: http://localhost:9000
-s3.access-key: minioadmin
-s3.secret-key: minioadmin
+s3.endpoint: http://localhost:8333
+fs.s3.aws.credentials.provider: AnonymousCredentialsProvider
s3.path-style-access: true
s3.chunked-encoding.enabled: false
s3.checksum-validation.enabled: false
diff --git
a/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAApplicationRunOnPrestoS3FileSystemITCase.java
b/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAApplicationRunOnPrestoS3FileSystemITCase.java
index 444c6c6a4d3..78d4e496a78 100644
---
a/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAApplicationRunOnPrestoS3FileSystemITCase.java
+++
b/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAApplicationRunOnPrestoS3FileSystemITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.fs.s3presto;
-import org.apache.flink.fs.s3.common.HAApplicationRunOnMinioS3StoreITCase;
+import org.apache.flink.fs.s3.common.HAApplicationRunOnSeaweedFsS3StoreITCase;
-/** Runs the {@link HAApplicationRunOnMinioS3StoreITCase} on the Presto S3
file system. */
-class HAApplicationRunOnPrestoS3FileSystemITCase extends
HAApplicationRunOnMinioS3StoreITCase {}
+/** Runs the {@link HAApplicationRunOnSeaweedFsS3StoreITCase} on the Presto S3
file system. */
+class HAApplicationRunOnPrestoS3FileSystemITCase extends
HAApplicationRunOnSeaweedFsS3StoreITCase {}
diff --git
a/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAJobRunOnPrestoS3FileSystemITCase.java
b/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAJobRunOnPrestoS3FileSystemITCase.java
index 97ec228b69b..5171aac7275 100644
---
a/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAJobRunOnPrestoS3FileSystemITCase.java
+++
b/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/HAJobRunOnPrestoS3FileSystemITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.fs.s3presto;
-import org.apache.flink.fs.s3.common.HAJobRunOnMinioS3StoreITCase;
+import org.apache.flink.fs.s3.common.HAJobRunOnSeaweedFsS3StoreITCase;
-/** Runs the {@link HAJobRunOnMinioS3StoreITCase} on the Presto S3 file
system. */
-class HAJobRunOnPrestoS3FileSystemITCase extends HAJobRunOnMinioS3StoreITCase
{}
+/** Runs the {@link HAJobRunOnSeaweedFsS3StoreITCase} on the Presto S3 file
system. */
+class HAJobRunOnPrestoS3FileSystemITCase extends
HAJobRunOnSeaweedFsS3StoreITCase {}
diff --git
a/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/S5CmdOnPrestoS3FileSystemITCase.java
b/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/S5CmdOnPrestoS3FileSystemITCase.java
index 4ced9d34910..cd5fb39b475 100644
---
a/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/S5CmdOnPrestoS3FileSystemITCase.java
+++
b/flink-filesystems/flink-s3-fs-presto/src/test/java/org/apache/flink/fs/s3presto/S5CmdOnPrestoS3FileSystemITCase.java
@@ -18,8 +18,7 @@
package org.apache.flink.fs.s3presto;
-import org.apache.flink.fs.s3.common.HAJobRunOnMinioS3StoreITCase;
-import org.apache.flink.fs.s3.common.S5CmdOnMinioITCase;
+import org.apache.flink.fs.s3.common.S5CmdOnSeaweedFsITCase;
-/** Runs the {@link HAJobRunOnMinioS3StoreITCase} on the Presto S3 file
system. */
-public class S5CmdOnPrestoS3FileSystemITCase extends S5CmdOnMinioITCase {}
+/** Runs the {@link S5CmdOnSeaweedFsITCase} on the Presto S3 file system. */
+public class S5CmdOnPrestoS3FileSystemITCase extends S5CmdOnSeaweedFsITCase {}
diff --git
a/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/util/DockerImageVersions.java
b/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/util/DockerImageVersions.java
index f781262669c..655f4e3b466 100644
---
a/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/util/DockerImageVersions.java
+++
b/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/util/DockerImageVersions.java
@@ -36,7 +36,7 @@ public class DockerImageVersions {
public static final String LOCALSTACK = "localstack/localstack:0.13.3";
- public static final String MINIO =
"minio/minio:RELEASE.2022-02-07T08-17-33Z";
+ public static final String SEAWEEDFS = "chrislusf/seaweedfs:4.34";
public static final String ZOOKEEPER = "zookeeper:3.4.14";