2020-02-17 13:57:15 -08:00
package storage_test
import (
2020-05-27 14:27:35 -07:00
"path"
2020-02-17 13:57:15 -08:00
"testing"
. "github.com/smartystreets/goconvey/convey"
2022-10-20 19:39:20 +03:00
2024-02-01 06:34:07 +02:00
"zotregistry.dev/zot/errors"
"zotregistry.dev/zot/pkg/log"
"zotregistry.dev/zot/pkg/storage"
"zotregistry.dev/zot/pkg/storage/cache"
2020-02-17 13:57:15 -08:00
)
func TestCache ( t * testing . T ) {
Convey ( "Make a new cache" , t , func ( ) {
2022-03-07 16:55:12 +08:00
dir := t . TempDir ( )
2020-02-17 13:57:15 -08:00
log := log . NewLogger ( "debug" , "" )
So ( log , ShouldNotBeNil )
2023-11-24 10:38:36 +02:00
_ , err := storage . Create ( "boltdb" , "failTypeAssertion" , log )
So ( err , ShouldNotBeNil )
2020-02-17 13:57:15 -08:00
2022-11-03 00:53:08 +02:00
cacheDriver , _ := storage . Create ( "boltdb" , cache . BoltDBDriverParameters {
RootDir : "/deadBEEF" ,
Name : "cache_test" ,
UseRelPaths : true ,
} , log )
So ( cacheDriver , ShouldBeNil )
2020-02-17 13:57:15 -08:00
2022-11-03 00:53:08 +02:00
cacheDriver , _ = storage . Create ( "boltdb" , cache . BoltDBDriverParameters {
RootDir : dir ,
Name : "cache_test" ,
UseRelPaths : true ,
} , log )
So ( cacheDriver , ShouldNotBeNil )
2023-09-01 20:54:39 +03:00
So ( cacheDriver . UsesRelativePaths ( ) , ShouldBeTrue )
2022-11-03 00:53:08 +02:00
name := cacheDriver . Name ( )
So ( name , ShouldEqual , "boltdb" )
val , err := cacheDriver . GetBlob ( "key" )
2020-02-17 13:57:15 -08:00
So ( err , ShouldEqual , errors . ErrCacheMiss )
2021-12-13 19:23:31 +00:00
So ( val , ShouldBeEmpty )
2020-02-17 13:57:15 -08:00
2022-11-03 00:53:08 +02:00
exists := cacheDriver . HasBlob ( "key" , "value" )
2021-12-13 19:23:31 +00:00
So ( exists , ShouldBeFalse )
2020-02-17 13:57:15 -08:00
2022-11-03 00:53:08 +02:00
err = cacheDriver . PutBlob ( "key" , path . Join ( dir , "value" ) )
2020-02-17 13:57:15 -08:00
So ( err , ShouldBeNil )
2022-11-03 00:53:08 +02:00
err = cacheDriver . PutBlob ( "key" , "value" )
2021-12-07 20:26:26 +02:00
So ( err , ShouldNotBeNil )
2022-11-03 00:53:08 +02:00
exists = cacheDriver . HasBlob ( "key" , "value" )
2021-12-13 19:23:31 +00:00
So ( exists , ShouldBeTrue )
2020-02-17 13:57:15 -08:00
2022-11-03 00:53:08 +02:00
val , err = cacheDriver . GetBlob ( "key" )
2020-02-17 13:57:15 -08:00
So ( err , ShouldBeNil )
2021-12-13 19:23:31 +00:00
So ( val , ShouldNotBeEmpty )
2020-02-17 13:57:15 -08:00
2022-11-03 00:53:08 +02:00
err = cacheDriver . DeleteBlob ( "bogusKey" , "bogusValue" )
2020-02-17 13:57:15 -08:00
So ( err , ShouldEqual , errors . ErrCacheMiss )
2022-11-03 00:53:08 +02:00
err = cacheDriver . DeleteBlob ( "key" , "bogusValue" )
2020-02-17 13:57:15 -08:00
So ( err , ShouldBeNil )
2021-07-20 14:04:10 -07:00
// try to insert empty path
2022-11-03 00:53:08 +02:00
err = cacheDriver . PutBlob ( "key" , "" )
2021-07-20 14:04:10 -07:00
So ( err , ShouldNotBeNil )
So ( err , ShouldEqual , errors . ErrEmptyValue )
2020-02-17 13:57:15 -08:00
} )
}