def test_jsonrpc_list_qpairs(pciaddr): import json import socket # create the jsonrpc client sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.connect('/var/tmp/pynvme.sock') def jsonrpc_call(sock, method, params=[]): # create and send the command req = {} req['id'] = 1234567890 req['jsonrpc'] = '2.0' req['method'] = method req['params'] = params sock.sendall(json.dumps(req).encode('ascii')) # receive the result resp = json.loads(sock.recv(4096).decode('ascii')) assert resp['id'] == 1234567890 assert resp['jsonrpc'] == '2.0' return resp['result'] result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 0 # create controller and admin queue pcie = d.Pcie(pciaddr) nvme0 = d.Controller(pcie) result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 1 assert result[0]['qid'] - 1 == 0 result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 1 assert result[0]['qid'] - 1 == 0 q1 = d.Qpair(nvme0, 8) result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 2 assert result[0]['qid'] - 1 == 0 assert result[1]['qid'] - 1 == 1 q2 = d.Qpair(nvme0, 8) result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 3 assert result[0]['qid'] - 1 == 0 assert result[1]['qid'] - 1 == 1 assert result[2]['qid'] - 1 == 2 q1.delete() result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 2 assert result[0]['qid'] - 1 == 0 assert result[1]['qid'] - 1 == 2 q2.delete() result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 1 assert result[0]['qid'] - 1 == 0 pcie.close() result = jsonrpc_call(sock, 'list_all_qpair') assert len(result) == 0
def nvme0(pciaddr): ret = d.Controller(pciaddr.encode('utf-8')) yield ret del ret