[PATCH 7/7] tests: Added tests for NFS disk protocol

Han Han hhan at redhat.com
Mon Jan 4 07:53:08 UTC 2021


On Wed, Dec 30, 2020 at 5:23 AM Ryan Gahagan <rgahagan at cs.utexas.edu> wrote:

> Signed-off-by: Ryan Gahagan <rgahagan at cs.utexas.edu>
> ---
>  tests/qemuxml2argvdata/disk-network-nfs.args  |  1 +
>  .../disk-network-nfs.x86_64-latest.args       | 56 +++++++++++++++++++
>  tests/qemuxml2argvdata/disk-network-nfs.xml   | 48 ++++++++++++++++
>  tests/qemuxml2argvtest.c                      |  1 +
>  ...isk-network-nfs-inactive.x86_64-latest.xml | 54 ++++++++++++++++++
>  .../disk-network-nfs.x86_64-latest.xml        | 54 ++++++++++++++++++
>  tests/qemuxml2xmltest.c                       |  1 +
>  tests/virstoragetest.c                        | 13 +++++
>  8 files changed, 228 insertions(+)
>  create mode 100644 tests/qemuxml2argvdata/disk-network-nfs.args
>  create mode 100644
> tests/qemuxml2argvdata/disk-network-nfs.x86_64-latest.args
>  create mode 100644 tests/qemuxml2argvdata/disk-network-nfs.xml
>  create mode 100644
> tests/qemuxml2xmloutdata/disk-network-nfs-inactive.x86_64-latest.xml
>  create mode 100644
> tests/qemuxml2xmloutdata/disk-network-nfs.x86_64-latest.xml
>
> diff --git a/tests/qemuxml2argvdata/disk-network-nfs.args
> b/tests/qemuxml2argvdata/disk-network-nfs.args
> new file mode 100644
> index 0000000000..fdc2941925
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/disk-network-nfs.args
> @@ -0,0 +1 @@
> +qemu_nfs
> diff --git a/tests/qemuxml2argvdata/disk-network-nfs.x86_64-latest.args
> b/tests/qemuxml2argvdata/disk-network-nfs.x86_64-latest.args
> new file mode 100644
> index 0000000000..b0bc83bfc0
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/disk-network-nfs.x86_64-latest.args
> @@ -0,0 +1,56 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/tmp/lib/domain--1-QEMUGuest1 \
> +USER=test \
> +LOGNAME=test \
> +XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \
> +XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \
> +XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
> +QEMU_AUDIO_DRV=none \
> +/usr/bin/qemu-system-x86_64 \
> +-name guest=QEMUGuest1,debug-threads=on \
> +-S \
> +-object secret,id=masterKey0,format=raw,\
> +file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
> +-machine pc,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
> +-cpu qemu64 \
> +-m 214 \
> +-object memory-backend-ram,id=pc.ram,size=224395264 \
> +-overcommit mem-lock=off \
> +-smp 1,sockets=1,cores=1,threads=1 \
> +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> +-display none \
> +-no-user-config \
> +-nodefaults \
> +-chardev socket,id=charmonitor,fd=1729,server,nowait \
> +-mon chardev=charmonitor,id=monitor,mode=control \
> +-rtc base=utc \
> +-no-shutdown \
> +-no-acpi \
> +-boot strict=on \
> +-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
> +-blockdev '{"driver":"nfs","server":{"host":"example.com
> ","type":"inet"},\
> +"path":"/foo/bar/baz","user":6234,"group":12354,\
> +"node-name":"libvirt-3-storage","cache":{"direct":true,"no-flush":false},\
> +"auto-read-only":true,"discard":"unmap"}' \
> +-blockdev '{"node-name":"libvirt-3-format","read-only":false,\
> +"cache":{"direct":true,"no-flush":false},"driver":"raw",\
> +"file":"libvirt-3-storage"}' \
> +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=libvirt-3-format,\
> +id=virtio-disk0,bootindex=1,write-cache=on,\
> +serial=eb90327c-8302-4725-9e1b-4e85ed4dc251 \
> +-blockdev '{"driver":"nfs","server":{"host":"example.org
> ","type":"inet"},\
> +"path":"/backing/store/nfs","user":1234,"group":5678,\
> +"node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}'
> \
> +-blockdev
> '{"node-name":"libvirt-2-format","read-only":true,"driver":"qcow2",\
> +"file":"libvirt-2-storage","backing":null}' \
> +-blockdev '{"driver":"gluster","volume":"Volume2","path":"Image",\
> +"server":[{"type":"unix","path":"/path/to/sock"}],"debug":4,\
> +"node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}'
> \
> +-blockdev
> '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2",\
> +"file":"libvirt-1-storage","backing":"libvirt-2-format"}' \
> +-device virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,\
> +id=virtio-disk1 \
> +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\
> +resourcecontrol=deny \
> +-msg timestamp=on
> diff --git a/tests/qemuxml2argvdata/disk-network-nfs.xml
> b/tests/qemuxml2argvdata/disk-network-nfs.xml
> new file mode 100644
> index 0000000000..67d2843e01
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/disk-network-nfs.xml
> @@ -0,0 +1,48 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest1</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219136</memory>
> +  <currentMemory unit='KiB'>219136</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='i686' machine='pc'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu-system-x86_64</emulator>
> +    <disk type='network' device='disk'>
> +      <driver name='qemu' type='raw' cache='none'/>
> +      <source protocol='nfs' name='/foo/bar/baz'>
> +        <host name='example.com' port='2049'/>
> +        <nfs user='+6234' group='+12354'/>
> +      </source>
> +      <target dev='vda' bus='virtio'/>
> +      <serial>eb90327c-8302-4725-9e1b-4e85ed4dc251</serial>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> +    </disk>
> +    <disk type='network' device='disk'>
> +      <driver name='qemu' type='qcow2'/>
> +      <source protocol='gluster' name='Volume2/Image'>
> +        <host transport='unix' socket='/path/to/sock'/>
> +      </source>
> +      <backingStore type='network' index='1'>
> +        <format type='qcow2'/>
> +        <source protocol='nfs' name='/backing/store/nfs'>
> +          <host name='example.org'/>
> +          <nfs user='+1234' group='+5678'/>
>
I am curious why the uid/gid here is formatted as +NUMBER instead of the
NUMBER itself...

