master
yml 106 lines 3.71 KB
Raw
1 ---
2 name: SNMP & Topology Tests
3 on:
4 push:
5 branches:
6 - master
7 paths:
8 - '.github/workflows/snmp-topology-tests.yml'
9 - 'src/go/plugin/go.d/collector/snmp/**'
10 - 'src/go/plugin/go.d/collector/snmp_topology/**'
11 - 'src/go/plugin/go.d/config/go.d/snmp.profiles/**'
12 - 'src/go/pkg/topology/**'
13 - 'src/go/pkg/l2topology/**'
14 pull_request:
15 paths:
16 - '.github/workflows/snmp-topology-tests.yml'
17 - 'src/go/plugin/go.d/collector/snmp/**'
18 - 'src/go/plugin/go.d/collector/snmp_topology/**'
19 - 'src/go/plugin/go.d/config/go.d/snmp.profiles/**'
20 - 'src/go/pkg/topology/**'
21 - 'src/go/pkg/l2topology/**'
22
23 jobs:
24 fixture-tests:
25 runs-on: ubuntu-latest
26 steps:
27 - name: Checkout
28 uses: actions/checkout@v6
29 with:
30 submodules: recursive
31
32 - name: Install Go
33 uses: actions/setup-go@v6
34 with:
35 go-version-file: src/go/go.mod
36
37 - name: Clone testdata
38 shell: bash
39 run: |
40 set -euo pipefail
41 git clone --depth=1 https://github.com/netdata/testdata.git src/go/testdata
42
43 - name: Prepare snmpsim data
44 shell: bash
45 run: |
46 set -euo pipefail
47 mkdir -p /tmp/snmpsim-data
48 cp src/go/testdata/snmp/snmprec/arubaos-cx_10.10.snmprec /tmp/snmpsim-data/lldp1.snmprec
49 cp src/go/testdata/snmp/snmprec/aos6.snmprec /tmp/snmpsim-data/lldp2.snmprec
50 cp src/go/testdata/snmp/snmprec/ciscosb_sg350x-24p.snmprec /tmp/snmpsim-data/cdp1.snmprec
51
52 - name: Start snmpsim
53 shell: bash
54 run: |
55 set -euo pipefail
56 sudo apt-get update
57 sudo apt-get install -y snmp
58
59 docker run -d --name snmpsim-v2 -p 1161:161/udp -v /tmp/snmpsim-data:/usr/local/snmpsim/data tandrup/snmpsim:v0.4@sha256:a080b493042d91c4cec9282a83403e334660ed1c2c71e7e3afa920c3f1c42d7e
60 docker run -d --name snmpsim-v3 -p 1162:161/udp -e EXTRA_FLAGS='--v3-only --v3-user=testuser --v3-auth-key=authpass1 --v3-auth-proto=MD5 --v3-priv-key=privpass1 --v3-priv-proto=AES' -v /tmp/snmpsim-data:/usr/local/snmpsim/data tandrup/snmpsim:v0.4@sha256:a080b493042d91c4cec9282a83403e334660ed1c2c71e7e3afa920c3f1c42d7e
61
62 wait_for_simulator() {
63 local name=$1
64 shift
65
66 for _ in $(seq 1 30); do
67 if "$@" >/dev/null 2>&1; then
68 return 0
69 fi
70 sleep 1
71 done
72
73 echo "${name} did not become ready within 30 seconds"
74 docker logs "${name}" || true
75 return 1
76 }
77
78 wait_for_simulator snmpsim-v2 \
79 snmpget -v2c -c lldp1 127.0.0.1:1161 1.3.6.1.2.1.1.1.0
80
81 wait_for_simulator snmpsim-v3 \
82 snmpget -v3 -l authPriv -u testuser -a MD5 -A authpass1 -x AES -X privpass1 -n lldp1 127.0.0.1:1162 1.3.6.1.2.1.1.1.0
83
84 - name: Run topology fixture tests
85 env:
86 NETDATA_SNMPSIM_ENDPOINT: 127.0.0.1:1161
87 NETDATA_SNMPSIM_COMMUNITIES: lldp1,lldp2,cdp1
88 NETDATA_SNMPSIM_V3_ENDPOINT: 127.0.0.1:1162
89 NETDATA_SNMPSIM_V3_CONTEXTS: lldp1,lldp2,cdp1
90 NETDATA_SNMPSIM_V3_USER: testuser
91 NETDATA_SNMPSIM_V3_SECURITY_LEVEL: authPriv
92 NETDATA_SNMPSIM_V3_AUTH_PROTO: md5
93 NETDATA_SNMPSIM_V3_AUTH_KEY: authpass1
94 NETDATA_SNMPSIM_V3_PRIV_PROTO: aes
95 NETDATA_SNMPSIM_V3_PRIV_KEY: privpass1
96 run: |
97 cd src/go
98 go test -tags=snmp_topology_fixtures \
99 ./plugin/go.d/collector/snmp_topology/... \
100 ./pkg/l2topology/parity/...
101
102 - name: Stop snmpsim
103 if: always()
104 run: |
105 docker rm -f snmpsim-v2 || true
106 docker rm -f snmpsim-v3 || true