9bd3d0754329908280f7a9c7174b3fa0ee5c60cc
[nbd.git] / simple_test
1 #!/bin/sh
2 # Yes, that's POSIX sh, not bash!
3
4 tmpnam=`mktemp`
5
6 # Create a one-meg device
7 dd if=/dev/zero of=$tmpnam bs=1024 count=1024
8
9 echo $1
10
11 case $1 in
12         */cmd)
13                 # Test with export specified on command line
14                 ./nbd-server -C /dev/null -p `pwd`/nbd-server.pid 11111 $tmpnam &
15                 # -p only works if nbd-server wasn't compiled with -DNOFORK or
16                 # -DNODAEMON, which I sometimes do for testing and debugging.
17                 PID=$!
18                 sleep 1
19                 ./nbd-tester-client 127.0.0.1 11111
20                 retval=$?
21         ;;
22
23         */cfg1)
24                 # Test with export specified in config file
25                 cat > nbd-server.conf <<EOF
26 [generic]
27         oldstyle = true
28 [export]
29         exportname = $tmpnam
30         port = 11112
31 EOF
32                 ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
33                 PID=$!
34                 sleep 1
35                 ./nbd-tester-client 127.0.0.1 11112
36                 retval=$?
37         ;;
38         */cfgmulti)
39                 # Test with multiple exports specified in config file, and
40                 # testing more options too
41                 cat >nbd-server.conf <<EOF
42 [generic]
43         oldstyle = true
44 [export1]
45         exportname = $tmpnam
46         port = 11113
47         copyonwrite = true
48         listenaddr = 127.0.0.1
49 [export2]
50         exportname = $tmpnam
51         port = 11114
52         readonly = true
53 EOF
54                 ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
55                 PID=$!
56                 sleep 1
57                 ./nbd-tester-client localhost 11113
58                 retval=$?
59                 if [ $retval -ne 0 ]
60                 then
61                         if [ -f nbd-server.pid ]
62                         then
63                                 kill `cat nbd-server.pid`
64                                 rm -f nbd-server.pid
65                         else
66                                 kill $PID
67                         fi
68                         rm -f $tmpnam nbd-server.conf
69                         exit $retval
70                 fi
71                 ./nbd-tester-client localhost 11114
72                 retval=$?
73         ;;
74         */cfgnew)
75                 # Test new-style exports
76                 cat >nbd-server.conf <<EOF
77 [generic]
78 [export1]
79         exportname = $tmpnam
80         copyonwrite = true
81         listenaddr = 127.0.0.1
82 [export2]
83         exportname = $tmpnam
84         readonly = true
85 EOF
86                 ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
87                 PID=$!
88                 sleep 1
89                 ./nbd-tester-client localhost -N export1
90                 retval=$?
91                 if [ $retval -ne 0 ]
92                 then
93                         if [ -f nbd-server.pid ]
94                         then
95                                 kill `cat nbd-server.pid`
96                                 rm -f nbd-server.pid
97                         else
98                                 kill $PID
99                         fi
100                         rm -f $tmpnam nbd-server.conf
101                         exit $retval
102                 fi
103                 ./nbd-tester-client localhost -N export2
104                 retval=$?
105         ;;
106         *)
107                 echo "E: unknown test $1"
108                 exit 1
109         ;;
110 esac
111 if [ -f nbd-server.pid ]
112 then
113         kill `cat nbd-server.pid`
114         rm -f nbd-server.pid
115 else
116         kill $PID
117 fi
118 if [ $retval -ne 0 ]
119 then
120         exit $retval
121 fi
122 rm -f $tmpnam nbd-server.conf