MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / newRedisCommandTestClient

Function newRedisCommandTestClient

internal/home/client_test.go:337–386  ·  view source on GitHub ↗
(t *testing.T, handler func([]string) string)

Source from the content-addressed store, hash-verified

335}
336
337func newRedisCommandTestClient(t *testing.T, handler func([]string) string) (*Client, *redisCommandLog) {
338 t.Helper()
339
340 listener, errListen := net.Listen("tcp", "127.0.0.1:0")
341 if errListen != nil {
342 t.Fatalf("listen: %v", errListen)
343 }
344 log := &redisCommandLog{}
345 done := make(chan struct{})
346 go func() {
347 defer close(done)
348 for {
349 conn, errAccept := listener.Accept()
350 if errAccept != nil {
351 return
352 }
353 go serveRedisCommandTestConn(conn, log, handler)
354 }
355 }()
356 t.Cleanup(func() {
357 _ = listener.Close()
358 <-done
359 })
360
361 host, portText, errSplit := net.SplitHostPort(listener.Addr().String())
362 if errSplit != nil {
363 t.Fatalf("split listener addr: %v", errSplit)
364 }
365 port, errPort := strconv.Atoi(portText)
366 if errPort != nil {
367 t.Fatalf("parse listener port: %v", errPort)
368 }
369 client := New(config.HomeConfig{
370 Enabled: true,
371 Host: host,
372 Port: port,
373 DisableClusterDiscovery: true,
374 })
375 client.cmd = redis.NewClient(&redis.Options{
376 Addr: listener.Addr().String(),
377 Protocol: 2,
378 DisableIdentity: true,
379 MaxRetries: -1,
380 ContextTimeoutEnabled: true,
381 })
382 t.Cleanup(func() {
383 client.Close()
384 })
385 return client, log
386}
387
388func serveRedisCommandTestConn(conn net.Conn, log *redisCommandLog, handler func([]string) string) {
389 defer func() {

Calls 7

AcceptMethod · 0.80
AddrMethod · 0.80
NewFunction · 0.70
CloseMethod · 0.65
CleanupMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected