#!/usr/bin/env bash
# group: rw auto quick
#
# Test I/O throttle block filter driver interface
#
# Copyright (C) 2017 Manos Pitsidianakis
#
# 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="Manos Pitsidianakis"

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

status=1	# failure is the default!

trap "exit \$status" 0 1 2 3 15

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

_supported_os Linux
_require_drivers throttle

do_run_qemu()
{
    echo Testing: "$@" | _filter_imgfmt
    $QEMU -nographic -qmp-pretty stdio -serial none "$@"
    echo
}

run_qemu()
{
    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp\
                          | _filter_qemu_io | _filter_generated_node_ids
}

test_throttle=$($QEMU_IMG --help|grep throttle)
[ "$test_throttle" = "" ] && _supported_fmt throttle

echo
echo "== checking interface =="

run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "blockdev-add",
  "arguments": {
    "driver": "null-co",
    "node-name": "disk0"
  }
}
{ "execute": "object-add",
  "arguments": {
    "qom-type": "throttle-group",
    "id": "group0",
    "limits" : {
      "iops-total": 1000
    }
  }
}
{ "execute": "blockdev-add",
  "arguments": {
    "driver": "throttle",
    "node-name": "throttle0",
    "throttle-group": "group0",
    "file": "disk0"
  }
}
{ "execute": "query-named-block-nodes" }
{ "execute": "query-block" }
{ "execute": "quit" }
EOF

echo
echo "== property changes in ThrottleGroup =="

run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "object-add",
  "arguments": {
    "qom-type": "throttle-group",
    "id": "group0",
    "limits": {
        "iops-total": 1000
    }
  }
}
{ "execute" : "qom-get",
  "arguments" : {
    "path" : "group0",
    "property" : "limits"
  }
}
{ "execute" : "qom-set",
    "arguments" : {
        "path" : "group0",
        "property" : "limits",
        "value" : {
            "iops-total" : 0
        }
    }
}
{ "execute" : "qom-get",
  "arguments" : {
    "path" : "group0",
    "property" : "limits"
  }
}
{ "execute": "quit" }
EOF

echo
echo "== object creation/set errors  =="

run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "object-add",
  "arguments": {
    "qom-type": "throttle-group",
    "id": "group0",
    "limits": {
        "iops-total": 1000
    }
  }
}
{ "execute" : "qom-set",
  "arguments" : {
    "path" : "group0",
    "property" : "x-iops-total",
    "value" : 0
  }
}
{ "execute" : "qom-set",
    "arguments" : {
        "path" : "group0",
        "property" : "limits",
        "value" : {
            "iops-total" : 10,
            "iops-read" : 10
        }
    }
}
{ "execute": "quit" }
EOF

echo
echo "== don't specify group =="

run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "blockdev-add",
  "arguments": {
    "driver": "null-co",
    "node-name": "disk0"
  }
}
{ "execute": "blockdev-add",
  "arguments": {
    "driver": "throttle",
    "node-name": "throttle0",
    "file": "disk0"
  }
}
{ "execute": "quit" }
EOF

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