Patchwork Add virtio-blk-drive-serial test

login
register
mail settings
Submitter Ryan Harper
Date Jan. 13, 2012, 9:49 p.m.
Message ID <1326491377-13054-1-git-send-email-ryanh@us.ibm.com>
Download mbox | patch
Permalink /patch/136021/
State New
Headers show

Comments

Ryan Harper - Jan. 13, 2012, 9:49 p.m.
We can test out the virtio-blk drive serial number by generating and then
reading it back via the file in sysfs.

Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
---
 tests/virtio-blk-drive-serial.sh |   40 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)
 create mode 100755 tests/virtio-blk-drive-serial.sh
Zhiyong Wu - Jan. 14, 2012, 1:03 a.m.
On Sat, Jan 14, 2012 at 5:49 AM, Ryan Harper <ryanh@us.ibm.com> wrote:
> We can test out the virtio-blk drive serial number by generating and then
> reading it back via the file in sysfs.
>
> Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
> ---
>  tests/virtio-blk-drive-serial.sh |   40 ++++++++++++++++++++++++++++++++++++++
>  1 files changed, 40 insertions(+), 0 deletions(-)
>  create mode 100755 tests/virtio-blk-drive-serial.sh
>
> diff --git a/tests/virtio-blk-drive-serial.sh b/tests/virtio-blk-drive-serial.sh
> new file mode 100755
> index 0000000..0586f97
> --- /dev/null
> +++ b/tests/virtio-blk-drive-serial.sh
> @@ -0,0 +1,40 @@
> +#!/bin/sh
> +
> +serial="0123456789abcdefghi"
> +
> +in_host() {
> +    tmpdisk=$tmpdir/disk.img
> +    qemu-img create -f qcow2 $tmpdisk 10G
> +
> +    qemu -nographic -enable-kvm \
> +    -drive file=$tmpdisk,if=none,id=drive-virtio-disk0,format=raw,cache=none,serial=$serial \
> +    -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0
> +    rc=$?
> +
> +    rm $tmpdisk
> +    return $rc
> +}
> +
> +in_guest() {
> +    sysfspath=/sys/block/vda
> +    if ! test -e $sysfspath; then
> +    echo "Device not visible!"
> +    return 1
> +    fi
> +
> +    guest_serial=`cat $sysfspath/serial`
> +
> +    if test "$guest_serial" != "$serial"; then
> +    echo "drive has wrong serial!"
> +    echo "Expected '$serial', got '$guest_serial'"
> +    return 2
> +    fi
> +
> +    return 0
> +}
How will you make in_guest() run in that guest system?
> +
> +if test $QEMU_TEST; then
> +    in_host
> +else
> +    in_guest
> +fi
> --
> 1.7.6
>
>
Zhiyong Wu - Jan. 14, 2012, 1:25 a.m.
On Sat, Jan 14, 2012 at 9:03 AM, Zhi Yong Wu <zwu.kernel@gmail.com> wrote:
> On Sat, Jan 14, 2012 at 5:49 AM, Ryan Harper <ryanh@us.ibm.com> wrote:
>> We can test out the virtio-blk drive serial number by generating and then
>> reading it back via the file in sysfs.
>>
>> Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
>> ---
>>  tests/virtio-blk-drive-serial.sh |   40 ++++++++++++++++++++++++++++++++++++++
>>  1 files changed, 40 insertions(+), 0 deletions(-)
>>  create mode 100755 tests/virtio-blk-drive-serial.sh
>>
>> diff --git a/tests/virtio-blk-drive-serial.sh b/tests/virtio-blk-drive-serial.sh
>> new file mode 100755
>> index 0000000..0586f97
>> --- /dev/null
>> +++ b/tests/virtio-blk-drive-serial.sh
>> @@ -0,0 +1,40 @@
>> +#!/bin/sh
>> +
>> +serial="0123456789abcdefghi"
>> +
>> +in_host() {
>> +    tmpdisk=$tmpdir/disk.img
>> +    qemu-img create -f qcow2 $tmpdisk 10G
>> +
>> +    qemu -nographic -enable-kvm \
>> +    -drive file=$tmpdisk,if=none,id=drive-virtio-disk0,format=raw,cache=none,serial=$serial \
>> +    -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0
>> +    rc=$?
>> +
>> +    rm $tmpdisk
>> +    return $rc
>> +}
>> +
>> +in_guest() {
>> +    sysfspath=/sys/block/vda
>> +    if ! test -e $sysfspath; then
>> +    echo "Device not visible!"
>> +    return 1
>> +    fi
>> +
>> +    guest_serial=`cat $sysfspath/serial`
>> +
>> +    if test "$guest_serial" != "$serial"; then
>> +    echo "drive has wrong serial!"
>> +    echo "Expected '$serial', got '$guest_serial'"
>> +    return 2
>> +    fi
>> +
>> +    return 0
>> +}
> How will you make in_guest() run in that guest system?
From the code below, i guess that qtest framework make sure it.
>> +
>> +if test $QEMU_TEST; then
>> +    in_host
>> +else
>> +    in_guest
>> +fi
>> --
>> 1.7.6
>>
>>
>
>
>
> --
> Regards,
>
> Zhi Yong Wu
Anthony Liguori - Jan. 15, 2012, 2:33 p.m.
On 01/13/2012 03:49 PM, Ryan Harper wrote:
> We can test out the virtio-blk drive serial number by generating and then
> reading it back via the file in sysfs.
>
> Signed-off-by: Ryan Harper<ryanh@us.ibm.com>

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
>   tests/virtio-blk-drive-serial.sh |   40 ++++++++++++++++++++++++++++++++++++++
>   1 files changed, 40 insertions(+), 0 deletions(-)
>   create mode 100755 tests/virtio-blk-drive-serial.sh
>
> diff --git a/tests/virtio-blk-drive-serial.sh b/tests/virtio-blk-drive-serial.sh
> new file mode 100755
> index 0000000..0586f97
> --- /dev/null
> +++ b/tests/virtio-blk-drive-serial.sh
> @@ -0,0 +1,40 @@
> +#!/bin/sh
> +
> +serial="0123456789abcdefghi"
> +
> +in_host() {
> +    tmpdisk=$tmpdir/disk.img
> +    qemu-img create -f qcow2 $tmpdisk 10G
> +
> +    qemu -nographic -enable-kvm \
> +    -drive file=$tmpdisk,if=none,id=drive-virtio-disk0,format=raw,cache=none,serial=$serial \
> +    -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0
> +    rc=$?
> +
> +    rm $tmpdisk
> +    return $rc
> +}
> +
> +in_guest() {
> +    sysfspath=/sys/block/vda
> +    if ! test -e $sysfspath; then
> +    echo "Device not visible!"
> +    return 1
> +    fi
> +
> +    guest_serial=`cat $sysfspath/serial`
> +
> +    if test "$guest_serial" != "$serial"; then
> +    echo "drive has wrong serial!"
> +    echo "Expected '$serial', got '$guest_serial'"
> +    return 2
> +    fi
> +
> +    return 0
> +}
> +
> +if test $QEMU_TEST; then
> +    in_host
> +else
> +    in_guest
> +fi
Anthony Liguori - Jan. 15, 2012, 2:39 p.m.
On 01/13/2012 07:25 PM, Zhi Yong Wu wrote:
> On Sat, Jan 14, 2012 at 9:03 AM, Zhi Yong Wu<zwu.kernel@gmail.com>  wrote:
>> On Sat, Jan 14, 2012 at 5:49 AM, Ryan Harper<ryanh@us.ibm.com>  wrote:
>>> We can test out the virtio-blk drive serial number by generating and then
>>> reading it back via the file in sysfs.
>>>
>>> Signed-off-by: Ryan Harper<ryanh@us.ibm.com>
>>> ---
>>>   tests/virtio-blk-drive-serial.sh |   40 ++++++++++++++++++++++++++++++++++++++
>>>   1 files changed, 40 insertions(+), 0 deletions(-)
>>>   create mode 100755 tests/virtio-blk-drive-serial.sh
>>>
>>> diff --git a/tests/virtio-blk-drive-serial.sh b/tests/virtio-blk-drive-serial.sh
>>> new file mode 100755
>>> index 0000000..0586f97
>>> --- /dev/null
>>> +++ b/tests/virtio-blk-drive-serial.sh
>>> @@ -0,0 +1,40 @@
>>> +#!/bin/sh
>>> +
>>> +serial="0123456789abcdefghi"
>>> +
>>> +in_host() {
>>> +    tmpdisk=$tmpdir/disk.img
>>> +    qemu-img create -f qcow2 $tmpdisk 10G
>>> +
>>> +    qemu -nographic -enable-kvm \
>>> +    -drive file=$tmpdisk,if=none,id=drive-virtio-disk0,format=raw,cache=none,serial=$serial \
>>> +    -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0
>>> +    rc=$?
>>> +
>>> +    rm $tmpdisk
>>> +    return $rc
>>> +}
>>> +
>>> +in_guest() {
>>> +    sysfspath=/sys/block/vda
>>> +    if ! test -e $sysfspath; then
>>> +    echo "Device not visible!"
>>> +    return 1
>>> +    fi
>>> +
>>> +    guest_serial=`cat $sysfspath/serial`
>>> +
>>> +    if test "$guest_serial" != "$serial"; then
>>> +    echo "drive has wrong serial!"
>>> +    echo "Expected '$serial', got '$guest_serial'"
>>> +    return 2
>>> +    fi
>>> +
>>> +    return 0
>>> +}
>> How will you make in_guest() run in that guest system?
>> From the code below, i guess that qtest framework make sure it.

