File tree Expand file tree Collapse file tree 3 files changed +85
-0
lines changed
Expand file tree Collapse file tree 3 files changed +85
-0
lines changed Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ set -e
4+
5+ cd " $( dirname " $0 " ) /.."
6+
7+ # Build image
8+ docker_build () {
9+ docker build -t redis-tester -f docker_ci/ubuntu.Dockerfile .
10+ }
11+
12+ case " $1 " in
13+ test)
14+ echo " 🧪 Running tests using Docker container"
15+ docker_build
16+ docker run --rm -it -v " $( pwd) " :/app -w /app redis-tester make test
17+ ;;
18+ record_fixtures)
19+ echo " 📝 Recording fixtures using Docker container"
20+ docker_build
21+ docker run --rm -it -v " $( pwd) " :/app -w /app redis-tester make record_fixtures
22+ ;;
23+ * )
24+ echo " Usage:"
25+ echo " $0 [test|record_fixtures]"
26+ exit 1
27+ ;;
28+ esac
Original file line number Diff line number Diff line change 1+ # Use official Go 1.24 image as base
2+ FROM golang:1.24-bookworm
3+
4+ # Set environment variables
5+ ENV CGO_ENABLED=0
6+ ENV GOOS=linux
7+ ENV GOARCH=amd64
8+
9+ # Install system dependencies
10+ RUN apt-get update && apt-get install -y \
11+ curl \
12+ wget \
13+ git \
14+ build-essential \
15+ ca-certificates \
16+ gnupg \
17+ lsb-release \
18+ python3 \
19+ python3-pip \
20+ python3-venv \
21+ netcat-openbsd \
22+ && rm -rf /var/lib/apt/lists/*
23+
24+
25+ # Install Redis
26+ RUN curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg \
27+ && chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg \
28+ && echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list \
29+ && apt-get update \
30+ && apt-get install -y redis \
31+ && rm -rf /var/lib/apt/lists/*
32+
33+ # Create workspace directory
34+ WORKDIR /workspace
35+
36+ # Copy go mod files first for better caching
37+ COPY go.mod go.sum ./
38+
39+ # Download Go dependencies
40+ RUN go mod download
41+
42+ # Copy the rest of the source code
43+ COPY . .
44+
45+ # Build the project
46+ RUN go build -o dist/main.out ./cmd/tester
47+
48+ # Expose port for Redis (if needed)
49+ EXPOSE 6379
50+
51+ # Keep the container alive
52+ CMD ["/bin/bash" ]
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ package internal
33import (
44 "fmt"
55 "net"
6+ "time"
67
78 "github.com/codecrafters-io/redis-tester/internal/instrumented_resp_connection"
89 "github.com/codecrafters-io/redis-tester/internal/redis_executable"
@@ -81,6 +82,10 @@ func testReplCmdProcessing(stageHarness *test_case_harness.TestCaseHarness) erro
8182
8283 logger .UpdateLastSecondaryPrefix ("test" )
8384 replicaClient .UpdateBaseLogger (logger )
85+ // Add a small delay to wait for commands to be propagated
86+ // This was done in https://github.com/codecrafters-io/redis-tester/pull/212 to adjust fixtures
87+ // when fixtures are recorded from docker container
88+ time .Sleep (time .Millisecond )
8489
8590 for i := 1 ; i <= len (kvMap ); i ++ {
8691 key , value := kvMap [i ][0 ], kvMap [i ][1 ]
You can’t perform that action at this time.
0 commit comments