|
|
26ba25 |
From 9aefeb3f3ea1592e95467049e16e252660c292d1 Mon Sep 17 00:00:00 2001
|
|
|
26ba25 |
From: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Date: Tue, 26 Jun 2018 09:48:47 +0200
|
|
|
26ba25 |
Subject: [PATCH 139/268] qemu-iotests: Rewrite 207 for blockdev-create job
|
|
|
26ba25 |
|
|
|
26ba25 |
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Message-id: <20180626094856.6924-65-kwolf@redhat.com>
|
|
|
26ba25 |
Patchwork-id: 81083
|
|
|
26ba25 |
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 64/73] qemu-iotests: Rewrite 207 for blockdev-create job
|
|
|
26ba25 |
Bugzilla: 1513543
|
|
|
26ba25 |
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Fam Zheng <famz@redhat.com>
|
|
|
26ba25 |
|
|
|
26ba25 |
This rewrites the test case 207 to work with the new x-blockdev-create
|
|
|
26ba25 |
job rather than the old synchronous version of the command.
|
|
|
26ba25 |
|
|
|
26ba25 |
Most of the test cases stay the same as before (the exception being some
|
|
|
26ba25 |
improved 'size' options that allow distinguishing which command created
|
|
|
26ba25 |
the image), but in order to be able to implement proper job handling,
|
|
|
26ba25 |
the test case is rewritten in Python.
|
|
|
26ba25 |
|
|
|
26ba25 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Reviewed-by: Max Reitz <mreitz@redhat.com>
|
|
|
26ba25 |
(cherry picked from commit 00af19359e8d77e53a09de9a5d3ed6f6e149e0d2)
|
|
|
26ba25 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
26ba25 |
---
|
|
|
26ba25 |
tests/qemu-iotests/207 | 440 ++++++++++++++++++++-------------------------
|
|
|
26ba25 |
tests/qemu-iotests/207.out | 107 +++++------
|
|
|
26ba25 |
tests/qemu-iotests/group | 6 +-
|
|
|
26ba25 |
3 files changed, 257 insertions(+), 296 deletions(-)
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/tests/qemu-iotests/207 b/tests/qemu-iotests/207
|
|
|
26ba25 |
index f5c7785..b595c92 100755
|
|
|
26ba25 |
--- a/tests/qemu-iotests/207
|
|
|
26ba25 |
+++ b/tests/qemu-iotests/207
|
|
|
26ba25 |
@@ -1,9 +1,11 @@
|
|
|
26ba25 |
-#!/bin/bash
|
|
|
26ba25 |
+#!/usr/bin/env python
|
|
|
26ba25 |
#
|
|
|
26ba25 |
# Test ssh image creation
|
|
|
26ba25 |
#
|
|
|
26ba25 |
# Copyright (C) 2018 Red Hat, Inc.
|
|
|
26ba25 |
#
|
|
|
26ba25 |
+# Creator/Owner: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
+#
|
|
|
26ba25 |
# This program is free software; you can redistribute it and/or modify
|
|
|
26ba25 |
# it under the terms of the GNU General Public License as published by
|
|
|
26ba25 |
# the Free Software Foundation; either version 2 of the License, or
|
|
|
26ba25 |
@@ -18,244 +20,198 @@
|
|
|
26ba25 |
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
26ba25 |
#
|
|
|
26ba25 |
|
|
|
26ba25 |
-# creator
|
|
|
26ba25 |
-owner=kwolf@redhat.com
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-seq=`basename $0`
|
|
|
26ba25 |
-echo "QA output created by $seq"
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-here=`pwd`
|
|
|
26ba25 |
-status=1 # failure is the default!
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-# get standard environment, filters and checks
|
|
|
26ba25 |
-. ./common.rc
|
|
|
26ba25 |
-. ./common.filter
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-_supported_fmt raw
|
|
|
26ba25 |
-_supported_proto ssh
|
|
|
26ba25 |
-_supported_os Linux
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-function do_run_qemu()
|
|
|
26ba25 |
-{
|
|
|
26ba25 |
- echo Testing: "$@"
|
|
|
26ba25 |
- $QEMU -nographic -qmp stdio -serial none "$@"
|
|
|
26ba25 |
- echo
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-function run_qemu()
|
|
|
26ba25 |
-{
|
|
|
26ba25 |
- do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
|
|
|
26ba25 |
- | _filter_qemu | _filter_imgfmt \
|
|
|
26ba25 |
- | _filter_actual_image_size
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-echo "=== Successful image creation (defaults) ==="
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-run_qemu <
|
|
|
26ba25 |
-{ "execute": "qmp_capabilities" }
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 4194304
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "quit" }
|
|
|
26ba25 |
-EOF
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-_img_info | _filter_img_info
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-TEST_IMG=$TEST_IMG_FILE _img_info | _filter_img_info
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-echo "=== Test host-key-check options ==="
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-run_qemu <
|
|
|
26ba25 |
-{ "execute": "qmp_capabilities" }
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "host-key-check": {
|
|
|
26ba25 |
- "mode": "none"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 8388608
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "quit" }
|
|
|
26ba25 |
-EOF
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-_img_info | _filter_img_info
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-run_qemu <
|
|
|
26ba25 |
-{ "execute": "qmp_capabilities" }
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "host-key-check": {
|
|
|
26ba25 |
- "mode": "known_hosts"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 4194304
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "quit" }
|
|
|
26ba25 |
-EOF
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-_img_info | _filter_img_info
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-key=$(ssh-keyscan -t rsa 127.0.0.1 2>/dev/null | grep -v "\\^#" |
|
|
|
26ba25 |
- cut -d" " -f3 | base64 -d | md5sum -b | cut -d" " -f1)
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-run_qemu <
|
|
|
26ba25 |
-{ "execute": "qmp_capabilities" }
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "host-key-check": {
|
|
|
26ba25 |
- "mode": "hash",
|
|
|
26ba25 |
- "type": "md5",
|
|
|
26ba25 |
- "hash": "wrong"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 8388608
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "host-key-check": {
|
|
|
26ba25 |
- "mode": "hash",
|
|
|
26ba25 |
- "type": "md5",
|
|
|
26ba25 |
- "hash": "$key"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 8388608
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "quit" }
|
|
|
26ba25 |
-EOF
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-_img_info | _filter_img_info
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-key=$(ssh-keyscan -t rsa 127.0.0.1 2>/dev/null | grep -v "\\^#" |
|
|
|
26ba25 |
- cut -d" " -f3 | base64 -d | sha1sum -b | cut -d" " -f1)
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-run_qemu <
|
|
|
26ba25 |
-{ "execute": "qmp_capabilities" }
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "host-key-check": {
|
|
|
26ba25 |
- "mode": "hash",
|
|
|
26ba25 |
- "type": "sha1",
|
|
|
26ba25 |
- "hash": "wrong"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 4194304
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "host-key-check": {
|
|
|
26ba25 |
- "mode": "hash",
|
|
|
26ba25 |
- "type": "sha1",
|
|
|
26ba25 |
- "hash": "$key"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 4194304
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "quit" }
|
|
|
26ba25 |
-EOF
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-_img_info | _filter_img_info
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-echo "=== Invalid path and user ==="
|
|
|
26ba25 |
-echo
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-run_qemu <
|
|
|
26ba25 |
-{ "execute": "qmp_capabilities" }
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "/this/is/not/an/existing/path",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 4194304
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "x-blockdev-create",
|
|
|
26ba25 |
- "arguments": {
|
|
|
26ba25 |
- "driver": "ssh",
|
|
|
26ba25 |
- "location": {
|
|
|
26ba25 |
- "path": "$TEST_IMG_FILE",
|
|
|
26ba25 |
- "user": "invalid user",
|
|
|
26ba25 |
- "server": {
|
|
|
26ba25 |
- "host": "127.0.0.1",
|
|
|
26ba25 |
- "port": "22"
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
- },
|
|
|
26ba25 |
- "size": 4194304
|
|
|
26ba25 |
- }
|
|
|
26ba25 |
-}
|
|
|
26ba25 |
-{ "execute": "quit" }
|
|
|
26ba25 |
-EOF
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-# success, all done
|
|
|
26ba25 |
-echo "*** done"
|
|
|
26ba25 |
-rm -f $seq.full
|
|
|
26ba25 |
-status=0
|
|
|
26ba25 |
+import iotests
|
|
|
26ba25 |
+import subprocess
|
|
|
26ba25 |
+import re
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+iotests.verify_image_format(supported_fmts=['raw'])
|
|
|
26ba25 |
+iotests.verify_protocol(supported=['ssh'])
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+def filter_hash(msg):
|
|
|
26ba25 |
+ return re.sub("'hash': '[0-9a-f]+'", "'hash': HASH", msg)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+def blockdev_create(vm, options):
|
|
|
26ba25 |
+ result = vm.qmp_log('x-blockdev-create', job_id='job0', options=options,
|
|
|
26ba25 |
+ filters=[iotests.filter_testfiles, filter_hash])
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ if 'return' in result:
|
|
|
26ba25 |
+ assert result['return'] == {}
|
|
|
26ba25 |
+ vm.run_job('job0')
|
|
|
26ba25 |
+ iotests.log("")
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+with iotests.FilePath('t.img') as disk_path, \
|
|
|
26ba25 |
+ iotests.VM() as vm:
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ remote_path = iotests.remote_filename(disk_path)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ #
|
|
|
26ba25 |
+ # Successful image creation (defaults)
|
|
|
26ba25 |
+ #
|
|
|
26ba25 |
+ iotests.log("=== Successful image creation (defaults) ===")
|
|
|
26ba25 |
+ iotests.log("")
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vm.launch()
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 4194304 })
|
|
|
26ba25 |
+ vm.shutdown()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ iotests.img_info_log(remote_path, filter_path=disk_path)
|
|
|
26ba25 |
+ iotests.log("")
|
|
|
26ba25 |
+ iotests.img_info_log(disk_path)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ #
|
|
|
26ba25 |
+ # Test host-key-check options
|
|
|
26ba25 |
+ #
|
|
|
26ba25 |
+ iotests.log("=== Test host-key-check options ===")
|
|
|
26ba25 |
+ iotests.log("")
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vm.launch()
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'none'
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 8388608 })
|
|
|
26ba25 |
+ vm.shutdown()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ iotests.img_info_log(remote_path, filter_path=disk_path)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vm.launch()
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'known_hosts'
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 4194304 })
|
|
|
26ba25 |
+ vm.shutdown()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ iotests.img_info_log(remote_path, filter_path=disk_path)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ md5_key = subprocess.check_output(
|
|
|
26ba25 |
+ 'ssh-keyscan -t rsa 127.0.0.1 2>/dev/null | grep -v "\\^#" | ' +
|
|
|
26ba25 |
+ 'cut -d" " -f3 | base64 -d | md5sum -b | cut -d" " -f1',
|
|
|
26ba25 |
+ shell=True).rstrip()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vm.launch()
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'hash',
|
|
|
26ba25 |
+ 'type': 'md5',
|
|
|
26ba25 |
+ 'hash': 'wrong',
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 2097152 })
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'hash',
|
|
|
26ba25 |
+ 'type': 'md5',
|
|
|
26ba25 |
+ 'hash': md5_key,
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 8388608 })
|
|
|
26ba25 |
+ vm.shutdown()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ iotests.img_info_log(remote_path, filter_path=disk_path)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ sha1_key = subprocess.check_output(
|
|
|
26ba25 |
+ 'ssh-keyscan -t rsa 127.0.0.1 2>/dev/null | grep -v "\\^#" | ' +
|
|
|
26ba25 |
+ 'cut -d" " -f3 | base64 -d | sha1sum -b | cut -d" " -f1',
|
|
|
26ba25 |
+ shell=True).rstrip()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vm.launch()
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'hash',
|
|
|
26ba25 |
+ 'type': 'sha1',
|
|
|
26ba25 |
+ 'hash': 'wrong',
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 2097152 })
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'hash',
|
|
|
26ba25 |
+ 'type': 'sha1',
|
|
|
26ba25 |
+ 'hash': sha1_key,
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 4194304 })
|
|
|
26ba25 |
+ vm.shutdown()
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ iotests.img_info_log(remote_path, filter_path=disk_path)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ #
|
|
|
26ba25 |
+ # Invalid path and user
|
|
|
26ba25 |
+ #
|
|
|
26ba25 |
+ iotests.log("=== Invalid path and user ===")
|
|
|
26ba25 |
+ iotests.log("")
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vm.launch()
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': '/this/is/not/an/existing/path',
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'none'
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 4194304 })
|
|
|
26ba25 |
+ blockdev_create(vm, { 'driver': 'ssh',
|
|
|
26ba25 |
+ 'location': {
|
|
|
26ba25 |
+ 'path': disk_path,
|
|
|
26ba25 |
+ 'user': 'invalid user',
|
|
|
26ba25 |
+ 'server': {
|
|
|
26ba25 |
+ 'host': '127.0.0.1',
|
|
|
26ba25 |
+ 'port': '22'
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'host-key-check': {
|
|
|
26ba25 |
+ 'mode': 'none'
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+ 'size': 4194304 })
|
|
|
26ba25 |
+ vm.shutdown()
|
|
|
26ba25 |
diff --git a/tests/qemu-iotests/207.out b/tests/qemu-iotests/207.out
|
|
|
26ba25 |
index 417deee..5eee17b 100644
|
|
|
26ba25 |
--- a/tests/qemu-iotests/207.out
|
|
|
26ba25 |
+++ b/tests/qemu-iotests/207.out
|
|
|
26ba25 |
@@ -1,75 +1,80 @@
|
|
|
26ba25 |
-QA output created by 207
|
|
|
26ba25 |
-
|
|
|
26ba25 |
=== Successful image creation (defaults) ===
|
|
|
26ba25 |
|
|
|
26ba25 |
-Testing:
|
|
|
26ba25 |
-QMP_VERSION
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 4194304}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
|
|
|
26ba25 |
-image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_DIR/t.IMGFMT"}}
|
|
|
26ba25 |
+image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_IMG"}}
|
|
|
26ba25 |
file format: IMGFMT
|
|
|
26ba25 |
virtual size: 4.0M (4194304 bytes)
|
|
|
26ba25 |
|
|
|
26ba25 |
-image: TEST_DIR/t.IMGFMT
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+image: TEST_IMG
|
|
|
26ba25 |
file format: IMGFMT
|
|
|
26ba25 |
virtual size: 4.0M (4194304 bytes)
|
|
|
26ba25 |
|
|
|
26ba25 |
=== Test host-key-check options ===
|
|
|
26ba25 |
|
|
|
26ba25 |
-Testing:
|
|
|
26ba25 |
-QMP_VERSION
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'mode': 'none'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 8388608}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
|
|
|
26ba25 |
-image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_DIR/t.IMGFMT"}}
|
|
|
26ba25 |
+image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_IMG"}}
|
|
|
26ba25 |
file format: IMGFMT
|
|
|
26ba25 |
virtual size: 8.0M (8388608 bytes)
|
|
|
26ba25 |
-Testing:
|
|
|
26ba25 |
-QMP_VERSION
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_DIR/t.IMGFMT"}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'mode': 'known_hosts'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 4194304}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_IMG"}}
|
|
|
26ba25 |
file format: IMGFMT
|
|
|
26ba25 |
virtual size: 4.0M (4194304 bytes)
|
|
|
26ba25 |
-Testing:
|
|
|
26ba25 |
-QMP_VERSION
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"error": {"class": "GenericError", "desc": "remote host key does not match host_key_check 'wrong'"}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_DIR/t.IMGFMT"}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'hash': 'wrong', 'type': 'md5', 'mode': 'hash'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 2097152}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+Job failed: remote host key does not match host_key_check 'wrong'
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'hash': HASH, 'type': 'md5', 'mode': 'hash'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 8388608}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_IMG"}}
|
|
|
26ba25 |
file format: IMGFMT
|
|
|
26ba25 |
virtual size: 8.0M (8388608 bytes)
|
|
|
26ba25 |
-Testing:
|
|
|
26ba25 |
-QMP_VERSION
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"error": {"class": "GenericError", "desc": "remote host key does not match host_key_check 'wrong'"}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
|
|
26ba25 |
-
|
|
|
26ba25 |
-image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_DIR/t.IMGFMT"}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'hash': 'wrong', 'type': 'sha1', 'mode': 'hash'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 2097152}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+Job failed: remote host key does not match host_key_check 'wrong'
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'hash': HASH, 'type': 'sha1', 'mode': 'hash'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 4194304}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+image: json:{"driver": "IMGFMT", "file": {"server.host": "127.0.0.1", "server.port": "22", "driver": "ssh", "path": "TEST_IMG"}}
|
|
|
26ba25 |
file format: IMGFMT
|
|
|
26ba25 |
virtual size: 4.0M (4194304 bytes)
|
|
|
26ba25 |
|
|
|
26ba25 |
=== Invalid path and user ===
|
|
|
26ba25 |
|
|
|
26ba25 |
-Testing:
|
|
|
26ba25 |
-QMP_VERSION
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"error": {"class": "GenericError", "desc": "failed to open remote file '/this/is/not/an/existing/path': Failed opening remote file (libssh2 error code: -31)"}}
|
|
|
26ba25 |
-{"error": {"class": "GenericError", "desc": "failed to authenticate using publickey authentication and the identities held by your ssh-agent"}}
|
|
|
26ba25 |
-{"return": {}}
|
|
|
26ba25 |
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': '/this/is/not/an/existing/path', 'host-key-check': {'mode': 'none'}, 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 4194304}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+Job failed: failed to open remote file '/this/is/not/an/existing/path': Failed opening remote file (libssh2 error code: -31)
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'ssh', 'location': {'path': 'TEST_DIR/PID-t.img', 'host-key-check': {'mode': 'none'}, 'user': 'invalid user', 'server': {'host': '127.0.0.1', 'port': '22'}}, 'size': 4194304}}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
+Job failed: failed to authenticate using publickey authentication and the identities held by your ssh-agent
|
|
|
26ba25 |
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
|
|
|
26ba25 |
+{u'return': {}}
|
|
|
26ba25 |
|
|
|
26ba25 |
-*** done
|
|
|
26ba25 |
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
|
|
|
26ba25 |
index 3d6ae02..649291a 100644
|
|
|
26ba25 |
--- a/tests/qemu-iotests/group
|
|
|
26ba25 |
+++ b/tests/qemu-iotests/group
|
|
|
26ba25 |
@@ -205,11 +205,11 @@
|
|
|
26ba25 |
204 rw auto quick
|
|
|
26ba25 |
205 rw auto quick
|
|
|
26ba25 |
206 rw auto
|
|
|
26ba25 |
-# TODO The following commented out tests need to be reworked to work
|
|
|
26ba25 |
-# with the x-blockdev-create job
|
|
|
26ba25 |
-#207 rw auto
|
|
|
26ba25 |
+207 rw auto
|
|
|
26ba25 |
208 rw auto quick
|
|
|
26ba25 |
209 rw auto quick
|
|
|
26ba25 |
+# TODO The following commented out tests need to be reworked to work
|
|
|
26ba25 |
+# with the x-blockdev-create job
|
|
|
26ba25 |
#210 rw auto
|
|
|
26ba25 |
#211 rw auto quick
|
|
|
26ba25 |
#212 rw auto quick
|
|
|
26ba25 |
--
|
|
|
26ba25 |
1.8.3.1
|
|
|
26ba25 |
|