Re: Unstable tests

Bart Van Assche <[email protected]>
Newsgroups gmane.network.net-snmp.devel
Message-ID <[email protected]>
On 03/21/18 20:41, Eric S. Raymond wrote:
> Ian and I note that the test suite seems a bit compromised.

Hello Eric,

When running compile tests and the test suite I think it is a good idea 
to enable as many Net-SNMP features as possible. You may want to have a 
look at the attached shell scripts - these are the scripts I use myself 
to rebuild Net-SNMP and to run the regression tests. The 
net-snmp-run-perl-tests script needs more work - I have not yet had the 
time to figure out all the environment variable settings to make it pick 
up its dependencies from the build directory instead of requiring "make 
install" to be run first.

Bart.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
branch-name (text/plain, 185 B)
#!/usr/bin/env bash

if [ -e .git ]; then
  cat .git/HEAD | sed 's:.*/::'
elif [ -e .svn ]; then
  svn info . | sed -n 's=^URL: .*/\([^/]*\)$=\1=p'
else
  echo branch-name-not-known
fi
net-snmp-configure (text/plain, 8.8 KB)
#!/usr/bin/env bash

# Necessary software packages for building Net-SNMP:
# autoconf automake libtool m4
# glibc glibc-devel libssh2 libssh2-devel openssl openssl-devel rpm-devel
# perl-ExtUtils-MakeMaker perl-ExtUtils-Embed perl-Test-Harness
# python python-devel python-setuptools

scriptdir="$(dirname "$0")"

branch_name="$("$scriptdir/branch-name")"

is_5_4_or_above="false"
is_5_5_or_above="false"
is_5_6_or_above="false"
is_5_7_or_above="false"
is_5_8_or_above="false"
if [ "${branch_name#master}" != "${branch_name}" ]; then
  is_5_8_or_above="true"
  is_5_7_or_above="true"
  is_5_6_or_above="true"
  is_5_5_or_above="true"
  is_5_4_or_above="true"
elif [ "${branch_name#V5-7-}" != "${branch_name}" ]; then
  is_5_7_or_above="true"
  is_5_6_or_above="true"
  is_5_5_or_above="true"
  is_5_4_or_above="true"
elif [ "${branch_name#V5-6-}" != "${branch_name}" ]; then
  is_5_6_or_above="true"
  is_5_5_or_above="true"
  is_5_4_or_above="true"
elif [ "${branch_name#V5-5-}" != "${branch_name}" ]; then
  is_5_5_or_above="true"
  is_5_4_or_above="true"
elif [ "${branch_name#V5-4-}" != "${branch_name}" ] ||
	 [ "${branch_name%-5.4.2.1}" != "${branch_name}" ]
then
  is_5_4_or_above="true"
fi
have_rtnetlink=true
#srcdir=${1:-.}; shift
if ! echo "$*" | grep -Eq 'with-openssl=(no|internal)'; then
    opensslver="$(
	case "${OSTYPE}" in
	  linux*)
	    for p in openssl-devel libopenssl-devel libressl-devel; do
	      rpm -q --qf '%{version}\n' $p 2>/dev/null;
            done;
	    dpkg-query --show -f '${Version}\n' libssl-dev 2>/dev/null;
	    pacman -Q openssl 2>&1 | sed -n 's/^openssl[[:blank:]]*//p';;
	  *)
	    echo 1.0;;
	esac)"
fi
if grep -q 'CentOS release 4' /etc/issue 2>/dev/null; then
  opensslver=""
  have_rtnetlink=false
fi
opensshver="$({ rpm -q openssh-devel; rpm -q libssh2-devel; rpm -q libssh-devel; } 2>/dev/null | sed -n 's/^.*ssh[0-9]*-devel-\([0-9a-z.]*\)-.*$/\1/p' | head -n1)"
srcdir=.
cflags="-g -O0 -pipe ${CFLAGS}"
#cflags="-DNETSNMP_USE_ASSERT ${CFLAGS}"
if true; then
  # Disable inlining to make debugging easier
  cflags="$cflags -fno-strict-aliasing -fno-inline -fno-inline-functions -fno-inline-functions-called-once -fno-early-inlining -Wno-inline"
  if gcc -fno-inline-small-functions -xc -c - </dev/null >/dev/null 2>&1; then
    cflags="$cflags -fno-inline-small-functions"
  fi
