Skip to content

Fix script

Fix script #3400

Workflow file for this run

name: Build and test
on:
push:
branches: ["master", "dev", "xdp-device-ci"]
pull_request:
branches: ["dev"]
env:
BUILD_DIR: Dist
GCOVR_FLAGS: --gcov-ignore-parse-errors --exclude-throw-branches --filter Common --filter Pcap --filter Packet --xml
jobs:
xdp:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt update && sudo apt -y install libpcap-dev libbpf-dev
- name: Configure PcapPlusPlus
run: cmake -DPCAPPP_USE_XDP=ON -S . -B $BUILD_DIR
- name: Build PcapPlusPlus
run: cmake --build $BUILD_DIR -j
- name: Test PcapPlusPlus
run: |
python -m pip install -U pip
python -m pip install -r ci/run_tests/requirements.txt
python ci/run_tests/run_tests_xdp.py --interface eth0 --use-sudo
# pre-commit:
# runs-on: ubuntu-latest
# container: seladb/alpine317
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Install dependencies
# run: |
# apk update && apk add cppcheck python3-dev
# python3 -m pip install cmake-format
# git config --global --add safe.directory "$GITHUB_WORKSPACE"
#
# - uses: pre-commit/[email protected]
#
# - name: CMake format
# run: |
# ./ci/cmake-format-all.sh
# git diff --exit-code
#
# - name: Configure PcapPlusPlus for Static analysis
# run: CXX=clang++ CC=clang cmake -DLIGHT_PCAPNG_ZSTD=ON -DPCAPPP_ENABLE_CLANG_TIDY=ON -S . -B $BUILD_DIR
#
# - name: Build PcapPlusPlus and check any diff
# run: |
# cmake --build $BUILD_DIR -j
# git diff --exit-code
# linux:
# runs-on: ubuntu-20.04
# container: seladb/${{ matrix.image }}
# strategy:
# matrix:
# include:
# - image: ubuntu2204
# python: python3
# config-zstd: OFF
# - image: ubuntu2204-icpx
# python: python3
# config-zstd: OFF
# additional-flags: -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx
# additional-gcov-flags: --gcov-executable "llvm-cov gcov"
# - image: ubuntu2004
# python: python3
# config-zstd: OFF
# - image: ubuntu1804
# python: python3.8
# config-zstd: OFF
# - image: centos7
# python: python3.8
# test-flags: --test-args="-s"
# config-zstd: OFF
# - image: fedora34
# python: python3
# config-zstd: OFF
# - image: alpine315
# python: python3
# config-zstd: OFF
#
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Setup Intel Compiler variables
# if: contains(matrix.image, 'icpx')
# run: |
# . /opt/intel/oneapi/setvars.sh
# printenv >> $GITHUB_ENV
#
# - name: Configure PcapPlusPlus
# run: cmake -DLIGHT_PCAPNG_ZSTD=${{ matrix.config-zstd }} -DPCAPPP_BUILD_COVERAGE=ON ${{ matrix.additional-flags }} -S . -B $BUILD_DIR
#
# - name: Build PcapPlusPlus
# run: cmake --build $BUILD_DIR -j
#
# - name: Test PcapPlusPlus
# run: |
# ${{ matrix.python }} -m pip install -U pip
# ${{ matrix.python }} -m pip install -r ci/run_tests/requirements.txt
# ${{ matrix.python }} ci/run_tests/run_tests.py --interface eth0 ${{ matrix.test-flags }}
#
# - name: Test Examples
# run: |
# cd Tests/ExamplesTest
# ${{ matrix.python }} -m pip install -U pip
# ${{ matrix.python }} -m pip install -r requirements.txt
# ${{ matrix.python }} -m pytest --interface eth0 --root-path=../../Dist/examples_bin
#
# - name: Check installation
# run: cmake --install $BUILD_DIR
#
# - name: Build Tutorials
# run: |
# cmake -DPCAPPP_BUILD_TUTORIALS=ON ${{ matrix.additional-flags }} -S Examples -B build_examples
# cmake --build build_examples -j
#
# - name: Test Tutorials
# run: cd build_examples/tutorials_bin && ./Tutorial-HelloWorld
#
# - name: Create Cobertura Report
# run: |
# ${{ matrix.python }} -m pip install gcovr
# gcovr -v -r . ${{ matrix.additional-gcov-flags }} $GCOVR_FLAGS -o coverage.xml
#
# - name: Upload Coverage Results
# uses: codecov/codecov-action@v3
# with:
# files: ./coverage.xml
# flags: ${{ matrix.image }},unittest
# fail_ci_if_error: false
# verbose: true
#
# dpdk:
# runs-on: ubuntu-20.04
# container: seladb/${{ matrix.image }}
# strategy:
# matrix:
# image:
# [
# ubuntu2004-dpdk2111,
# ubuntu2004-dpdk2011,
# ubuntu2004-dpdk1911,
# ubuntu2004-dpdk1811,
# ]
#
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Configure PcapPlusPlus
# run: cmake -DPCAPPP_USE_DPDK=ON -S . -B $BUILD_DIR
#
# - name: Build PcapPlusPlus
# run: cmake --build $BUILD_DIR -j
#
# - name: Check AVX
# run: grep avx /proc/cpuinfo
#
# - name: Test Packet++
# run: |
# cd Tests/Packet++Test
# if [ -n "$(grep avx512 /proc/cpuinfo)" ]; then Bin/Packet++Test; else echo AVX-512 SUPPORT NOT FOUND, CANNOT RUN Packet++Test; fi
#
# - name: Test Pcap++
# run: |
# cd Tests/Pcap++Test
# if [ -n "$(grep avx512 /proc/cpuinfo)" ]; then Bin/Pcap++Test -n; else echo AVX-512 SUPPORT NOT FOUND, CANNOT RUN Pcap++Test; fi
#
# - name: Check installation
# run: cmake --install $BUILD_DIR
#
# - name: Build Tutorials
# run: |
# cmake -DPCAPPP_BUILD_TUTORIALS=ON -S Examples -B build_examples
# cmake --build build_examples -j
#
# - name: Test Tutorials
# run: cd build_examples/tutorials_bin && ./Tutorial-HelloWorld
#
# pfring:
# runs-on: ubuntu-20.04
# container: seladb/ubuntu2004-pfring
# strategy:
# matrix:
# include:
# - configure: cmake -DPCAPPP_USE_PF_RING=ON -DPF_RING_ROOT="/PF_RING" -S . -B $BUILD_DIR
#
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Configure PcapPlusPlus
# run: ${{ matrix.configure }}
#
# - name: Build PcapPlusPlus
# run: cmake --build $BUILD_DIR -j
#
# - name: Test Packet++
# run: |
# cd Tests/Packet++Test
# Bin/Packet++Test
#
# - name: Test Pcap++
# run: |
# cd Tests/Pcap++Test
# Bin/Pcap++Test -n
#
# - name: Check installation
# run: cmake --install $BUILD_DIR
#
# - name: Build Tutorials
# run: |
# cmake -DPCAPPP_BUILD_TUTORIALS=ON -DPF_RING_ROOT="/PF_RING" -S Examples -B build_examples
# cmake --build build_examples -j
#
# - name: Test Tutorials
# run: cd build_examples/tutorials_bin && ./Tutorial-HelloWorld
#
# macos:
# runs-on: ${{ matrix.os-version }}
# strategy:
# matrix:
# os-version: [macos-11, macos-12]
# arch: [x86_64, arm64]
# # Handle ZSTD build by Cirrus CI
# # config-zstd: [ON, OFF]
# config-zstd: [OFF]
# exclude:
# # excludes ZSTD on Arm64
# - arch: arm64
# config-zstd: ON
#
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - uses: actions/setup-python@v4
# with:
# python-version: "3.8.x"
#
# - name: Configure PcapPlusPlus
# # Ensure user have access to network devices instead of giving super-user right
# run: |
# sudo chmod a+rw /dev/bpf*
# cmake -DLIGHT_PCAPNG_ZSTD=${{ matrix.config-zstd }} -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} -DPCAPPP_BUILD_COVERAGE=ON -S . -B $BUILD_DIR
#
# - name: Build PcapPlusPlus
# run: cmake --build $BUILD_DIR -j
#
# - name: Check architecture
# run: lipo $BUILD_DIR/Pcap++/libPcap++.a -verify_arch ${{ matrix.arch }}
#
# - name: Install Tcpreplay
# run: brew install tcpreplay
#
# - name: Test PcapPlusPlus
# # We can't run cross compiled binaries
# if: ${{ matrix.arch == 'x86_64' }}
# run: |
# python -m pip install -U pip
# python -m pip install -r ci/run_tests/requirements.txt
# python ci/run_tests/run_tests.py --interface en0
#
# - name: Test Examples
# if: ${{ matrix.arch == 'x86_64' }}
# run: |
# cd Tests/ExamplesTest
# python -m pip install -U pip
# python -m pip install -r requirements.txt
# python -m pytest --interface en0 --use-sudo --root-path=../../Dist/examples_bin
#
# - name: Check installation
# run: cmake --install $BUILD_DIR
#
# - name: Build Tutorials
# run: |
# mkdir -p build_examples
# cmake -DPCAPPP_BUILD_TUTORIALS=ON -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} -S Examples -B build_examples
# cmake --build build_examples -j
#
# - name: Test Tutorials
# if: ${{ matrix.arch == 'x86_64' }}
# run: cd build_examples/tutorials_bin && ./Tutorial-HelloWorld
#
# - name: Create Cobertura Report
# run: |
# python3 -m pip install gcovr
# gcovr -v -r . $GCOVR_FLAGS -o coverage.xml
#
# - name: Upload Coverage Results
# uses: codecov/codecov-action@v3
# with:
# files: ./coverage.xml
# flags: ${{ matrix.os-version }},unittest
# fail_ci_if_error: false
# verbose: true
#
# mingw-w64:
# runs-on: windows-latest
# strategy:
# matrix:
# include:
# - env: i686
# sys: mingw32
# - env: x86_64
# sys: mingw64
#
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Setup MSYS2
# uses: msys2/setup-msys2@v2
# with:
# msystem: ${{matrix.sys}}
# install: >-
# git
# mingw-w64-${{matrix.env}}-cmake
# mingw-w64-${{matrix.env}}-gcc
# mingw-w64-${{matrix.env}}-make
#
# - name: Setup Python
# uses: actions/setup-python@v4
# with:
# python-version: "3.8.x"
#
# - name: Install NPcap
# env:
# NPCAP_USERNAME: ${{ secrets.NPCAP_USERNAME }}
# NPCAP_PASSWORD: ${{ secrets.NPCAP_PASSWORD }}
# run: |
# ci\install_npcap.bat
# echo "PCAP_SDK_DIR=/C/Npcap-sdk" >> $env:GITHUB_ENV
#
# - name: Configure PcapPlusPlus
# shell: msys2 {0}
# run: |
# cmake -G "MinGW Makefiles" -DPCAP_ROOT=/C/Npcap-sdk -DLIGHT_PCAPNG_ZSTD=OFF -DPCAPPP_BUILD_COVERAGE=ON -S . -B $BUILD_DIR
#
# - name: Build PcapPlusPlus
# shell: msys2 {0}
# # More than 2 jobs would make the build crash with OOM
# # cc1plus.exe: out of memory allocating 65536 bytes
# run: cmake --build $BUILD_DIR -j 2
#
# - name: Install tcpreplay
# run: ci\install_tcpreplay.bat
#
# - name: Test PcapPlusPlus
# run: |
# python -m pip install -r ci\run_tests\requirements.txt
# python ci\run_tests\run_tests_windows.py
#
# - name: Test Examples
# run: |
# cd Tests\ExamplesTest
# python -m pip install -r requirements.txt
# python -m pytest --root-path=../../Dist/examples_bin
#
# - name: Install Coverage Requirements
# run: python3 -m pip install gcovr
#
# - name: Process Coverage Files
# shell: msys2 {0}
# run: find . -name "*.gcno" -exec gcov -b -l -p -c {} +
#
# - name: Create Coberture Report
# run: gcovr -v -g -k -r . $env:GCOVR_FLAGS.split() -o coverage.xml
#
# - name: Upload Coverage Results
# uses: codecov/codecov-action@v3
# with:
# files: ./coverage.xml
# flags: ${{ matrix.sys }},unittest
# fail_ci_if_error: false
# verbose: true
#
# visual-studio:
# strategy:
# matrix:
# include:
# - os: "windows-2019"
# platform: "Visual Studio 16 2019"
# arch: "x64"
# pcap_lib: "npcap"
# - os: windows-2019
# platform: "Visual Studio 16 2019"
# arch: Win32
# pcap_lib: "winpcap"
# - os: windows-2022
# platform: "Visual Studio 17 2022"
# arch: "x64"
# pcap_lib: "winpcap"
# - os: windows-2022
# platform: "Visual Studio 17 2022"
# arch: "x64"
# pcap_lib: "npcap"
#
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - uses: actions/setup-python@v4
# with:
# python-version: "3.8.x"
#
# - name: Add MSBuild to PATH
# uses: microsoft/setup-msbuild@v1
#
# - name: Setup OpenCppCoverage and add to PATH
# run: |
# choco install OpenCppCoverage -y
# echo "C:\Program Files\OpenCppCoverage" >> $env:GITHUB_PATH
#
# - name: Install WinPcap
# run: |
# ci\install_winpcap.bat
# echo "PCAP_SDK_DIR=C:\WpdPack" >> $env:GITHUB_ENV
# if: matrix.pcap_lib == 'winpcap'
#
# - name: Install NPcap
# env:
# NPCAP_USERNAME: ${{ secrets.NPCAP_USERNAME }}
# NPCAP_PASSWORD: ${{ secrets.NPCAP_PASSWORD }}
# run: |
# ci\install_npcap.bat
# echo "PCAP_SDK_DIR=C:\Npcap-sdk" >> $env:GITHUB_ENV
# if: matrix.pcap_lib == 'npcap'
#
# - name: Set Zstd
# run: |
# ci\install_zstd.bat
# echo "ZSTD_HOME_PARAM=-z C:\zstd" >> $env:GITHUB_ENV
# if: matrix.use_zstd == true
#
# - name: Configure PcapPlusPlus
# run: cmake -A ${{ matrix.arch }} -G "${{ matrix.platform }}" -DPCAP_ROOT=${{ env.PCAP_SDK_DIR }} -S . -B $env:BUILD_DIR
#
# - name: Build PcapPlusPlus
# run: cmake --build $env:BUILD_DIR -j
#
# - name: Install tcpreplay
# run: ci\install_tcpreplay.bat
#
# - name: Test PcapPlusPlus
# run: |
# python -m pip install -r ci\run_tests\requirements.txt
# python ci\run_tests\run_tests_windows.py --coverage
#
# - name: Test Examples
# run: |
# move ".\Dist\examples_bin\Debug\*" ".\Dist\examples_bin\"
# cd Tests\ExamplesTest
# python -m pip install -r requirements.txt
# python -m pytest --root-path=../../Dist/examples_bin
#
# - name: Upload Coverage Results
# uses: codecov/codecov-action@v3
# with:
# files: ./Tests/Pcap++Test/Pcap++Coverage.xml,./Tests/Packet++Test/Packet++Coverage.xml
# flags: ${{ matrix.os }},unittest,${{ matrix.pcap_lib }}
# fail_ci_if_error: false
# verbose: true
#
# android:
# strategy:
# matrix:
# include:
# - run-on-os: ubuntu-20.04
# target: armeabi-v7a
# api-version: 30
# - run-on-os: ubuntu-20.04
# target: x86
# api-version: 30
# - run-on-os: macos-11
# target: arm64-v8a
# cmake_configure: "-DCMAKE_OSX_ARCHITECTURES=arm64"
# api-version: 30
# - run-on-os: macos-11
# target: x86_64
# cmake_configure: "-DCMAKE_OSX_ARCHITECTURES=x86_64"
# api-version: 30
#
# runs-on: ${{ matrix.run-on-os }}
#
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
#
# - name: Checkout lipbcap for Android
# uses: actions/checkout@main
# with:
# repository: seladb/libpcap-android
# path: ./libpcap-android
#
# - name: Configure PcapPlusPlus
# run: |
# LIBPCAP_PATH=$(pwd)/libpcap-android
# cmake -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_PLATFORM="${{ matrix.api-version}}" -DANDROID_ABI="${{ matrix.target }}" -DPCAP_INCLUDE_DIR="${LIBPCAP_PATH}/include/" -DPCAP_LIBRARY="${LIBPCAP_PATH}/${{ matrix.target }}/${{ matrix.api-version}}/libpcap.a" -S . -B $BUILD_DIR
#
# - name: Build PcapPlusPlus
# run: cmake --build $BUILD_DIR -j
#
# - name: Checkout ToyVpn-PcapPlusPlus
# uses: actions/checkout@master
# with:
# repository: seladb/ToyVpn-PcapPlusPlus
# path: ./ToyVpn-PcapPlusPlus
# submodules: true
#
# - name: Install locally PcapPlusPlus
# # CMake install library in $prefix/lib ToyVpn want $prefix/$target/$api-version
# run: |
# TOYVPN_PCAPPLUSPLUS="./ToyVpn-PcapPlusPlus/app/libs/pcapplusplus"
# PCAPPLUSPLUS_LIBS_PATH="$TOYVPN_PCAPPLUSPLUS/${{ matrix.target }}/${{ matrix.api-version }}"
# PCAPPLUSPLUS_INCLUDE_PATH="$TOYVPN_PCAPPLUSPLUS/include"
# cmake --install $BUILD_DIR --prefix ${TOYVPN_PCAPPLUSPLUS}
# mkdir -p ${PCAPPLUSPLUS_LIBS_PATH} ${PCAPPLUSPLUS_INCLUDE_PATH}
# mv ${TOYVPN_PCAPPLUSPLUS}/lib/*.a ${PCAPPLUSPLUS_LIBS_PATH}/
# mv ${TOYVPN_PCAPPLUSPLUS}/include/pcapplusplus/*.h ${PCAPPLUSPLUS_INCLUDE_PATH}/
#
# - name: Build ToyVpn-PcapPlusPlus
# working-directory: ./ToyVpn-PcapPlusPlus
# run: |
# sed -i.bak "s|abiFilters.*$|abiFilters '${{ matrix.target }}'|g" app/build.gradle
# chmod +x gradlew
# ./gradlew assembleDebug