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(a)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