# 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: test-postgres-presto: runs-on: ubuntu-20.04 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:15-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@v4 with: persist-credentials: false submodules: recursive - name: Check for file changes id: check uses: ./.github/actions/change-detector/ with: token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Python uses: ./.github/actions/setup-backend/ if: steps.check.outputs.python == 'true' - name: Setup Postgres if: steps.check.outputs.python uses: ./.github/actions/cached-dependencies with: run: | echo "${{ steps.check.outputs.python }}" setup-postgres - name: Start Celery worker if: steps.check.outputs.python uses: ./.github/actions/cached-dependencies with: run: celery-worker - name: Python unit tests (PostgreSQL) if: steps.check.outputs.python run: | ./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow' - name: Upload code coverage uses: codecov/codecov-action@v4 with: flags: python,presto token: ${{ secrets.CODECOV_TOKEN }} verbose: true test-postgres-hive: runs-on: ubuntu-20.04 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:15-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@v4 with: persist-credentials: false submodules: recursive - name: Check for file changes id: check uses: ./.github/actions/change-detector/ with: token: ${{ secrets.GITHUB_TOKEN }} - name: Create csv upload directory if: steps.check.outputs.python run: sudo mkdir -p /tmp/.superset/uploads - name: Give write access to the csv upload directory if: steps.check.outputs.python run: sudo chown -R $USER:$USER /tmp/.superset - name: Start hadoop and hive if: steps.check.outputs.python run: docker compose -f scripts/databases/hive/docker-compose.yml up -d - name: Setup Python uses: ./.github/actions/setup-backend/ if: steps.check.outputs.python - name: Setup Postgres if: steps.check.outputs.python uses: ./.github/actions/cached-dependencies with: run: setup-postgres - name: Start Celery worker if: steps.check.outputs.python uses: ./.github/actions/cached-dependencies with: run: celery-worker - name: Python unit tests (PostgreSQL) if: steps.check.outputs.python run: | ./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow' - name: Upload code coverage uses: codecov/codecov-action@v4 with: flags: python,hive token: ${{ secrets.CODECOV_TOKEN }} verbose: true