name: Liveness-LB-Sanity-CI

on:
  push:
    branches:
      - main
  pull_request:
    branches: [ "main" ]
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'
      tags:
        description: 'Liveness LB Sanity'
       
jobs:
  build:
    name: liveness-lb-sanity
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: recursive
      - uses: actions/setup-python@v2
      - uses: actions/setup-go@v3
        with:
             go-version: '>=1.18.0'
      - run: sudo apt-get update
      - run: sudo apt -y install clang-10 llvm libelf-dev gcc-multilib libpcap-dev linux-tools-$(uname -r) elfutils dwarves git libbsd-dev bridge-utils unzip build-essential bison flex iperf iproute2 nodejs socat ethtool
      - run: |
            git clone https://github.com/loxilb-io/iproute2 iproute2-main
            cd iproute2-main/libbpf/src/
            sudo make install
            mkdir build
            DESTDIR=build make install
            cd -
            cd iproute2-main/
            export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:`pwd`/libbpf/src/ && LIBBPF_FORCE=on LIBBPF_DIR=`pwd`/libbpf/src/build ./configure && make && sudo cp -f tc/tc /usr/local/sbin/ntc && cd -
      - run: loxilb-ebpf/utils/mkllb_bpffs.sh
      - run: sudo -E env "PATH=$PATH" make
      - run: sudo -E env "PATH=$PATH" make test
      - run: docker pull ghcr.io/loxilb-io/loxilb:latest
      - run: docker run -u root --cap-add SYS_ADMIN   --restart unless-stopped --privileged -dit -v /dev/log:/dev/log --name loxilb ghcr.io/loxilb-io/loxilb:latest
      - run: pwd && ls && sudo -E env "PATH=$PATH" make docker-cp
      - run: docker exec -dit loxilb mkllb_bpffs
      - run: id=`docker ps -f name=loxilb | cut  -d " "  -f 1 | grep -iv  "CONTAINER"` && docker commit $id ghcr.io/loxilb-io/loxilb:latest
      - run: docker stop loxilb && docker rm loxilb
      - run: |
             cd cicd/tcplbmon/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/udplbmon/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/sctplbmon/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/tcplbmon6/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/tcplbepmod/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/lbtimeout/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/lb6timeout/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/httpsep/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -
      - run: |
             cd cicd/http2ep/
             ./config.sh
             ./validation.sh
             ./rmconfig.sh
             cd -