(t *testing.T)
| 1322 | } |
| 1323 | |
| 1324 | func TestFileCacheForZstd(t *testing.T) { |
| 1325 | f, err := os.CreateTemp(os.TempDir(), "test") |
| 1326 | if err != nil { |
| 1327 | t.Fatal(err) |
| 1328 | } |
| 1329 | data := bytes.Repeat([]byte("1"), 1000) |
| 1330 | changedData := bytes.Repeat([]byte("2"), 1000) |
| 1331 | _, err = f.Write(data) |
| 1332 | if err != nil { |
| 1333 | t.Fatal(err) |
| 1334 | } |
| 1335 | err = f.Sync() |
| 1336 | if err != nil { |
| 1337 | t.Fatal(err) |
| 1338 | } |
| 1339 | fs := FS{Root: os.TempDir(), Compress: true, CompressZstd: true, CacheDuration: time.Second * 60} |
| 1340 | h := fs.NewRequestHandler() |
| 1341 | var ctx RequestCtx |
| 1342 | var req Request |
| 1343 | req.Header.Set("Accept-Encoding", "zstd") |
| 1344 | req.SetRequestURI("http://foobar.com/" + strings.TrimPrefix(f.Name(), os.TempDir())) |
| 1345 | ctx.Init(&req, nil, nil) |
| 1346 | h(&ctx) |
| 1347 | if !bytes.Equal(ctx.Response.Header.ContentEncoding(), []byte("zstd")) { |
| 1348 | t.Fatalf("Unexpected 'Content-Encoding' %q. Expecting %q", ctx.Response.Header.ContentEncoding(), "zstd") |
| 1349 | } |
| 1350 | ctx.Response.Reset() |
| 1351 | _, err = f.Seek(0, io.SeekStart) |
| 1352 | if err != nil { |
| 1353 | t.Fatal(err) |
| 1354 | } |
| 1355 | _, err = f.Write(changedData) |
| 1356 | if err != nil { |
| 1357 | t.Fatal(err) |
| 1358 | } |
| 1359 | f.Close() |
| 1360 | h(&ctx) |
| 1361 | if !bytes.Equal(ctx.Response.Header.ContentEncoding(), []byte("zstd")) { |
| 1362 | t.Fatalf("Unexpected 'Content-Encoding' %q. Expecting %q", ctx.Response.Header.ContentEncoding(), "zstd") |
| 1363 | } |
| 1364 | d, err := acquireZstdReader(strings.NewReader(string(ctx.Response.Body()))) |
| 1365 | if err != nil { |
| 1366 | t.Fatalf("invalid zstd reader") |
| 1367 | } |
| 1368 | plainText, err := io.ReadAll(d) |
| 1369 | d.Close() |
| 1370 | if err != nil { |
| 1371 | t.Fatal(err) |
| 1372 | } |
| 1373 | if !bytes.Equal(plainText, data) { |
| 1374 | t.Fatalf("Unexpected response body %q. Expecting %q . Zstd cache doesn't work", plainText, data) |
| 1375 | } |
| 1376 | ctx.Request.Header.Del("Accept-Encoding") |
| 1377 | ctx.Response.Reset() |
| 1378 | h(&ctx) |
| 1379 | if !bytes.Equal(ctx.Response.Header.ContentEncoding(), []byte("")) { |
| 1380 | t.Fatalf("Unexpected 'Content-Encoding' %q. Expecting %q", ctx.Response.Header.ContentEncoding(), "") |
| 1381 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…