Message ID | 20180413192605.2145-4-nirsof@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 04/13/2018 02:26 PM, Nir Soffer wrote: > Add new test module for tesing the --nolist option. > > Signed-off-by: Nir Soffer <nirsof@gmail.com> > --- > +iotests.log('Check that listing exports is allowed by default') > +disk, nbd_sock = iotests.file_path('disk1', 'nbd-sock1') > +iotests.qemu_img_create('-f', iotests.imgfmt, disk, '1m') > +iotests.qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, '-x', 'export', disk) > +out = iotests.run('nbd-client', '-l', '--unix', nbd_sock) Should we really be relying on the third-party nbd-client to be installed? Would it not be better to teach our own NBD client to learn how to do interesting things over NBD? Your use case of listing the output of NBD_OPT_LIST is one, but another that readily comes to mind is listing the possibilities of NBD_OPT_LIST_META_CONTEXT that just went into 2.12. Maybe making 'qemu-img info' give more details when connecting to an NBD server, compared to what is normally needed just for connecting to an export on that server? Additionally, once we merge in Vladimir's work to expose persistent dirty bitmaps via NBD_OPT_SET_META_CONTEXT/NBD_CMD_BLOCK_STATUS, it would be nice to have an in-tree tool for reading out the context information of an NBD export, perhaps extending what 'qemu-img map' can already do (Vladimir already mentioned that he only implemented the server side, and left the client side for an out-of-tree solution [1], although I'm wondering if that is still the wisest course of action). [1] https://lists.gnu.org/archive/html/qemu-devel/2018-03/msg05701.html > + > +assert 'export' in out.splitlines(), 'Export not in %r' % out > + > +iotests.log('Check that listing exports is forbidden with --nolist') > +disk, nbd_sock = iotests.file_path('disk2', 'nbd-sock2') > +iotests.qemu_img_create('-f', iotests.imgfmt, disk, '1m') > +iotests.qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, '-x', 'secret', > + '--nolist', disk) > + > +# nbd-client fails when listing is not allowed, but lets not depend on 3rd s/lets/let's/
17.04.2018 22:56, Eric Blake wrote: > On 04/13/2018 02:26 PM, Nir Soffer wrote: >> Add new test module for tesing the --nolist option. >> >> Signed-off-by: Nir Soffer <nirsof@gmail.com> >> --- >> +iotests.log('Check that listing exports is allowed by default') >> +disk, nbd_sock = iotests.file_path('disk1', 'nbd-sock1') >> +iotests.qemu_img_create('-f', iotests.imgfmt, disk, '1m') >> +iotests.qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, '-x', 'export', disk) >> +out = iotests.run('nbd-client', '-l', '--unix', nbd_sock) > Should we really be relying on the third-party nbd-client to be > installed? Would it not be better to teach our own NBD client to learn > how to do interesting things over NBD? Your use case of listing the > output of NBD_OPT_LIST is one, but another that readily comes to mind is > listing the possibilities of NBD_OPT_LIST_META_CONTEXT that just went > into 2.12. Maybe making 'qemu-img info' give more details when > connecting to an NBD server, compared to what is normally needed just > for connecting to an export on that server? > > Additionally, once we merge in Vladimir's work to expose persistent > dirty bitmaps via NBD_OPT_SET_META_CONTEXT/NBD_CMD_BLOCK_STATUS, it > would be nice to have an in-tree tool for reading out the context > information of an NBD export, perhaps extending what 'qemu-img map' can > already do (Vladimir already mentioned that he only implemented the > server side, and left the client side for an out-of-tree solution [1], > although I'm wondering if that is still the wisest course of action). > > [1] Client part for base:allocation is done, and qemu-img map shows it, client part for dirty bitmaps export - isn't. > >> + >> +assert 'export' in out.splitlines(), 'Export not in %r' % out >> + >> +iotests.log('Check that listing exports is forbidden with --nolist') >> +disk, nbd_sock = iotests.file_path('disk2', 'nbd-sock2') >> +iotests.qemu_img_create('-f', iotests.imgfmt, disk, '1m') >> +iotests.qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, '-x', 'secret', >> + '--nolist', disk) >> + >> +# nbd-client fails when listing is not allowed, but lets not depend on 3rd > s/lets/let's/ >
diff --git a/tests/qemu-iotests/214 b/tests/qemu-iotests/214 new file mode 100755 index 0000000000..779e382070 --- /dev/null +++ b/tests/qemu-iotests/214 @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# +# Test qemu-nbd compatibility with other tools. +# +# Copyright (C) 2018 Nir Soffer <nirsof@gmail.com> +# +# 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/>. +# + +import iotests + +iotests.verify_image_format(supported_fmts=['raw']) + +iotests.log('Check that listing exports is allowed by default') +disk, nbd_sock = iotests.file_path('disk1', 'nbd-sock1') +iotests.qemu_img_create('-f', iotests.imgfmt, disk, '1m') +iotests.qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, '-x', 'export', disk) +out = iotests.run('nbd-client', '-l', '--unix', nbd_sock) + +assert 'export' in out.splitlines(), 'Export not in %r' % out + +iotests.log('Check that listing exports is forbidden with --nolist') +disk, nbd_sock = iotests.file_path('disk2', 'nbd-sock2') +iotests.qemu_img_create('-f', iotests.imgfmt, disk, '1m') +iotests.qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, '-x', 'secret', + '--nolist', disk) + +# nbd-client fails when listing is not allowed, but lets not depend on 3rd +# party tool behavior here. +try: + out = iotests.run('nbd-client', '-l', '--unix', nbd_sock) + assert 'secret' not in out, 'Export in %r' % out +except iotests.CommandFailed as e: + # This text comes from qemu-nbd. + assert 'Listing exports is forbidden' in e.err, 'Unexpected error: %s' % e diff --git a/tests/qemu-iotests/214.out b/tests/qemu-iotests/214.out new file mode 100644 index 0000000000..dae61b5a57 --- /dev/null +++ b/tests/qemu-iotests/214.out @@ -0,0 +1,2 @@ +Check that listing exports is allowed by default +Check that listing exports is forbidden with --nolist diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group index 52a80f3f9e..a820dcb91f 100644 --- a/tests/qemu-iotests/group +++ b/tests/qemu-iotests/group @@ -212,3 +212,4 @@ 211 rw auto quick 212 rw auto quick 213 rw auto quick +214 rw auto quick
Add new test module for tesing the --nolist option. Signed-off-by: Nir Soffer <nirsof@gmail.com> --- tests/qemu-iotests/214 | 46 ++++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/214.out | 2 ++ tests/qemu-iotests/group | 1 + 3 files changed, 49 insertions(+) create mode 100755 tests/qemu-iotests/214 create mode 100644 tests/qemu-iotests/214.out