#!/usr/bin/env bash
#
# Test for reopen
#
# Copyright (C) 2015 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/>.
#

# creator
owner=kwolf@redhat.com

seq=`basename $0`
echo "QA output created by $seq"

status=1	# failure is the default!

_cleanup()
{
    _cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

_supported_fmt qcow2
_supported_proto file

TEST_IMG="$TEST_IMG.base" _make_test_img 64M
_make_test_img -b "$TEST_IMG.base"

echo
echo "=== Check that node-name can't be changed ==="
echo

$QEMU_IO -c 'reopen -o node-name=foo' $TEST_IMG
$QEMU_IO -c 'reopen -o file.node-name=foo' $TEST_IMG
$QEMU_IO -c 'reopen -o backing.node-name=foo' $TEST_IMG

echo
echo "=== Check that unchanged node-name is okay ==="
echo

# Explicitly repeated
$QEMU_IO -c "open -o node-name=foo $TEST_IMG" -c 'reopen -o node-name=foo'
$QEMU_IO -c "open -o file.node-name=foo $TEST_IMG" -c 'reopen -o file.node-name=foo'
$QEMU_IO -c "open -o backing.node-name=foo $TEST_IMG" -c 'reopen -o backing.node-name=foo'

# Implicitly retained
$QEMU_IO -c "open -o node-name=foo $TEST_IMG" -c 'reopen'
$QEMU_IO -c "open -o file.node-name=foo $TEST_IMG" -c 'reopen'
$QEMU_IO -c "open -o backing.node-name=foo $TEST_IMG" -c 'reopen'

echo
echo "=== Check that driver can't be changed ==="
echo

$QEMU_IO -c 'reopen -o driver=raw' $TEST_IMG
$QEMU_IO -c 'reopen -o file.driver=qcow2' $TEST_IMG
$QEMU_IO -c 'reopen -o backing.driver=file' $TEST_IMG

echo
echo "=== Check that unchanged driver is okay ==="
echo

# Explicitly repeated (implicit case is covered in node-name test)
$QEMU_IO -c 'reopen -o driver=qcow2' $TEST_IMG
$QEMU_IO -c 'reopen -o file.driver=file' $TEST_IMG
$QEMU_IO -c 'reopen -o backing.driver=qcow2' $TEST_IMG

echo
echo "=== Check that reopening works with non-string options ==="
echo

# Using the json: pseudo-protocol we can create non-string options
# (Invoke 'info' just so we get some output afterwards)
IMGOPTSSYNTAX=false $QEMU_IO -f null-co -c 'reopen' -c 'info' \
    "json:{'driver': 'null-co', 'size': 65536}"

echo
echo "=== Check that mixing -c/-r/-w and their corresponding options is forbidden ==="
echo

$QEMU_IO -c 'reopen -r -o read-only=on' $TEST_IMG
$QEMU_IO -c 'reopen -w -o read-only=on' $TEST_IMG
$QEMU_IO -c 'reopen -c none -o cache.direct=on' $TEST_IMG
$QEMU_IO -c 'reopen -c writeback -o cache.direct=on' $TEST_IMG
$QEMU_IO -c 'reopen -c directsync -o cache.no-flush=on' $TEST_IMG

echo
echo "=== Check that invalid options are handled correctly ==="
echo

$QEMU_IO -c 'reopen -o read-only=foo' $TEST_IMG
$QEMU_IO -c 'reopen -o cache.no-flush=bar' $TEST_IMG
$QEMU_IO -c 'reopen -o cache.direct=baz' $TEST_IMG
$QEMU_IO -c 'reopen -o auto-read-only=qux' $TEST_IMG
# success, all done
echo "*** done"
rm -f $seq.full
status=0
