diff options
-rw-r--r-- | .github/NPTest.cache (renamed from plugins/t/NPTest.cache.travis) | 8 | ||||
-rwxr-xr-x | .github/prepare_debian.sh | 101 | ||||
-rw-r--r-- | .github/workflows/test.yml | 46 | ||||
-rw-r--r-- | .travis.yml | 98 | ||||
-rw-r--r-- | plugins-root/Makefile.am | 3 | ||||
-rw-r--r-- | plugins-root/t/check_dhcp.t | 9 | ||||
-rw-r--r-- | plugins/t/check_curl.t | 7 | ||||
-rw-r--r-- | plugins/t/check_fping.t | 32 | ||||
-rw-r--r-- | plugins/t/check_http.t | 4 | ||||
-rwxr-xr-x | plugins/tests/check_curl.t | 5 | ||||
-rwxr-xr-x | plugins/tests/check_http.t | 17 |
11 files changed, 194 insertions, 136 deletions
diff --git a/plugins/t/NPTest.cache.travis b/.github/NPTest.cache index 9b9f805..232305a 100644 --- a/plugins/t/NPTest.cache.travis +++ b/.github/NPTest.cache | |||
@@ -11,7 +11,7 @@ | |||
11 | 'NP_HOSTNAME_VALID_IP' => '130.133.8.40', | 11 | 'NP_HOSTNAME_VALID_IP' => '130.133.8.40', |
12 | 'NP_HOSTNAME_VALID' => 'monitoring-plugins.org', | 12 | 'NP_HOSTNAME_VALID' => 'monitoring-plugins.org', |
13 | 'NP_HOSTNAME_VALID_REVERSE' => 'orwell.monitoring-plugins.org.', | 13 | 'NP_HOSTNAME_VALID_REVERSE' => 'orwell.monitoring-plugins.org.', |
14 | 'NP_HOST_NONRESPONSIVE' => '10.0.0.1', | 14 | 'NP_HOST_NONRESPONSIVE' => '192.168.1.2', |
15 | 'NP_HOST_RESPONSIVE' => 'localhost', | 15 | 'NP_HOST_RESPONSIVE' => 'localhost', |
16 | 'NP_HOST_SMB' => '', | 16 | 'NP_HOST_SMB' => '', |
17 | 'NP_HOST_SNMP' => '', | 17 | 'NP_HOST_SNMP' => '', |
@@ -27,12 +27,12 @@ | |||
27 | 'NP_HOST_TCP_SMTP' => 'localhost', | 27 | 'NP_HOST_TCP_SMTP' => 'localhost', |
28 | 'NP_HOST_TCP_SMTP_NOTLS' => '', | 28 | 'NP_HOST_TCP_SMTP_NOTLS' => '', |
29 | 'NP_HOST_TCP_SMTP_TLS' => '', | 29 | 'NP_HOST_TCP_SMTP_TLS' => '', |
30 | 'NP_HOST_TLS_CERT' => 'localhost, | 30 | 'NP_HOST_TLS_CERT' => 'localhost', |
31 | 'NP_HOST_TLS_HTTP' => 'localhost', | 31 | 'NP_HOST_TLS_HTTP' => 'localhost', |
32 | 'NP_HOST_UDP_TIME' => 'none', | 32 | 'NP_HOST_UDP_TIME' => 'none', |
33 | 'NP_INTERNET_ACCESS' => 'yes', | 33 | 'NP_INTERNET_ACCESS' => 'yes', |
34 | 'NP_LDAP_BASE_DN' => 'cn=admin,dc=nodomain', | 34 | 'NP_LDAP_BASE_DN' => 'dc=nodomain', |
35 | 'NP_MOUNTPOINT2_VALID' => '/media/ramdisk', | 35 | 'NP_MOUNTPOINT2_VALID' => '/media/ramdisk1', |
36 | 'NP_MOUNTPOINT_VALID' => '/', | 36 | 'NP_MOUNTPOINT_VALID' => '/', |
37 | 'NP_MYSQL_LOGIN_DETAILS' => '-u root -d test', | 37 | 'NP_MYSQL_LOGIN_DETAILS' => '-u root -d test', |
38 | 'NP_MYSQL_SERVER' => 'localhost', | 38 | 'NP_MYSQL_SERVER' => 'localhost', |
diff --git a/.github/prepare_debian.sh b/.github/prepare_debian.sh new file mode 100755 index 0000000..c68b9f5 --- /dev/null +++ b/.github/prepare_debian.sh | |||
@@ -0,0 +1,101 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | set -x | ||
4 | set -e | ||
5 | |||
6 | export DEBIAN_FRONTEND=noninteractive | ||
7 | |||
8 | apt-get update | ||
9 | apt-get -y install software-properties-common | ||
10 | if [ $(lsb_release -is) = "Debian" ]; then | ||
11 | apt-add-repository non-free | ||
12 | apt-get update | ||
13 | fi | ||
14 | apt-get -y install perl autotools-dev libdbi-dev libldap2-dev libpq-dev libradcli-dev libnet-snmp-perl procps | ||
15 | apt-get -y install libdbi0-dev libdbd-sqlite3 libssl-dev dnsutils snmp-mibs-downloader libsnmp-perl snmpd | ||
16 | apt-get -y install fping snmp netcat smbclient vsftpd apache2 ssl-cert postfix libhttp-daemon-ssl-perl | ||
17 | apt-get -y install libdbd-sybase-perl libnet-dns-perl | ||
18 | apt-get -y install slapd ldap-utils | ||
19 | apt-get -y install gcc make autoconf automake gettext | ||
20 | apt-get -y install faketime | ||
21 | apt-get -y install libmonitoring-plugin-perl | ||
22 | apt-get -y install libcurl4-openssl-dev | ||
23 | apt-get -y install liburiparser-dev | ||
24 | apt-get -y install squid | ||
25 | apt-get -y install openssh-server | ||
26 | apt-get -y install mariadb-server mariadb-client libmariadb-dev | ||
27 | apt-get -y install cron iputils-ping | ||
28 | apt-get -y install iproute2 | ||
29 | |||
30 | # remove ipv6 interface from hosts | ||
31 | if [ $(ip addr show | grep "inet6 ::1" | wc -l) -eq "0" ]; then | ||
32 | sed '/^::1/d' /etc/hosts > /tmp/hosts | ||
33 | cp -f /tmp/hosts /etc/hosts | ||
34 | fi | ||
35 | |||
36 | ip addr show | ||
37 | |||
38 | cat /etc/hosts | ||
39 | |||
40 | |||
41 | # apache | ||
42 | a2enmod ssl | ||
43 | a2ensite default-ssl | ||
44 | # replace snakeoil certs with openssl generated ones as the make-ssl-cert ones | ||
45 | # seems to cause problems with our plugins | ||
46 | rm /etc/ssl/certs/ssl-cert-snakeoil.pem | ||
47 | rm /etc/ssl/private/ssl-cert-snakeoil.key | ||
48 | openssl req -nodes -newkey rsa:2048 -x509 -sha256 -days 365 -nodes -keyout /etc/ssl/private/ssl-cert-snakeoil.key -out /etc/ssl/certs/ssl-cert-snakeoil.pem -subj "/C=GB/ST=London/L=London/O=Global Security/OU=IT Department/CN=$(hostname)" | ||
49 | service apache2 restart | ||
50 | |||
51 | # squid | ||
52 | cp tools/squid.conf /etc/squid/squid.conf | ||
53 | service squid start | ||
54 | |||
55 | # mariadb | ||
56 | service mariadb start | ||
57 | mysql -e "create database IF NOT EXISTS test;" -uroot | ||
58 | |||
59 | # ldap | ||
60 | sed -e 's/cn=admin,dc=nodomain/'$(/usr/sbin/slapcat|grep ^dn:|awk '{print $2}')'/' -i .github/NPTest.cache | ||
61 | service slapd start | ||
62 | |||
63 | # sshd | ||
64 | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa | ||
65 | cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys | ||
66 | service ssh start | ||
67 | sleep 1 | ||
68 | ssh-keyscan localhost >> ~/.ssh/known_hosts | ||
69 | touch ~/.ssh/config | ||
70 | |||
71 | # start one login session, required for check_users | ||
72 | ssh -tt localhost </dev/null >/dev/null 2>/dev/null & | ||
73 | disown %1 | ||
74 | |||
75 | # snmpd | ||
76 | for DIR in /usr/share/snmp/mibs /usr/share/mibs; do | ||
77 | rm -f $DIR/ietf/SNMPv2-PDU \ | ||
78 | $DIR/ietf/IPSEC-SPD-MIB \ | ||
79 | $DIR/ietf/IPATM-IPMC-MIB \ | ||
80 | $DIR/iana/IANA-IPPM-METRICS-REGISTRY-MIB | ||
81 | done | ||
82 | mkdir -p /var/lib/snmp/mib_indexes | ||
83 | sed -e 's/^agentaddress.*/agentaddress 127.0.0.1/' -i /etc/snmp/snmpd.conf | ||
84 | service snmpd start | ||
85 | |||
86 | # start cron, will be used by check_nagios | ||
87 | cron | ||
88 | |||
89 | # start postfix | ||
90 | service postfix start | ||
91 | |||
92 | # start ftpd | ||
93 | service vsftpd start | ||
94 | |||
95 | # hostname | ||
96 | sed "/NP_HOST_TLS_CERT/s/.*/'NP_HOST_TLS_CERT' => '$(hostname)',/" -i /src/.github/NPTest.cache | ||
97 | |||
98 | # create some test files to lower inodes | ||
99 | for i in $(seq 10); do | ||
100 | touch /media/ramdisk2/test.$1 | ||
101 | done | ||
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..512d28e --- /dev/null +++ b/.github/workflows/test.yml | |||
@@ -0,0 +1,46 @@ | |||
1 | name: Test | ||
2 | |||
3 | on: | ||
4 | push: | ||
5 | branches: | ||
6 | - '*' | ||
7 | pull_request: | ||
8 | |||
9 | jobs: | ||
10 | # macos: | ||
11 | # ... | ||
12 | linux: | ||
13 | runs-on: ubuntu-latest | ||
14 | name: Running tests on ${{ matrix.distro }} | ||
15 | strategy: | ||
16 | fail-fast: false | ||
17 | matrix: | ||
18 | distro: | ||
19 | - 'debian:testing' | ||
20 | #... | ||
21 | include: | ||
22 | - distro: 'debian:testing' | ||
23 | prepare: .github/prepare_debian.sh | ||
24 | #... | ||
25 | steps: | ||
26 | - name: Git clone repository | ||
27 | uses: actions/checkout@v2 | ||
28 | #- name: Setup tmate session, see https://github.com/marketplace/actions/debugging-with-tmate | ||
29 | # uses: mxschmitt/action-tmate@v3 | ||
30 | - name: Run the tests on ${{ matrix.distro }} | ||
31 | run: | | ||
32 | docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol | ||
33 | docker run \ | ||
34 | -e NPTEST_ACCEPTDEFAULT=1 \ | ||
35 | -e NPTEST_CACHE="/src/.github/NPTest.cache" \ | ||
36 | -w /src -v ${PWD}:/src \ | ||
37 | --tmpfs /media/ramdisk1 \ | ||
38 | --mount source=tmp-vol,destination=/src,target=/media/ramdisk2 \ | ||
39 | ${{ matrix.distro }} \ | ||
40 | /bin/sh -c '${{ matrix.prepare }} && \ | ||
41 | tools/setup && \ | ||
42 | ./configure --enable-libtap --with-ipv6=no && \ | ||
43 | make && \ | ||
44 | make test' | ||
45 | docker container prune -f | ||
46 | docker volume prune -f | ||
diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3d9fe64..0000000 --- a/.travis.yml +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | sudo: required | ||
2 | dist: xenial | ||
3 | language: c | ||
4 | |||
5 | env: | ||
6 | global: | ||
7 | # This is the encrypted COVERITY_SCAN_TOKEN, created via the "travis | ||
8 | # encrypt" command using the project repository's public key. | ||
9 | - secure: "ggJ9c/VfKcwtrwz/My+ne4My7D8g3qi3vz5Hh+yLiri0+oIXCy313ZD6ssIEY/5beQZEOnuHhBgBJd/Y3clSQNc2M9fRNc+wxOkIO992lgnY0MZJN3y9MLfpqUbTClhU9Fst0qXQqGpI6UI8yz1tj7yKi7DPrycJLRrjMpyTfyo=" | ||
10 | |||
11 | matrix: | ||
12 | include: | ||
13 | - compiler: "gcc" | ||
14 | os: linux | ||
15 | env: | ||
16 | - PLATFORM=linux BITS=64 HOST=x86_64 | ||
17 | addons: | ||
18 | coverity_scan: | ||
19 | project: | ||
20 | name: "monitoring-plugins/monitoring-plugins" | ||
21 | description: "Monitoring Plugins" | ||
22 | notification_email: team@monitoring-plugins.org | ||
23 | build_command_prepend: tools/setup && ./configure | ||
24 | build_command: make | ||
25 | branch_pattern: coverity.* | ||
26 | - compiler: "clang" | ||
27 | os: linux | ||
28 | env: | ||
29 | - PLATFORM=linux BITS=64 HOST=x86_64 | ||
30 | |||
31 | before_install: | ||
32 | # Trusty related fixed | ||
33 | # multiverse is no on trusty activated (https://github.com/travis-ci/travis-ci/issues/4979) | ||
34 | - sudo apt-get install -qq --no-install-recommends software-properties-common | ||
35 | - sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ trusty multiverse" && sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ trusty-updates multiverse" | ||
36 | # /etc/hosts has IPv6 hosts (https://github.com/travis-ci/travis-ci/issues/4978) | ||
37 | - sudo [ $(ip addr show | grep "inet6 ::1" | wc -l) -eq "0" ] || sudo sed -i '/^::1/d' /etc/hosts | ||
38 | # Trusty has running ntpd on localhost, but we don't like that for our tests | ||
39 | - "sudo killall -9 ntpd ||:" | ||
40 | # Trusty has no swap, lets create some | ||
41 | - sudo fallocate -l 20M /swapfile; sudo chmod 600 /swapfile; sudo mkswap /swapfile; sudo swapon /swapfile | ||
42 | - sudo apt-get update -qq | ||
43 | - sudo apt-get purge -qq gawk | ||
44 | |||
45 | install: | ||
46 | - sudo apt-get install -qq --no-install-recommends perl autotools-dev libdbi-dev libldap2-dev libpq-dev libmysqlclient-dev libradcli-dev libkrb5-dev libnet-snmp-perl procps | ||
47 | - sudo apt-get install -qq --no-install-recommends libdbi0-dev libdbd-sqlite3 libssl-dev dnsutils snmp-mibs-downloader libsnmp-perl snmpd | ||
48 | - sudo apt-get install -qq --no-install-recommends fping snmp netcat smbclient fping pure-ftpd apache2 ssl-cert postfix libhttp-daemon-ssl-perl | ||
49 | - sudo apt-get install -qq --no-install-recommends libdbd-sybase-perl libnet-dns-perl | ||
50 | - sudo apt-get install -qq --no-install-recommends slapd ldap-utils | ||
51 | - sudo apt-get install -qq --no-install-recommends autoconf automake | ||
52 | - sudo apt-get install -qq --no-install-recommends faketime | ||
53 | - sudo apt-get install -qq --no-install-recommends libmonitoring-plugin-perl | ||
54 | - sudo apt-get install -qq --no-install-recommends libcurl4-openssl-dev | ||
55 | - sudo apt-get install -qq --no-install-recommends liburiparser-dev | ||
56 | - sudo apt-get install -qq --no-install-recommends squid | ||
57 | # Trusty related dependencies (not yet provided) | ||
58 | - test "$(dpkg -l | grep -E "mysql-(client|server)-[0-9].[0-9]" | grep -c ^ii)" -gt 0 || sudo apt-get install -qq --no-install-recommends mariadb-client mariadb-server | ||
59 | # enable ssl apache | ||
60 | - sudo a2enmod ssl | ||
61 | - sudo a2ensite default-ssl | ||
62 | - sudo make-ssl-cert generate-default-snakeoil --force-overwrite | ||
63 | - sudo service apache2 reload | ||
64 | - sudo cp tools/squid.conf /etc/squid/squid.conf | ||
65 | - sudo service squid reload | ||
66 | - sudo service mysql restart | ||
67 | |||
68 | before_script: | ||
69 | # ensure we have a test database in place for tests | ||
70 | - mysql -e "create database IF NOT EXISTS test;" -uroot | ||
71 | # Detect LDAP configuration (seems volatile on trusty env) | ||
72 | - sed -e 's/cn=admin,dc=nodomain/'$(sudo /usr/sbin/slapcat|grep ^dn:|grep cn=|awk '{print $2}')'/' -i plugins/t/NPTest.cache.travis | ||
73 | - tools/setup | ||
74 | - ./configure --enable-libtap | ||
75 | - make | ||
76 | - export NPTEST_ACCEPTDEFAULT=1 | ||
77 | - export NPTEST_CACHE="$(pwd)/plugins/t/NPTest.cache.travis" | ||
78 | - ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa | ||
79 | - cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys | ||
80 | - ssh-keyscan localhost >> ~/.ssh/known_hosts | ||
81 | - touch ~/.ssh/config | ||
82 | - sudo rm -f /usr/share/mibs/ietf/SNMPv2-PDU /usr/share/mibs/ietf/IPSEC-SPD-MIB /usr/share/mibs/ietf/IPATM-IPMC-MIB /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB | ||
83 | - sudo mkdir -p /var/lib/snmp/mib_indexes | ||
84 | - sudo mkdir /media/ramdisk && sudo chmod 777 /media/ramdisk && sudo mount -t tmpfs -o size=20% none /media/ramdisk | ||
85 | - sed "/NP_HOST_TLS_CERT/s/.*/'NP_HOST_TLS_CERT' => '$(hostname)',/" -i $NPTEST_CACHE | ||
86 | |||
87 | script: | ||
88 | - if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then make test; fi | ||
89 | |||
90 | notifications: | ||
91 | irc: | ||
92 | channels: | ||
93 | - "chat.freenode.net#Monitoring-Plugins" | ||
94 | on_success: change | ||
95 | on_failure: always | ||
96 | skip_join: true | ||
97 | email: | ||
98 | # - team@monitoring-plugins.org | ||
diff --git a/plugins-root/Makefile.am b/plugins-root/Makefile.am index a1ebb6d..7cd2675 100644 --- a/plugins-root/Makefile.am +++ b/plugins-root/Makefile.am | |||
@@ -37,6 +37,9 @@ TESTS = @PLUGIN_TEST@ | |||
37 | test: | 37 | test: |
38 | perl -I $(top_builddir) -I $(top_srcdir) ../test.pl | 38 | perl -I $(top_builddir) -I $(top_srcdir) ../test.pl |
39 | 39 | ||
40 | test-debug: | ||
41 | NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl | ||
42 | |||
40 | setuid_root_mode = ug=rx,u+s | 43 | setuid_root_mode = ug=rx,u+s |
41 | 44 | ||
42 | # /* Author Coreutils team - see ACKNOWLEDGEMENTS */ | 45 | # /* Author Coreutils team - see ACKNOWLEDGEMENTS */ |
diff --git a/plugins-root/t/check_dhcp.t b/plugins-root/t/check_dhcp.t index 222f454..ce62773 100644 --- a/plugins-root/t/check_dhcp.t +++ b/plugins-root/t/check_dhcp.t | |||
@@ -19,7 +19,7 @@ if ($allow_sudo eq "yes" or $> == 0) { | |||
19 | my $sudo = $> == 0 ? '' : 'sudo'; | 19 | my $sudo = $> == 0 ? '' : 'sudo'; |
20 | 20 | ||
21 | my $successOutput = '/OK: Received \d+ DHCPOFFER\(s\), \d+ of 1 requested servers responded, max lease time = \d+ sec\./'; | 21 | my $successOutput = '/OK: Received \d+ DHCPOFFER\(s\), \d+ of 1 requested servers responded, max lease time = \d+ sec\./'; |
22 | my $failureOutput = '/CRITICAL: No DHCPOFFERs were received/'; | 22 | my $failureOutput = '/CRITICAL: (No DHCPOFFERs were received|Received \d+ DHCPOFFER\(s\), 0 of 1 requested servers responded, max lease time = \d+ sec\.)/'; |
23 | my $invalidOutput = '/Invalid hostname/'; | 23 | my $invalidOutput = '/Invalid hostname/'; |
24 | 24 | ||
25 | my $host_responsive = getTestParameter( "NP_HOST_DHCP_RESPONSIVE", | 25 | my $host_responsive = getTestParameter( "NP_HOST_DHCP_RESPONSIVE", |
@@ -36,7 +36,12 @@ my $hostname_invalid = getTestParameter( "NP_HOSTNAME_INVALID", | |||
36 | 36 | ||
37 | # try to determince interface | 37 | # try to determince interface |
38 | my $interface = ''; | 38 | my $interface = ''; |
39 | if(`ifconfig -a 2>/dev/null` =~ m/^(e\w*\d+)/mx and $1 ne 'eth0') { | 39 | |
40 | # find interface used for default route | ||
41 | if (-x '/usr/sbin/ip' and `/usr/sbin/ip route get 1.1.1.1 2>/dev/null` =~ m/\sdev\s(\S+)/) { | ||
42 | $interface = "-i $1"; | ||
43 | } | ||
44 | elsif (`ifconfig -a 2>/dev/null` =~ m/^(e\w*\d+)/mx and $1 ne 'eth0') { | ||
40 | $interface = ' -i '.$1; | 45 | $interface = ' -i '.$1; |
41 | } | 46 | } |
42 | 47 | ||
diff --git a/plugins/t/check_curl.t b/plugins/t/check_curl.t index a4f1dfb..45ee533 100644 --- a/plugins/t/check_curl.t +++ b/plugins/t/check_curl.t | |||
@@ -84,7 +84,7 @@ like( $res->output, '/^Host: testhost:8001\s*$/ms', "Host Header OK" ); | |||
84 | like( $res->output, '/CURLOPT_URL: http:\/\/'.$host_tcp_http.':80\//ms', "Url OK" ); | 84 | like( $res->output, '/CURLOPT_URL: http:\/\/'.$host_tcp_http.':80\//ms', "Url OK" ); |
85 | 85 | ||
86 | SKIP: { | 86 | SKIP: { |
87 | skip "No internet access", 3 if $internet_access eq "no"; | 87 | skip "No internet access", 4 if $internet_access eq "no"; |
88 | 88 | ||
89 | $res = NPTest->testCmd("./$plugin -v -H $host_tls_http -S"); | 89 | $res = NPTest->testCmd("./$plugin -v -H $host_tls_http -S"); |
90 | like( $res->output, '/^Host: '.$host_tls_http.'\s*$/ms', "Host Header OK" ); | 90 | like( $res->output, '/^Host: '.$host_tls_http.'\s*$/ms', "Host Header OK" ); |
@@ -120,7 +120,7 @@ SKIP: { | |||
120 | cmp_ok( $res->return_code, "==", 0, "And also when not found"); | 120 | cmp_ok( $res->return_code, "==", 0, "And also when not found"); |
121 | } | 121 | } |
122 | SKIP: { | 122 | SKIP: { |
123 | skip "No internet access", 16 if $internet_access eq "no"; | 123 | skip "No internet access", 28 if $internet_access eq "no"; |
124 | 124 | ||
125 | $res = NPTest->testCmd( | 125 | $res = NPTest->testCmd( |
126 | "./$plugin --ssl $host_tls_http" | 126 | "./$plugin --ssl $host_tls_http" |
@@ -193,8 +193,7 @@ SKIP: { | |||
193 | ); | 193 | ); |
194 | cmp_ok( $res->return_code, "==", 0, "Can read https for www.e-paycobalt.com (uses AES certificate)" ); | 194 | cmp_ok( $res->return_code, "==", 0, "Can read https for www.e-paycobalt.com (uses AES certificate)" ); |
195 | 195 | ||
196 | 196 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com -u /firefox -f curl" ); | |
197 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com -u /firefox -f follow" ); | ||
198 | is( $res->return_code, 0, "Redirection based on location is okay"); | 197 | is( $res->return_code, 0, "Redirection based on location is okay"); |
199 | 198 | ||
200 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com --extended-perfdata" ); | 199 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com --extended-perfdata" ); |
diff --git a/plugins/t/check_fping.t b/plugins/t/check_fping.t index 342b0a7..67b357b 100644 --- a/plugins/t/check_fping.t +++ b/plugins/t/check_fping.t | |||
@@ -5,34 +5,30 @@ | |||
5 | # | 5 | # |
6 | 6 | ||
7 | use strict; | 7 | use strict; |
8 | use Test; | 8 | use Test::More; |
9 | use NPTest; | 9 | use NPTest; |
10 | 10 | ||
11 | use vars qw($tests); | ||
12 | |||
13 | BEGIN {$tests = 4; plan tests => $tests} | ||
14 | |||
15 | my $successOutput = '/^FPING OK - /'; | ||
16 | my $failureOutput = '/^FPING CRITICAL - /'; | ||
17 | |||
18 | my $host_responsive = getTestParameter("NP_HOST_RESPONSIVE", "The hostname of system responsive to network requests", "localhost"); | 11 | my $host_responsive = getTestParameter("NP_HOST_RESPONSIVE", "The hostname of system responsive to network requests", "localhost"); |
19 | my $host_nonresponsive = getTestParameter("NP_HOST_NONRESPONSIVE", "The hostname of system not responsive to network requests", "10.0.0.1"); | 12 | my $host_nonresponsive = getTestParameter("NP_HOST_NONRESPONSIVE", "The hostname of system not responsive to network requests", "10.0.0.1"); |
20 | my $hostname_invalid = getTestParameter("NP_HOSTNAME_INVALID", "An invalid (not known to DNS) hostname", "nosuchhost"); | 13 | my $hostname_invalid = getTestParameter("NP_HOSTNAME_INVALID", "An invalid (not known to DNS) hostname", "nosuchhost"); |
21 | 14 | ||
22 | my $t; | 15 | my $res; |
23 | 16 | ||
24 | my $fping = qx(which fping 2> /dev/null); | 17 | my $fping = qx(which fping 2> /dev/null); |
25 | chomp($fping); | 18 | chomp($fping); |
26 | if( ! -x "./check_fping") { | 19 | if( ! -x "./check_fping") { |
27 | $t += skipMissingCmd( "./check_fping", $tests ); | 20 | plan skip_all => "check_fping not found, skipping tests"; |
28 | } | 21 | } |
29 | elsif ( $> != 0 && (!$fping || ! -u $fping)) { | 22 | elsif ( !$fping || !-x $fping ) { |
30 | $t += skipMsg( "./check_fping", $tests ); | 23 | plan skip_all => "fping not found or cannot be executed, skipping tests"; |
31 | } else { | 24 | } else { |
32 | $t += checkCmd( "./check_fping $host_responsive", 0, $successOutput ); | 25 | plan tests => 3; |
33 | $t += checkCmd( "./check_fping $host_nonresponsive", [ 1, 2 ] ); | 26 | $res = NPTest->testCmd( "./check_fping $host_responsive" ); |
34 | $t += checkCmd( "./check_fping $hostname_invalid", [ 1, 2 ] ); | 27 | cmp_ok( $res->return_code, '==', 0, "Responsive host returns OK"); |
35 | } | 28 | |
29 | $res = NPTest->testCmd( "./check_fping $host_nonresponsive" ); | ||
30 | cmp_ok( $res->return_code, '==', 2, "Non-Responsive host returns Critical"); | ||
36 | 31 | ||
37 | exit(0) if defined($Test::Harness::VERSION); | 32 | $res = NPTest->testCmd( "./check_fping $hostname_invalid" ); |
38 | exit($tests - $t); | 33 | cmp_ok( $res->return_code, '==', 3, "Invalid host returns Unknown"); |
34 | } | ||
diff --git a/plugins/t/check_http.t b/plugins/t/check_http.t index e92681e..c137f7b 100644 --- a/plugins/t/check_http.t +++ b/plugins/t/check_http.t | |||
@@ -103,7 +103,7 @@ SKIP: { | |||
103 | cmp_ok( $res->return_code, "==", 0, "And also when not found"); | 103 | cmp_ok( $res->return_code, "==", 0, "And also when not found"); |
104 | } | 104 | } |
105 | SKIP: { | 105 | SKIP: { |
106 | skip "No internet access", 16 if $internet_access eq "no"; | 106 | skip "No internet access", 23 if $internet_access eq "no"; |
107 | 107 | ||
108 | $res = NPTest->testCmd( | 108 | $res = NPTest->testCmd( |
109 | "./$plugin --ssl $host_tls_http" | 109 | "./$plugin --ssl $host_tls_http" |
@@ -135,7 +135,7 @@ SKIP: { | |||
135 | 135 | ||
136 | # run some certificate checks with faketime | 136 | # run some certificate checks with faketime |
137 | SKIP: { | 137 | SKIP: { |
138 | skip "No faketime binary found", 12 if !$faketime; | 138 | skip "No faketime binary found", 7 if !$faketime; |
139 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC ./$plugin -C 1 $host_tls_http"); | 139 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC ./$plugin -C 1 $host_tls_http"); |
140 | like($res->output, qr/OK - Certificate '$host_tls_cert' will expire on/, "Catch cert output"); | 140 | like($res->output, qr/OK - Certificate '$host_tls_cert' will expire on/, "Catch cert output"); |
141 | is( $res->return_code, 0, "Catch cert output exit code" ); | 141 | is( $res->return_code, 0, "Catch cert output exit code" ); |
diff --git a/plugins/tests/check_curl.t b/plugins/tests/check_curl.t index 0caad23..29cb03f 100755 --- a/plugins/tests/check_curl.t +++ b/plugins/tests/check_curl.t | |||
@@ -126,8 +126,6 @@ if ($pid) { | |||
126 | exit; | 126 | exit; |
127 | } | 127 | } |
128 | } | 128 | } |
129 | # give our webservers some time to startup | ||
130 | sleep(1); | ||
131 | } else { | 129 | } else { |
132 | # Child | 130 | # Child |
133 | #print "child\n"; | 131 | #print "child\n"; |
@@ -140,6 +138,9 @@ if ($pid) { | |||
140 | exit; | 138 | exit; |
141 | } | 139 | } |
142 | 140 | ||
141 | # give our webservers some time to startup | ||
142 | sleep(3); | ||
143 | |||
143 | # Run the same server on http and https | 144 | # Run the same server on http and https |
144 | sub run_server { | 145 | sub run_server { |
145 | my $d = shift; | 146 | my $d = shift; |
diff --git a/plugins/tests/check_http.t b/plugins/tests/check_http.t index 2f051fa..188f5e7 100755 --- a/plugins/tests/check_http.t +++ b/plugins/tests/check_http.t | |||
@@ -91,6 +91,8 @@ if ($pid) { | |||
91 | exit; | 91 | exit; |
92 | } | 92 | } |
93 | } else { | 93 | } else { |
94 | # closing the connection after -C cert checks make the daemon exit with a sigpipe otherwise | ||
95 | local $SIG{'PIPE'} = 'IGNORE'; | ||
94 | my $d = HTTP::Daemon::SSL->new( | 96 | my $d = HTTP::Daemon::SSL->new( |
95 | LocalPort => $port_https, | 97 | LocalPort => $port_https, |
96 | LocalAddr => "127.0.0.1", | 98 | LocalAddr => "127.0.0.1", |
@@ -102,8 +104,6 @@ if ($pid) { | |||
102 | exit; | 104 | exit; |
103 | } | 105 | } |
104 | } | 106 | } |
105 | # give our webservers some time to startup | ||
106 | sleep(1); | ||
107 | } else { | 107 | } else { |
108 | # Child | 108 | # Child |
109 | #print "child\n"; | 109 | #print "child\n"; |
@@ -116,6 +116,9 @@ if ($pid) { | |||
116 | exit; | 116 | exit; |
117 | } | 117 | } |
118 | 118 | ||
119 | # give our webservers some time to startup | ||
120 | sleep(3); | ||
121 | |||
119 | # Run the same server on http and https | 122 | # Run the same server on http and https |
120 | sub run_server { | 123 | sub run_server { |
121 | my $d = shift; | 124 | my $d = shift; |
@@ -414,22 +417,24 @@ sub run_common_tests { | |||
414 | 417 | ||
415 | # stickyport - on full urlS port is set back to 80 otherwise | 418 | # stickyport - on full urlS port is set back to 80 otherwise |
416 | $cmd = "$command -f stickyport -u /redir_external -t 5 -s redirected"; | 419 | $cmd = "$command -f stickyport -u /redir_external -t 5 -s redirected"; |
420 | alarm(2); | ||
417 | eval { | 421 | eval { |
418 | local $SIG{ALRM} = sub { die "alarm\n" }; | 422 | local $SIG{ALRM} = sub { die "alarm\n" }; |
419 | alarm(2); | ||
420 | $result = NPTest->testCmd( $cmd ); | 423 | $result = NPTest->testCmd( $cmd ); |
421 | alarm(0); }; | 424 | }; |
422 | isnt( $@, "alarm\n", $cmd ); | 425 | isnt( $@, "alarm\n", $cmd ); |
426 | alarm(0); | ||
423 | is( $result->return_code, 0, $cmd ); | 427 | is( $result->return_code, 0, $cmd ); |
424 | 428 | ||
425 | # Let's hope there won't be any web server on :80 returning "redirected"! | 429 | # Let's hope there won't be any web server on :80 returning "redirected"! |
426 | $cmd = "$command -f sticky -u /redir_external -t 5 -s redirected"; | 430 | $cmd = "$command -f sticky -u /redir_external -t 5 -s redirected"; |
431 | alarm(2); | ||
427 | eval { | 432 | eval { |
428 | local $SIG{ALRM} = sub { die "alarm\n" }; | 433 | local $SIG{ALRM} = sub { die "alarm\n" }; |
429 | alarm(2); | ||
430 | $result = NPTest->testCmd( $cmd ); | 434 | $result = NPTest->testCmd( $cmd ); |
431 | alarm(0); }; | 435 | }; |
432 | isnt( $@, "alarm\n", $cmd ); | 436 | isnt( $@, "alarm\n", $cmd ); |
437 | alarm(0); | ||
433 | isnt( $result->return_code, 0, $cmd ); | 438 | isnt( $result->return_code, 0, $cmd ); |
434 | 439 | ||
435 | # Test an external address - timeout | 440 | # Test an external address - timeout |