zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/pkg/storage/cache_test.go (about)

     1  package storage_test
     2  
     3  import (
     4  	"path"
     5  	"testing"
     6  
     7  	. "github.com/smartystreets/goconvey/convey"
     8  
     9  	"zotregistry.io/zot/errors"
    10  	"zotregistry.io/zot/pkg/log"
    11  	"zotregistry.io/zot/pkg/storage"
    12  	"zotregistry.io/zot/pkg/storage/cache"
    13  )
    14  
    15  func TestCache(t *testing.T) {
    16  	Convey("Make a new cache", t, func() {
    17  		dir := t.TempDir()
    18  
    19  		log := log.NewLogger("debug", "")
    20  		So(log, ShouldNotBeNil)
    21  
    22  		_, err := storage.Create("boltdb", "failTypeAssertion", log)
    23  		So(err, ShouldNotBeNil)
    24  
    25  		cacheDriver, _ := storage.Create("boltdb", cache.BoltDBDriverParameters{
    26  			RootDir:     "/deadBEEF",
    27  			Name:        "cache_test",
    28  			UseRelPaths: true,
    29  		}, log)
    30  		So(cacheDriver, ShouldBeNil)
    31  
    32  		cacheDriver, _ = storage.Create("boltdb", cache.BoltDBDriverParameters{
    33  			RootDir:     dir,
    34  			Name:        "cache_test",
    35  			UseRelPaths: true,
    36  		}, log)
    37  		So(cacheDriver, ShouldNotBeNil)
    38  
    39  		So(cacheDriver.UsesRelativePaths(), ShouldBeTrue)
    40  
    41  		name := cacheDriver.Name()
    42  		So(name, ShouldEqual, "boltdb")
    43  
    44  		val, err := cacheDriver.GetBlob("key")
    45  		So(err, ShouldEqual, errors.ErrCacheMiss)
    46  		So(val, ShouldBeEmpty)
    47  
    48  		exists := cacheDriver.HasBlob("key", "value")
    49  		So(exists, ShouldBeFalse)
    50  
    51  		err = cacheDriver.PutBlob("key", path.Join(dir, "value"))
    52  		So(err, ShouldBeNil)
    53  
    54  		err = cacheDriver.PutBlob("key", "value")
    55  		So(err, ShouldNotBeNil)
    56  
    57  		exists = cacheDriver.HasBlob("key", "value")
    58  		So(exists, ShouldBeTrue)
    59  
    60  		val, err = cacheDriver.GetBlob("key")
    61  		So(err, ShouldBeNil)
    62  		So(val, ShouldNotBeEmpty)
    63  
    64  		err = cacheDriver.DeleteBlob("bogusKey", "bogusValue")
    65  		So(err, ShouldEqual, errors.ErrCacheMiss)
    66  
    67  		err = cacheDriver.DeleteBlob("key", "bogusValue")
    68  		So(err, ShouldBeNil)
    69  
    70  		// try to insert empty path
    71  		err = cacheDriver.PutBlob("key", "")
    72  		So(err, ShouldNotBeNil)
    73  		So(err, ShouldEqual, errors.ErrEmptyValue)
    74  	})
    75  }