# 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: Test

on:
  push:
    branches:
      - '**'
      - '!dependabot/**'
    tags:
      - '**'
  pull_request:

concurrency:
  group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
  cancel-in-progress: true

permissions:
  contents: read

env:
  DOCKER_VOLUME_PREFIX: ".docker/"

jobs:
  ubuntu:
    name: AMD64 ${{ matrix.name }} JDK ${{ matrix.jdk }} Maven ${{ matrix.maven }}
    runs-on: ubuntu-latest
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        jdk: [11, 17, 21, 23]
        maven: [3.9.9]
        image: [ubuntu, conda-jni-cdata]
        include:
          - image: ubuntu
            name: "Ubuntu"
          - image: conda-jni-cdata
            name: "Conda JNI"
    env:
      JDK: ${{ matrix.jdk }}
      MAVEN: ${{ matrix.maven }}
    steps:
      - name: Checkout Arrow
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          submodules: recursive
      - name: Cache Docker Volumes
        uses: actions/cache@v5
        with:
          path: .docker
          key: maven-${{ matrix.jdk }}-${{ matrix.maven }}-${{ hashFiles('compose.yaml', '**/pom.xml', '**/*.java') }}
          restore-keys: maven-${{ matrix.jdk }}-${{ matrix.maven }}-
      - name: Execute Docker Build
        env:
          # Enables build caching, but not strictly required
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        run: |
          docker compose run \
            -e CI=true \
            -e "DEVELOCITY_ACCESS_KEY=$DEVELOCITY_ACCESS_KEY" \
            ${{ matrix.image }}

  macos:
    name: ${{ matrix.arch }} macOS ${{ matrix.macos }} Java JDK ${{ matrix.jdk }}
    runs-on: macos-${{ matrix.macos }}
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        include:
          - arch: AMD64
            jdk: 11
            macos: 15-intel
          - arch: AArch64
            jdk: 11
            macos: latest
    steps:
      - name: Set up Java
        uses: actions/setup-java@v5
        with:
          distribution: 'temurin'
          java-version: ${{ matrix.jdk }}
      - name: Checkout Arrow
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          submodules: recursive
      - name: Build
        shell: bash
        env:
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        run: ci/scripts/build.sh . build jni
      - name: Test
        shell: bash
        env:
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        run: ci/scripts/test.sh . build jni

  windows:
    name: AMD64 Windows Server 2022 Java JDK ${{ matrix.jdk }}
    runs-on: windows-latest
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        jdk: [11]
    steps:
      - name: Set up Java
        uses: actions/setup-java@v5
        with:
          java-version: ${{ matrix.jdk }}
          distribution: 'temurin'
      - name: Checkout Arrow
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          submodules: recursive
      - name: Build
        shell: bash
        env:
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        run: ci/scripts/build.sh . build jni
      - name: Test
        shell: bash
        env:
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        run: ci/scripts/test.sh . build jni

  integration:
    name: AMD64 integration
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout Arrow
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          repository: apache/arrow
          submodules: recursive
      - name: Checkout Arrow Rust
        uses: actions/checkout@v6
        with:
          repository: apache/arrow-rs
          path: rust
      - name: Checkout Arrow nanoarrow
        uses: actions/checkout@v6
        with:
          repository: apache/arrow-nanoarrow
          path: nanoarrow
      - name: Checkout Arrow .NET
        uses: actions/checkout@v6
        with:
          repository: apache/arrow-dotnet
          path: dotnet
      - name: Checkout Arrow Go
        uses: actions/checkout@v6
        with:
          repository: apache/arrow-go
          path: go
      - name: Checkout Arrow Java
        uses: actions/checkout@v6
        with:
          path: java
      - name: Checkout Arrow JavaScript
        uses: actions/checkout@v6
        with:
          repository: apache/arrow-js
          path: js
      - name: Free up disk space
        run: |
          ci/scripts/util_free_space.sh
      - name: Cache Docker Volumes
        uses: actions/cache@v5
        with:
          path: .docker
          key: integration-conda-${{ hashFiles('cpp/**') }}
          restore-keys: integration-conda-
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: 3.12
      - name: Setup Archery
        run: pip install -e dev/archery[docker]
      - name: Execute Docker Build
        run: |
          source ci/scripts/util_enable_core_dumps.sh
          archery docker run \
            -e ARCHERY_DEFAULT_BRANCH=main \
            -e ARCHERY_INTEGRATION_TARGET_IMPLEMENTATIONS=java \
            -e ARCHERY_INTEGRATION_WITH_DOTNET=1 \
            -e ARCHERY_INTEGRATION_WITH_GO=1 \
            -e ARCHERY_INTEGRATION_WITH_JAVA=1 \
            -e ARCHERY_INTEGRATION_WITH_JS=1 \
            -e ARCHERY_INTEGRATION_WITH_NANOARROW=1 \
            -e ARCHERY_INTEGRATION_WITH_RUST=1 \
            conda-integration
