def test_convert_gqtp_result_fail(self): grn = Groonga() s = grn._clock_gettime() e = grn._clock_gettime() senddata = get_send_data_for_gqtp("status") rawdata = senddata[:GQTP_HEADER_SIZE] + b'{"test": 0}' d = convert_gqtp_result_data(s, e, GRN_STATUS_UNSUPPORTED_COMMAND_VERSION, rawdata) d = json.loads(d) self.assertEqual(d[0][0], -71)
def test_get_send_data(self): d = get_send_data_for_gqtp("status") self.assertEqual(30, len(d)) if sys.version_info[0] == 3: self.assertEqual(ord("\xc7"), d[0]) else: self.assertEqual("\xc7", d[0]) (size,) = struct.unpack("!I", d[8:12]) self.assertEqual(6, size)
def test_convert_gqtp_result_fail(self): grn = Groonga() s = grn._clock_gettime() e = grn._clock_gettime() senddata = get_send_data_for_gqtp("status") rawdata = senddata[:GQTP_HEADER_SIZE] + b"{\"test\": 0}" d = convert_gqtp_result_data(s, e, GRN_STATUS_UNSUPPORTED_COMMAND_VERSION, rawdata) d = json.loads(d) self.assertEqual(d[0][0], -71)
def test_convert_gqtp_result(self): grn = Groonga() s = grn._clock_gettime() e = grn._clock_gettime() senddata = get_send_data_for_gqtp("status") rawdata = senddata[:GQTP_HEADER_SIZE] + b'{"test": 0}' d = convert_gqtp_result_data(s, e, 0, rawdata) d = json.loads(d) self.assertEqual(d[0][0], 0)
def test_convert_gqtp_result(self): grn = Groonga() s = grn._clock_gettime() e = grn._clock_gettime() senddata = get_send_data_for_gqtp("status") rawdata = senddata[:GQTP_HEADER_SIZE] + b"{\"test\": 0}" d = convert_gqtp_result_data(s, e, 0, rawdata) d = json.loads(d) self.assertEqual(d[0][0], 0)
def test_get_send_data(self): d = get_send_data_for_gqtp("status") self.assertEqual(30, len(d)) if sys.version_info[0] == 3: self.assertEqual(ord('\xc7'), d[0]) else: self.assertEqual('\xc7', d[0]) (size, ) = struct.unpack("!I", d[8:12]) self.assertEqual(6, size)
def test_get_send_data_with_args(self): kwargs = {"table": "Site"} d = get_send_data_for_gqtp("select", **kwargs) self.assertEqual(45, len(d)) if sys.version_info[0] == 3: self.assertEqual(ord('\xc7'), d[0]) else: self.assertEqual('\xc7', d[0]) body = d[GQTP_HEADER_SIZE:] (size, ) = struct.unpack("!I", d[8:12]) self.assertEqual(len(body), size)
def test_get_send_data_with_args_and_two_bytes(self): kwargs = {"table": "Sitは"} d = get_send_data_for_gqtp("select", **kwargs) self.assertEqual(47, len(d)) if sys.version_info[0] == 3: self.assertEqual(ord("\xc7"), d[0]) # check body length self.assertEqual(23, d[11]) else: self.assertEqual("\xc7", d[0]) # check body length self.assertEqual("\x17", d[11]) body = d[GQTP_HEADER_SIZE:] (size,) = struct.unpack("!I", d[8:12]) self.assertEqual(len(body), size)
async def _call_gqtp(self, cmd, **kwargs): _start = self._grn._clock_gettime() with async_timeout.timeout(self._timeout): _r, _w = await asyncio.open_connection(self.host, self.port, loop=self.loop) _w.write(get_send_data_for_gqtp(cmd, **kwargs)) with async_timeout.timeout(self._timeout): await _w.drain() with async_timeout.timeout(self._timeout): raw_data = await _r.read(self._recv_buf) proto, qtype, keylen, level, flags, status, size, opaque, cas \ = struct.unpack("!BBHBBHIIQ", raw_data[:GQTP_HEADER_SIZE]) while len(raw_data) < size + GQTP_HEADER_SIZE: raw_data += await _r.read(self._recv_buf) _end = self._grn._clock_gettime() _w.close() return convert_gqtp_result_data(_start, _end, status, raw_data)