diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 03a2b56..2388f7f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -13,38 +13,58 @@ jobs: - name: Check out repository uses: actions/checkout@v3 with: - submodules: 'recursive' fetch-depth: 0 - - name: Initialize & update submodules - run: git submodule update --init --recursive - - - name: Prepare third_party directory - run: | - sudo mkdir -p third_party - sudo chown $USER third_party - - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.23" - - name: Install Go dependencies - run: go mod download + - name: Clone logos-messaging-nim + run: | + mkdir -p vendor + git clone --depth 1 https://github.com/logos-messaging/logos-messaging-nim.git vendor/logos-messaging-nim - - name: Vendor Go dependencies - run: go mod vendor + - name: Build libwaku + run: | + cd vendor/logos-messaging-nim + make libwaku -j + + - name: Verify libwaku artifacts + run: | + if [ ! -f "vendor/logos-messaging-nim/library/libwaku.h" ]; then + echo "ERROR: libwaku.h not found" + exit 1 + fi + if [ ! -f "vendor/logos-messaging-nim/build/libwaku.so" ] && [ ! -f "vendor/logos-messaging-nim/build/libwaku.dylib" ] && [ ! -f "vendor/logos-messaging-nim/build/libwaku.a" ]; then + echo "ERROR: libwaku library not found" + exit 1 + fi + echo "libwaku artifacts verified successfully" + + - name: Set environment variables for libwaku + run: | + export LMN_DIR=${{ github.workspace }}/vendor/logos-messaging-nim + export CGO_CFLAGS="-I${LMN_DIR}/library" + export CGO_LDFLAGS="-L${LMN_DIR}/build -lwaku -Wl,-rpath,${LMN_DIR}/build" + + - name: Install Go dependencies + run: | + go mod download + go mod vendor - name: Build waku bindings - run: make -C waku build + run: | + make -C waku build - name: Increase ulimit - run: sudo sh -c "ulimit -n 8192" + run: sudo sh -c "ulimit -n 8192" - name: Run daily test run: | set -euo pipefail - go test -count=10 -p=1 -v -timeout=360m ./ | tee testlogs.log + cd waku + go test -count=10 -p=1 -v -timeout=360m . | tee ../testlogs.log - name: Upload daily test logs uses: actions/upload-artifact@v4 diff --git a/.github/workflows/CI_endurance.yml b/.github/workflows/CI_endurance.yml index f94ec44..4cd4054 100644 --- a/.github/workflows/CI_endurance.yml +++ b/.github/workflows/CI_endurance.yml @@ -1,114 +1,124 @@ -name: Endurance Tests - -on: - workflow_dispatch: - -jobs: - endurance1: - runs-on: ubuntu-latest - - steps: - - name: Check out repository - uses: actions/checkout@v3 - with: - submodules: 'recursive' - fetch-depth: 0 - - - name: Initialize & update submodules - run: git submodule update --init --recursive - - - name: Prepare third_party directory - run: | - sudo mkdir -p third_party - sudo chown $USER third_party - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: "1.23" - - - name: Install Go dependencies - run: go mod download - - - name: Build libwaku from submodule - run: make -C waku build-libwaku - - - name: Build waku bindings - run: make -C waku build - - - name: Increase ulimit - run: sudo sh -c "ulimit -n 8192" - - - name: Run Endurance Test (Group 1) - shell: bash - run: | - set -euo pipefail - go test -tags stress \ - -p=1 -v ./waku -count=1 -timeout=360m -run '^(TestStressMemoryUsageForThreeNodes|TestStressStoreQuery5kMessagesWithPagination|TestStressHighThroughput10kPublish|TestStressLargePayloadEphemeralMessagesEndurance|TestStressConnectDisconnect1kIteration)$' | tee testlogs1.log - - - name: Upload Test Logs (Group 1) - uses: actions/upload-artifact@v4 - with: - name: endurance-logs-group1 - path: testlogs1.log - - - name: Upload Memory Metrics (Group 1) - uses: actions/upload-artifact@v4 - with: - name: memory-metrics-group1 - path: waku/px_load_metrics.csv - - endurance2: - runs-on: ubuntu-latest - - steps: - - name: Check out repository - uses: actions/checkout@v3 - with: - submodules: 'recursive' - fetch-depth: 0 - - - name: Initialize & update submodules - run: git submodule update --init --recursive - - - name: Prepare third_party directory - run: | - sudo mkdir -p third_party - sudo chown $USER third_party - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: "1.23" - - - name: Install Go dependencies - run: go mod download - - - name: Build libwaku from submodule - run: make -C waku build-libwaku - - - name: Build waku bindings - run: make -C waku build - - - name: Increase ulimit - run: sudo sh -c "ulimit -n 8192" - - - name: Run Endurance Test (Group 2) - - shell: bash - run: | - set -euo pipefail - go test -tags stress \ - -p=1 -v ./waku -count=1 -timeout=360m -run '^(TestStressRandomNodesInMesh|TestStress2Nodes2kIterationTearDown|TestPeerExchangePXLoad)$' | tee testlogs2.log - - - name: Upload Test Logs (Group 2) - uses: actions/upload-artifact@v4 - with: - name: endurance-logs-group2 - path: testlogs2.log - - - name: Upload Memory Metrics (Group 2) - uses: actions/upload-artifact@v4 - with: - name: memory-metrics-group2 +name: Endurance Tests + +on: + workflow_dispatch: + +jobs: + endurance1: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v3 + with: + submodules: 'recursive' + fetch-depth: 0 + + - name: Initialize & update submodules + run: git submodule update --init --recursive + + - name: Prepare third_party directory + run: | + sudo mkdir -p third_party + sudo chown $USER third_party + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.23" + + - name: Install Go dependencies + run: go mod download + + - name: Vendor Go dependencies + run: go mod vendor + + - name: Build libwaku + run: | + cd vendor/logos-messaging-nim + make libwaku + + - name: Build waku bindings + run: make -C waku build + + - name: Increase ulimit + run: sudo sh -c "ulimit -n 8192" + + - name: Run Endurance Test (Group 1) + shell: bash + run: | + set -euo pipefail + go test -tags stress \ + -p=1 -v ./waku -count=1 -timeout=360m -run '^(TestStressMemoryUsageForThreeNodes|TestStressStoreQuery5kMessagesWithPagination|TestStressHighThroughput10kPublish|TestStressLargePayloadEphemeralMessagesEndurance|TestStressConnectDisconnect1kIteration)$' | tee testlogs1.log + + - name: Upload Test Logs (Group 1) + uses: actions/upload-artifact@v4 + with: + name: endurance-logs-group1 + path: testlogs1.log + + - name: Upload Memory Metrics (Group 1) + uses: actions/upload-artifact@v4 + with: + name: memory-metrics-group1 + path: waku/px_load_metrics.csv + + endurance2: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v3 + with: + submodules: 'recursive' + fetch-depth: 0 + + - name: Initialize & update submodules + run: git submodule update --init --recursive + + - name: Prepare third_party directory + run: | + sudo mkdir -p third_party + sudo chown $USER third_party + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.23" + + - name: Install Go dependencies + run: go mod download + + - name: Vendor Go dependencies + run: go mod vendor + + - name: Build libwaku + run: | + cd vendor/logos-messaging-nim + make libwaku + + - name: Build waku bindings + run: make -C waku build + + - name: Increase ulimit + run: sudo sh -c "ulimit -n 8192" + + - name: Run Endurance Test (Group 2) + + shell: bash + run: | + set -euo pipefail + go test -tags stress \ + -p=1 -v ./waku -count=1 -timeout=360m -run '^(TestStressRandomNodesInMesh|TestStress2Nodes2kIterationTearDown|TestPeerExchangePXLoad)$' | tee testlogs2.log + + - name: Upload Test Logs (Group 2) + uses: actions/upload-artifact@v4 + with: + name: endurance-logs-group2 + path: testlogs2.log + + - name: Upload Memory Metrics (Group 2) + uses: actions/upload-artifact@v4 + with: + name: memory-metrics-group2 path: waku/px_load_metrics.csv \ No newline at end of file diff --git a/.github/workflows/Repeated_tests_endurancce.yml b/.github/workflows/Repeated_tests_endurancce.yml index f6b3ce0..27bf3ef 100644 --- a/.github/workflows/Repeated_tests_endurancce.yml +++ b/.github/workflows/Repeated_tests_endurancce.yml @@ -30,8 +30,13 @@ jobs: - name: Install Go dependencies run: go mod download - - name: Build libwaku from submodule - run: make -C waku build-libwaku + - name: Vendor Go dependencies + run: go mod vendor + + - name: Build libwaku + run: | + cd vendor/logos-messaging-nim + make libwaku - name: Build waku bindings run: make -C waku build