From 983add341cc5b47d7fdcf066f21e6e3794a57523 Mon Sep 17 00:00:00 2001 From: Ryan Gang Date: Thu, 13 Jun 2024 14:33:45 +0530 Subject: [PATCH] feat: Add `spawnClients` function This commit adds the `spawnClients` function. The `spawnClients` function is responsible for creating a specified number of client connections to a given address. It takes in the number of clients, address, stage harness, and logger as parameters. The function creates the clients and appends them to a slice before returning it. This new function is used in multiple places throughout the codebase to create client connections. --- internal/test_txn_10.go | 18 +++++------------- internal/test_txn_11.go | 18 +++++------------- internal/test_txn_8.go | 18 +++++------------- internal/test_txn_queue.go | 18 +++++------------- internal/util.go | 14 ++++++++++++++ 5 files changed, 34 insertions(+), 52 deletions(-) diff --git a/internal/test_txn_10.go b/internal/test_txn_10.go index 74f76e0..c19fba2 100644 --- a/internal/test_txn_10.go +++ b/internal/test_txn_10.go @@ -1,13 +1,9 @@ package internal import ( - "fmt" - "github.com/codecrafters-io/redis-tester/internal/redis_executable" - resp_connection "github.com/codecrafters-io/redis-tester/internal/resp/connection" resp_value "github.com/codecrafters-io/redis-tester/internal/resp/value" - "github.com/codecrafters-io/redis-tester/internal/instrumented_resp_connection" "github.com/codecrafters-io/redis-tester/internal/resp_assertions" "github.com/codecrafters-io/redis-tester/internal/test_cases" "github.com/codecrafters-io/tester-utils/test_case_harness" @@ -21,15 +17,11 @@ func testTxErr(stageHarness *test_case_harness.TestCaseHarness) error { logger := stageHarness.Logger - var clients []*resp_connection.RespConnection - - for i := 0; i < 2; i++ { - client, err := instrumented_resp_connection.NewFromAddr(stageHarness, "localhost:6379", fmt.Sprintf("client-%d", i+1)) - if err != nil { - logFriendlyError(logger, err) - return err - } - clients = append(clients, client) + clients, err := spawnClients(2, "localhost:6379", stageHarness, logger) + if err != nil { + return err + } + for _, client := range clients { defer client.Close() } diff --git a/internal/test_txn_11.go b/internal/test_txn_11.go index c636d28..14df280 100644 --- a/internal/test_txn_11.go +++ b/internal/test_txn_11.go @@ -1,14 +1,10 @@ package internal import ( - "fmt" - "github.com/codecrafters-io/redis-tester/internal/redis_executable" - resp_connection "github.com/codecrafters-io/redis-tester/internal/resp/connection" resp_value "github.com/codecrafters-io/redis-tester/internal/resp/value" "github.com/codecrafters-io/redis-tester/internal/resp_assertions" - "github.com/codecrafters-io/redis-tester/internal/instrumented_resp_connection" "github.com/codecrafters-io/redis-tester/internal/test_cases" "github.com/codecrafters-io/tester-utils/test_case_harness" ) @@ -21,15 +17,11 @@ func testTxMultiTx(stageHarness *test_case_harness.TestCaseHarness) error { logger := stageHarness.Logger - var clients []*resp_connection.RespConnection - - for i := 0; i < 3; i++ { - client, err := instrumented_resp_connection.NewFromAddr(stageHarness, "localhost:6379", fmt.Sprintf("client-%d", i+1)) - if err != nil { - logFriendlyError(logger, err) - return err - } - clients = append(clients, client) + clients, err := spawnClients(3, "localhost:6379", stageHarness, logger) + if err != nil { + return err + } + for _, client := range clients { defer client.Close() } diff --git a/internal/test_txn_8.go b/internal/test_txn_8.go index 0ee73a4..86c1eda 100644 --- a/internal/test_txn_8.go +++ b/internal/test_txn_8.go @@ -1,14 +1,10 @@ package internal import ( - "fmt" - "github.com/codecrafters-io/redis-tester/internal/redis_executable" - resp_connection "github.com/codecrafters-io/redis-tester/internal/resp/connection" resp_value "github.com/codecrafters-io/redis-tester/internal/resp/value" "github.com/codecrafters-io/redis-tester/internal/resp_assertions" - "github.com/codecrafters-io/redis-tester/internal/instrumented_resp_connection" "github.com/codecrafters-io/redis-tester/internal/test_cases" "github.com/codecrafters-io/tester-utils/test_case_harness" ) @@ -21,15 +17,11 @@ func testTxSuccess(stageHarness *test_case_harness.TestCaseHarness) error { logger := stageHarness.Logger - var clients []*resp_connection.RespConnection - - for i := 0; i < 2; i++ { - client, err := instrumented_resp_connection.NewFromAddr(stageHarness, "localhost:6379", fmt.Sprintf("client-%d", i+1)) - if err != nil { - logFriendlyError(logger, err) - return err - } - clients = append(clients, client) + clients, err := spawnClients(2, "localhost:6379", stageHarness, logger) + if err != nil { + return err + } + for _, client := range clients { defer client.Close() } diff --git a/internal/test_txn_queue.go b/internal/test_txn_queue.go index 276111d..ccb3d91 100644 --- a/internal/test_txn_queue.go +++ b/internal/test_txn_queue.go @@ -1,14 +1,10 @@ package internal import ( - "fmt" - "github.com/codecrafters-io/redis-tester/internal/redis_executable" - resp_connection "github.com/codecrafters-io/redis-tester/internal/resp/connection" resp_value "github.com/codecrafters-io/redis-tester/internal/resp/value" "github.com/codecrafters-io/redis-tester/internal/resp_assertions" - "github.com/codecrafters-io/redis-tester/internal/instrumented_resp_connection" "github.com/codecrafters-io/redis-tester/internal/test_cases" "github.com/codecrafters-io/tester-utils/test_case_harness" ) @@ -21,15 +17,11 @@ func testTxQueue(stageHarness *test_case_harness.TestCaseHarness) error { logger := stageHarness.Logger - var clients []*resp_connection.RespConnection - - for i := 0; i < 2; i++ { - client, err := instrumented_resp_connection.NewFromAddr(stageHarness, "localhost:6379", fmt.Sprintf("client-%d", i+1)) - if err != nil { - logFriendlyError(logger, err) - return err - } - clients = append(clients, client) + clients, err := spawnClients(2, "localhost:6379", stageHarness, logger) + if err != nil { + return err + } + for _, client := range clients { defer client.Close() } diff --git a/internal/util.go b/internal/util.go index edb2834..8cc49e6 100644 --- a/internal/util.go +++ b/internal/util.go @@ -55,3 +55,17 @@ func SpawnReplicas(replicaCount int, stageHarness *test_case_harness.TestCaseHar } return replicas, nil } + +func spawnClients(clientCount int, addr string, stageHarness *test_case_harness.TestCaseHarness, logger *logger.Logger) ([]*resp_connection.RespConnection, error) { + var clients []*resp_connection.RespConnection + + for i := 0; i < clientCount; i++ { + client, err := instrumented_resp_connection.NewFromAddr(stageHarness, addr, fmt.Sprintf("client-%d", i+1)) + if err != nil { + logFriendlyError(logger, err) + return nil, err + } + clients = append(clients, client) + } + return clients, nil +}