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

on:
  push:
    paths:
      - '.github/workflows/rust.yml'
      - 'rust/**'
      - 'format/Flight.proto'
  pull_request:
    paths:
      - '.github/workflows/rust.yml'
      - 'rust/**'
      - 'format/Flight.proto'

jobs:

  # build the library, a compilation step used by multiple steps below
  linux-build-lib:
    name: AMD64 Debian 10 Rust ${{ matrix.rust }} build libraries
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [stable]
    container:
      image: ${{ matrix.arch }}/rust
    steps:
      - uses: actions/checkout@v2
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          # these represent dependencies downloaded by cargo
          # and thus do not depend on the OS, arch nor rust version.
          path: /github/home/.cargo
          key: cargo-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          # these represent compiled steps of both dependencies and arrow
          # and thus are specific for a particular OS, arch and rust version.
          path: /github/home/target
          key: ${{ runner.os }}-${{ matrix.arch }}-target-cache-${{ matrix.rust }}-
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt
      - name: Build
        run: |
          export CARGO_HOME="/github/home/.cargo"
          export CARGO_TARGET_DIR="/github/home/target"
          cd rust
          cargo build

  # test the crate
  linux-test:
    name: AMD64 Debian 10 Rust ${{ matrix.rust }} test workspace
    needs: [linux-build-lib]
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [stable]
    container:
      image: ${{ matrix.arch }}/rust
      env:
        ARROW_TEST_DATA: /__w/arrow/arrow/testing/data
        PARQUET_TEST_DATA: /__w/arrow/arrow/cpp/submodules/parquet-testing/data
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          path: /github/home/.cargo
          # this key equals the ones on `linux-build-lib` for re-use
          key: cargo-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          path: /github/home/target
          # this key equals the ones on `linux-build-lib` for re-use
          key: ${{ runner.os }}-${{ matrix.arch }}-target-cache-${{ matrix.rust }}
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt
      - name: Run tests
        run: |
          export CARGO_HOME="/github/home/.cargo"
          export CARGO_TARGET_DIR="/github/home/target"
          cd rust
          # run tests on all workspace members with default feature list
          cargo test
          # test datafusion examples
          cd datafusion
          cargo test --no-default-features --features cli
          cargo run --example csv_sql
          cargo run --example parquet_sql
          cd ..
          cd arrow
          # re-run tests on arrow workspace with additional features
          cargo test --features=prettyprint
          cargo run --example builders
          cargo run --example dynamic_types
          cargo run --example read_csv
          cargo run --example read_csv_infer_schema

  # test the --features "simd" of the arrow crate. This requires nightly.
  linux-test-simd:
    name: AMD64 Debian 10 Rust ${{ matrix.rust }} test arrow simd
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [nightly-2020-11-24]
    container:
      image: ${{ matrix.arch }}/rust
      env:
        ARROW_TEST_DATA: /__w/arrow/arrow/testing/data
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          path: /github/home/.cargo
          # this key equals the ones on `linux-build-lib` for re-use
          key: cargo-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          path: /github/home/target
          # this key equals the ones on `linux-build-lib` for re-use
          key: ${{ runner.os }}-${{ matrix.arch }}-target-cache-${{ matrix.rust }}
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt
      - name: Run tests
        run: |
          export CARGO_HOME="/github/home/.cargo"
          export CARGO_TARGET_DIR="/github/home/target"
          cd rust/arrow
          cargo test --features "simd"

  windows-and-macos:
    name: ${{ matrix.os }} Rust ${{ matrix.rust }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest, macos-latest]
        rust: [stable]
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      # TODO: this won't cache anything, which is expensive. Setup this action
      # with a OS-dependent path.
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt
      - name: Run tests
        shell: bash
        run: |
          export ARROW_TEST_DATA=$(pwd)/testing/data
          export PARQUET_TEST_DATA=$(pwd)/cpp/submodules/parquet-testing/data
          cd rust
          cargo test

  clippy:
    name: Clippy
    needs: [linux-build-lib]
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [stable]
    container:
      image: ${{ matrix.arch }}/rust
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          path: /github/home/.cargo
          # this key equals the ones on `linux-build-lib` for re-use
          key: cargo-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          path: /github/home/target
          # this key equals the ones on `linux-build-lib` for re-use
          key: ${{ runner.os }}-${{ matrix.arch }}-target-cache-${{ matrix.rust }}
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt clippy
      - name: Run clippy
        run: |
          export CARGO_HOME="/github/home/.cargo"
          export CARGO_TARGET_DIR="/github/home/target"
          cd rust
          cargo clippy --all-targets --workspace -- -D warnings -A clippy::redundant_field_names

  miri-checks:
    name: Miri Checks
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [nightly-2021-01-19]
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.lock') }}
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt clippy miri
      - name: Run Miri Checks
        env:
          RUST_BACKTRACE: full
          RUST_LOG: 'trace'
        run: |
          export MIRIFLAGS="-Zmiri-disable-isolation"
          cd rust
          cargo miri setup
          cargo clean
          # Ignore MIRI errors until we can get a clean run
          cargo miri test || true

  coverage:
    name: Coverage
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [stable]
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          path: /home/runner/.cargo
          # this key is not equal because the user is different than on a container (runner vs github)
          key: cargo-coverage-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          path: /home/runner/target
          # this key is not equal because coverage uses different compilation flags.
          key: ${{ runner.os }}-${{ matrix.arch }}-target-coverage-cache-${{ matrix.rust }}-
      - name: Run coverage
        run: |
          export CARGO_HOME="/home/runner/.cargo"
          export CARGO_TARGET_DIR="/home/runner/target"

          export ARROW_TEST_DATA=$(pwd)/testing/data
          export PARQUET_TEST_DATA=$(pwd)/cpp/submodules/parquet-testing/data

          # 2020-11-15: There is a cargo-tarpaulin regression in 0.17.0
          # see https://github.com/xd009642/tarpaulin/issues/618
          cargo install --version 0.16.0 cargo-tarpaulin
          cd rust
          cargo tarpaulin --out Xml
      - name: Report coverage
        continue-on-error: true
        run: bash <(curl -s https://codecov.io/bash)

  # test FFI against the C-Data interface exposed by pyarrow
  pyarrow-integration-test:
    name: Pyarrow C data interface integration test
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [stable]
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup default ${{ matrix.rust }}
          rustup component add rustfmt clippy
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          path: /home/runner/.cargo
          key: cargo-maturin-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          path: /home/runner/target
          # this key is not equal because maturin uses different compilation flags.
          key: ${{ runner.os }}-${{ matrix.arch }}-target-maturin-cache-${{ matrix.rust }}-
      - uses: actions/setup-python@v2
        with:
          python-version: '3.7'
      - name: Install Python dependencies
        run: python -m pip install --upgrade pip setuptools wheel
      - name: Run tests
        run: |
          export CARGO_HOME="/home/runner/.cargo"
          export CARGO_TARGET_DIR="/home/runner/target"

          cd rust/arrow-pyarrow-integration-testing

          python -m venv venv
          source venv/bin/activate

          pip install maturin==0.8.2 toml==0.10.1 pyarrow==1.0.0
          maturin develop
          python -m unittest discover tests

  # test the arrow crate builds against wasm32 in stable rust
  wasm32-build:
    name: AMD64 Debian 10 Rust ${{ matrix.rust }} test arrow wasm32
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64]
        rust: [nightly-2020-11-24]
    container:
      image: ${{ matrix.arch }}/rust
      env:
        ARROW_TEST_DATA: /__w/arrow/arrow/testing/data
        PARQUET_TEST_DATA: /__w/arrow/arrow/cpp/submodules/parquet-testing/data
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Cache Cargo
        uses: actions/cache@v2
        with:
          path: /github/home/.cargo
          # this key equals the ones on `linux-build-lib` for re-use
          key: cargo-cache-
      - name: Cache Rust dependencies
        uses: actions/cache@v2
        with:
          path: /github/home/target
          key: ${{ runner.os }}-${{ matrix.arch }}-target-wasm32-cache-${{ matrix.rust }}
      - name: Setup Rust toolchain
        run: |
          rustup toolchain install ${{ matrix.rust }}
          rustup override set ${{ matrix.rust }}
          rustup component add rustfmt
          rustup target add wasm32-unknown-unknown
      - name: Build arrow crate
        run: |
          export CARGO_HOME="/github/home/.cargo"
          export CARGO_TARGET_DIR="/github/home/target"
          cd rust/arrow
          cargo build --target wasm32-unknown-unknown