qemu-test.  qtest is something different.

The script is copied into the initramfs used to run the guest.  QEMU_TEST=1 only 
in the host so the code below invokes in_guest only in the guest.

Regards,

Anthony Liguori

>>> +
>>> +if test $QEMU_TEST; then
>>> +    in_host
>>> +else
>>> +    in_guest
>>> +fi
>>> --
>>> 1.7.6
>>>
>>>
>>
>>
>>
>> --
>> Regards,
>>
>> Zhi Yong Wu
>
>
>
Zhiyong Wu - Jan. 16, 2012, 1:57 a.m.
On Sun, Jan 15, 2012 at 10:39 PM, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 01/13/2012 07:25 PM, Zhi Yong Wu wrote:
>>
>> On Sat, Jan 14, 2012 at 9:03 AM, Zhi Yong Wu<zwu.kernel@gmail.com>  wrote:
>>>
>>> On Sat, Jan 14, 2012 at 5:49 AM, Ryan Harper<ryanh@us.ibm.com>  wrote:
>>>>
>>>> We can test out the virtio-blk drive serial number by generating and
>>>> then
>>>> reading it back via the file in sysfs.
>>>>
>>>> Signed-off-by: Ryan Harper<ryanh@us.ibm.com>
>>>> ---
>>>>  tests/virtio-blk-drive-serial.sh |   40
>>>> ++++++++++++++++++++++++++++++++++++++
>>>>  1 files changed, 40 insertions(+), 0 deletions(-)
>>>>  create mode 100755 tests/virtio-blk-drive-serial.sh
>>>>
>>>> diff --git a/tests/virtio-blk-drive-serial.sh
>>>> b/tests/virtio-blk-drive-serial.sh
>>>> new file mode 100755
>>>> index 0000000..0586f97
>>>> --- /dev/null
>>>> +++ b/tests/virtio-blk-drive-serial.sh
>>>> @@ -0,0 +1,40 @@
>>>> +#!/bin/sh
>>>> +
>>>> +serial="0123456789abcdefghi"
>>>> +
>>>> +in_host() {
>>>> +    tmpdisk=$tmpdir/disk.img
>>>> +    qemu-img create -f qcow2 $tmpdisk 10G
>>>> +
>>>> +    qemu -nographic -enable-kvm \
>>>> +    -drive
>>>> file=$tmpdisk,if=none,id=drive-virtio-disk0,format=raw,cache=none,serial=$serial
>>>> \
>>>> +    -device
>>>> virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0
>>>> +    rc=$?
>>>> +
>>>> +    rm $tmpdisk
>>>> +    return $rc
>>>> +}
>>>> +
>>>> +in_guest() {
>>>> +    sysfspath=/sys/block/vda
>>>> +    if ! test -e $sysfspath; then
>>>> +    echo "Device not visible!"
>>>> +    return 1
>>>> +    fi
>>>> +
>>>> +    guest_serial=`cat $sysfspath/serial`
>>>> +
>>>> +    if test "$guest_serial" != "$serial"; then
>>>> +    echo "drive has wrong serial!"
>>>> +    echo "Expected '$serial', got '$guest_serial'"
>>>> +    return 2
>>>> +    fi
>>>> +
>>>> +    return 0
>>>> +}
>>>
>>> How will you make in_guest() run in that guest system?
>>> From the code below, i guess that qtest framework make sure it.
>
>
> qemu-test.  qtest is something different.
>
> The script is copied into the initramfs used to run the guest.  QEMU_TEST=1
> only in the host so the code below invokes in_guest only in the guest.
thanks.
>
> Regards,
>
> Anthony Liguori
>
>
>>>> +
>>>> +if test $QEMU_TEST; then
>>>> +    in_host
>>>> +else
>>>> +    in_guest
>>>> +fi
>>>> --
>>>> 1.7.6
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>>
>>> Zhi Yong Wu
>>
>>
>>
>>
>