fi

# See also the top-level Net-SNMP Makefile.in.
export NOAUTODEPS=y

options=()
options+=(--enable-developer)
options+=(--enable-ipv6)
options+=("--with-cflags=$cflags")
options+=(--with-defaults)
transports=()
[ "$opensshver" != "" ] && $is_5_5_or_above && transports+=(SSH)
# Mib names can be found as follows:
# (cd agent/mibgroup &&
# git grep -lE 'void[[:blank:]]*init_.*\(void\)|config_require\(' |
#  sed -n 's/\.h$//p')
mibs=()
mibs+=(examples/data_set)
mibs+=(examples/delayed_instance)
mibs+=(examples/example)
mibs+=(examples/notification)
mibs+=(examples/scalar_int)
mibs+=(examples/ucdDemoPublic)
mibs+=(examples/watched)
mibs+=(mibII)
mibs+=(smux)

case "$(uname)" in
  Linux*)
      $is_5_8_or_above && options+=(--enable-blumenthal-aes)
      options+=(--enable-new-features)
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      $is_5_7_or_above && mibs+=(deliver/deliverByNotify)
      mibs+=(disman/event)
      mibs+=(disman/expression)
      mibs+=(disman/mteEventNotificationTable)
      mibs+=(disman/mteEventTable)
      mibs+=(disman/mteObjectsTable)
      mibs+=(disman/mteTriggerBooleanTable)
      mibs+=(disman/mteTriggerDeltaTable)
      mibs+=(disman/mteTriggerExistenceTable)
      mibs+=(disman/mteTriggerTable)
      mibs+=(disman/mteTriggerThresholdTable)
      mibs+=(disman/nslookup-mib)
      mibs+=(disman/ping-mib)
      mibs+=(disman/schedule)
      mibs+=(disman/traceroute-mib)
      $is_5_5_or_above && $have_rtnetlink && mibs+=(etherlike-mib)
      mibs+=(examples/netSnmpHostsTable)
      mibs+=(hardware/cpu)
      $is_5_5_or_above && mibs+=(hardware/fsys)
      mibs+=(hardware/memory)
      $is_5_5_or_above && mibs+=(hardware/sensors)
      mibs+=(host)
      mibs+=(ip-forward-mib)
      mibs+=(ip-mib/inetNetToMediaTable)
      $is_5_5_or_above && mibs+=(ip-mib/ipDefaultRouterTable)
      mibs+=(ip-mib/ipv4InterfaceTable)
      mibs+=(ip-mib/ipv6InterfaceTable)
      $is_5_5_or_above && mibs+=(ip-mib/ipv6ScopeZoneIndexTable)
      mibs+=(mibII/ipAddr)
      mibs+=(mibII/mta_sendmail)
      mibs+=(misc/ipfwacc)
      $is_5_4_or_above && mibs+=(sctp-mib)
      mibs+=(snmp-notification-mib)
      [ "$opensslver" != "" ] && mibs+=(snmp-usm-dh-objects-mib)
      mibs+=(tcp-mib)
      mibs+=(testhandler)
      [ "$opensslver" != "" ] && $is_5_6_or_above && mibs+=(tlstm-mib tsm-mib)
      mibs+=(tunnel)
      mibs+=(ucd-snmp/diskio)
      $is_5_5_or_above && mibs+=(ucd-snmp/lmsensorsMib)
      mibs+=(ucd-snmp/extensible)
      mibs+=(udp-mib)
      if $is_5_5_or_above && $have_rtnetlink; then
	  mibs+=(rmon-mib)
      else
	  mibs+=(Rmon)
	  mibs+=(Rmon/alarm)
      fi
      options+=(--with-mysql)
      options+=("--with-security-modules=$($is_5_7_or_above && echo usm ksm tsm)")
      transports+=(AAL5PVC)
      transports+=(IPX)
      transports+=(STD)
      $is_5_8_or_above && transports+=(UDPshared)
      [ "$opensslver" = "" ] && options+=("--with-openssl=internal")
      options+=("--with-default-snmp-version=2")
      { rpm -q python-setuptools >/dev/null 2>&1 || rpm -q python-devel >/dev/null 2>&1 || dpkg-query -l python-setuptools >/dev/null 2>&1; } && options+=(--with-python-modules)
      # Disabled modules because troublesome: Rmon ipfwchains/ipfwchains ucd-snmp/lmSensors
    ;;
  AIX*)
      mkdir -p "$HOME/.net-snmp"
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      mibs+=(host)
      mibs+=(misc/ipfwacc)
      mibs+=(snmp-notification-mib)
      mibs+=(snmp-usm-dh-objects-mib)
      mibs+=(tcp-mib)
      mibs+=(ucd-snmp/diskio)
      mibs+=(ucd-snmp/extensible)
      mibs+=(udp-mib)
      mibs+=(Rmon)
      options+=("--with-persistent-directory=$HOME/.net-snmp")
      options+=("$(if [ "$opensslver" = "" ]; then if $is_5_6_or_above; then if false; then echo --with-openssl=internal; fi; else echo --without-openssl --with-default-snmp-version="2"; fi; fi)")
    ;;
  FreeBSD*)
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      mibs+=(disman/nslookup-mib)
      mibs+=(host)
      mibs+=(if-mib)
      mibs+=(mibII/mta_sendmail)
      mibs+=(misc/ipfwacc)
      mibs+=(snmp-notification-mib)
      mibs+=(snmp-usm-dh-objects-mib)
      mibs+=(tcp-mib)
      mibs+=(ucd-snmp/diskio)
      mibs+=(ucd-snmp/extensible)
      mibs+=(udp-mib)
      $is_5_4_or_above && mibs+=(sctp-mib)
      mibs+=(Rmon)
      options+=("$(if [ "$opensslver" = "" ]; then if $is_5_6_or_above; then if false; then echo --with-openssl=internal; fi; else echo --without-openssl --with-default-snmp-version="2"; fi; fi)")
      options+=(--with-python-modules)
      options+=("$(if [ "$HOSTNAME" = cell-user ]; then echo --disable-embedded-perl --without-perl-modules; fi)")
      # Disabled modules because troublesome: Rmon ipfwchains/ipfwchains ucd-snmp/lmSensors
    ;;
  NetBSD*)
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      mibs+=(disman/nslookup-mib)
      mibs+=(host)
      mibs+=(if-mib)
      mibs+=(mibII/mta_sendmail)
      mibs+=(misc/ipfwacc)
      mibs+=(snmp-notification-mib)
      mibs+=(snmp-usm-dh-objects-mib)
      mibs+=(tcp-mib)
      mibs+=(ucd-snmp/diskio)
      mibs+=(ucd-snmp/extensible)
      mibs+=(udp-mib)
      mibs+=(Rmon)
      options+=($(if [ "$opensslver" = "" ]; then if $is_5_6_or_above; then if false; then echo --with-openssl=internal; fi; else echo --without-openssl --with-default-snmp-version="2"; fi; fi))
      options+=($(if [ "$HOSTNAME" = cell-user ]; then echo --disable-embedded-perl --without-perl-modules; fi))
    ;;
  SunOS*)
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      mibs+=(rmon-mib)
    ;;
  CYGWIN*)
      export ENV_SEPARATOR=":"
      options+=(--disable-embedded-perl)
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      mibs+=(ucd-snmp/extensible)
      mibs+=(winExtDLL)
      #options+=("--with-openssl=internal")
    ;;
  MINGW*)
      options+=(--disable-embedded-perl)
      if [ "$branch_name" != "V5-4-patches" ]; then
	  options+=("--with-openssl=/c/OpenSSL")
      fi
      options+=("--prefix=/usr/local/net-snmp-${branch_name}")
      mibs+=(snmp-notification-mib)
      mibs+=(ucd-snmp/dlmod)
      mibs+=(ucd-snmp/extensible)
      mibs+=(winExtDLL)
      options+=(--without-perl-modules)
      #options+=(--with-mibdirs="C:/usr/share/snmp/mibs")
    ;;
  *)
    echo "Unknown OS $(uname)."
    ;;
