diff --git a/.travis.yml b/.travis.yml index d0b773c..669acd1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,40 +1,73 @@ -# travis-ci.org configuration -# language: generic -sudo: required -dist: trusty + +os: + - linux + +dist: + - trusty + - xenial + env: - global: - - secure: "CoI8hwHH1yfQoQxIfWGRS0WfTyScox+5aJn0fDDgz2uKrrIxmBvIw/WKX8wcSiV6fLmLuwgNkKqSM3hdO4qaG+JxfWcuEiZZHm+kxSGMkWbGb/fvAI+gHg8ldKyYttcIX71O5rlZiC2QpNKQi2v18S6pI5p8eqnx7DYx4YrmguQ=" - # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created - # via the "travis encrypt" command using the project repo's public key - - secure: "C9ZJ9LYnuowRdF4D66KLfquimvu8GtRGIafwvCcGYKReEy8phlBdFsHlybkMBNYJNTJSM0j6wyo1lKTVGHxmpQDimjR7kmxUtawbhuJ5qOCBtFqNVh9lRQi7hC4+UOhvRsIcbV8HAJM5u/5RxGOfXCePK3a2DtiYv1d2NHToZN8=" + global: + - secure: "CoI8hwHH1yfQoQxIfWGRS0WfTyScox+5aJn0fDDgz2uKrrIxmBvIw/WKX8wcSiV6fLmLuwgNkKqSM3hdO4qaG+JxfWcuEiZZHm+kxSGMkWbGb/fvAI+gHg8ldKyYttcIX71O5rlZiC2QpNKQi2v18S6pI5p8eqnx7DYx4YrmguQ=" + # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created + # via the "travis encrypt" command using the project repo's public key + - secure: "C9ZJ9LYnuowRdF4D66KLfquimvu8GtRGIafwvCcGYKReEy8phlBdFsHlybkMBNYJNTJSM0j6wyo1lKTVGHxmpQDimjR7kmxUtawbhuJ5qOCBtFqNVh9lRQi7hC4+UOhvRsIcbV8HAJM5u/5RxGOfXCePK3a2DtiYv1d2NHToZN8=" + compiler: - - gcc -before_install: - - sudo apt-get update -qq - - sudo apt-get install libcap2-bin - #- sudo apt-get install traceroute - #- traceroute google.com - - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca- -install: - - ci/build-1-autotools.sh - - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - - cpanm --sudo Test::Command -script: - - ci/build-2-install.sh - - env PATH=`pwd`/src:$PATH prove ci/test-*.pl - - ci/test-tarball.sh -after_success: - - ci/coveralls.sh - - ci/deploy-bintray.sh + - gcc addons: + apt: + update: true + packages: + - libcap2-bin + - libtest-command-perl coverity_scan: project: name: "schweikert/fping" description: "Build submitted via Travis CI" notification_email: david@schweikert.ch - #build_command_prepend: "ci/build-2-install.sh" - build_command: "ci/build-2-install.sh" + build_command: "ci/build-3-compile.sh" branch_pattern: coverity_scan + +install: + - ci/build-1-autotools.sh + - ci/build-2-test-command.sh + - ci/build-3-prepare-macos.sh + +script: + - ci/build-4-compile.sh + - ci/run-tests.sh + - ci/deploy-bintray.sh + +after_success: + - ci/deploy-coveralls.sh + +stages: + - test + - name: deploy + if: branch = master OR branch = v4.x + +jobs: + include: + #### STAGE: test + - stage: test + name: test trusty + os: linux + dist: trusty + + - name: test xenial + os: linux + dist: xenial + + - name: test macos + os: osx + + #### STAGE: deploy + - stage: deploy + name: deploy + os: linux + dist: xenial + env: + - DO_DEPLOY=1 diff --git a/ci/build-1-autotools.sh b/ci/build-1-autotools.sh index 0e05c13..a272f59 100755 --- a/ci/build-1-autotools.sh +++ b/ci/build-1-autotools.sh @@ -1,5 +1,9 @@ #!/bin/bash -e +if [[ "$OSTYPE" == "darwin"* ]]; then + exit 0 +fi + AUTOCONF=http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz AUTOMAKE=http://ftp.gnu.org/gnu/automake/automake-1.14.1.tar.gz LIBTOOL=http://alpha.gnu.org/gnu/libtool/libtool-2.4.2.418.tar.gz diff --git a/ci/build-2-test-command.sh b/ci/build-2-test-command.sh new file mode 100755 index 0000000..5e5637c --- /dev/null +++ b/ci/build-2-test-command.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -ex + +curl -L http://cpanmin.us | perl - --sudo App::cpanminus +cpanm --sudo Test::Command + diff --git a/ci/prepare-macos.sh b/ci/build-3-prepare-macos.sh similarity index 100% rename from ci/prepare-macos.sh rename to ci/build-3-prepare-macos.sh diff --git a/ci/build-2-install.sh b/ci/build-4-compile.sh similarity index 100% rename from ci/build-2-install.sh rename to ci/build-4-compile.sh diff --git a/ci/coveralls.sh b/ci/coveralls.sh deleted file mode 100755 index f7de299..0000000 --- a/ci/coveralls.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -set -x - -sudo -H pip install cpp-coveralls - -cd src - -ls -l - -gcov *.o -cd .. -coveralls --exclude ci --exclude src/optparse.c --no-gcov diff --git a/ci/deploy-bintray.sh b/ci/deploy-bintray.sh index 95219a3..a234f2c 100755 --- a/ci/deploy-bintray.sh +++ b/ci/deploy-bintray.sh @@ -4,15 +4,8 @@ set -e -# do this only for the gcc run -#if [ "$CC" != "gcc" ]; then -# echo "skipped upload because $CC != gcc" -# exit 0 -#fi - -# do this only for the master and version3 branch -if [ "$TRAVIS_BRANCH" != "master" -a "$TRAVIS_BRANCH" != "version3" ]; then - echo "skipped upload branch $TRAVIS_BRANCH isn't master/version3" +if [ -z "$DO_DEPLOY" ]; then + echo "skip deploy (\$DO_DEPLOY not set)" exit 0 fi diff --git a/ci/deploy-coveralls.sh b/ci/deploy-coveralls.sh new file mode 100755 index 0000000..1396015 --- /dev/null +++ b/ci/deploy-coveralls.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +set -xe + +pip install --user cpp-coveralls +coveralls --root src --exclude src/optparse.c --gcov-options '\-lp' diff --git a/ci/run-tests.sh b/ci/run-tests.sh new file mode 100755 index 0000000..9d5a308 --- /dev/null +++ b/ci/run-tests.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -ex + +PATH=`pwd`/src:$PATH + +prove ci/test-*.pl +ci/test-tarball.sh diff --git a/ci/test-11-nopriv.pl b/ci/test-11-nopriv-fail.pl similarity index 100% rename from ci/test-11-nopriv.pl rename to ci/test-11-nopriv-fail.pl diff --git a/ci/test-tarball.sh b/ci/test-tarball.sh index 48d0567..da43a25 100755 --- a/ci/test-tarball.sh +++ b/ci/test-tarball.sh @@ -6,6 +6,11 @@ set -e set -x +# skip on macos +if [[ "$OSTYPE" == "darwin"* ]]; then + exit 0 +fi + make dist VERSION=$(ls fping-*.tar.gz | sed -e 's/^fping-//' | sed -e 's/\.tar\.gz$//') if [ -z "$VERSION" ]; then diff --git a/src/fping.c b/src/fping.c index 0b8d780..f4d0d84 100644 --- a/src/fping.c +++ b/src/fping.c @@ -373,7 +373,7 @@ void errno_crash_and_burn(char* message); char* get_host_by_address(struct in_addr in); int send_ping(HOST_ENTRY* h, int index); void usage(int); -int wait_for_reply(long); +int wait_for_reply(int64_t); void print_per_system_stats(void); void print_per_system_splits(void); void print_netdata(void); @@ -1273,7 +1273,7 @@ void main_loop() if (per_recv_flag) { if (timestamp_flag) { - printf("[%10.5f] ", (double)current_time_ns / 1e9); + printf("[%.5f] ", (double)current_time_ns / 1e9); } printf("%-*s : [%d], timed out", max_hostname_len, h->host, event->ping_index); @@ -2384,7 +2384,7 @@ int wait_for_reply(int64_t wait_time) /* print received ping (unless --quiet) */ if (per_recv_flag) { if (timestamp_flag) { - printf("[%10.5f] ", (double)recv_time / 1e9); + printf("[%.5f] ", (double)recv_time / 1e9); } avg = h->total_time / h->num_recv; printf("%-*s : [%d], %d bytes, %s ms",