qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

iotest 147: add cases to test new @name parameter of nbd-server-add

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180119135719.24745-4-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>

authored by

Vladimir Sementsov-Ogievskiy and committed by
Eric Blake
549084ea a3b0dc75

+57 -15
+55 -13
tests/qemu-iotests/147
··· 38 38 39 39 40 40 class NBDBlockdevAddBase(iotests.QMPTestCase): 41 - def blockdev_add_options(self, address, export=None): 42 - options = { 'node-name': 'nbd-blockdev', 41 + def blockdev_add_options(self, address, export, node_name): 42 + options = { 'node-name': node_name, 43 43 'driver': 'raw', 44 44 'file': { 45 45 'driver': 'nbd', ··· 50 50 options['file']['export'] = export 51 51 return options 52 52 53 - def client_test(self, filename, address, export=None): 54 - bao = self.blockdev_add_options(address, export) 53 + def client_test(self, filename, address, export=None, 54 + node_name='nbd-blockdev', delete=True): 55 + bao = self.blockdev_add_options(address, export, node_name) 55 56 result = self.vm.qmp('blockdev-add', **bao) 56 57 self.assert_qmp(result, 'return', {}) 57 58 59 + found = False 58 60 result = self.vm.qmp('query-named-block-nodes') 59 61 for node in result['return']: 60 - if node['node-name'] == 'nbd-blockdev': 62 + if node['node-name'] == node_name: 63 + found = True 61 64 if isinstance(filename, str): 62 65 self.assert_qmp(node, 'image/filename', filename) 63 66 else: 64 67 self.assert_json_filename_equal(node['image']['filename'], 65 68 filename) 66 69 break 70 + self.assertTrue(found) 67 71 68 - result = self.vm.qmp('blockdev-del', node_name='nbd-blockdev') 69 - self.assert_qmp(result, 'return', {}) 72 + if delete: 73 + result = self.vm.qmp('blockdev-del', node_name=node_name) 74 + self.assert_qmp(result, 'return', {}) 70 75 71 76 72 77 class QemuNBD(NBDBlockdevAddBase): ··· 125 130 except OSError: 126 131 pass 127 132 128 - def _server_up(self, address): 133 + def _server_up(self, address, export_name=None, export_name2=None): 129 134 result = self.server.qmp('nbd-server-start', addr=address) 130 135 self.assert_qmp(result, 'return', {}) 131 136 132 - result = self.server.qmp('nbd-server-add', device='nbd-export') 137 + if export_name is None: 138 + result = self.server.qmp('nbd-server-add', device='nbd-export') 139 + else: 140 + result = self.server.qmp('nbd-server-add', device='nbd-export', 141 + name=export_name) 133 142 self.assert_qmp(result, 'return', {}) 134 143 144 + if export_name2 is not None: 145 + result = self.server.qmp('nbd-server-add', device='nbd-export', 146 + name=export_name2) 147 + self.assert_qmp(result, 'return', {}) 148 + 149 + 135 150 def _server_down(self): 136 151 result = self.server.qmp('nbd-server-stop') 137 152 self.assert_qmp(result, 'return', {}) 138 153 139 - def test_inet(self): 154 + def do_test_inet(self, export_name=None): 140 155 address = { 'type': 'inet', 141 156 'data': { 142 157 'host': 'localhost', 143 158 'port': str(NBD_PORT) 144 159 } } 145 - self._server_up(address) 146 - self.client_test('nbd://localhost:%i/nbd-export' % NBD_PORT, 147 - flatten_sock_addr(address), 'nbd-export') 160 + self._server_up(address, export_name) 161 + export_name = export_name or 'nbd-export' 162 + self.client_test('nbd://localhost:%i/%s' % (NBD_PORT, export_name), 163 + flatten_sock_addr(address), export_name) 164 + self._server_down() 165 + 166 + def test_inet_default_export_name(self): 167 + self.do_test_inet() 168 + 169 + def test_inet_same_export_name(self): 170 + self.do_test_inet('nbd-export') 171 + 172 + def test_inet_different_export_name(self): 173 + self.do_test_inet('shadow') 174 + 175 + def test_inet_two_exports(self): 176 + address = { 'type': 'inet', 177 + 'data': { 178 + 'host': 'localhost', 179 + 'port': str(NBD_PORT) 180 + } } 181 + self._server_up(address, 'exp1', 'exp2') 182 + self.client_test('nbd://localhost:%i/%s' % (NBD_PORT, 'exp1'), 183 + flatten_sock_addr(address), 'exp1', 'node1', False) 184 + self.client_test('nbd://localhost:%i/%s' % (NBD_PORT, 'exp2'), 185 + flatten_sock_addr(address), 'exp2', 'node2', False) 186 + result = self.vm.qmp('blockdev-del', node_name='node1') 187 + self.assert_qmp(result, 'return', {}) 188 + result = self.vm.qmp('blockdev-del', node_name='node2') 189 + self.assert_qmp(result, 'return', {}) 148 190 self._server_down() 149 191 150 192 def test_inet6(self):
+2 -2
tests/qemu-iotests/147.out
··· 1 - ...... 1 + ......... 2 2 ---------------------------------------------------------------------- 3 - Ran 6 tests 3 + Ran 9 tests 4 4 5 5 OK