> +        </source>
> +        <backingStore/>
> +      </backingStore>
> +      <target dev='vdb' bus='virtio'/>
> +    </disk>
> +    <controller type='usb' index='0'/>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index 96a2b95331..af00feab61 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -1242,6 +1242,7 @@ mymain(void)
>      DO_TEST_CAPS_VER("disk-network-source-auth", "2.12.0");
>      DO_TEST_CAPS_LATEST("disk-network-source-auth");
>      DO_TEST("disk-network-vxhs", QEMU_CAPS_VXHS);
> +    DO_TEST_CAPS_LATEST("disk-network-nfs");
>      driver.config->vxhsTLS = 1;
>      driver.config->nbdTLSx509secretUUID =
> g_strdup("6fd3f62d-9fe7-4a4e-a869-7acd6376d8ea");
>      driver.config->vxhsTLSx509secretUUID =
> g_strdup("6fd3f62d-9fe7-4a4e-a869-7acd6376d8ea");
> diff --git
> a/tests/qemuxml2xmloutdata/disk-network-nfs-inactive.x86_64-latest.xml
> b/tests/qemuxml2xmloutdata/disk-network-nfs-inactive.x86_64-latest.xml
> new file mode 100644
> index 0000000000..4728f5ee70
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/disk-network-nfs-inactive.x86_64-latest.xml
> @@ -0,0 +1,54 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest1</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219136</memory>
> +  <currentMemory unit='KiB'>219136</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='i686' machine='pc'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <cpu mode='custom' match='exact' check='none'>
> +    <model fallback='forbid'>qemu64</model>
> +  </cpu>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu-system-x86_64</emulator>
> +    <disk type='network' device='disk'>
> +      <driver name='qemu' type='raw' cache='none'/>
> +      <source protocol='nfs' name='/foo/bar/baz'>
> +        <host name='example.com' port='2049'/>
> +        <nfs user='+6234' group='+12354'/>
> +      </source>
> +      <target dev='vda' bus='virtio'/>
> +      <serial>eb90327c-8302-4725-9e1b-4e85ed4dc251</serial>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> +    </disk>
> +    <disk type='network' device='disk'>
> +      <driver name='qemu' type='qcow2'/>
> +      <source protocol='gluster' name='Volume2/Image'>
> +        <host transport='unix' socket='/path/to/sock'/>
> +      </source>
> +      <backingStore type='network'>
> +        <format type='qcow2'/>
> +        <source protocol='nfs' name='/backing/store/nfs'>
> +          <host name='example.org' port='2049'/>
> +          <nfs user='+1234' group='+5678'/>
> +        </source>
> +        <backingStore/>
> +      </backingStore>
> +      <target dev='vdb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
> function='0x0'/>
> +    </disk>
> +    <controller type='usb' index='0' model='piix3-uhci'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x2'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmloutdata/disk-network-nfs.x86_64-latest.xml
> b/tests/qemuxml2xmloutdata/disk-network-nfs.x86_64-latest.xml
> new file mode 100644
> index 0000000000..9f03766810
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/disk-network-nfs.x86_64-latest.xml
> @@ -0,0 +1,54 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest1</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219136</memory>
> +  <currentMemory unit='KiB'>219136</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='i686' machine='pc'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <cpu mode='custom' match='exact' check='none'>
> +    <model fallback='forbid'>qemu64</model>
> +  </cpu>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu-system-x86_64</emulator>
> +    <disk type='network' device='disk'>
> +      <driver name='qemu' type='raw' cache='none'/>
> +      <source protocol='nfs' name='/foo/bar/baz'>
> +        <host name='example.com' port='2049'/>
> +        <nfs user='+6234' group='+12354'/>
> +      </source>
> +      <target dev='vda' bus='virtio'/>
> +      <serial>eb90327c-8302-4725-9e1b-4e85ed4dc251</serial>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> +    </disk>
> +    <disk type='network' device='disk'>
> +      <driver name='qemu' type='qcow2'/>
> +      <source protocol='gluster' name='Volume2/Image'>
> +        <host transport='unix' socket='/path/to/sock'/>
> +      </source>
> +      <backingStore type='network' index='1'>
> +        <format type='qcow2'/>
> +        <source protocol='nfs' name='/backing/store/nfs'>
> +          <host name='example.org' port='2049'/>
> +          <nfs user='+1234' group='+5678'/>
> +        </source>
> +        <backingStore/>
> +      </backingStore>
> +      <target dev='vdb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
> function='0x0'/>
> +    </disk>
> +    <controller type='usb' index='0' model='piix3-uhci'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x2'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index 1968be6782..856a52b65c 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -302,6 +302,7 @@ mymain(void)
>      DO_TEST("disk-network-source-auth", NONE);
>      DO_TEST("disk-network-sheepdog", NONE);
>      DO_TEST("disk-network-vxhs", NONE);
> +    DO_TEST_CAPS_LATEST("disk-network-nfs");
>      DO_TEST("disk-network-tlsx509-nbd", NONE);
>      DO_TEST("disk-network-tlsx509-vxhs", NONE);
>      DO_TEST("disk-nvme", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_QCOW2_LUKS);
> diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
> index 2e466ecb99..08e2723235 100644
> --- a/tests/virstoragetest.c
> +++ b/tests/virstoragetest.c
> @@ -1630,6 +1630,19 @@ mymain(void)
>                         "<source protocol='vxhs'
> name='c6718f6b-0401-441d-a8c3-1f0064d75ee0'>\n"
>                         "  <host name='example.com' port='9999'/>\n"
>                         "</source>\n");
> +    TEST_BACKING_PARSE("json:{\"file\":{\"driver\":\"nfs\","
> +                                   "\"user\":2,"
> +                                   "\"group\":9,"
> +                                   "\"path\":\"/foo/bar/baz\","
> +                                   "\"server\": {  \"host\":\"example.com
> \","
> +                                                  "\"port\":\"2049\""
> +                                               "}"
> +                                      "}"
> +                            "}",
> +                       "<source protocol='nfs' name='/foo/bar/baz'>\n"
> +                       "  <host name='example.com' port='2049'/>\n"
> +                       "  <nfs user='+2' group='+9'/>\n"
> +                       "</source>\n");
>      TEST_BACKING_PARSE_FULL("json:{ \"driver\": \"raw\","
>                                      "\"offset\": 10752,"
>                                      "\"size\": 4063232,"
> --
> 2.29.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210104/3fb75939/attachment-0001.htm>


More information about the libvir-list mailing list