# Python Presto/Hive unit tests name: Python Presto/Hive on: push: branches: - "master" - "[0-9].[0-9]*" pull_request: types: [synchronize, opened, reopened, ready_for_review] # cancel previous workflow jobs for PRs concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} cancel-in-progress: true jobs: changes: runs-on: ubuntu-24.04 timeout-minutes: 10 permissions: contents: read pull-requests: read outputs: python: ${{ steps.check.outputs.python }} steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false - name: Check for file changes id: check uses: ./.github/actions/change-detector/ with: token: ${{ secrets.GITHUB_TOKEN }} test-postgres-presto: needs: changes if: needs.changes.outputs.python == 'true' runs-on: ubuntu-24.04 timeout-minutes: 45 permissions: id-token: write env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config REDIS_PORT: 16379 SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset SUPERSET__SQLALCHEMY_EXAMPLES_URI: presto://localhost:15433/memory/default services: postgres: image: postgres:17-alpine env: POSTGRES_USER: superset POSTGRES_PASSWORD: superset ports: # Use custom ports for services to avoid accidentally connecting to # GitHub action runner's default installations - 15432:5432 presto: image: starburstdata/presto:350-e.6 env: POSTGRES_USER: superset POSTGRES_PASSWORD: superset ports: # Use custom ports for services to avoid accidentally connecting to # GitHub action runner's default installations - 15433:8080 redis: image: redis:7-alpine ports: - 16379:6379 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false submodules: recursive - name: Setup Python uses: ./.github/actions/setup-backend/ - name: Setup Postgres uses: ./.github/actions/cached-dependencies with: run: setup-postgres - name: Start Celery worker uses: ./.github/actions/cached-dependencies with: run: celery-worker - name: Python unit tests (PostgreSQL) run: | ./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow' - name: Upload code coverage uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 with: flags: python,presto verbose: true use_oidc: true slug: apache/superset test-postgres-hive: needs: changes if: needs.changes.outputs.python == 'true' runs-on: ubuntu-24.04 timeout-minutes: 45 permissions: id-token: write env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config REDIS_PORT: 16379 SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset SUPERSET__SQLALCHEMY_EXAMPLES_URI: hive://localhost:10000/default UPLOAD_FOLDER: /tmp/.superset/uploads/ services: postgres: image: postgres:17-alpine env: POSTGRES_USER: superset POSTGRES_PASSWORD: superset ports: # Use custom ports for services to avoid accidentally connecting to # GitHub action runner's default installations - 15432:5432 redis: image: redis:7-alpine ports: - 16379:6379 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false submodules: recursive - name: Create csv upload directory run: sudo mkdir -p /tmp/.superset/uploads - name: Give write access to the csv upload directory run: sudo chown -R $USER:$USER /tmp/.superset - name: Start hadoop and hive run: docker compose -f scripts/databases/hive/docker-compose.yml up -d - name: Setup Python uses: ./.github/actions/setup-backend/ - name: Setup Postgres uses: ./.github/actions/cached-dependencies with: run: setup-postgres - name: Start Celery worker uses: ./.github/actions/cached-dependencies with: run: celery-worker - name: Python unit tests (PostgreSQL) run: | pip install -e .[hive] ./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow' - name: Upload code coverage uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 with: flags: python,hive verbose: true use_oidc: true slug: apache/superset