Skip to content

Commit 2d00da7

Browse files
authored
Merge pull request #6 from cyberbeast/postgres/add-tests
add cache invalidation test
2 parents a87af18 + 54fb5d6 commit 2d00da7

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

postgres/transport_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,56 @@ func TestTransport(t *testing.T) {
7676
speedupIsAboveMinRatio(t, cold, cached, 0.75)
7777
}
7878

79+
func TestTransportInvalidateAllResponses(t *testing.T) {
80+
t.Setenv("TESTCONTAINERS_RYUK_DISABLED", "true")
81+
container, fn := startContainer(t, "user", "password")
82+
defer fn()
83+
84+
connstr, err := container.ConnectionString(t.Context(), "sslmode=disable")
85+
if err != nil {
86+
t.Fatalf("generating postgres connection string: %v", err)
87+
}
88+
89+
delay := 3 * time.Second
90+
srv := httptest.NewServer(delayedResponse(delay))
91+
defer srv.Close()
92+
93+
db, err := pgx.Connect(t.Context(), connstr)
94+
if err != nil {
95+
t.Fatalf("connecting to postgres database: %v", err)
96+
}
97+
98+
tr, err := httpcache.NewTransport(t.Context(), Connection{db}, nil)
99+
if err != nil {
100+
t.Fatalf("couldn't initialize transport for test: %v", err)
101+
}
102+
103+
client := &http.Client{Transport: tr}
104+
105+
_, err = measureDuration(get(client, srv.URL))
106+
if err != nil {
107+
t.Fatal(err)
108+
}
109+
110+
_, err = measureDuration(get(client, srv.URL))
111+
if err != nil {
112+
t.Fatal(err)
113+
}
114+
115+
if err := tr.InvalidateAllResponses(t.Context()); err != nil {
116+
t.Fatalf("couldn't invalidate all responses in the cache: %v", err)
117+
}
118+
119+
cold, err := measureDuration(get(client, srv.URL))
120+
if err != nil {
121+
t.Fatal(err)
122+
}
123+
124+
if cold <= (delay) {
125+
t.Fatalf("expected cold latency to be lower than or equal to %d, got %d\n", delay, cold)
126+
}
127+
}
128+
79129
func speedupIsAboveMinRatio(t *testing.T, cold, cached time.Duration, minRatio float64) {
80130
t.Helper()
81131

0 commit comments

Comments
 (0)