This is an automated email from the ASF dual-hosted git repository. xtsong pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/flink-agents.git
commit 393b9ec946b9008aaf7c99dc0c036a51c80832b4 Author: WenjinXie <[email protected]> AuthorDate: Thu Nov 13 16:02:34 2025 +0800 [infra] Run e2e tests in ci. --- .github/workflows/ci.yml | 61 ++++++++++++++++++++-- .../pom.xml | 2 +- .../pom.xml | 2 +- .../test/ChatModelIntegrationAgent.java | 0 .../integration/test/ChatModelIntegrationTest.java | 0 .../test/EmbeddingIntegrationAgent.java | 0 .../integration/test/EmbeddingIntegrationTest.java | 0 .../integration/test/FlinkIntegrationAgent.java | 0 .../integration/test/FlinkIntegrationTest.java | 0 .../agents/integration/test/MemoryObjectAgent.java | 0 .../agents/integration/test/MemoryObjectTest.java | 0 .../integration/test/OllamaPreparationUtils.java | 0 .../agents/integration/test/ReActAgentTest.java | 0 .../test_from_datastream_to_datastream.txt | 0 .../ground-truth/test_from_datastream_to_table.txt | 0 .../ground-truth/test_from_table_to_table.txt | 0 .../src/test/resources/log4j2-test.properties | 0 .../src/test/resources/ollama_pull_model.sh | 0 e2e-test/pom.xml | 4 +- .../{mcp_test => e2e_tests_mcp}/__init__.py | 0 .../{mcp_test => e2e_tests_mcp}/mcp_server.py | 0 .../{mcp_test => e2e_tests_mcp}/mcp_test.py | 0 tools/build.sh | 36 +++++++------ tools/e2e.sh | 2 +- tools/ut.sh | 26 +++++++-- 25 files changed, 104 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33b366c..e41b989 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,7 +49,7 @@ jobs: run: ./tools/lint.sh -c java_tests: - name: java tests on ${{ matrix.os }} + name: ut-java [${{ matrix.os }}] runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -66,7 +66,7 @@ jobs: run: tools/ut.sh -j python_tests: - name: python tests on ${{ matrix.os }} ${{ matrix.python-version}} + name: ut-python [${{ matrix.os }}] [${{ matrix.python-version}}] runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -91,8 +91,59 @@ jobs: - name: Run Python Tests run: tools/ut.sh -p - e2e_tests: - name: e2e tests on ${{ matrix.os }} ${{ matrix.python-version}} + python_it_tests: + name: it-python [${{ matrix.os }}] [${{ matrix.python-version}}] + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ 'ubuntu-latest' ] + python-version: [ '3.11' ] + steps: + - uses: actions/checkout@v4 + - name: Install java + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'adopt' + - name: Install python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + version: "latest" + - name: Install flink-agents + run: bash tools/build.sh + - name: Install ollama + run: bash tools/start_ollama_server.sh + - name: Run Python IT + run: tools/ut.sh -p -e + + java_it_tests: + name: it-java [${{ matrix.os }}] + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ 'ubuntu-latest' ] + steps: + - uses: actions/checkout@v4 + - name: Install java + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'adopt' + - name: Install flink-agents Java + run: bash tools/build.sh -j + - name: Install ollama + run: bash tools/start_ollama_server.sh + - name: Run Java IT + run: tools/ut.sh -j -e + + cross_language_tests: + name: cross-language [${{ matrix.os }}] [${{ matrix.python-version}}] runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -117,4 +168,4 @@ jobs: - name: Build flink-agents run: bash tools/build.sh - name: Run e2e tests - run: bash tools/e2e.sh + run: bash tools/e2e.sh \ No newline at end of file diff --git a/e2e-test/agent-plan-compatibility-test/pom.xml b/e2e-test/flink-agents-end-to-end-tests-agent-plan-compatibility/pom.xml similarity index 96% rename from e2e-test/agent-plan-compatibility-test/pom.xml rename to e2e-test/flink-agents-end-to-end-tests-agent-plan-compatibility/pom.xml index 4639d0c..2a76867 100644 --- a/e2e-test/agent-plan-compatibility-test/pom.xml +++ b/e2e-test/flink-agents-end-to-end-tests-agent-plan-compatibility/pom.xml @@ -25,7 +25,7 @@ under the License. <version>0.2-SNAPSHOT</version> </parent> - <artifactId>flink-agents-agent-plan-compatibility-tests</artifactId> + <artifactId>flink-agents-end-to-end-tests-agent-plan-compatibility</artifactId> <name>Flink Agents : E2E Tests: Agent Plan Compatibility</name> <dependencies> diff --git a/e2e-test/integration-test/pom.xml b/e2e-test/flink-agents-end-to-end-tests-integration/pom.xml similarity index 97% rename from e2e-test/integration-test/pom.xml rename to e2e-test/flink-agents-end-to-end-tests-integration/pom.xml index 1551595..b3edb3e 100644 --- a/e2e-test/integration-test/pom.xml +++ b/e2e-test/flink-agents-end-to-end-tests-integration/pom.xml @@ -25,7 +25,7 @@ under the License. <version>0.2-SNAPSHOT</version> </parent> - <artifactId>flink-agents-integration-tests</artifactId> + <artifactId>flink-agents-end-to-end-tests-integration</artifactId> <name>Flink Agents : E2E Tests: Integration</name> <dependencies> diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationAgent.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationTest.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationTest.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationTest.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ChatModelIntegrationTest.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationAgent.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationTest.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationTest.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationTest.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/EmbeddingIntegrationTest.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationAgent.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationAgent.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationAgent.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationAgent.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationTest.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationTest.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationTest.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/FlinkIntegrationTest.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectAgent.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectAgent.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectAgent.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectAgent.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectTest.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectTest.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectTest.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/MemoryObjectTest.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/OllamaPreparationUtils.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/OllamaPreparationUtils.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/OllamaPreparationUtils.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/OllamaPreparationUtils.java diff --git a/e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java similarity index 100% rename from e2e-test/integration-test/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/java/org/apache/flink/agents/integration/test/ReActAgentTest.java diff --git a/e2e-test/integration-test/src/test/resources/ground-truth/test_from_datastream_to_datastream.txt b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ground-truth/test_from_datastream_to_datastream.txt similarity index 100% rename from e2e-test/integration-test/src/test/resources/ground-truth/test_from_datastream_to_datastream.txt rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ground-truth/test_from_datastream_to_datastream.txt diff --git a/e2e-test/integration-test/src/test/resources/ground-truth/test_from_datastream_to_table.txt b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ground-truth/test_from_datastream_to_table.txt similarity index 100% rename from e2e-test/integration-test/src/test/resources/ground-truth/test_from_datastream_to_table.txt rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ground-truth/test_from_datastream_to_table.txt diff --git a/e2e-test/integration-test/src/test/resources/ground-truth/test_from_table_to_table.txt b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ground-truth/test_from_table_to_table.txt similarity index 100% rename from e2e-test/integration-test/src/test/resources/ground-truth/test_from_table_to_table.txt rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ground-truth/test_from_table_to_table.txt diff --git a/e2e-test/integration-test/src/test/resources/log4j2-test.properties b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/log4j2-test.properties similarity index 100% rename from e2e-test/integration-test/src/test/resources/log4j2-test.properties rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/log4j2-test.properties diff --git a/e2e-test/integration-test/src/test/resources/ollama_pull_model.sh b/e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ollama_pull_model.sh similarity index 100% rename from e2e-test/integration-test/src/test/resources/ollama_pull_model.sh rename to e2e-test/flink-agents-end-to-end-tests-integration/src/test/resources/ollama_pull_model.sh diff --git a/e2e-test/pom.xml b/e2e-test/pom.xml index 7fc91d9..5d5683d 100644 --- a/e2e-test/pom.xml +++ b/e2e-test/pom.xml @@ -29,7 +29,7 @@ under the License. <packaging>pom</packaging> <name>Flink Agents : E2E Tests: </name> <modules> - <module>agent-plan-compatibility-test</module> - <module>integration-test</module> + <module>flink-agents-end-to-end-tests-agent-plan-compatibility</module> + <module>flink-agents-end-to-end-tests-integration</module> </modules> </project> \ No newline at end of file diff --git a/python/flink_agents/e2e_tests/mcp_test/__init__.py b/python/flink_agents/e2e_tests/e2e_tests_mcp/__init__.py similarity index 100% rename from python/flink_agents/e2e_tests/mcp_test/__init__.py rename to python/flink_agents/e2e_tests/e2e_tests_mcp/__init__.py diff --git a/python/flink_agents/e2e_tests/mcp_test/mcp_server.py b/python/flink_agents/e2e_tests/e2e_tests_mcp/mcp_server.py similarity index 100% rename from python/flink_agents/e2e_tests/mcp_test/mcp_server.py rename to python/flink_agents/e2e_tests/e2e_tests_mcp/mcp_server.py diff --git a/python/flink_agents/e2e_tests/mcp_test/mcp_test.py b/python/flink_agents/e2e_tests/e2e_tests_mcp/mcp_test.py similarity index 100% rename from python/flink_agents/e2e_tests/mcp_test/mcp_test.py rename to python/flink_agents/e2e_tests/e2e_tests_mcp/mcp_test.py diff --git a/tools/build.sh b/tools/build.sh index 4c070a9..435ce56 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -17,11 +17,15 @@ # Parse command-line arguments build_java=true +build_python=true while [[ "$#" -gt 0 ]]; do case $1 in -p|--python) build_java=false ;; + -j|--java) + build_python=false + ;; *) echo "Error: Unknown option '$1'" >&2 show_help @@ -38,23 +42,25 @@ PROJECT_ROOT="${BASE_DIR}/../" # build java if $build_java; then mvn --version - mvn clean package -DskipTests -B + mvn clean install -DskipTests -B fi -# copy flink-agents-dist jar to python lib -PYTHON_LIB_DIR=${PROJECT_ROOT}/python/flink_agents/lib -rm -rf ${PYTHON_LIB_DIR} -mkdir -p ${PYTHON_LIB_DIR} +if $build_python; then + # copy flink-agents-dist jar to python lib + PYTHON_LIB_DIR=${PROJECT_ROOT}/python/flink_agents/lib + rm -rf ${PYTHON_LIB_DIR} + mkdir -p ${PYTHON_LIB_DIR} -PROJECT_VERSION=$(sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' pom.xml | head -n 2 | tail -n 1) -cp "${PROJECT_ROOT}/dist/target/flink-agents-dist-${PROJECT_VERSION}.jar" ${PYTHON_LIB_DIR} + PROJECT_VERSION=$(sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' pom.xml | head -n 2 | tail -n 1) + cp "${PROJECT_ROOT}/dist/target/flink-agents-dist-${PROJECT_VERSION}.jar" ${PYTHON_LIB_DIR} -# build python -cd python -rm -rf dist/ # Clean old build artifacts before building -pip install uv -uv sync --extra dev -uv run python -m build -uv pip install dist/*.whl + # build python + cd python + rm -rf dist/ # Clean old build artifacts before building + pip install uv + uv sync --extra dev + uv run python -m build + uv pip install dist/*.whl -rm -rf ${PYTHON_LIB_DIR} \ No newline at end of file + rm -rf ${PYTHON_LIB_DIR} +fi \ No newline at end of file diff --git a/tools/e2e.sh b/tools/e2e.sh index 939d4bc..103d024 100755 --- a/tools/e2e.sh +++ b/tools/e2e.sh @@ -112,7 +112,7 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" project_root="$(cd "$script_dir/.." && pwd)" # Find jar file more robustly -jar_files=("$project_root"/e2e-test/agent-plan-compatibility-test/target/flink-agents-agent-plan-compatibility-tests-*.jar) +jar_files=("$project_root"/e2e-test/flink-agents-end-to-end-tests-agent-plan-compatibility/target/flink-agents-end-to-end-tests-agent-plan-compatibility-*.jar) if [[ ${#jar_files[@]} -eq 0 ]] || [[ ! -f "${jar_files[0]}" ]]; then echo "Error: Could not find jar file in e2e-test/agent-plan-compatibility-test/target/" exit 1 diff --git a/tools/ut.sh b/tools/ut.sh index acb0307..18d459e 100755 --- a/tools/ut.sh +++ b/tools/ut.sh @@ -23,6 +23,7 @@ ROOT="$(cd "$( dirname "$0" )" && pwd)/.." # Default values run_java=true run_python=true +run_e2e=false verbose=false # Help information @@ -35,6 +36,7 @@ Usage: $0 [options] Options: -j, --java Run only Java tests -p, --python Run only Python tests + -e, --e2e Run e2e tests -b, --both Run both Java and Python tests (default) -v, --verbose Show verbose output -h, --help Display this help message @@ -67,6 +69,9 @@ while [[ "$#" -gt 0 ]]; do run_java=true run_python=true ;; + -e|--e2e) + run_e2e=true + ;; -v|--verbose) verbose=true ;; @@ -90,7 +95,11 @@ java_tests() { set +e echo "Executing Java test suite..." pushd "${ROOT}" - mvn -T16 --batch-mode --no-transfer-progress test + if $run_e2e; then + mvn -T16 --batch-mode --no-transfer-progress test -pl 'e2e-test/flink-agents-end-to-end-tests-integration' + else + mvn -T16 --batch-mode --no-transfer-progress test -pl '!e2e-test/flink-agents-end-to-end-tests-integration' + fi testcode=$? case $testcode in 0) # All tests passed @@ -128,11 +137,16 @@ python_tests() { if $verbose; then echo "Using uv for dependency management" fi - uv sync --extra test if $verbose; then echo "Running tests with uv..." fi - uv run pytest flink_agents + if $run_e2e; then + # There will be an individual build step before run e2e test for including java dist + uv run --no-sync pytest flink_agents -s -k "e2e_tests" + else + uv sync --extra test + uv run pytest flink_agents -k "not e2e_tests" + fi testcode=$? else if $verbose; then @@ -153,7 +167,11 @@ python_tests() { if $verbose; then echo "Running tests with pytest..." fi - pytest flink_agents + if $run_e2e; then + pytest flink_agents -k "e2e_tests" + else + pytest flink_agents -k "not e2e_tests" + fi testcode=$? fi
