Skip to content

Disable streaming by default #72

Disable streaming by default

Disable streaming by default #72

Workflow file for this run

name: "Debug"
on:
pull_request:
permissions:
contents: write # so it can comment
jobs:
Ubuntu:
name: "Ubuntu"
strategy:
fail-fast: false
matrix:
compiler: [gcc, clang]
uses: ./.github/workflows/build-test.yml
with:
compiler: ${{ matrix.compiler }}
server_version: main
type: Debug
coverage:
name: "Coverage"
uses: ./.github/workflows/build-test.yml
with:
coverage: ON
server_version: main
type: Debug
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
sanitize-addr:
name: "Sanitize address"
uses: ./.github/workflows/build-test.yml
with:
sanitize: address
server_version: main
type: Debug
sanitize-addr-lib-msg-delivery:
name: "Sanitize address (lib_msg_delivery)"
uses: ./.github/workflows/build-test.yml
with:
sanitize: address
server_version: main
lib_msg_delivery: ON
san-addr:
name: "Sanitize address (lib_write_deadline)"
uses: ./.github/workflows/build-test.yml
with:
sanitize: address
server_version: main
lib_write_deadline: ON
san-thread:
name: "Sanitize thread"
uses: ./.github/workflows/build-test.yml
with:
sanitize: thread
server_version: main
Windows:
name: "Windows"
runs-on: windows-latest
steps:
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Checkout nats.c
uses: actions/checkout@v4
- name: Build
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
run: |
cmake -B build -S . -DCMAKE_C_FLAGS=/W4
cmake --build build --config Debug
- name: Test
shell: bash
run: |
cd build
./bin/Debug/testsuite
mv list.txt ../test/list.txt
# refresh the cache
cmake -S .. -B .
cmake --build . --config Debug
# Download latest nats-server
rel="latest" # TODO: parameterize
if [ "$rel" = "latest" ]; then
rel=$(curl -s https://api.github.com/repos/nats-io/nats-server/releases/latest | jq -r '.tag_name')
fi
if [ "$rel" != "${rel#v}" ] && wget https://github.com/nats-io/nats-server/releases/download/$rel/nats-server-$rel-windows-amd64.tar.gz; then
tar -xzf nats-server-$rel-linux-amd64.tar.gz
cp nats-server-$rel-windows-amd64/nats-server.exe ../deps/nats-server/nats-server.exe
else
for c in 1 2 3 4 5
do
echo "Attempt $c to download binary for main"
rm -f ./nats-server
curl -sf "https://binaries.nats.dev/nats-io/nats-server/v2@$rel" | PREFIX=. sh
# We are sometimes getting nats-server of size 0. Make sure we have a
# working nats-server by making sure we get a version number.
mv ./nats-server ./nats-server.exe
v="$(./nats-server.exe -v)"
if [ "$v" != "" ]; then
break
fi
done
mkdir -p ../deps/nats-server
mv ./nats-server.exe ../deps/nats-server/nats-server.exe
fi
export PATH=../deps/nats-server:$PATH
export NATS_TEST_SERVER_VERSION="$(nats-server -v)"
run_ctest() {
local extra_args="$@"
local current_set=$(set +o)
set +e
echo "Running ctest($extra_args)..."
ctest -C Debug --timeout 60 --output-on-failure $extra_args
local result=$?
eval "$current_set"
return $result
}
run_ctest
result=$?
# Retry if failed
MAX_RETRIES=10
retries=0
while [ $result -ne 0 ] && [ $retries -lt $MAX_RETRIES ]; do
tasklist | grep nats-server.exe | awk '{print $2}' | xargs -I {} taskkill /PID {} /F /T
sleep 3
echo "Tests failed. Retrying failed tests... ($((retries + 1))/$MAX_RETRIES)"
retries=$((retries + 1))
run_ctest --rerun-failed
result=$?
done
# Check the final result
if [ $result -ne 0 ]; then
echo "Tests failed after $MAX_RETRIES retries."
exit 1
else
echo "All tests passed. (retried $retries times)"
exit 0
fi