Rolling buffer size enhancements, bug fix, and unit tests #2426
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: WebRTC C SDK CI | |
on: | |
push: | |
branches: | |
- develop | |
- main | |
pull_request: | |
branches: | |
- develop | |
- main | |
jobs: | |
clang-format-check: | |
runs-on: macos-12 | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Install clang-format | |
run: | | |
brew install clang-format | |
clang-format --version | |
- name: Run clang format check | |
run: | | |
bash scripts/check-clang.sh | |
mac-os-build-clang: | |
runs-on: macos-12 | |
env: | |
CC: /usr/bin/clang | |
CXX: /usr/bin/clang++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE | |
make | |
- name: Run tests | |
run: | | |
cd build | |
./tst/webrtc_client_test | |
mac-os-build-gcc: | |
runs-on: macos-12 | |
env: | |
CC: gcc | |
CXX: g++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE | |
make | |
- name: Run tests | |
run: | | |
cd build | |
./tst/webrtc_client_test | |
mac-os-m1-build-clang: | |
runs-on: macos-13-xlarge | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
PKG_CONFIG_PATH: /usr/local/opt/pkgconfig | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
brew install gstreamer glib | |
- name: Build repository | |
run: | | |
brew unlink openssl | |
mkdir build && cd build | |
sh -c 'cmake .. -DBUILD_TEST=TRUE -DCMAKE_C_COMPILER=$(brew --prefix llvm@15)/bin/clang -DCMAKE_CXX_COMPILER=$(brew --prefix llvm@15)/bin/clang++' | |
make | |
- name: Run tests | |
run: | | |
cd build | |
./tst/webrtc_client_test | |
static-build-mac: | |
runs-on: macos-12 | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE | |
make | |
- name: Run tests | |
run: | | |
cd build | |
./tst/webrtc_client_test | |
address-sanitizer: | |
runs-on: ubuntu-20.04 | |
env: | |
ASAN_OPTIONS: detect_odr_violation=0:detect_leaks=1 | |
LSAN_OPTIONS: suppressions=../tst/suppressions/LSAN.supp | |
CC: clang | |
CXX: clang++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install clang | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
undefined-behavior-sanitizer: | |
runs-on: ubuntu-20.04 | |
env: | |
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1 | |
CC: clang | |
CXX: clang++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install clang | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
# memory-sanitizer: | |
# runs-on: ubuntu-18.04 | |
# env: | |
# CC: clang-7 | |
# CXX: clang++-7 | |
# AWS_KVS_LOG_LEVEL: 2 | |
# steps: | |
# - name: Clone repository | |
# uses: actions/checkout@v4 | |
# - name: Install dependencies | |
# run: | | |
# sudo apt clean && sudo apt update | |
# sudo apt-get -y install clang-7 | |
# - name: Build repository | |
# run: | | |
# sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
# mkdir build && cd build | |
# cmake .. -DMEMORY_SANITIZER=TRUE -DBUILD_TEST=TRUE | |
# make | |
# ulimit -c unlimited -S | |
# timeout --signal=SIGABRT 60m build/tst/webrtc_client_test | |
thread-sanitizer: | |
runs-on: ubuntu-20.04 | |
env: | |
TSAN_OPTIONS: second_deadlock_stack=1:halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp | |
CC: clang | |
CXX: clang++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install clang | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
linux-gcc-4_4: | |
runs-on: ubuntu-20.04 | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
CC: gcc-4.4 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install deps | |
run: | | |
sudo apt clean && sudo apt update | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe' | |
sudo apt-get -q update | |
sudo apt-get -y install gcc-4.4 | |
sudo apt-get -y install gdb | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
# As per REAMDE here: https://github.com/aws/aws-sdk-cpp minimum supported GCC is 4.9 so we do not run those tests here | |
cmake .. -DBUILD_TEST=TRUE -DENABLE_AWS_SDK_IN_TESTS=OFF | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
static-build-linux: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.15.4 | |
env: | |
CC: gcc | |
CXX: g++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apk update | |
apk upgrade | |
apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev zlib-dev curl-dev | |
- name: Build Repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE | |
make | |
mbedtls-ubuntu-gcc: | |
runs-on: ubuntu-20.04 | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install deps | |
run: | | |
sudo apt clean && sudo apt update | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe' | |
sudo apt-get -q update | |
sudo apt-get -y install gcc-4.4 | |
sudo apt-get -y install gdb | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
mbedtls-ubuntu-gcc-11: | |
runs-on: ubuntu-latest | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install deps | |
run: | | |
sudo apt clean && sudo apt update | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ jammy main' | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ jammy universe' | |
sudo apt-get -q update | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
mbedtls-ubuntu-gcc-4_4-build: | |
runs-on: ubuntu-20.04 | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
CC: gcc-4.4 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install deps | |
run: | | |
sudo apt clean && sudo apt update | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe' | |
sudo apt-get -q update | |
sudo apt-get -y install gcc-4.4 | |
sudo apt-get -y install gdb | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON | |
make | |
mbedtls-ubuntu-clang: | |
runs-on: ubuntu-20.04 | |
env: | |
CC: clang | |
CXX: clang++ | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install clang | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
sample-check: | |
if: github.repository == 'awslabs/amazon-kinesis-video-streams-webrtc-sdk-c' | |
runs-on: ubuntu-latest | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
role-duration-seconds: 10800 | |
- name: Build repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. | |
make | |
- name: Sample check | |
run: | | |
./scripts/check-sample.sh | |
sample-check-no-data-channel: | |
if: github.repository == 'awslabs/amazon-kinesis-video-streams-webrtc-sdk-c' | |
runs-on: ubuntu-latest | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
role-duration-seconds: 10800 | |
- name: Build repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DENABLE_DATA_CHANNEL=OFF | |
make | |
- name: Sample check without data channel | |
run: | | |
./scripts/check-sample.sh | |
ubuntu-os-build: | |
runs-on: ubuntu-20.04 | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE | |
make | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
ubuntu-os-build-stats-calc-control: | |
runs-on: ubuntu-20.04 | |
env: | |
AWS_KVS_LOG_LEVEL: 2 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install libcurl4-openssl-dev | |
- name: Build repository | |
run: | | |
# TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_TEST=TRUE -DENABLE_STATS_CALCULATION_CONTROL=TRUE | |
make | |
- name: Run tests | |
run: | | |
cd build | |
timeout --signal=SIGABRT 60m ./tst/webrtc_client_test | |
windows-msvc-openssl: | |
runs-on: windows-2022 | |
env: | |
AWS_KVS_LOG_LEVEL: 1 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Move cloned repo | |
shell: powershell | |
run: | | |
mkdir C:\webrtc | |
Move-Item -Path "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\*" -Destination "C:\webrtc" | |
- name: Install dependencies | |
shell: powershell | |
run: | | |
choco install pkgconfiglite | |
choco install gstreamer --version=1.16.3 | |
choco install gstreamer-devel --version=1.16.3 | |
curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip | |
mkdir C:\tools\pthreads-w32-2-9-1-release\ | |
Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release | |
# - name: Build libwebsockets from source | |
# shell: powershell | |
# run: | | |
# $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\bin;C:\tools\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64;C:\tools\pthreads-w32-2-9-1-release\Pre-built.2\include' | |
# git config --system core.longpaths true | |
# cd C:\tools\ | |
# git clone https://github.com/warmcat/libwebsockets.git | |
# git checkout v4.2.2 | |
# cd libwebsockets | |
# mkdir build | |
# cd build | |
# cmake .. -DLWS_HAVE_PTHREAD_H=1 -DLWS_EXT_PTHREAD_INCLUDE_DIR="C:\\tools\\pthreads-w32-2-9-1-release\\Pre-built.2\\include" -DLWS_EXT_PTHREAD_LIBRARIES="C:\\tools\\pthreads-w32-2-9-1-release\\Pre-built.2\\lib\\x64\\libpthreadGC2.a" -DLWS_WITH_MINIMAL_EXAMPLES=1 -DLWS_OPENSSL_INCLUDE_DIRS="C:\\Program Files\\OpenSSL\\include" -DLWS_OPENSSL_LIBRARIES="C:\\Program Files\\OpenSSL\\lib\\libssl.lib;C:\\Program Files\\OpenSSL\\lib\\libcrypto.lib" | |
# cmake --build . --config DEBUG | |
- name: Build repository | |
shell: powershell | |
run: | | |
cd C:\webrtc | |
git config --system core.longpaths true | |
.github\build_windows_openssl.bat | |
- name: Run tests | |
shell: powershell | |
run: | | |
$env:Path += ';C:\webrtc\open-source\bin;C:\tools\pthreads-w32-2-9-1-release\Pre-built.2\dll\x64;C:\webrtc\build' | |
& "C:\webrtc\build\tst\webrtc_client_test.exe" --gtest_filter="-SignalingApiFunctionalityTest.receivingIceConfigOffer_SlowClockSkew:SignalingApiFunctionalityTest.iceServerConfigRefreshConnectedAuthExpiration:SignalingApiFunctionalityTest.receivingIceConfigOffer_FastClockSkew:SignalingApiFunctionalityTest.receivingIceConfigOffer_FastClockSkew_VerifyOffsetRemovedWhenClockFixed:DataChannelFunctionalityTest.*:DtlsApiTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtpFunctionalityTest.packingUnpackingVerifySameH265Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" | |
# windows-msvc-mbedtls: | |
# runs-on: windows-2022 | |
# env: | |
# AWS_KVS_LOG_LEVEL: 7 | |
# steps: | |
# - name: Clone repository | |
# uses: actions/checkout@v4 | |
# - name: Move cloned repo | |
# shell: powershell | |
# run: | | |
# mkdir D:\a\webrtc | |
# Move-Item -Path "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\*" -Destination "D:\a\webrtc" | |
# cd D:\a\webrtc | |
# dir | |
# - name: Install dependencies | |
# shell: powershell | |
# run: | | |
# choco install gstreamer --version=1.16.2 | |
# choco install gstreamer-devel --version=1.16.2 | |
# curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip | |
# mkdir C:\tools\pthreads-w32-2-9-1-release\ | |
# Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release | |
# - name: Build repository | |
# shell: powershell | |
# run: | | |
# cd D:\a\webrtc | |
# git config --system core.longpaths true | |
# .github\build_windows_mbedtls.bat | |
arm64-cross-compilation: | |
runs-on: ubuntu-20.04 | |
env: | |
CC: aarch64-linux-gnu-gcc | |
CXX: aarch64-linux-gnu-g++ | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Build Repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi | |
make | |
linux-aarch64-cross-compilation: | |
runs-on: ubuntu-20.04 | |
env: | |
CC: aarch64-linux-gnu-gcc | |
CXX: aarch64-linux-gnu-g++ | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Build Repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-aarch64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi | |
make | |
arm32-cross-compilation: | |
runs-on: ubuntu-20.04 | |
env: | |
CC: arm-linux-gnueabi-gcc | |
CXX: arm-linux-gnueabi-g++ | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt clean && sudo apt update | |
sudo apt-get -y install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi binutils-arm-linux-gnueabi | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Build Repository | |
run: | | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
mkdir build && cd build | |
cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi | |
make | |
valgrind-check: | |
runs-on: ubuntu-latest | |
env: | |
AWS_KVS_LOG_LEVEL: 7 | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v3 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Install deps | |
run: | | |
sudo apt clean && sudo apt update | |
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ jammy main' | |
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ jammy universe' | |
sudo apt-get -q update | |
sudo apt-get -y install libcurl4-openssl-dev valgrind | |
- name: Build repository | |
run: | | |
mkdir build && cd build | |
cmake .. -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON | |
make | |
ulimit -c unlimited -S | |
- name: Run tests | |
run: | | |
cd build | |
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-master.txt ./samples/kvsWebrtcClientMaster demo-channel-gh-actions & | |
PID_MASTER=$! | |
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-viewer.txt ./samples/kvsWebrtcClientViewer demo-channel-gh-actions & | |
PID_VIEWER=$! | |
# Wait for processes to run initially | |
sleep 30 # Wait 30s | |
# Send SIGINT (2) to both processes | |
kill -2 $PID_VIEWER | |
sleep 30 | |
kill -2 $PID_MASTER | |
# Start a background task to enforce a timeout for graceful shutdown | |
( | |
sleep 10 | |
kill -9 $PID_MASTER 2>/dev/null | |
kill -9 $PID_VIEWER 2>/dev/null | |
) & | |
wait $PID_MASTER | |
EXIT_STATUS_MASTER=$? | |
wait $PID_VIEWER | |
EXIT_STATUS_VIEWER=$? | |
# Check exit statuses to determine if the interrupt was successful | |
if [ $EXIT_STATUS_MASTER -ne 0 ] || [ $EXIT_STATUS_VIEWER -ne 0 ]; then | |
echo "Process did not exit gracefully." | |
echo "Master exit code: $EXIT_STATUS_MASTER" | |
echo "Viewer exit code: $EXIT_STATUS_VIEWER" | |
exit 1 | |
else | |
echo "Processes exited successfully." | |
fi | |
# Check for memory leaks in Valgrind output files | |
if grep "All heap blocks were freed -- no leaks are possible" valgrind-master.txt && grep "All heap blocks were freed -- no leaks are possible" valgrind-viewer.txt; then | |
echo "No memory leaks detected." | |
else | |
echo "Memory leaks detected." | |
exit 1 | |
fi |