bin_PROGRAMS = nbd-server
EXTRA_PROGRAMS = nbd-client knbd-client
-TESTS = $(srcdir)/simple_test
+TESTS_ENVIRONMENT=$(srcdir)/simple_test
+TESTS = cmd cfg1 cfgmulti
check_PROGRAMS = nbd-tester-client
knbd_client_SOURCES = nbd-client.c cliserv.h
nbd_client_SOURCES = nbd-client.c cliserv.h
mv NBD-SERVER.5 nbd-server.5.in
dist-hook:
rm -Rf `find $(distdir) -name '.svn' -type d -print`
+cmd:
+cfg1:
+cfgmulti:
**/
typedef struct {
gchar* exportname; /**< (unprocessed) filename of the file we're exporting */
+ gchar* cowname; /**< template for the filename of the copy-on-write file */
off_t expected_size; /**< size of the exported file as it was told to
us through configuration */
gchar* listenaddr; /**< The IP address we're listening on */
{ "sparse_cow", FALSE, PARAM_BOOL, NULL, F_SPARSE },
{ "sdp", FALSE, PARAM_BOOL, NULL, F_SDP },
{ "listenaddr", FALSE, PARAM_STRING, NULL, 0 },
+ { "cowname", FALSE, PARAM_STRING, NULL, 0 },
};
const int lp_size=sizeof(lp)/sizeof(PARAM);
PARAM gp[] = {
lp[8].target=lp[9].target=lp[10].target=
lp[11].target=lp[12].target=&(s.flags);
lp[13].target=&(s.listenaddr);
+ lp[14].target=&(s.cowname);
+
+ s.cowname = "$F-$I-$P.diff";
/* After the [generic] group, start parsing exports */
if(i==1) {
# Create a one-meg device
dd if=/dev/zero of=$tmpnam bs=1024 count=1024
-./nbd-server -C /dev/null -p `pwd`/nbd-server.pid 11111 $tmpnam &
-# -p only works if nbd-server wasn't compiled with -DNOFORK or -DNODAEMON,
-# which I sometimes do for testing and debugging.
-PID=$!
-sleep 1
-./nbd-tester-client localhost 11111
-retval=$?
-if [ -f nbd-server.pid ]
-then
- kill `cat nbd-server.pid`
-else
- kill $PID
-fi
-rm -f nbd-server.pid
-if [ $retval -ne 0 ]
-then
- rm -f $tmpnam
- exit $retval
-fi
-cat > nbd-server.conf <<EOF
+echo $1
+
+case $1 in
+ ./cmd)
+ # Test with export specified on command line
+ ./nbd-server -C /dev/null -p `pwd`/nbd-server.pid 11111 $tmpnam &
+ # -p only works if nbd-server wasn't compiled with -DNOFORK or
+ # -DNODAEMON, which I sometimes do for testing and debugging.
+ PID=$!
+ sleep 1
+ ./nbd-tester-client localhost 11111
+ retval=$?
+ ;;
+
+ ./cfg1)
+ # Test with export specified in config file
+ cat > nbd-server.conf <<EOF
[generic]
[export]
exportname = $tmpnam
port = 11111
EOF
-./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
-PID=$!
-sleep 1
-./nbd-tester-client localhost 11111
-retval=$?
+ ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ PID=$!
+ sleep 1
+ ./nbd-tester-client localhost 11111
+ retval=$?
+ ;;
+ ./cfgmulti)
+ # Test with multiple exports specified in config file, and
+ # testing more options too
+ cat >nbd-server.conf <<EOF
+[generic]
+[export1]
+ exportname = $tmpnam
+ port = 11111
+ copyonwrite = true
+ listenaddr = 127.0.0.1
+[export2]
+ exportname = $tmpnam
+ port = 11112
+ readonly = true
+EOF
+ ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ PID=$!
+ sleep 1
+ ./nbd-tester-client localhost 11111
+ retval=$?
+ if [ $retval -ne 0 ]
+ then
+ if [ -f nbd-server.pid ]
+ then
+ kill `cat nbd-server.pid`
+ rm -f nbd-server.pid
+ else
+ kill $PID
+ fi
+ rm -f $tmpnam nbd-server.conf
+ exit $retval
+ fi
+ ./nbd-tester-client localhost 11112
+ retval=$?
+ ;;
+ *)
+ echo "E: unknown test $1"
+ exit 1
+ ;;
+esac
if [ -f nbd-server.pid ]
then
kill `cat nbd-server.pid`
+ rm -f nbd-server.pid
else
kill $PID
fi
-rm -f nbd-server.pid
-rm -f nbd-server.conf
-rm -f $tmpnam
-exit $retval
+if [ $retval -ne 0 ]
+then
+ exit $retval
+fi
+rm -f $tmpnam nbd-server.conf