@@ -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+
79129func speedupIsAboveMinRatio (t * testing.T , cold , cached time.Duration , minRatio float64 ) {
80130 t .Helper ()
81131
0 commit comments