Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 56de3bf

Browse filesBrowse files
Alex FernándezMylesBorins
authored andcommitted
benchmark: add tls benchmark for legacy SecurePair
PR-URL: #20344 Refs: #20263 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
1 parent de2b047 commit 56de3bf
Copy full SHA for 56de3bf

File tree

Expand file treeCollapse file tree

2 files changed

+106
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+106
-0
lines changed
Open diff view settings
Collapse file

‎benchmark/tls/secure-pair.js‎

Copy file name to clipboard
+105Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
'use strict';
2+
const common = require('../common.js');
3+
const bench = common.createBenchmark(main, {
4+
dur: [5],
5+
securing: ['SecurePair', 'TLSSocket'],
6+
size: [2, 1024, 1024 * 1024]
7+
});
8+
9+
const fs = require('fs');
10+
const tls = require('tls');
11+
const net = require('net');
12+
const path = require('path');
13+
14+
const cert_dir = path.resolve(__dirname, '../../test/fixtures');
15+
const REDIRECT_PORT = 28347;
16+
17+
function main({ dur, size, securing }) {
18+
const chunk = Buffer.alloc(size, 'b');
19+
20+
const options = {
21+
key: fs.readFileSync(`${cert_dir}/test_key.pem`),
22+
cert: fs.readFileSync(`${cert_dir}/test_cert.pem`),
23+
ca: [ fs.readFileSync(`${cert_dir}/test_ca.pem`) ],
24+
ciphers: 'AES256-GCM-SHA384',
25+
isServer: true,
26+
requestCert: true,
27+
rejectUnauthorized: true,
28+
};
29+
30+
const server = net.createServer(onRedirectConnection);
31+
server.listen(REDIRECT_PORT, () => {
32+
const proxy = net.createServer(onProxyConnection);
33+
proxy.listen(common.PORT, () => {
34+
const clientOptions = {
35+
port: common.PORT,
36+
ca: options.ca,
37+
key: options.key,
38+
cert: options.cert,
39+
isServer: false,
40+
rejectUnauthorized: false,
41+
};
42+
const conn = tls.connect(clientOptions, () => {
43+
setTimeout(() => {
44+
const mbits = (received * 8) / (1024 * 1024);
45+
bench.end(mbits);
46+
if (conn)
47+
conn.destroy();
48+
server.close();
49+
proxy.close();
50+
}, dur * 1000);
51+
bench.start();
52+
conn.on('drain', write);
53+
write();
54+
});
55+
conn.on('error', (e) => {
56+
throw new Error(`Client error: ${e}`);
57+
});
58+
59+
function write() {
60+
while (false !== conn.write(chunk));
61+
}
62+
});
63+
});
64+
65+
function onProxyConnection(conn) {
66+
const client = net.connect(REDIRECT_PORT, () => {
67+
switch (securing) {
68+
case 'SecurePair':
69+
securePair(conn, client);
70+
break;
71+
case 'TLSSocket':
72+
secureTLSSocket(conn, client);
73+
break;
74+
default:
75+
throw new Error('Invalid securing method');
76+
}
77+
});
78+
}
79+
80+
function securePair(conn, client) {
81+
const serverCtx = tls.createSecureContext(options);
82+
const serverPair = tls.createSecurePair(serverCtx, true, true, false);
83+
conn.pipe(serverPair.encrypted);
84+
serverPair.encrypted.pipe(conn);
85+
serverPair.on('error', (error) => {
86+
throw new Error(`Pair error: ${error}`);
87+
});
88+
serverPair.cleartext.pipe(client);
89+
}
90+
91+
function secureTLSSocket(conn, client) {
92+
const serverSocket = new tls.TLSSocket(conn, options);
93+
serverSocket.on('error', (e) => {
94+
throw new Error(`Socket error: ${e}`);
95+
});
96+
serverSocket.pipe(client);
97+
}
98+
99+
let received = 0;
100+
function onRedirectConnection(conn) {
101+
conn.on('data', (chunk) => {
102+
received += chunk.length;
103+
});
104+
}
105+
}
Collapse file

‎test/sequential/test-benchmark-tls.js‎

Copy file name to clipboardExpand all lines: test/sequential/test-benchmark-tls.js
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ runBenchmark('tls',
2020
'dur=0.1',
2121
'n=1',
2222
'size=2',
23+
'securing=SecurePair',
2324
'type=asc'
2425
],
2526
{

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.