MCPcopy
hub / github.com/redis/node-redis / withConnectedSocket

Function withConnectedSocket

packages/client/lib/client/socket.spec.ts:108–137  ·  view source on GitHub ↗
(
      fn: (socket: RedisSocket, underlying: net.Socket) => Promise<void>
    )

Source from the content-addressed store, hash-verified

106 }
107
108 async function withConnectedSocket(
109 fn: (socket: RedisSocket, underlying: net.Socket) => Promise<void>
110 ) {
111 const server = net.createServer();
112 server.on('connection', conn => conn.on('error', () => { /* ignore */ }));
113 await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
114 const { port } = server.address() as net.AddressInfo;
115
116 const capture = captureUnderlyingSocket();
117 try {
118 const socket = createSocket({
119 host: '127.0.0.1',
120 port,
121 reconnectStrategy: false
122 });
123
124 await socket.connect();
125 assert.ok(capture.captured.socket, 'captured underlying socket');
126
127 try {
128 await fn(socket, capture.captured.socket!);
129 } finally {
130 // Tear down the connection so server.close() doesn't wait for it.
131 capture.captured.socket?.destroy();
132 }
133 } finally {
134 capture.restore();
135 await new Promise<void>(resolve => server.close(() => resolve()));
136 }
137 }
138
139 it('should short-circuit when the underlying socket is no longer writable (#3282)', async () => {
140 await withConnectedSocket(async (socket, underlying) => {

Callers 1

socket.spec.tsFile · 0.85

Calls 6

captureUnderlyingSocketFunction · 0.85
createSocketFunction · 0.85
createServerMethod · 0.80
destroyMethod · 0.65
connectMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected