diff --git a/autobuild.sh b/autobuild.sh new file mode 100755 index 000000000..3ab8d0a52 --- /dev/null +++ b/autobuild.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -e + +src=$(readlink -f $(dirname $0)) +out=$PWD + +MAKEFLAGS=${MAKEFLAGS:--j16} +DPDK_DIR=/usr/local/dpdk-2.1.0/x86_64-native-linuxapp-gcc + +cd $src + +scanbuild='' +if hash scan-build; then + scanbuild="scan-build -o $out/scan-build-tmp" +fi + +make $MAKEFLAGS clean +time $scanbuild make $MAKEFLAGS DPDK_DIR=$DPDK_DIR + +if [ -d $out/scan-build-tmp ]; then + scanoutput=$(ls -1 $out/scan-build-tmp/) + mv $out/scan-build-tmp/$scanoutput $out/scan-build + rmdir $out/scan-build-tmp + chmod -R a+rX $out/scan-build +fi + +if hash doxygen; then + (cd "$src"/doc; make $MAKEFLAGS) + mkdir -p "$out"/doc + for d in "$src"/doc/output.*; do + component=$(basename "$d" | sed -e 's/^output.//') + mv "$d"/html "$out"/doc/$component + rm -rf "$d" + done +fi diff --git a/autopackage.sh b/autopackage.sh new file mode 100755 index 000000000..9f34e5448 --- /dev/null +++ b/autopackage.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -xe + +DPDK_DIR=/usr/local/dpdk-2.1.0/x86_64-native-linuxapp-gcc + +src=$(readlink -f $(dirname $0)) +out=$PWD + +MAKEFLAGS=${MAKEFLAGS:--j16} +cd $src + +make clean + +if [ `git status --porcelain | wc -l` -ne 0 ]; then + echo make clean left the following files: + git status --porcelain + exit 1 +fi + +pv=spdk-$(date +%Y_%m_%d) + +find . -iname "spdk-*.tar.gz" -delete +git archive HEAD -9 --prefix=${pv}/ -o ${pv}.tar.gz + +tarball=$(ls -1 spdk-*.tar.gz) +if [ $PWD != $out ]; then + mv $tarball $out/ +fi + +# Build from packaged source +tmpdir=$(mktemp -d) +echo "tmpdir=$tmpdir" +tar -C "$tmpdir" -xf $out/$tarball +(cd "$tmpdir"/spdk-* && time make ${MAKEFLAGS} DPDK_DIR=$DPDK_DIR) +rm -rf "$tmpdir" diff --git a/autotest.sh b/autotest.sh new file mode 100755 index 000000000..6834833b4 --- /dev/null +++ b/autotest.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +rootdir=$(readlink -f $(dirname $0)) +source "$rootdir/scripts/autotest_common.sh" + +set -xe + +if [ $EUID -ne 0 ]; then + echo "$0 must be run as root" + exit 1 +fi + +timing_enter autotest + +src=$(readlink -f $(dirname $0)) +out=$PWD +cd $src + +# set up huge pages +timing_enter afterboot +./scripts/configure_hugepages.sh 3072 +timing_exit afterboot + +lsmod | grep -q ^nvme && rmmod nvme || true + +##################### +# Unit Tests +##################### + +timing_enter lib + +time test/lib/nvme/nvme.sh +time test/lib/memory/memory.sh + +timing_exit lib + +# detach pci devices from uio driver +grep -q "^uio_pci_generic" /proc/modules && rmmod uio_pci_generic + +# bind NVMe devices to NVMe driver if no kernel device +if [ -d "/sys/bus/pci/drivers/nvme" ]; then + device=`find /sys/bus/pci/drivers/nvme -name "0000*" -print` + if [ -z "$device" ]; then + rmmod nvme + modprobe nvme + fi +fi + +timing_exit autotest +chmod a+r $output_dir/timing.txt + +# catch any stray core files +process_core diff --git a/scripts/configure_hugepages.sh b/scripts/configure_hugepages.sh new file mode 100755 index 000000000..d07fa32e0 --- /dev/null +++ b/scripts/configure_hugepages.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -e + +if [ "$1" = "" ]; then + NRHUGE=1024 +else + NRHUGE="$1" +fi + +if mount | grep -qv hugetlbfs; then + mkdir -p /mnt/huge + mount -t hugetlbfs nodev /mnt/huge +fi + +echo $NRHUGE > /proc/sys/vm/nr_hugepages