esac

if ! echo "${options[*]} $*" | grep -Eq 'with-openssl=(no|internal)' &&
	[ "$opensslver" != "" ] && $is_5_6_or_above &&
	grep -rqw BIO_dgram_get_peer /usr/include/openssl 2>/dev/null; then
	transports+=(DTLSUDP)
	transports+=(TLSTCP)
fi
${srcdir}/configure "${options[@]}" --with-transports="${transports[*]}" \
	 --with-mib-modules="${mibs[*]}" "$@"
net-snmp-rebuild (text/plain, 990 B)
#!/usr/bin/env bash

set -x

usage() {
    echo "Usage: $(basename "$0") [-m] [-p] [-t]"
}

rebuild() {
  local num_jobs=$(($("${scriptdir}/num_cpus") + 1))

  killall lt-snmpd lt-snmptrapd >&/dev/null
  if [ -z "$preserve" ]; then "${scriptdir}"/clean-source-tree; fi &&
  echo "net-snmp-configure $*" &&
  "${scriptdir}"/net-snmp-configure "$@" &&
  make -s -j"${num_jobs}" -l"${num_jobs}" &&
  if [ -z "$skip_tests" ]; then "${scriptdir}"/net-snmp-run-tests; fi
}

scriptdir="$(dirname "$0")"

