2011-04-13 01:59:19 +04:00
#!/bin/sh
# Ensure that virsh option parsing doesn't regress
2012-11-07 07:55:53 +04:00
# Copyright (C) 2011-2012 Red Hat, Inc.
2011-04-13 01:59:19 +04:00
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
2012-07-27 02:58:02 +04:00
# along with this program. If not, see
# <http://www.gnu.org/licenses/>.
2011-04-13 01:59:19 +04:00
: ${srcdir=$(pwd)}
: ${abs_top_srcdir=$(pwd)/..}
: ${abs_top_builddir=$(pwd)/..}
# If $abs_top_builddir/tools is not early in $PATH, put it there,
# so that we can safely invoke "virsh" simply with its name.
case $PATH in
$abs_top_builddir/tools/src:$abs_top_builddir/tools:*) ;;
$abs_top_builddir/tools:*) ;;
*) PATH=$abs_top_builddir/tools:$PATH; export PATH ;;
esac
if test "$VERBOSE" = yes; then
set -x
virsh --version
fi
. "$srcdir/test-lib.sh"
cat <<\EOF > exp-out || framework_failure
setvcpus: <domain> trying as domain NAME
setvcpus: count(optdata): 2
setvcpus: domain(optdata): test
setvcpus: found option <domain>: test
EOF
fail=0
test_url=test:///default
for args in \
'test 2' \
'--domain test 2' \
'--domain=test 2' \
'test --count 2' \
'test --count=2' \
'--domain test --count 2' \
'--domain=test --count 2' \
'--domain test --count=2' \
'--domain=test --count=2' \
'--count 2 --domain test' \
'--count 2 --domain=test' \
'--count=2 --domain test' \
'--count=2 --domain=test' \
'--count 2 test' \
'--count=2 test' \
; do
2011-07-14 15:58:02 +04:00
virsh -d0 -c $test_url setvcpus $args >out 2>>err || fail=1
2011-11-30 03:42:23 +04:00
LC_ALL=C sort out | compare exp-out - || fail=1
2011-04-13 01:59:19 +04:00
done
2011-08-23 03:12:56 +04:00
# Another complex parsing example
cat <<\EOF > exp-out || framework_failure
<domainsnapshot>
<description>1<2</description>
2012-11-07 07:55:53 +04:00
<memory file='d,e'/>
2011-08-23 03:12:56 +04:00
<disks>
<disk name='vda' snapshot='external'>
<source file='a&b,c'/>
</disk>
<disk name='vdb'/>
</disks>
</domainsnapshot>
EOF
2011-09-15 01:20:08 +04:00
virsh -q -c $test_url snapshot-create-as --print-xml test \
2011-08-23 03:12:56 +04:00
--diskspec 'vda,file=a&b,,c,snapshot=external' --description '1<2' \
2012-11-07 07:55:53 +04:00
--diskspec vdb --memspec file=d,,e >out 2>>err || fail=1
2011-11-30 03:42:23 +04:00
compare exp-out out || fail=1
2011-08-23 03:12:56 +04:00
2011-09-15 01:20:08 +04:00
cat <<\EOF > exp-out || framework_failure
<domainsnapshot>
<name>name</name>
<description>vda</description>
<disks>
<disk name='vdb'/>
</disks>
</domainsnapshot>
EOF
virsh -q -c $test_url snapshot-create-as --print-xml test name vda vdb \
>out 2>>err || fail=1
2011-11-30 03:42:23 +04:00
compare exp-out out || fail=1
2011-09-15 01:20:08 +04:00
cat <<\EOF > exp-out || framework_failure
<domainsnapshot>
<name>name</name>
<description>desc</description>
<disks>
<disk name='vda'/>
<disk name='vdb'/>
</disks>
</domainsnapshot>
EOF
for args in \
'test name desc vda vdb' \
'test name desc --diskspec vda vdb' \
'test name desc --diskspec vda --diskspec vdb' \
'test name desc vda vdb' \
'test --diskspec vda name --diskspec vdb desc' \
'--description desc --name name --domain test vda vdb' \
2011-09-21 18:54:47 +04:00
'--description desc --diskspec vda --name name --domain test vdb' \
2011-09-15 01:20:08 +04:00
; do
virsh -q -c $test_url snapshot-create-as --print-xml $args \
>out 2>>err || fail=1
2011-11-30 03:42:23 +04:00
compare exp-out out || fail=1
2011-09-15 01:20:08 +04:00
done
2011-04-13 01:59:19 +04:00
test -s err && fail=1
2011-09-21 18:54:47 +04:00
# Test a required argv
cat <<\EOF > exp-err || framework_failure
error: this function is not supported by the connection driver: virDomainQemuMonitorCommand
EOF
virsh -q -c $test_url qemu-monitor-command test a >out 2>err && fail=1
test -s out && fail=1
2011-11-30 03:42:23 +04:00
compare exp-err err || fail=1
2011-09-21 18:54:47 +04:00
2011-04-13 01:59:19 +04:00
(exit $fail); exit $fail