virsh-optparse 3.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
#!/bin/sh
# Ensure that virsh option parsing doesn't regress

# Copyright (C) 2011 Red Hat, Inc.

# 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
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

: ${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
J
Jiri Denemark 已提交
67
  virsh -d0 -c $test_url setvcpus $args >out 2>>err || fail=1
68 69
  LC_ALL=C sort out | compare - exp-out || fail=1
done
70 71 72 73 74 75 76 77 78 79 80 81 82 83

# Another complex parsing example
cat <<\EOF > exp-out || framework_failure
<domainsnapshot>
  <description>1&lt;2</description>
  <disks>
    <disk name='vda' snapshot='external'>
      <source file='a&amp;b,c'/>
    </disk>
    <disk name='vdb'/>
  </disks>
</domainsnapshot>

EOF
84
virsh -q -c $test_url snapshot-create-as --print-xml test \
85 86 87 88
  --diskspec 'vda,file=a&b,,c,snapshot=external' --description '1<2' \
  --diskspec vdb >out 2>>err || fail=1
compare out exp-out || fail=1

89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
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
compare out exp-out || fail=1

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' \
121
    '--description desc --diskspec vda --name name --domain test vdb' \
122 123 124 125 126 127
; do
  virsh -q -c $test_url snapshot-create-as --print-xml $args \
    >out 2>>err || fail=1
  compare out exp-out || fail=1
done

128 129
test -s err && fail=1

130 131 132 133 134 135 136 137
# 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
compare err exp-err || fail=1

138
(exit $fail); exit $fail