while [ "$1" != "${1#-}" ]; do
    case "$1" in
	'-m') multiple=true; shift;;
        '-p') preserve=true; shift;;
	'-t') skip_tests=true; shift;;
        '--') shift; break;;
        *)    usage; exit 1;;
    esac
done

export NOAUTODEPS=1
if [ -z "$multiple" ]; then
    rebuild "$@"
else
    for opts in "" "--with-openssl=internal" "--without-openssl" \
		"--disable-debugging --disable-ipv6"; do
	rebuild "$@" "$opts"
    done
fi 2>&1 | tee "../net-snmp-$(basename "$PWD")-build-log.txt"
net-snmp-run-perl-tests (text/plain, 534 B)
#!/bin/bash

echo $PERL5LIB

# See also the output of the following command:
# find -name '*.so' | sed 's/^\.\///;s/\/[^\/]*$//' | sort -u
export LD_LIBRARY_PATH="$PWD/snmplib/.libs:$PWD/agent/helpers/.libs:$PWD/agent/.libs:$PWD/apps/.libs:" &&
# PERLLIB: A list of directories in which to look for Perl library files before looking in the standard library and the current directory.
export PERLLIB="$PWD/perl/blib/lib:$PWD/perl/blib/lib/NetSNMP:$PWD/perl/blib/lib/NetSNMP/agent:$PWD/perl/blib/arch/auto/SNMP" &&
cd perl &&
make test
net-snmp-run-python-tests (text/plain, 484 B)
#!/bin/bash

set -x
killall snmpd
export LD_LIBRARY_PATH="$PWD/snmplib/.libs:$PWD/agent/.libs:$PWD/agent/helpers/.libs:"
export MIBDIRS=$PWD/mibs
export SNMP_PERSISTENT_DIR=/tmp/net-snmp
export SNMP_SNMPD_PORT=1161
export PYTHONPATH=$PWD/python/netsnmp
mkdir -p "$SNMP_PERSISTENT_DIR" || exit $?
agent/snmpd -I-smux -f -Lo -c python/netsnmp/tests/snmpd.conf localhost:${SNMP_SNMPD_PORT} &
pid=$!
cd python || exit $?
python setup.py --basedir="$PWD/.." test || exit $?
kill $pid
wait
net-snmp-run-tests (text/plain, 799 B)
#!/bin/bash

