#!/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" -F $IMGFMT

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
