name: run example (sim only) # TODO: add custom runner

on:
  push:
    branches: [ '**' ]
  pull_request:
    branches: [ '**' ]
  schedule: [cron: "40 1 * * *"]

jobs:
  single-test:
    strategy:
      matrix:
        runs-on:
          - ubuntu-18.04
        image:
          - "baiduxlab/sgx-rust:1604-1.1.3"
          - "baiduxlab/sgx-rust:1804-1.1.3"
          - "baiduxlab/sgx-rust:2004-1.1.3"
          - "baiduxlab/sgx-rust:fedora31-1.1.3"
          - "baiduxlab/sgx-rust:centos8-1.1.3"
        single-sample:
          - "backtrace"
          - "crypto"
          - "file"
          - "hello-regex"
          - "hello-rust"
          - "hello-rust-vscode-debug"
          - "helloworld"
          - "http_req"
          - "kvdb-memdb"
          - "localattestation"
          - "logger"
          - "machine-learning"
          - "prost-protobuf"
          - "protobuf"
          - "sealeddata"
          - "secretsharing"
          - "serialize"
          - "sgx-cov"
          - "switchless"
          - "tcmalloc"
          - "thread"
          - "unit-test"
          - "wasmi"
          - "zlib-lazy-static-sample"
    runs-on: ${{ matrix.runs-on }}
    container: 
      image: ${{ matrix.image }}
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: 'true'
    - name: Set up Github Actions' $HOME
      run: |
        cp /root/.bashrc $HOME/.bashrc &&
        ln -sf /root/.rustup ~/.rustup &&
        ln -sf /root/.cargo ~/.cargo
    - name: Rust toolchains
      run: |
        . ~/.cargo/env && 
        rustc --version &&
        rustup --version &&
        cargo --version
      shell: bash
    - name: Run tests
      run: |
        . ~/.cargo/env && 
        . /opt/sgxsdk/environment && 
        export SGX_SDK_RUST=`git worktree list | head | cut -d ' ' -f 1` &&
        cd samplecode/${{ matrix.single-sample }} &&
        if [ "${{  matrix.single-sample }}" == "protobuf" ]; then cargo install protobuf-codegen --vers=2.8.1; fi
        SGX_MODE=SW make && 
        cd bin &&
        ./app
      shell: bash
  tls-test:
    strategy:
      matrix:
        runs-on:
          - ubuntu-18.04
        image:
          - "baiduxlab/sgx-rust:1604-1.1.3"
          - "baiduxlab/sgx-rust:1804-1.1.3"
          - "baiduxlab/sgx-rust:2004-1.1.3"
          - "baiduxlab/sgx-rust:fedora31-1.1.3"
          - "baiduxlab/sgx-rust:centos8-1.1.3"
    runs-on: ${{ matrix.runs-on }}
    container: 
      image: ${{ matrix.image }}
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: 'true'
    - name: Set up Github Actions' $HOME
      run: |
        cp /root/.bashrc $HOME/.bashrc &&
        ln -sf /root/.rustup ~/.rustup &&
        ln -sf /root/.cargo ~/.cargo &&
        yum install -y which expect || true
    - name: Rust toolchains
      run: |
        . ~/.cargo/env && 
        rustc --version &&
        rustup --version &&
        cargo --version
      shell: bash
    - name: Run tls sample
      run: |
        . ~/.cargo/env && 
        . /opt/sgxsdk/environment && 
        export SGX_MODE=SW
        SAVEIFS=$IFS
        CIDIR=$(pwd)/.github/workflows
        IFS=$(echo -en "\n\b")
        compiles=('make' 'XARGO_SGX=1 make')
        cd samplecode/tls
        for client in ${compiles[@]}
        do
            for server in ${compiles[@]}
            do
                cd tlsclient && eval ${client} && \
                cd ../tlsserver  && eval ${server} && \
                cd bin
                echo "Starting server"
                $CIDIR/tlsserver.expect &
                pid=$!
                sleep 1
                cd ../../tlsclient/bin
                echo "Starting client"
                $CIDIR/tlsclient.expect
                cliret=$?
                wait $pid
                svrret=$?
                if [ !  $cliret -eq 0 ] | [ ! $svrret -eq 0 ]; then
                    echo "TLS test fail"
                    exit 1
                fi
                echo "Testing passed"
                cd ../..
            done
        done
        IFS=$SAVEIFS
      shell: bash
  mio-test:
    strategy:
      matrix:
        runs-on:
          - ubuntu-18.04
        image:
          - "baiduxlab/sgx-rust:1604-1.1.3"
          - "baiduxlab/sgx-rust:1804-1.1.3"
          - "baiduxlab/sgx-rust:2004-1.1.3"
          - "baiduxlab/sgx-rust:fedora31-1.1.3"
          - "baiduxlab/sgx-rust:centos8-1.1.3"
    runs-on: ${{ matrix.runs-on }}
    container: 
      image: ${{ matrix.image }}
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: 'true'
    - name: Set up Github Actions' $HOME
      run: |
        cp /root/.bashrc $HOME/.bashrc &&
        ln -sf /root/.rustup ~/.rustup &&
        ln -sf /root/.cargo ~/.cargo &&
        yum install -y which expect || true
    - name: Rust toolchains
      run: |
        . ~/.cargo/env && 
        rustc --version &&
        rustup --version &&
        cargo --version
      shell: bash
    - name: Run tls sample
      run: |
        . ~/.cargo/env && 
        . /opt/sgxsdk/environment && 
        export SGX_MODE=SW
        SAVEIFS=$IFS
        CIDIR=$(pwd)/.github/workflows
        IFS=$(echo -en "\n\b")
        compiles=('make' 'XARGO_SGX=1 make')
        cd samplecode/mio
        for client in ${compiles[@]}
        do
            for server in ${compiles[@]}
            do
                cd client && eval ${client} && \
                cd ../server  && eval ${server} && \
                cd bin
                echo "Starting server"
                $CIDIR/mioserver.expect &
                pid=$!
                sleep 1
                cd ../../client/bin
                echo "Starting client"
                $CIDIR/mioclient.expect
                cliret=$?
                wait $pid
                svrret=$?
                if [ !  $cliret -eq 0 ] | [ ! $svrret -eq 0 ]; then
                    echo "mio test fail"
                    exit 1
                fi
                echo "Testing passed"
                cd ../..
            done
        done
        IFS=$SAVEIFS
      shell: bash
