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

Julio Faracco posted 2 patches 7 years, 3 months ago
[libvirt] [PATCH v3 2/2] tests: Adding test case for virsh 'domrename' command.
Posted by Julio Faracco 7 years, 3 months ago
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@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
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 2/2] tests: Adding test case for virsh 'domrename' command.
Posted by Michal Privoznik 7 years, 3 months ago
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@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list