MCPcopy
hub / github.com/valyala/fasthttp / TestFileCacheForZstd

Function TestFileCacheForZstd

fs_test.go:1324–1385  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1322}
1323
1324func 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 }

Callers

nothing calls this directly

Calls 12

NewRequestHandlerMethod · 0.95
SetRequestURIMethod · 0.95
InitMethod · 0.95
acquireZstdReaderFunction · 0.85
NewReaderMethod · 0.80
WriteMethod · 0.65
ResetMethod · 0.65
CloseMethod · 0.65
BodyMethod · 0.65
SetMethod · 0.45
ContentEncodingMethod · 0.45
DelMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…