From 76d7450b5b5abea8781fbe99c0053bbd9704d247 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 16 Feb 2014 12:10:01 +0000 Subject: [PATCH 2/2] tests: Test the nbdkit command line more thoroughly. --- tests/Makefile.am | 28 ++++++++++++++-- tests/test-captive.sh | 54 +++++++++++++++++++++++++++++++ tests/test-dump-config.sh | 41 ++++++++++++++++++++++++ tests/test-foreground.sh | 80 ++++++++++++++++++++++++++++++++++++++++++++++ tests/test-help-plugin.sh | 41 ++++++++++++++++++++++++ tests/test-help.sh | 41 ++++++++++++++++++++++++ tests/test-single.sh | 40 +++++++++++++++++++++++ tests/test-start.sh | 81 +++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 403 insertions(+), 3 deletions(-) create mode 100755 tests/test-captive.sh create mode 100755 tests/test-dump-config.sh create mode 100755 tests/test-foreground.sh create mode 100755 tests/test-help-plugin.sh create mode 100755 tests/test-help.sh create mode 100755 tests/test-single.sh create mode 100755 tests/test-start.sh diff --git a/tests/Makefile.am b/tests/Makefile.am index 417cb3d..619bed2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -33,9 +33,31 @@ CLEANFILES = *~ MAINTAINERCLEANFILES = -EXTRA_DIST = test.pl test.py +EXTRA_DIST = \ + test-captive.sh \ + test-dump-config.sh \ + test-foreground.sh \ + test-help.sh \ + test-help-plugin.sh \ + test.pl \ + test.py \ + test-single.sh \ + test-start.sh + +# Basic server command line and start-up tests. + +TESTS = \ + test-help.sh \ + test-help-plugin.sh \ + test-dump-config.sh \ + test-start.sh \ + test-foreground.sh \ + test-single.sh \ + test-captive.sh + +# In-depth tests need libguestfs, since that is a convenient way to +# drive qemu. -# Tests need libguestfs, since that is a convenient way to drive qemu. if HAVE_LIBGUESTFS # Use the 'direct' backend, and ensure maximum libguestfs debugging is @@ -52,7 +74,7 @@ libtest_la_CFLAGS = $(WARNINGS_CFLAGS) # Basic connection test. check_PROGRAMS = test-connect -TESTS = test-connect +TESTS += test-connect check_DATA = test_connect_SOURCES = test-connect.c test.h diff --git a/tests/test-captive.sh b/tests/test-captive.sh new file mode 100755 index 0000000..5f18b5f --- /dev/null +++ b/tests/test-captive.sh @@ -0,0 +1,54 @@ +#!/bin/bash - +# nbdkit +# Copyright (C) 2014 Red Hat Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Red Hat nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +set -e +set -x + +# Test nbdkit --run (captive nbdkit) option. + +rm -f captive.sock captive.out + +../src/nbdkit -U captive.sock \ + ../plugins/example1/.libs/nbdkit-example1-plugin.so \ + --run 'sleep 5; echo nbd=$nbd; echo port=$port; echo socket=$unixsocket' > captive.out + +# Check the output. +if [ "$(cat captive.out)" != "nbd=nbd:unix:$(pwd)/captive.sock +port= +socket=$(pwd)/captive.sock" ]; then + echo "$0: unexpected output" + cat captive.out + exit 1 +fi + +rm captive.sock captive.out diff --git a/tests/test-dump-config.sh b/tests/test-dump-config.sh new file mode 100755 index 0000000..1ed7fb7 --- /dev/null +++ b/tests/test-dump-config.sh @@ -0,0 +1,41 @@ +#!/bin/bash - +# nbdkit +# Copyright (C) 2014 Red Hat Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Red Hat nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +set -e + +output="$(../src/nbdkit --dump-config)" +if [[ ! ( "$output" =~ ^libdir= ) ]]; then + echo "$0: unexpected output from nbdkit --dump-config" + echo "$output" + exit 1 +fi diff --git a/tests/test-foreground.sh b/tests/test-foreground.sh new file mode 100755 index 0000000..daa733e --- /dev/null +++ b/tests/test-foreground.sh @@ -0,0 +1,80 @@ +#!/bin/bash - +# nbdkit +# Copyright (C) 2014 Red Hat Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Red Hat nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +set -e +set -x + +# Test nbdkit -f option. + +rm -f foreground.pid foreground.sock + +../src/nbdkit \ + -f -P foreground.pid -U foreground.sock \ + ../plugins/example1/.libs/nbdkit-example1-plugin.so & +bg_pid=$! + +# We may have to wait a short time for the pid file to appear. +for i in `seq 1 10`; do + if test -f foreground.pid; then + break + fi + sleep 1 +done +if ! test -f foreground.pid; then + echo "$0: PID file was not created" + exit 1 +fi + +pid="$(cat foreground.pid)" + +test "$bg_pid" -eq "$pid" + +# Check the socket was created (and is a socket). +test -S foreground.sock + +# Kill the process. +kill $pid + +# Check the process exits (eventually). +for i in `seq 1 10`; do + if ! kill -s 0 $pid; then + break; + fi + sleep 1 +done +if kill -s 0 $pid; then + echo "$0: process did not exit after sending a signal" + exit 1 +fi + +rm foreground.pid foreground.sock diff --git a/tests/test-help-plugin.sh b/tests/test-help-plugin.sh new file mode 100755 index 0000000..dba1028 --- /dev/null +++ b/tests/test-help-plugin.sh @@ -0,0 +1,41 @@ +#!/bin/bash - +# nbdkit +# Copyright (C) 2014 Red Hat Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Red Hat nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +set -e + +output="$(../src/nbdkit ../plugins/file/.libs/nbdkit-file-plugin.so --help)" +if [[ ! ( "$output" =~ "nbdkit file plugin" ) ]]; then + echo "$0: unexpected output from nbdkit file --help" + echo "$output" + exit 1 +fi diff --git a/tests/test-help.sh b/tests/test-help.sh new file mode 100755 index 0000000..299480b --- /dev/null +++ b/tests/test-help.sh @@ -0,0 +1,41 @@ +#!/bin/bash - +# nbdkit +# Copyright (C) 2014 Red Hat Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Red Hat nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +set -e + +output="$(../src/nbdkit --help)" +if [[ ! ( "$output" =~ dump-config ) ]]; then + echo "$0: unexpected output from nbdkit --help" + echo "$output" + exit 1 +fi diff --git a/tests/test-single.sh b/tests/test-single.sh new file mode 100755 index 0000000..ab0827d --- /dev/null +++ b/tests/test-single.sh @@ -0,0 +1,40 @@ +#!/bin/bash - +# nbdkit +# Copyright (C) 2014 Red Hat Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Red Hat nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +set -e +set -x + +# Test nbdkit -s option. +# XXX Not sure what is a really good test of this. + +../src/nbdkit -s ../plugins/example1/.libs/nbdkit-example1-plugin.so