scriptdir="$(dirname "$0")"

ulimit -c unlimited

killall snmpd snmptrapd >&/dev/null

export SNMP_VERBOSE=1 &&
export SNMP_SAVE_TMPDIR=1 &&
export NOAUTODEPS=1 &&
make -s &&
(
      export PATH="$PWD/agent/.libs:$PWD/apps/.libs:$PWD:$PATH" &&
      export LD_LIBRARY_PATH="$PWD/snmplib/.libs:$PWD/agent/.libs:$PWD/agent/helpers/.libs:" &&
      cd testing &&
      if [ -e RUNFULLTESTS ] &&
	     perl -e 'require TAP::Harness;' >/dev/null 2>&1; then
	  export HARNESS_OPTIONS=j9
	  ./RUNFULLTESTS -g all
	  #./RUNFULLTESTS -g tls -r T121DtlsTrap_simple
	  #./RUNFULLTESTS -g tls -r T111DtlsServer
	  #./RUNFULLTESTS -g tls
	  #./RUNFULLTESTS -g unit-tests
      else
	  make -s test
      fi &&
      cd .. &&
      net-snmp-run-perl-tests
) &&
"$scriptdir/net-snmp-run-python-tests"
num_cpus (text/plain, 258 B)
#!/usr/bin/env bash

if type wmic >&/dev/null; then
    wmic cpu get NumberOfCores |
	{ read -r a; read -r b; echo "$a" >/dev/null; echo "$b"; }
elif [ -e /sys/devices/system/cpu ]; then
    ls -d /sys/devices/system/cpu/cpu[0-9]* | wc -l
else
    echo 4
fi
clean-source-tree (text/plain, 1.6 KB)
#!/usr/bin/env bash

shopt -s nullglob

usage() {
    echo "Usage: $(basename "$0") [ -x <exclude> ]*"
    exit 1
}

word_in_list() {
    local a word=$1

    shift
    for a in "$@"; do
	[ "$word" = "$a" ] && return 0
    done
    return 1
}

remove_empty_directories() {
    find . -depth -type d |
        sed 's|^\./||' |
        grep -Ev '^\.$|^\.svn/|/\.svn/|/\.svn$|^\.hg/|^\.hg$|^\.git/|^\.git$' |
        while read -r d; do
	    for f in "$d"/{*,.*}; do
		if ! [ -e "$f" ]; then
		    rmdir "$d"
		fi
		break
	    done
	done
}

exclude=("TAGS")
git_options=(-e TAGS)

while [ "${1#-}" != "$1" ]; do
    case "$1" in
	-x)
	    exclude+=("$2")
	    git_options+=(-e "$2")
	    shift; shift;;
	*)
	    usage;;
    esac
done

for d in "${@-.}"; do
  (
    if cd "$d"; then
      if [ -e .svn ]; then
        if ! type -p svn >&/dev/null; then
          echo "$0: svn: not found."
          exit 0
        fi
        "$(dirname "$0")"/list-non-source-files |
          while read -r f; do
	    if ! word_in_list "$f" "${exclude[@]}"; then rm -rf -- "$f"; fi;
	  done
      elif [ -e .git ] || [ -e ../.git ]; then
        if ! type -p git >&/dev/null; then
          echo "$0: git: not found."
          exit 0
        fi
        git clean -f -d -x "${git_options[@]}" >/dev/null
        remove_empty_directories
      elif [ -e .hg ] || [ -e ../.hg ]; then
        if ! type -p hg >&/dev/null; then
          echo "$0: hg: not found."
          exit 0
        fi
        hg purge --all
      else
        echo "$0: $d: not administered by Subversion, Git or Mercurial."
      fi
    fi
  )
done
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.