File: integration_tests.yml

package info (click to toggle)
python-ezsnmp 1.1.0-2.1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 11,280 kB
  • sloc: cpp: 3,746; python: 1,987; javascript: 1,110; makefile: 17; sh: 12
file content (144 lines) | stat: -rw-r--r-- 6,154 bytes parent folder | download | duplicates (2)
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: Integration Tests

on:
  push:
    branches: [ main ]

  pull_request:
    branches: [ main ]

jobs:
  check-source-changes:
    runs-on: ubuntu-latest
    outputs:
      run_job: ${{ steps.changed-files.outputs.any_changed }}
    steps:
      - name: Checkout Sourcecode
        uses: actions/checkout@v4

      - name: Check for changes in source code
        id: changed-files
        uses: tj-actions/changed-files@v45.0.3
        with:
          files: |
            ezsnmp/*.py
            ezsnmp/*.c
            ezsnmp/*.h
            tests/*.py
            tests/*.conf
            setup.py
            setup.cfg

  build-and-integration-test:
    runs-on: ${{ matrix.os }}
    needs: check-source-changes
    timeout-minutes: 15
    if: needs.check-source-changes.outputs.run_job == 'true'
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest]
        python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
  
    steps:
      - name: Set up dependencies
        uses: carlkidcrypto/os-specific-runner@v2.1.1
        with:
          linux: sudo apt-get update;
                 sudo apt-get install -y snmpd libsnmp-dev libperl-dev snmp-mibs-downloader valgrind;
                 sudo systemctl stop snmpd;
                 sudo download-mibs;
                 mkdir -p -m 0755 ~/.snmp;
                 echo 'mibs +ALL' > ~/.snmp/snmp.conf;
          
          macos: brew update;
                 brew install net-snmp;
                 brew install openssl@3;
                 echo 'export PATH="/usr/local/opt/net-snmp/bin:$PATH"' >> ~/.zshrc;
                 export PATH="/usr/local/opt/net-snmp/bin:$PATH";
                 echo 'export PATH="/usr/local/opt/net-snmp/sbin:$PATH"' >> ~/.zshrc;
                 export PATH="/usr/local/opt/net-snmp/sbin:$PATH";
                 mkdir -p -m 0755 ~/.snmp;
                 echo 'mibs +ALL' > ~/.snmp/snmp.conf;

      - name: Checkout repo
        uses: actions/checkout@v4

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          allow-prereleases: true
          python-version: ${{ matrix.python-version }}

      - name: Install pip dependencies
        run: |
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi

      - name: Build source
        run: |
          python setup.py build
          pip install -e .
      
      - name: Start SNMP daemon
        run: |
          if [ "$RUNNER_OS" == "Linux" ]
          then
            mibdir="-M +/var/lib/snmp/mibs"
            SNMPD=$(which snmpd)
          elif [ "$RUNNER_OS" == "macOS" ]
          then
            mibdir=""
            SNMPD=$(which snmpd)
          else
            mibdir=""
            SNMPD=$(which.exe snmpd)
          fi
          $SNMPD -C -c tests/snmpd.conf -r -Le $mibdir -m ALL
      
      - name: Run Integration Tests "Total execution time"
        uses: carlkidcrypto/os-specific-runner@v2.1.1
        with:
          linux: |
                 cd /home/runner/work/ezsnmp/ezsnmp/integration_tests;
                 ./run_integration_tests.sh | grep "Total execution time:" > total_execution_time_${{matrix.os}}_${{matrix.python-version}}.log;
                 echo "artifactPath1=/home/runner/work/ezsnmp/ezsnmp/integration_tests/total_execution_time_${{matrix.os}}_${{matrix.python-version}}.log" >> $GITHUB_ENV;

          macos: |
                 cd /Users/runner/work/ezsnmp/ezsnmp/integration_tests;
                 ./run_integration_tests.sh | grep "Total execution time:" > total_execution_time_${{matrix.os}}_${{matrix.python-version}}.log;
                 echo "artifactPath1=/Users/runner/work/ezsnmp/ezsnmp/integration_tests/total_execution_time_${{matrix.os}}_${{matrix.python-version}}.log" >> $GITHUB_ENV;
 
      - name: Run Integration Tests "usm_unknown_security_name_counter"
        uses: carlkidcrypto/os-specific-runner@v2.1.1
        with:
          linux: |
                cd /home/runner/work/ezsnmp/ezsnmp/integration_tests;
                ./run_integration_tests.sh | grep "usm_unknown_security_name_counter:" > usm_unknown_security_name_counter_${{matrix.os}}_${{matrix.python-version}}.log;
                echo "artifactPath2=/home/runner/work/ezsnmp/ezsnmp/integration_tests/usm_unknown_security_name_counter_${{matrix.os}}_${{matrix.python-version}}.log" >> $GITHUB_ENV;

          macos: |
                cd /Users/runner/work/ezsnmp/ezsnmp/integration_tests;
                ./run_integration_tests.sh | grep "usm_unknown_security_name_counter:" > usm_unknown_security_name_counter_${{matrix.os}}_${{matrix.python-version}}.log;
                echo "artifactPath2=/Users/runner/work/ezsnmp/ezsnmp/integration_tests/usm_unknown_security_name_counter_${{matrix.os}}_${{matrix.python-version}}.log" >> $GITHUB_ENV;

      - name: Run Integration Tests "connection_error_counter"
        uses: carlkidcrypto/os-specific-runner@v2.1.1
        with:
          linux: |
                  cd /home/runner/work/ezsnmp/ezsnmp/integration_tests;
                  ./run_integration_tests.sh | grep "connection_error_counter:" > connection_error_counter_${{matrix.os}}_${{matrix.python-version}}.log;
                  echo "artifactPath3=/home/runner/work/ezsnmp/ezsnmp/integration_tests/connection_error_counter_${{matrix.os}}_${{matrix.python-version}}.log" >> $GITHUB_ENV;

          macos: |
                  cd /Users/runner/work/ezsnmp/ezsnmp/integration_tests;
                  ./run_integration_tests.sh | grep "connection_error_counter:" > connection_error_counter_${{matrix.os}}_${{matrix.python-version}}.log;
                  echo "artifactPath3=/Users/runner/work/ezsnmp/ezsnmp/integration_tests/connection_error_counter_${{matrix.os}}_${{matrix.python-version}}.log" >> $GITHUB_ENV;
      
      - name: Upload Integration Test Results
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-results_${{matrix.os}}_${{matrix.python-version}}
          path: |
                ${{ env.artifactPath1 }}
                ${{ env.artifactPath2 }}
                ${{ env.artifactPath3 }}