# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: CloudML Benchmarks Dataflow

on:
  schedule:
    - cron: '10 21 * * *'
  pull_request:
    paths: ['release/trigger_all_tests.json', '.github/trigger_files/beam_CloudML_Benchmarks_Dataflow.json']
  workflow_dispatch:

# Setting explicit permissions for the action
permissions:
  actions: write
  pull-requests: read
  checks: read
  contents: read
  deployments: read
  id-token: none
  issues: read
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.pull_request.number || github.sha || github.head_ref || github.ref }}-${{ github.event.schedule || github.event.sender.login }}'
  cancel-in-progress: true

env:
  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
  GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  INFLUXDB_USER: ${{ secrets.INFLUXDB_USER }}
  INFLUXDB_USER_PASSWORD: ${{ secrets.INFLUXDB_USER_PASSWORD }}

jobs:
  beam_CloudML_Benchmarks_Dataflow:
    if: |
      github.event_name == 'workflow_dispatch' ||
      github.event_name == 'pull_request' ||
      (github.event_name == 'schedule' && github.repository == 'apache/beam')
    runs-on: [self-hosted, ubuntu-24.04, main]
    timeout-minutes: 360
    name: ${{ matrix.job_name }}
    strategy:
      matrix:
        job_name: ["beam_CloudML_Benchmarks_Dataflow"]
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Setup repository
        uses: ./.github/actions/setup-action
      - name: Setup Python environment
        uses: ./.github/actions/setup-environment-action
        with:
          python-version: |
            3.10
            3.11
      - name: Prepare test arguments
        uses: ./.github/actions/test-arguments-action
        with:
          test-type: load
          test-language: python
          argument-file-paths: |
            ${{ github.workspace }}/.github/workflows/load-tests-pipeline-options/beam_CloudML_Benchmarks_Dataflow_arguments.txt
      # The env variables are created and populated in the test-arguments-action as "<github.job>_test_arguments_<argument_file_paths_index>"
      - name: run TFT Criteo Benchmarks
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:python:test-suites:dataflow:tftTests
          arguments: |
            -PpythonVersion=3.10 \
            -Prunner=DataflowRunner \
            '-Popts=${{ env.beam_CloudML_Benchmarks_Dataflow_test_arguments_1 }}'
