@@ -383,6 +383,13 @@ jobs:
383383 path : velox/_build/debug/velox/exec/fuzzer/velox_spatial_join_fuzzer
384384 retention-days : ${{ env.RETENTION }}
385385
386+ - name : Upload local runner service runner
387+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
388+ with :
389+ name : local_runner_service_runner
390+ path : velox/_build/debug/velox/exec/fuzzer/velox_local_runner_service_runner
391+ retention-days : ${{ env.RETENTION }}
392+
386393 presto-fuzzer-run :
387394 name : Presto Fuzzer
388395 if : ${{ needs.compile.outputs.presto_bias != 'true' }}
@@ -459,6 +466,96 @@ jobs:
459466 path : |
460467 /tmp/fuzzer_repro
461468
469+ presto-fuzzer-with-local-runner-run :
470+ name : Presto Fuzzer with Local Runner
471+ if : ${{ needs.compile.outputs.presto_bias != 'true' }}
472+ runs-on : ubuntu-latest
473+ container : ghcr.io/facebookincubator/velox-dev:centos9
474+ needs : compile
475+ timeout-minutes : 120
476+ steps :
477+ - uses : dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
478+ if : github.event_name == 'pull_request'
479+ id : changes
480+ with :
481+ filters : |
482+ presto:
483+ - 'velox/expression/!(test)**'
484+ - 'velox/exec/!(test)**'
485+ - 'velox/common/!(test)**'
486+ - 'velox/core/!(test)**'
487+ - 'velox/vector/!(test)**'
488+
489+ - name : Set presto specific fuzzer duration
490+ env :
491+ # Run for 30 minutes instead of 15, when files relevant to presto are touched
492+ pr_duration : ${{ steps.changes.outputs.presto == 'true' && 1800 || 900 }}
493+ # Run for 60 minutes if its a scheduled run
494+ other_duration : ${{ inputs.duration || (github.event_name == 'push' && 1800 || 3600) }}
495+ is_pr : ${{ github.event_name == 'pull_request' }}
496+ run : |
497+ if [ "$is_pr" == "true" ]; then
498+ duration=$pr_duration
499+ else
500+ duration=$other_duration
501+ fi
502+
503+ echo "DURATION=$duration" >> $GITHUB_ENV
504+
505+ - name : Download presto fuzzer
506+ uses : actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
507+ with :
508+ name : presto
509+
510+ - name : Download local runner service runner
511+ uses : actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
512+ with :
513+ name : local_runner_service_runner
514+
515+ - name : Run Presto Fuzzer with Local Runner
516+ run : |
517+ mkdir -p /tmp/fuzzer_repro/logs/
518+ chmod -R 777 /tmp/fuzzer_repro
519+ chmod +x velox_expression_fuzzer_test
520+ chmod +x velox_local_runner_service_runner
521+ # Start LocalRunnerService in the background
522+ ./velox_local_runner_service_runner > /tmp/fuzzer_repro/logs/local_runner_service.log 2>&1 &
523+ LOCAL_RUNNER_PID=$!
524+ echo "Started LocalRunnerService with PID: ${LOCAL_RUNNER_PID}"
525+ # Sleep for 10 seconds to allow service to start
526+ sleep 10
527+ random_seed=${RANDOM}
528+ echo "Random seed: ${random_seed}"
529+ ./velox_expression_fuzzer_test \
530+ --seed ${random_seed} \
531+ --enable_variadic_signatures \
532+ --velox_fuzzer_enable_complex_types \
533+ --velox_fuzzer_enable_decimal_type \
534+ --lazy_vector_generation_ratio 0.2 \
535+ --common_dictionary_wraps_generation_ratio=0.3 \
536+ --velox_fuzzer_enable_column_reuse \
537+ --velox_fuzzer_enable_expression_reuse \
538+ --max_expression_trees_per_step 2 \
539+ --retry_with_try \
540+ --enable_dereference \
541+ --duration_sec $DURATION \
542+ --minloglevel=0 \
543+ --stderrthreshold=2 \
544+ --log_dir=/tmp/fuzzer_repro/logs \
545+ --repro_persist_path=/tmp/fuzzer_repro \
546+ --local_runner_service_url=http://127.0.0.1:9091 \
547+ && echo -e "\n\nFuzzer run finished successfully."
548+ # Stop the LocalRunnerService
549+ kill $LOCAL_RUNNER_PID || true
550+
551+ - name : Archive production artifacts
552+ if : ${{ !cancelled() }}
553+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
554+ with :
555+ name : presto-fuzzer-with-local-runner-failure-artifacts
556+ path : |
557+ /tmp/fuzzer_repro
558+
462559 presto-sot-fuzzer-run :
463560 name : Expression Fuzzer with Presto SOT
464561 needs : compile
0 commit comments