summaryrefslogtreecommitdiffstats
path: root/.github/workflows/tests.yml
blob: 7e53c4979bd54d67de0f8b95468bab65dde2ccdd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
---
# Runs Tests on Pushes to `master` and Pull Requests
name: Tests
on:
  push:
    branches:
      - master
    paths:
      - 'CMakeLists.txt'
      - '**.c'
      - '**.h'
  pull_request:
    paths:
      - 'CMakeLists.txt'
      - '**.c'
      - '**.h'
env:
  DISABLE_TELEMETRY: 1
concurrency:
  group: tests-${{ github.ref }}
  cancel-in-progress: true
jobs:
  unit-tests-legacy:
    name: Unit Tests (legacy)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Prepare environment
        run: |
          ./packaging/installer/install-required-packages.sh --dont-wait --non-interactive netdata-all
          sudo apt-get install -y libjson-c-dev libipmimonitoring-dev libcups2-dev libsnappy-dev \
                                  libprotobuf-dev libprotoc-dev libssl-dev protobuf-compiler \
                                  libnetfilter-acct-dev
      - name: Run ./tests/run-unit-tests.sh
        env:
          CFLAGS: "-O1 -DNETDATA_INTERNAL_CHECKS=1 -DNETDATA_VERIFY_LOCKS=1"
        run: |
          ./tests/run-unit-tests.sh

  unit-tests-cmocka:
    name: Unit Tests (cmocka)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Prepare environment
        run: |
          ./packaging/installer/install-required-packages.sh --dont-wait --non-interactive netdata-all
          sudo apt-get install -y libjson-c-dev libipmimonitoring-dev libcups2-dev libsnappy-dev \
                                  libprotobuf-dev libprotoc-dev libssl-dev protobuf-compiler \
                                  libnetfilter-acct-dev libmongoc-dev  libcmocka-dev libzstd-dev
      - name: Configure
        run: |
          autoreconf -ivf
          ./configure --disable-ml
      # XXX: Work-around for bug with libbson-1.0 in Ubuntu 18.04
      # See: https://bugs.launchpad.net/ubuntu/+source/libmongoc/+bug/1790771
      #      https://jira.mongodb.org/browse/CDRIVER-2818
      - name: Fix libbson
        run: |
          pushd /usr/lib || exit 1
          sudo ln -s /usr/include .
          popd || exit 1
      - name: Build
        run: |
          mkdir build-tmp
          cd build-tmp
          cmake \
            -D UNIT_TESTING=1 \
            -D BUILD_TESTING=1 \
            -D CMAKE_BUILD_TYPE="Debug" \
            -D BSON_LIBRARY=/usr/lib/x86_64-linux-gnu/libbson-1.0.so \
            -D MONGOC_LIBRARY=/usr/lib/x86_64-linux-gnu/libmongoc-1.0.so \
            ..
          make
      - name: Run ctest
        run: |
          cd build-tmp
          ctest
      - name: Prepare Artifacts
        if: always()
        run: |
          mkdir logs
          pushd build-tmp || exit 1
          find . -type f -name '*.log' -exec cp {} ../logs/ \;
          popd || exit 1
      - name: Upload Artifacts
        uses: actions/upload-artifact@v3
        if: always()
        with:
          name: logs
          path: logs