#!/usr/bin/env bash
# group: rw auto quick qsd
#
# Job tests related specifically to qemu-storage-daemon
#
# Copyright (C) 2021 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
    rm -f "$SOCK_DIR/nbd.sock"
}
trap "_cleanup; exit \$status" 0 1 2 3 15

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

_supported_fmt qcow2
_supported_proto generic

size=128M

TEST_IMG="$TEST_IMG.base" _make_test_img $size
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT

echo
echo "=== Job still present at shutdown ==="
echo

# Just make sure that this doesn't crash
# (Filter job status and READY events, because their order may differ
# between runs, particularly around when 'quit' is issued)
$QSD --chardev stdio,id=stdio --monitor chardev=stdio \
    --blockdev node-name=file0,driver=file,filename="$TEST_IMG" \
    --blockdev node-name=fmt0,driver=qcow2,file=file0 <<EOF \
    | _filter_qmp | grep -v JOB_STATUS_CHANGE | grep -v BLOCK_JOB_READY
{"execute":"qmp_capabilities"}
{"execute": "block-commit", "arguments": {"device": "fmt0", "job-id": "job0"}}
{"execute": "quit"}
EOF

echo
echo "=== Streaming can't get permission on base node ==="
echo

# Just make sure that this doesn't crash
$QSD --chardev stdio,id=stdio --monitor chardev=stdio \
    --blockdev node-name=file_base,driver=file,filename="$TEST_IMG.base" \
    --blockdev node-name=fmt_base,driver=qcow2,file=file_base \
    --blockdev node-name=file_overlay,driver=file,filename="$TEST_IMG" \
    --blockdev node-name=fmt_overlay,driver=qcow2,file=file_overlay,backing=fmt_base \
    --nbd-server addr.type=unix,addr.path="$SOCK_DIR/nbd.sock" \
    --export type=nbd,id=export1,node-name=fmt_base,writable=on,name=export1 \
    <<EOF | _filter_qmp
{"execute": "qmp_capabilities"}
{"execute": "block-stream",
  "arguments": {"device": "fmt_overlay", "job-id": "job0"}}
{"execute": "quit"}
EOF

# success, all done
echo "*** done"
rm -f $seq.full
status=0

