Skip to content

Commit

Permalink
Merge pull request #142 from codecrafters-io/CC-1195
Browse files Browse the repository at this point in the history
CC-1195: update --replicaof flag to pass single variable
  • Loading branch information
ryan-gang committed May 10, 2024
2 parents cb7828d + 6876d85 commit 7db60b3
Show file tree
Hide file tree
Showing 12 changed files with 904 additions and 595 deletions.
11 changes: 10 additions & 1 deletion internal/redis_executable/redis_executable.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,16 @@ func (b *RedisExecutable) Run(args ...string) error {
if b.args == nil || len(b.args) == 0 {
b.logger.Infof("$ ./spawn_redis_server.sh")
} else {
b.logger.Infof("$ ./spawn_redis_server.sh %s", strings.Join(b.args, " "))
var log string
log += "$ ./spawn_redis_server.sh"
for _, arg := range b.args {
if strings.Contains(arg, " ") {
log += " \"" + arg + "\""
} else {
log += " " + arg
}
}
b.logger.Infof(log)
}

if err := b.executable.Start(b.args...); err != nil {
Expand Down
1,098 changes: 699 additions & 399 deletions internal/test_helpers/course_definition.yml

Large diffs are not rendered by default.

30 changes: 15 additions & 15 deletions internal/test_helpers/fixtures/rdb-read-value-with-expiry/pass
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Debug = true

[stage-13] Running tests for Stage #13: rdb-read-value-with-expiry
[stage-13] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2171702849 --dbfilename pear.rdb
[stage-13] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles3027591544 --dbfilename pear.rdb
[stage-13] client: $ redis-cli GET orange
[stage-13] client: Sent bytes: "*2\r\n$3\r\nGET\r\n$6\r\norange\r\n"
[stage-13] client: Received bytes: "$10\r\nstrawberry\r\n"
Expand All @@ -23,7 +23,7 @@ Debug = true

[stage-12] Running tests for Stage #12: rdb-read-multiple-string-values
[stage-12] Created RDB file with key-value pairs: "grape"="pineapple", "apple"="raspberry", "banana"="apple", "mango"="orange", "orange"="pear"
[stage-12] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2693035745 --dbfilename raspberry.rdb
[stage-12] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles4230549431 --dbfilename raspberry.rdb
[stage-12] client: $ redis-cli GET grape
[stage-12] client: Sent bytes: "*2\r\n$3\r\nGET\r\n$5\r\ngrape\r\n"
[stage-12] client: Received bytes: "$9\r\npineapple\r\n"
Expand Down Expand Up @@ -55,19 +55,19 @@ Debug = true

[stage-11] Running tests for Stage #11: rdb-read-multiple-keys
[stage-11] Created RDB file with 3 keys: ["banana" "apple" "blueberry"]
[stage-11] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2343972202 --dbfilename blueberry.rdb
[stage-11] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1567495839 --dbfilename blueberry.rdb
[stage-11] client: $ redis-cli KEYS *
[stage-11] client: Sent bytes: "*2\r\n$4\r\nKEYS\r\n$1\r\n*\r\n"
[stage-11] client: Received bytes: "*3\r\n$6\r\nbanana\r\n$9\r\nblueberry\r\n$5\r\napple\r\n"
[stage-11] client: Received RESP value: ["banana", "blueberry", "apple"]
[stage-11] Received ["banana", "blueberry", "apple"]
[stage-11] client: Received bytes: "*3\r\n$5\r\napple\r\n$6\r\nbanana\r\n$9\r\nblueberry\r\n"
[stage-11] client: Received RESP value: ["apple", "banana", "blueberry"]
[stage-11] Received ["apple", "banana", "blueberry"]
[stage-11] Test passed.
[stage-11] Terminating program
[stage-11] Program terminated successfully

[stage-10] Running tests for Stage #10: rdb-read-string-value
[stage-10] Created RDB file with single key-value pair: grape="pineapple"
[stage-10] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2430917994 --dbfilename orange.rdb
[stage-10] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles775229267 --dbfilename orange.rdb
[stage-10] client: $ redis-cli GET grape
[stage-10] client: Sent bytes: "*2\r\n$3\r\nGET\r\n$5\r\ngrape\r\n"
[stage-10] client: Received bytes: "$9\r\npineapple\r\n"
Expand All @@ -79,7 +79,7 @@ Debug = true

[stage-9] Running tests for Stage #9: rdb-read-key
[stage-9] Created RDB file with single key: "mango"
[stage-9] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles137626249 --dbfilename pear.rdb
[stage-9] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1527972385 --dbfilename pear.rdb
[stage-9] client: $ redis-cli KEYS *
[stage-9] client: Sent bytes: "*2\r\n$4\r\nKEYS\r\n$1\r\n*\r\n"
[stage-9] client: Received bytes: "*1\r\n$5\r\nmango\r\n"
Expand All @@ -90,12 +90,12 @@ Debug = true
[stage-9] Program terminated successfully

[stage-8] Running tests for Stage #8: rdb-config
[stage-8] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1388308438 --dbfilename blueberry.rdb
[stage-8] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1821958071 --dbfilename blueberry.rdb
[stage-8] client: $ redis-cli CONFIG GET dir
[stage-8] client: Sent bytes: "*3\r\n$6\r\nCONFIG\r\n$3\r\nGET\r\n$3\r\ndir\r\n"
[stage-8] client: Received bytes: "*2\r\n$3\r\ndir\r\n$75\r\n/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1388308438\r\n"
[stage-8] client: Received RESP value: ["dir", "/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1388308438"]
[stage-8] Received ["dir", "/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1388308438"]
[stage-8] client: Received bytes: "*2\r\n$3\r\ndir\r\n$75\r\n/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1821958071\r\n"
[stage-8] client: Received RESP value: ["dir", "/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1821958071"]
[stage-8] Received ["dir", "/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1821958071"]
[stage-8] Test passed.
[stage-8] Terminating program
[stage-8] Program terminated successfully
Expand All @@ -107,15 +107,15 @@ Debug = true
[stage-7] Received bytes: "+OK\r\n"
[stage-7] Received RESP value: "OK"
[stage-7] Received "OK"
[stage-7] Received OK at 19:16:17.030
[stage-7] Fetching key "strawberry" at 19:16:17.030 (should not be expired)
[stage-7] Received OK at 21:36:24.124
[stage-7] Fetching key "strawberry" at 21:36:24.124 (should not be expired)
[stage-7] $ redis-cli GET strawberry
[stage-7] Sent bytes: "*2\r\n$3\r\nGET\r\n$10\r\nstrawberry\r\n"
[stage-7] Received bytes: "$4\r\npear\r\n"
[stage-7] Received RESP value: "pear"
[stage-7] Received "pear"
[stage-7] Sleeping for 101ms
[stage-7] Fetching key "strawberry" at 19:16:17.134 (should be expired)
[stage-7] Fetching key "strawberry" at 21:36:24.227 (should be expired)
[stage-7] $ redis-cli GET strawberry
[stage-7] Sent bytes: "*2\r\n$3\r\nGET\r\n$10\r\nstrawberry\r\n"
[stage-7] Received bytes: "$-1\r\n"
Expand Down

0 comments on commit 7db60b3

Please sign in to comment.