Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/fixtures.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Trigger Fixture Regeneration

permissions:
contents: write
pull-requests: write

on:
pull_request:
types:
- labeled

jobs:
regenerate_fixtures:
if: github.event.label.name == 'regenerate-fixtures'
uses: codecrafters-io/tester-utils/.github/workflows/fixtures.yml@master
with:
tester_repo: redis-tester
secrets: inherit
27 changes: 5 additions & 22 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v1
with:
go-version: 1.21.x

# Required for tests
- name: Install Redis
run: |-
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis

- name: "Stop redis service"
run: sudo service redis-server stop

- uses: actions/setup-python@v2
with:
python-version: "3.x" # Version range or exact version of a Python version to use, using SemVer's version range syntax
- id: setup-env
name: Setup test environment
uses: codecrafters-io/codecrafters-action/.github/actions/redis-setup@ef5aeb9504e08cccfe71e1dbcf806fab3738019d

- run: make test
- name: Run tests
run: make test

lint:
runs-on: ubuntu-latest
Expand Down
6 changes: 3 additions & 3 deletions internal/test_helpers/fixtures/expiry/pass
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ Debug = true
[stage-7] Received bytes: "+OK\r\n"
[stage-7] Received RESP simple string: "OK"
[stage-7] Received "OK"
[stage-7] Received OK at 13:28:48.453
[stage-7] Fetching key "apple" at 13:28:48.454 (should not be expired)
[stage-7] Received OK at 17:57:54.074
[stage-7] Fetching key "apple" at 17:57:54.074 (should not be expired)
[stage-7] > GET apple
[stage-7] Sent bytes: "*2\r\n$3\r\nGET\r\n$5\r\napple\r\n"
[stage-7] Received bytes: "$9\r\nblueberry\r\n"
[stage-7] Received RESP bulk string: "blueberry"
[stage-7] Received "blueberry"
[stage-7] Sleeping for 101ms
[stage-7] Fetching key "apple" at 13:28:48.557 (should be expired)
[stage-7] Fetching key "apple" at 17:57:54.176 (should be expired)
[stage-7] > GET apple
[stage-7] Sent bytes: "*2\r\n$3\r\nGET\r\n$5\r\napple\r\n"
[stage-7] Received bytes: "$-1\r\n"
Expand Down
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
Expand Up @@ -15,7 +15,7 @@ Debug = true
[stage-13] 0070 | 70 6c 65 09 62 6c 75 65 62 65 72 72 79 ff 34 d0 | ple.blueberry.4.
[stage-13] 0080 | 8c 58 51 4a 5d 62 0a | .XQJ]b.
[stage-13] 
[stage-13] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles444689312 --dbfilename pear.rdb
[stage-13] $ ./spawn_redis_server.sh --dir /tmp/rdbfiles3993504912 --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 Down Expand Up @@ -50,7 +50,7 @@ Debug = true
[stage-12] 0070 | 6e 67 65 04 70 65 61 72 ff 33 20 d4 0d 23 b2 9b | nge.pear.3 ..#..
[stage-12] 0080 | af 0a | ..
[stage-12] 
[stage-12] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles3255364286 --dbfilename raspberry.rdb
[stage-12] $ ./spawn_redis_server.sh --dir /tmp/rdbfiles523278937 --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 @@ -93,12 +93,12 @@ Debug = true
[stage-11] 0050 | 00 09 62 6c 75 65 62 65 72 72 79 04 70 65 61 72 | ..blueberry.pear
[stage-11] 0060 | ff 5c f3 42 ee 46 08 a6 3f 0a | .\.B.F..?.
[stage-11] 
[stage-11] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2441884045 --dbfilename blueberry.rdb
[stage-11] $ ./spawn_redis_server.sh --dir /tmp/rdbfiles134944817 --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$5\r\napple\r\n$9\r\nblueberry\r\n"
[stage-11] client: Received RESP array: ["banana", "apple", "blueberry"]
[stage-11] Received ["banana", "apple", "blueberry"]
[stage-11] client: Received bytes: "*3\r\n$9\r\nblueberry\r\n$5\r\napple\r\n$6\r\nbanana\r\n"
[stage-11] client: Received RESP array: ["blueberry", "apple", "banana"]
[stage-11] Received ["blueberry", "apple", "banana"]
[stage-11] Test passed.
[stage-11] Terminating program
[stage-11] Program terminated successfully
Expand All @@ -114,7 +114,7 @@ Debug = true
[stage-10] 0030 | 72 61 70 65 09 70 69 6e 65 61 70 70 6c 65 ff 12 | rape.pineapple..
[stage-10] 0040 | 7d 54 51 cd 7a 5c 8d 0a | }TQ.z\..
[stage-10] 
[stage-10] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles3226033919 --dbfilename orange.rdb
[stage-10] $ ./spawn_redis_server.sh --dir /tmp/rdbfiles88667885 --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 @@ -135,7 +135,7 @@ Debug = true
[stage-9] 0030 | 61 6e 67 6f 09 70 69 6e 65 61 70 70 6c 65 ff 0c | ango.pineapple..
[stage-9] 0040 | 1b cb 91 b2 ed f6 19 0a | ........
[stage-9] 
[stage-9] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles1527538990 --dbfilename pear.rdb
[stage-9] $ ./spawn_redis_server.sh --dir /tmp/rdbfiles2978787751 --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 @@ -146,12 +146,12 @@ Debug = true
[stage-9] Program terminated successfully

[stage-8] Running tests for Stage #8: zg5
[stage-8] $ ./spawn_redis_server.sh --dir /private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2714192117 --dbfilename blueberry.rdb
[stage-8] $ ./spawn_redis_server.sh --dir /tmp/rdbfiles3829876670 --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/rdbfiles2714192117\r\n"
[stage-8] client: Received RESP array: ["dir", "/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2714192117"]
[stage-8] Received ["dir", "/private/var/folders/5l/z5y3dkwn68sgb6htzc5w7vnm0000gn/T/rdbfiles2714192117"]
[stage-8] client: Received bytes: "*2\r\n$3\r\ndir\r\n$23\r\n/tmp/rdbfiles3829876670\r\n"
[stage-8] client: Received RESP array: ["dir", "/tmp/rdbfiles3829876670"]
[stage-8] Received ["dir", "/tmp/rdbfiles3829876670"]
[stage-8] Test passed.
[stage-8] Terminating program
[stage-8] Program terminated successfully
Expand All @@ -163,15 +163,15 @@ Debug = true
[stage-7] Received bytes: "+OK\r\n"
[stage-7] Received RESP simple string: "OK"
[stage-7] Received "OK"
[stage-7] Received OK at 16:31:40.207
[stage-7] Fetching key "strawberry" at 16:31:40.207 (should not be expired)
[stage-7] Received OK at 17:57:56.547
[stage-7] Fetching key "strawberry" at 17:57:56.547 (should not be expired)
[stage-7] > 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 bulk string: "pear"
[stage-7] Received "pear"
[stage-7] Sleeping for 101ms
[stage-7] Fetching key "strawberry" at 16:31:40.311 (should be expired)
[stage-7] Fetching key "strawberry" at 17:57:56.650 (should be expired)
[stage-7] > 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
Loading