[libvirt] [PATCH v3 2/2] tests: Adding test case for virsh 'domrename' command.

Michal Privoznik mprivozn at redhat.com
Mon Jan 29 09:05:46 UTC 2018


On 01/15/2018 08:18 PM, Julio Faracco wrote:
> This commit introduce the virsh-rename test script to test the 'domrename'
> command. The test contains one succedeed script to rename and another
> failed test.
> 
> Signed-off-by: Julio Faracco <jcfaracco at gmail.com>
> ---
>  tests/Makefile.am  |  1 +
>  tests/virsh-rename | 43 +++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 44 insertions(+)
>  create mode 100755 tests/virsh-rename
> 
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 3441dab..0ff90fb 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -410,6 +410,7 @@ libvirtd_test_scripts = \
>  	virt-admin-self-test \
>  	virsh-start \
>  	virsh-undefine \
> +	virsh-rename \
>  	virsh-uriprecedence \
>  	virsh-vcpupin \
>  	$(NULL)
> diff --git a/tests/virsh-rename b/tests/virsh-rename
> new file mode 100755
> index 0000000..4d976bb
> --- /dev/null
> +++ b/tests/virsh-rename
> @@ -0,0 +1,43 @@
> +#!/bin/sh
> +# exercise virsh's "domrename" command
> +
> +# Copyright (C) 2008-2009, 2017 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 WITHEXP 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/>.
> +
> +. "$(dirname $0)/test-lib.sh"
> +
> +if test "$VERBOSE" = yes; then
> +  set -x
> +  $abs_top_builddir/tools/virsh --version
> +fi
> +
> +fail=0
> +
> +# Succeed, now: first shut down, then rename the domain.
> +$abs_top_builddir/tools/virsh -q -c test:///default \
> +    'shutdown test; domrename test anothertest' > out 2>&1
> +test $? = 1 && fail=1
> +
> +# Failed, now: rename the domain without shutting down.
> +$abs_top_builddir/tools/virsh -q -c test:///default \
> +    'domrename test anothertest' > out 2>&1
> +test $? = 1 || fail=1
> +cat <<\EOF > expout || fail=1
> +error: Requested operation is not valid: cannot rename active domain
> +EOF
> +compare expout out || fail=1
> +
> +(exit $fail); exit $fail
> 

This still doesn't check whether rename was successful (which is not the
same as 'virsh domrename' returning true). However, for that this would
need to be written in C so that the connection object persists among
function calls. What I have in mind is:

conn = virConnectOpen("test:///default");

dom = virDomainLookupByName(conn, "test");

if (virDomainRename(dom, "anothertest") < 0) {
  testError();
}

if (!(anotherdom = virDomainLookupByName(conn, "anothertest"))) {
  testError() ;
}

if (memcmp(dom.uuid, anotherdom.uuid) != 0) {
  testError();
}

if ((dom = virDomainLookupByName(conn, "test"))) {
  testError{};
}


/* This is just a pseudocode, of course you'll need to add more error
 * checks, dom.uuid is not directly accessible, etc. But you get the
 * idea. */


Having said that, I'm pushing the first patch and wait for you to post
test. Also, I guess the right place for this is virshtest.c (unless you
want to write new domrenametest.c).

Michal




More information about the libvir-list mailing list