Skip to content

Commit fd94680

Browse files
authored
chore: update c-questdb-client submodule (#87)
1 parent 4ea8800 commit fd94680

File tree

3 files changed

+27
-21
lines changed

3 files changed

+27
-21
lines changed

test/mock_server.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
import threading
66
import time
77

8-
98
NON_ESCAPED_NEW_LINE_RE = re.compile(rb'(?<!\\)\n')
109

11-
1210
class Server:
1311
def __init__(self):
1412
self._sock = None
@@ -62,7 +60,8 @@ def __exit__(self, _ex_type, _ex_value, _ex_tb):
6260
self.close()
6361

6462
class HttpServer:
65-
def __init__(self):
63+
def __init__(self, delay_seconds=0):
64+
self.delay_seconds = delay_seconds
6665
self.requests = []
6766
self.responses = []
6867
self.headers = []
@@ -74,18 +73,19 @@ def __init__(self):
7473
def _serve(self):
7574
self._http_server.serve_forever()
7675
self._stop_event.set()
77-
78-
def __enter__(self):
79-
headers = self.headers
76+
77+
def create_handler(self):
78+
delay_seconds = self.delay_seconds
8079
requests = self.requests
80+
headers = self.headers
8181
responses = self.responses
8282

8383
class IlpHttpHandler(hs.BaseHTTPRequestHandler):
8484
def do_POST(self):
85+
time.sleep(delay_seconds)
86+
8587
try:
86-
headers.append({
87-
key: value
88-
for key, value in self.headers.items()})
88+
headers.append({key: value for key, value in self.headers.items()})
8989
content_length = int(self.headers['Content-Length'])
9090
body = self.rfile.read(content_length)
9191
requests.append(body)
@@ -103,17 +103,18 @@ def do_POST(self):
103103
if body:
104104
self.wfile.write(body)
105105
except BrokenPipeError:
106-
pass # Client disconnected early, no biggie.
106+
pass
107+
108+
return IlpHttpHandler
107109

110+
def __enter__(self):
108111
self._stop_event = threading.Event()
109-
self._http_server = hs.HTTPServer(
110-
('', 0),
111-
IlpHttpHandler,
112-
bind_and_activate=True)
112+
handler_class = self.create_handler()
113+
self._http_server = hs.HTTPServer(('', 0), handler_class, bind_and_activate=True)
113114
self._http_server_thread = threading.Thread(target=self._serve)
114115
self._http_server_thread.start()
115116
return self
116-
117+
117118
def __exit__(self, _ex_type, _ex_value, _ex_tb):
118119
self._http_server.shutdown()
119120
self._http_server.server_close()

test/test.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env python3
22

33
import sys
4+
45
sys.dont_write_bytecode = True
56
import os
67
import unittest
@@ -11,6 +12,7 @@
1112
import pathlib
1213

1314
import patch_path
15+
1416
PROJ_ROOT = patch_path.PROJ_ROOT
1517
sys.path.append(str(PROJ_ROOT / 'c-questdb-client' / 'system_test'))
1618

@@ -882,7 +884,7 @@ def _do_test_auto_flush_interval2(self):
882884
sender.row('t', columns={'x': 5}, at=qi.ServerTimestamp)
883885
sender.row('t', columns={'x': 6}, at=qi.ServerTimestamp)
884886
return server.requests
885-
887+
886888
def test_auto_flush_interval2(self):
887889
# This test is timing-sensitive,
888890
# so it has a tendency to go wrong in CI.
@@ -896,7 +898,7 @@ def test_auto_flush_interval2(self):
896898
b't x=4i\nt x=5i\n',
897899
b't x=6i\n'])
898900
break
899-
901+
900902
# If this fails, it failed 10 attempts.
901903
# Due to CI timing delays there may have been multiple flushes.
902904
self.assertEqual(len(requests), 3)
@@ -952,11 +954,14 @@ def test_http_err_retry(self):
952954
self.assertEqual(server.requests[1], exp_payload)
953955

954956
def test_http_request_min_throughput(self):
955-
with HttpServer() as server, self.builder(
957+
with HttpServer(delay_seconds=2) as server, self.builder(
956958
'http',
957959
'localhost',
958960
server.port,
959-
request_timeout=0,
961+
request_timeout=1000,
962+
# request_timeout is sufficiently high since it's also used as a connect timeout and we want to
963+
# survive hiccups on CI. it should be lower than the server delay though to actually test the
964+
# effect of request_min_throughput.
960965
request_min_throughput=1) as sender:
961966
sender.row('tbl1', columns={'x': 42}, at=qi.ServerTimestamp)
962967
sender.flush()
@@ -968,7 +973,7 @@ def test_http_request_min_throughput_timeout(self):
968973
'localhost',
969974
server.port,
970975
auto_flush='off',
971-
request_timeout=0,
976+
request_timeout=1,
972977
retry_timeout=0,
973978
request_min_throughput=100000000) as sender:
974979
sender.row('tbl1', columns={'x': 42}, at=qi.ServerTimestamp)

0 commit comments

Comments
 (0)