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

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  applicationsTests:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version: [3.6, 3.7, 3.8]
        os: [ubuntu-latest]
        java: [ 1.8 ]
    name:  Python Test
    steps:
    - name: Checkout Repository
      uses: actions/checkout@v2

    - name: Setup Java
      uses: actions/setup-java@v1
      with:
        java-version: ${{ matrix.java }}

    - name: Cache Maven Dependencies
      uses: actions/cache@v1
      with:
        path: ~/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
    
    - name: Cache Pip Dependencies
      uses: actions/cache@v1
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('src/main/python/setup.py') }}

    - name: Cache Deb Dependencies
      uses: actions/cache@v1
      with:
        path: /var/cache/apt/archives
        key: ${{ runner.os }}-${{ hashFiles('.github/workflows/python.yml') }}

    - name: Maven clean & package
      run: mvn -ntp clean package -P distribution

    - name: Setup Python
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
        architecture: 'x64'

    - name: Install Protobuf
      run: sudo apt-get install protobuf-compiler libprotoc-dev 
  
    - name: Install pip Dependencies
      run: pip install numpy py4j wheel scipy sklearn jinja2 onnx

    - name: Build Python Package
      run: |
        cd src/main/python
        python create_python_dist.py

    - name: Run all python tests
      run: |
        export SYSTEMDS_ROOT=$(pwd)
        export PATH=$SYSTEMDS_ROOT/bin:$PATH
        export SYSDS_QUIET=1
        cd src/main/python
        python tests/onnx_systemds/test_models/model_generate.py
        python -m unittest discover -s tests -p 'test_*.py'
        echo "Exit Status: " $?
