diff --git a/.github/workflows/pd-store-ci.yml b/.github/workflows/pd-store-ci.yml index 29ac9c3ac8..62006794c7 100644 --- a/.github/workflows/pd-store-ci.yml +++ b/.github/workflows/pd-store-ci.yml @@ -107,12 +107,30 @@ jobs: run: | mvn clean package -U -Dmaven.javadoc.skip=true -Dmaven.test.skip=true -ntp --fail-at-end + - name: Check startup test prerequisites (PD) + id: pd-preflight + run: | + for tool in lsof curl java; do + if ! command -v "$tool" >/dev/null 2>&1; then + echo "can_run=false" >> "$GITHUB_OUTPUT" + echo "skip_reason=missing tool: $tool" >> "$GITHUB_OUTPUT" + exit 0 + fi + done + echo "can_run=true" >> "$GITHUB_OUTPUT" + - name: Run start-hugegraph-pd.sh foreground mode tests + if: steps.pd-preflight.outputs.can_run == 'true' run: | VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) PD_DIR=hugegraph-pd/apache-hugegraph-pd-$VERSION/ $TRAVIS_DIR/test-start-hugegraph-pd.sh $PD_DIR + - name: Startup tests skipped (missing prerequisites) + if: steps.pd-preflight.outputs.can_run == 'false' + run: | + echo "::notice::PD startup tests skipped — ${{ steps.pd-preflight.outputs.skip_reason }}" + - name: Prepare env and service run: | $TRAVIS_DIR/start-pd.sh @@ -169,12 +187,36 @@ jobs: run: | mvn clean package -U -Dmaven.javadoc.skip=true -Dmaven.test.skip=true -ntp --fail-at-end + - name: Check startup test prerequisites (Store) + id: store-preflight + run: | + for tool in lsof curl java; do + if ! command -v "$tool" >/dev/null 2>&1; then + echo "can_run=false" >> "$GITHUB_OUTPUT" + echo "skip_reason=missing tool: $tool" >> "$GITHUB_OUTPUT" + exit 0 + fi + done + LIMIT_N=$(ulimit -n) + if [[ "$LIMIT_N" != "unlimited" ]] && (( LIMIT_N < 1024 )); then + echo "can_run=false" >> "$GITHUB_OUTPUT" + echo "skip_reason=ulimit -n is $LIMIT_N (store requires >= 1024)" >> "$GITHUB_OUTPUT" + exit 0 + fi + echo "can_run=true" >> "$GITHUB_OUTPUT" + - name: Run start-hugegraph-store.sh foreground mode tests + if: steps.store-preflight.outputs.can_run == 'true' run: | VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) STORE_DIR=hugegraph-store/apache-hugegraph-store-$VERSION/ $TRAVIS_DIR/test-start-hugegraph-store.sh $STORE_DIR + - name: Startup tests skipped (missing prerequisites) + if: steps.store-preflight.outputs.can_run == 'false' + run: | + echo "::notice::Store startup tests skipped — ${{ steps.store-preflight.outputs.skip_reason }}" + - name: Prepare env and service run: | $TRAVIS_DIR/start-pd.sh diff --git a/.github/workflows/server-ci.yml b/.github/workflows/server-ci.yml index 20619797cc..2eb313c979 100644 --- a/.github/workflows/server-ci.yml +++ b/.github/workflows/server-ci.yml @@ -70,14 +70,32 @@ jobs: run: | mvn clean compile -U -Dmaven.javadoc.skip=true -ntp - - name: Run start-hugegraph.sh foreground mode tests + - name: Check startup test prerequisites + id: server-preflight if: ${{ env.BACKEND == 'rocksdb' }} + run: | + for tool in lsof crontab curl java; do + if ! command -v "$tool" >/dev/null 2>&1; then + echo "can_run=false" >> "$GITHUB_OUTPUT" + echo "skip_reason=missing tool: $tool" >> "$GITHUB_OUTPUT" + exit 0 + fi + done + echo "can_run=true" >> "$GITHUB_OUTPUT" + + - name: Run start-hugegraph.sh foreground mode tests + if: ${{ env.BACKEND == 'rocksdb' && steps.server-preflight.outputs.can_run == 'true' }} run: | mvn package -Dmaven.test.skip=true -pl hugegraph-server/hugegraph-dist -am -ntp VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) SERVER_DIR=hugegraph-server/apache-hugegraph-server-$VERSION/ $TRAVIS_DIR/test-start-hugegraph.sh $SERVER_DIR + - name: Startup tests skipped (missing prerequisites) + if: ${{ env.BACKEND == 'rocksdb' && steps.server-preflight.outputs.can_run == 'false' }} + run: | + echo "::notice::Server startup tests skipped — ${{ steps.server-preflight.outputs.skip_reason }}" + - name: Run unit test run: | $TRAVIS_DIR/run-unit-test.sh $BACKEND diff --git a/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-pd.sh b/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-pd.sh index db3428b13c..260e7f5711 100755 --- a/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-pd.sh +++ b/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-pd.sh @@ -132,7 +132,7 @@ fi for tool in lsof curl java; do if ! command -v "$tool" >/dev/null 2>&1; then echo "SKIP: required tool '$tool' not found — skipping test suite" - exit 0 + exit 77 fi done diff --git a/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-store.sh b/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-store.sh index 7da9323767..7e11da28dd 100755 --- a/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-store.sh +++ b/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph-store.sh @@ -113,7 +113,7 @@ fi for tool in lsof curl java; do if ! command -v "$tool" >/dev/null 2>&1; then echo "SKIP: required tool '$tool' not found — skipping test suite" - exit 0 + exit 77 fi done @@ -122,7 +122,7 @@ LIMIT_N=$(ulimit -n) if [[ "$LIMIT_N" != "unlimited" ]]; then if (( LIMIT_N < 1024 )); then echo "SKIP: ulimit -n is $LIMIT_N — store requires >= 1024. Run: ulimit -n 1024" - exit 0 + exit 77 fi fi diff --git a/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph.sh b/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph.sh index d2dd492fc9..353cab6518 100755 --- a/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph.sh +++ b/hugegraph-server/hugegraph-dist/src/assembly/travis/test-start-hugegraph.sh @@ -148,7 +148,7 @@ fi for tool in lsof crontab curl java; do if ! command -v "$tool" >/dev/null 2>&1; then echo "SKIP: required tool '$tool' not found — skipping test suite" - exit 0 + exit 77 fi done