github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/pkg/blobscache/server_test.go (about) 1 package blobscache 2 3 import ( 4 "context" 5 "errors" 6 "fmt" 7 "log/slog" 8 "net/http/httptest" 9 "testing" 10 "time" 11 12 ia "github.com/castai/image-analyzer" 13 "github.com/castai/kvisor/pkg/logging" 14 "github.com/labstack/echo/v4" 15 "github.com/stretchr/testify/require" 16 ) 17 18 func TestBlobsCacheServer(t *testing.T) { 19 r := require.New(t) 20 ctx, cancel := context.WithCancel(context.Background()) 21 defer cancel() 22 23 log := logging.New(&logging.Config{Level: slog.LevelDebug}) 24 25 srv := NewServer(log) 26 e := echo.New() 27 srv.RegisterHandlers(e) 28 httpSrv := httptest.NewServer(e) 29 defer httpSrv.Close() 30 31 client := NewRemoteBlobsCacheClient(httpSrv.URL) 32 33 // Wait unti server is ready. 34 r.Eventually(func() bool { 35 _, err := client.GetBlob(ctx, "noop") 36 fmt.Println(err) 37 return errors.Is(err, ia.ErrCacheNotFound) 38 }, 3*time.Second, 10*time.Millisecond) 39 40 blob := []byte(`{"some":"json"}`) 41 err := client.PutBlob(ctx, "b1", blob) 42 r.NoError(err) 43 44 addedBlob, err := client.GetBlob(ctx, "b1") 45 r.NoError(err) 46 r.Equal(string(blob), string(addedBlob)) 47 }