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  }