Skip to content

Commit 4622d59

Browse files
committed
fix: code review
1 parent 09b1c7c commit 4622d59

10 files changed

Lines changed: 150 additions & 111 deletions

benchmarks/bench_client.nim

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ proc runLatencyStream(conn: Connection, runs: int): Future[StreamResult] {.async
109109
proc modeThroughput(
110110
serverAddr: TransportAddress, uploadSize, downloadSize, chunkSize, runs: int
111111
): Future[RunResult] {.async.} =
112-
var result = RunResult(
112+
var runResult = RunResult(
113113
mode: Throughput,
114114
connections: 1,
115115
streamsPerConn: 1,
@@ -128,17 +128,17 @@ proc modeThroughput(
128128
connRes.streamResults.add(sr)
129129

130130
connRes.durationNs = (Moment.now() - start).nanoseconds
131-
result.connResults.add(connRes)
132-
result.durationNs = connRes.durationNs
131+
runResult.connResults.add(connRes)
132+
runResult.durationNs = connRes.durationNs
133133

134134
conn.close()
135135
await client.stop()
136-
return result
136+
return runResult
137137

138138
# -- Mode: latency (1 conn, 1 stream) --
139139

140140
proc modeLatency(serverAddr: TransportAddress, runs: int): Future[RunResult] {.async.} =
141-
var result = RunResult(mode: Latency, connections: 1, streamsPerConn: 1)
141+
var runResult = RunResult(mode: Latency, connections: 1, streamsPerConn: 1)
142142

143143
let client = makeClient()
144144
let conn = await client.dial(serverAddr)
@@ -148,20 +148,20 @@ proc modeLatency(serverAddr: TransportAddress, runs: int): Future[RunResult] {.a
148148
let sr = await runLatencyStream(conn, runs)
149149
connRes.streamResults.add(sr)
150150
connRes.durationNs = (Moment.now() - start).nanoseconds
151-
result.connResults.add(connRes)
152-
result.durationNs = connRes.durationNs
151+
runResult.connResults.add(connRes)
152+
runResult.durationNs = connRes.durationNs
153153

154154
conn.close()
155155
await client.stop()
156-
return result
156+
return runResult
157157

158158
# -- Mode: multistream (1 conn, K streams) --
159159

160160
proc modeMultiStream(
161161
serverAddr: TransportAddress,
162162
numStreams, uploadSize, downloadSize, chunkSize, runs: int,
163163
): Future[RunResult] {.async.} =
164-
var result = RunResult(
164+
var runResult = RunResult(
165165
mode: MultiStream,
166166
connections: 1,
167167
streamsPerConn: numStreams,
@@ -191,20 +191,20 @@ proc modeMultiStream(
191191
connRes.streamResults.add(sr)
192192

193193
connRes.durationNs = (Moment.now() - start).nanoseconds
194-
result.connResults.add(connRes)
195-
result.durationNs = connRes.durationNs
194+
runResult.connResults.add(connRes)
195+
runResult.durationNs = connRes.durationNs
196196

197197
conn.close()
198198
await client.stop()
199-
return result
199+
return runResult
200200

201201
# -- Mode: multiconn (N conns, 1 stream each) --
202202

203203
proc modeMultiConn(
204204
serverAddr: TransportAddress,
205205
numConns, uploadSize, downloadSize, chunkSize, runs: int,
206206
): Future[RunResult] {.async.} =
207-
var result = RunResult(
207+
var runResult = RunResult(
208208
mode: MultiConn,
209209
connections: numConns,
210210
streamsPerConn: 1,
@@ -235,30 +235,30 @@ proc modeMultiConn(
235235

236236
for i, f in futs:
237237
let sr = await f
238-
# Associate with the right connection result
239-
while result.connResults.len <= i:
240-
result.connResults.add(ConnectionResult())
241-
result.connResults[i].streamResults.add(sr)
238+
# Associate with the right connection metrics
239+
while runResult.connResults.len <= i:
240+
runResult.connResults.add(ConnectionResult())
241+
runResult.connResults[i].streamResults.add(sr)
242242

243243
let totalDur = (Moment.now() - start).nanoseconds
244-
for cr in result.connResults.mitems:
244+
for cr in runResult.connResults.mitems:
245245
cr.durationNs = totalDur
246-
result.durationNs = totalDur
246+
runResult.durationNs = totalDur
247247

248248
for conn in conns:
249249
conn.close()
250250
for client in clients:
251251
await client.stop()
252252

253-
return result
253+
return runResult
254254

255255
# -- Mode: stress (N conns, K streams each) --
256256

257257
proc modeStress(
258258
serverAddr: TransportAddress,
259259
numConns, numStreams, uploadSize, downloadSize, chunkSize, runs: int,
260260
): Future[RunResult] {.async.} =
261-
var result = RunResult(
261+
var runResult = RunResult(
262262
mode: Stress,
263263
connections: numConns,
264264
streamsPerConn: numStreams,
@@ -293,24 +293,24 @@ proc modeStress(
293293
futConnIdx.add(ci)
294294

295295
# Ensure we have connResults slots
296-
while result.connResults.len < numConns:
297-
result.connResults.add(ConnectionResult())
296+
while runResult.connResults.len < numConns:
297+
runResult.connResults.add(ConnectionResult())
298298

299299
for i, f in allFuts:
300300
let sr = await f
301-
result.connResults[futConnIdx[i]].streamResults.add(sr)
301+
runResult.connResults[futConnIdx[i]].streamResults.add(sr)
302302

303303
let totalDur = (Moment.now() - start).nanoseconds
304-
for cr in result.connResults.mitems:
304+
for cr in runResult.connResults.mitems:
305305
cr.durationNs = totalDur
306-
result.durationNs = totalDur
306+
runResult.durationNs = totalDur
307307

308308
for conn in conns:
309309
conn.close()
310310
for client in clients:
311311
await client.stop()
312312

313-
return result
313+
return runResult
314314

315315
# -- Mode: rampup (1 conn, 1 stream, measure throughput over time) --
316316

@@ -321,7 +321,7 @@ const
321321
proc modeRampUp(
322322
serverAddr: TransportAddress, downloadSize: int, chunkSize: int
323323
): Future[RunResult] {.async.} =
324-
var result = RunResult(
324+
var runResult = RunResult(
325325
mode: RampUp,
326326
connections: 1,
327327
streamsPerConn: 1,
@@ -417,24 +417,25 @@ proc modeRampUp(
417417

418418
var connRes =
419419
ConnectionResult(streamResults: @[sr], durationNs: totalDuration.nanoseconds)
420-
result.connResults.add(connRes)
421-
result.durationNs = totalDuration.nanoseconds
420+
runResult.connResults.add(connRes)
421+
runResult.durationNs = totalDuration.nanoseconds
422422

423423
conn.close()
424424
await client.stop()
425-
return result
425+
return runResult
426426

427427
# -- Print results --
428428

429-
proc printResults(result: RunResult) =
429+
proc printResults(runResult: RunResult) =
430430
echo ""
431431
echo "=== Benchmark Results ==="
432-
echo "Mode: ", result.mode
433-
echo "Connections: ", result.connections, ", Streams/conn: ", result.streamsPerConn
434-
echo "Total duration: ", formatDuration(result.durationNs)
432+
echo "Mode: ", runResult.mode
433+
echo "Connections: ",
434+
runResult.connections, ", Streams/conn: ", runResult.streamsPerConn
435+
echo "Total duration: ", formatDuration(runResult.durationNs)
435436
echo ""
436437

437-
for ci, cr in result.connResults:
438+
for ci, cr in runResult.connResults:
438439
echo " Connection #", ci + 1, ":"
439440

440441
for si, sr in cr.streamResults:

benchmarks/bench_common.nim

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ proc toJson*(r: RunResult): JsonNode =
175175
streamNode["time_to_p90_ns"] = %sr.timeToP90Ns
176176
streamArr.add(streamNode)
177177
connArr.add(%*{"streams": streamArr, "duration_ns": cr.durationNs})
178-
result = %*{
178+
var json = %*{
179179
"mode": $r.mode,
180180
"connections": r.connections,
181181
"streams_per_conn": r.streamsPerConn,
@@ -185,3 +185,4 @@ proc toJson*(r: RunResult): JsonNode =
185185
"duration_ns": r.durationNs,
186186
"connections_results": connArr,
187187
}
188+
json

lsquic/client.nim

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import ./[errors, connection, tlsconfig, endpoint]
66

77
type QuicClient* = ref object of RootObj
88
tlsConfig: TLSConfig
9-
endpoint4: QuicEndpoint
10-
endpoint6: QuicEndpoint
9+
ip4Endpoint: QuicEndpoint
10+
ip6Endpoint: QuicEndpoint
1111

1212
proc new*(t: typedesc[QuicClient], tlsConfig: TLSConfig): QuicClient {.raises: [].} =
1313
QuicClient(tlsConfig: tlsConfig)
@@ -17,15 +17,15 @@ proc getEndpoint(
1717
): QuicEndpoint {.raises: [QuicError, TransportOsError].} =
1818
case family
1919
of AddressFamily.IPv4:
20-
if self.endpoint4.isNil:
21-
self.endpoint4 = QuicEndpoint.new(self.tlsConfig, family)
20+
if self.ip4Endpoint.isNil:
21+
self.ip4Endpoint = QuicEndpoint.new(self.tlsConfig, family)
2222

23-
return self.endpoint4
23+
return self.ip4Endpoint
2424
of AddressFamily.IPv6:
25-
if self.endpoint6.isNil:
26-
self.endpoint6 = QuicEndpoint.new(self.tlsConfig, family)
25+
if self.ip6Endpoint.isNil:
26+
self.ip6Endpoint = QuicEndpoint.new(self.tlsConfig, family)
2727

28-
return self.endpoint6
28+
return self.ip6Endpoint
2929
else:
3030
raise newException(QuicError, "client supports only IPv4/IPv6 address")
3131

@@ -37,9 +37,11 @@ proc dial*(
3737
await self.getEndpoint(address.family).dial(address)
3838

3939
proc stop*(self: QuicClient) {.async: (raises: [CancelledError]).} =
40-
if not self.endpoint4.isNil:
41-
await noCancel self.endpoint4.stop()
42-
if not self.endpoint6.isNil:
43-
await noCancel self.endpoint6.stop()
44-
self.endpoint4 = nil
45-
self.endpoint6 = nil
40+
var stops: seq[Future[void]]
41+
if not self.ip4Endpoint.isNil:
42+
stops.add(noCancel self.ip4Endpoint.stop())
43+
if not self.ip6Endpoint.isNil:
44+
stops.add(noCancel self.ip6Endpoint.stop())
45+
await allFutures(stops)
46+
self.ip4Endpoint = nil
47+
self.ip6Endpoint = nil

lsquic/connectionmanager.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ proc stop*(connman: ConnectionManager) {.async: (raises: [CancelledError]).} =
2323
for conn in active:
2424
conn.abort()
2525

26-
proc removeConnection(connman: ConnectionManager, conn: Connection) {.raises: [].} =
26+
proc removeConnection*(connman: ConnectionManager, conn: Connection) {.raises: [].} =
2727
for i in 0 ..< connman.connections.len:
2828
if connman.connections[i] == conn:
2929
let last = connman.connections.high

0 commit comments

Comments
 (0)