Skip to content
This repository was archived by the owner on Apr 25, 2024. It is now read-only.

Commit dbb6492

Browse files
authored
Merge branch 'master' into noah/refactor-prover
2 parents 081e05f + 305dc61 commit dbb6492

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

src/pyk/kore/rpc.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -191,19 +191,28 @@ def __init__(
191191
*,
192192
timeout: int | None = None,
193193
bug_report: BugReport | None = None,
194+
bug_report_id: str | None = None,
194195
):
195196
client_cache = {}
196197
self._clients = {}
197198
self._default_client = JsonRpcClient(
198-
default_host, default_port, timeout=timeout, bug_report=bug_report, transport=default_transport
199+
default_host,
200+
default_port,
201+
timeout=timeout,
202+
bug_report=bug_report,
203+
bug_report_id=bug_report_id,
204+
transport=default_transport,
199205
)
200206
client_cache[(default_host, default_port)] = self._default_client
201207
for method, servers in dispatch.items():
202208
for host, port, transport in servers:
203209
if (host, port) in client_cache:
204210
self._update_clients(method, client_cache[(host, port)])
205211
else:
206-
new_client = JsonRpcClient(host, port, timeout=timeout, bug_report=bug_report, transport=transport)
212+
new_id = None if bug_report_id is None else bug_report_id + '_' + str(transport)
213+
new_client = JsonRpcClient(
214+
host, port, timeout=timeout, bug_report=bug_report, bug_report_id=new_id, transport=transport
215+
)
207216
self._update_clients(method, new_client)
208217
client_cache[(host, port)] = new_client
209218

@@ -244,6 +253,7 @@ class JsonRpcClient(ContextManager['JsonRpcClient']):
244253
_transport: Transport
245254
_req_id: int
246255
_bug_report: BugReport | None
256+
_bug_report_id: str
247257

248258
def __init__(
249259
self,
@@ -252,6 +262,7 @@ def __init__(
252262
*,
253263
timeout: int | None = None,
254264
bug_report: BugReport | None = None,
265+
bug_report_id: str | None = None,
255266
transport: TransportType = TransportType.SINGLE_SOCKET,
256267
):
257268
if transport is TransportType.SINGLE_SOCKET:
@@ -262,6 +273,7 @@ def __init__(
262273
raise AssertionError()
263274
self._req_id = 1
264275
self._bug_report = bug_report
276+
self._bug_report_id = bug_report_id if bug_report_id is not None else str(id(self))
265277

266278
def __enter__(self) -> JsonRpcClient:
267279
return self
@@ -275,7 +287,6 @@ def close(self) -> None:
275287
def request(self, method: str, **params: Any) -> dict[str, Any]:
276288
old_id = self._req_id
277289
self._req_id += 1
278-
bug_report_id = str(id(self))
279290

280291
payload = {
281292
'jsonrpc': self._JSON_RPC_VERSION,
@@ -288,9 +299,9 @@ def request(self, method: str, **params: Any) -> dict[str, Any]:
288299
_LOGGER.info(f'Sending request to {server_addr}: {old_id} - {method}')
289300
req = json.dumps(payload)
290301
if self._bug_report:
291-
bug_report_request = f'rpc_{bug_report_id}/{old_id:03}_request.json'
302+
bug_report_request = f'rpc_{self._bug_report_id}/{old_id:03}_request.json'
292303
self._bug_report.add_file_contents(req, Path(bug_report_request))
293-
self._bug_report.add_command(self._transport.command(bug_report_id, old_id, bug_report_request))
304+
self._bug_report.add_command(self._transport.command(self._bug_report_id, old_id, bug_report_request))
294305

295306
_LOGGER.debug(f'Sending request to {server_addr}: {req}')
296307
resp = self._transport.request(req)
@@ -299,15 +310,15 @@ def request(self, method: str, **params: Any) -> dict[str, Any]:
299310
_LOGGER.debug(f'Received response from {server_addr}: {resp}')
300311

301312
if self._bug_report:
302-
bug_report_response = f'rpc_{bug_report_id}/{old_id:03}_response.json'
313+
bug_report_response = f'rpc_{self._bug_report_id}/{old_id:03}_response.json'
303314
self._bug_report.add_file_contents(resp, Path(bug_report_response))
304315
self._bug_report.add_command(
305316
[
306317
'diff',
307318
'-b',
308319
'-s',
309-
f'rpc_{bug_report_id}/{old_id:03}_actual.json',
310-
f'rpc_{bug_report_id}/{old_id:03}_response.json',
320+
f'rpc_{self._bug_report_id}/{old_id:03}_actual.json',
321+
f'rpc_{self._bug_report_id}/{old_id:03}_response.json',
311322
]
312323
)
313324

@@ -719,13 +730,20 @@ def __init__(
719730
*,
720731
timeout: int | None = None,
721732
bug_report: BugReport | None = None,
733+
bug_report_id: str | None = None,
722734
transport: TransportType = TransportType.SINGLE_SOCKET,
723735
dispatch: dict[str, list[tuple[str, int, TransportType]]] | None = None,
724736
):
725737
if dispatch is None:
726738
dispatch = {}
727739
self._client = JsonRpcClientFacade(
728-
host, port, transport, timeout=timeout, bug_report=bug_report, dispatch=dispatch
740+
host,
741+
port,
742+
transport,
743+
timeout=timeout,
744+
bug_report=bug_report,
745+
bug_report_id=bug_report_id,
746+
dispatch=dispatch,
729747
)
730748

731749
def __enter__(self) -> KoreClient:

src/tests/unit/kore/test_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def rpc_client(mock: Mock) -> MockClient:
7777
def kore_client(mock: Mock, mock_class: Mock) -> Iterator[KoreClient]: # noqa: N803
7878
client = KoreClient('localhost', 3000)
7979
mock_class.assert_called_with(
80-
'localhost', 3000, timeout=None, bug_report=None, transport=TransportType.SINGLE_SOCKET
80+
'localhost', 3000, timeout=None, bug_report=None, bug_report_id=None, transport=TransportType.SINGLE_SOCKET
8181
)
8282
assert client._client._default_client == mock
8383
yield client

0 commit comments

Comments
 (0)