Patch

diff --git a/tests/virtio-blk-drive-serial.sh b/tests/virtio-blk-drive-serial.sh
new file mode 100755
index 0000000..0586f97
--- /dev/null
+++ b/tests/virtio-blk-drive-serial.sh
@@ -0,0 +1,40 @@ 
+#!/bin/sh
+
+serial="0123456789abcdefghi"
+
+in_host() {
+    tmpdisk=$tmpdir/disk.img
+    qemu-img create -f qcow2 $tmpdisk 10G
+
+    qemu -nographic -enable-kvm \
+    -drive file=$tmpdisk,if=none,id=drive-virtio-disk0,format=raw,cache=none,serial=$serial \
+    -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0
+    rc=$?
+
+    rm $tmpdisk
+    return $rc
+}
+
+in_guest() {
+    sysfspath=/sys/block/vda
+    if ! test -e $sysfspath; then
+    echo "Device not visible!"
+    return 1
+    fi
+
+    guest_serial=`cat $sysfspath/serial`
+
+    if test "$guest_serial" != "$serial"; then
+    echo "drive has wrong serial!"
+    echo "Expected '$serial', got '$guest_serial'"
+    return 2
+    fi
+
+    return 0
+}
+
+if test $QEMU_TEST; then
+    in_host
+else
+    in_guest
+fi