...

Source file src/edge-infra.dev/pkg/sds/emergencyaccess/requestservice/cache_test.go

Documentation: edge-infra.dev/pkg/sds/emergencyaccess/requestservice

     1  package requestservice
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/hashicorp/go-version"
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"edge-infra.dev/pkg/sds/emergencyaccess/types"
    11  )
    12  
    13  var (
    14  	testCacheKey = types.Target{
    15  		Projectid:  "projectID",
    16  		Bannerid:   "bannerID",
    17  		Storeid:    "storeID",
    18  		Terminalid: "terminalID",
    19  	}
    20  	testCacheVal = &version.Version{}
    21  )
    22  
    23  func TestCacheGet(t *testing.T) {
    24  	t.Parallel()
    25  
    26  	c := &versionCache{
    27  		cache: make(map[types.Target]*version.Version),
    28  	}
    29  
    30  	c.cache[testCacheKey] = testCacheVal
    31  
    32  	actual, ok := c.Get(testCacheKey)
    33  	assert.True(t, ok)
    34  	assert.Equal(t, actual, testCacheVal)
    35  
    36  	invalid, ok := c.Get(types.Target{})
    37  	assert.False(t, ok)
    38  	assert.Empty(t, invalid)
    39  }
    40  
    41  func TestCacheDelete(t *testing.T) {
    42  	t.Parallel()
    43  
    44  	c := &versionCache{
    45  		cache: make(map[types.Target]*version.Version),
    46  	}
    47  
    48  	c.cache[testCacheKey] = testCacheVal
    49  	c.Delete(testCacheKey)
    50  
    51  	assert.Empty(t, c.cache[testCacheKey])
    52  }
    53  
    54  func TestCacheInsert(t *testing.T) {
    55  	t.Parallel()
    56  
    57  	expirationTime := 20 * time.Millisecond
    58  	c := &versionCache{
    59  		cache:      make(map[types.Target]*version.Version),
    60  		expiration: expirationTime,
    61  	}
    62  
    63  	c.Insert(testCacheKey, testCacheVal)
    64  	ver, ok := c.Get(testCacheKey)
    65  	assert.True(t, ok)
    66  	assert.Equal(t, ver, testCacheVal)
    67  
    68  	assert.Eventually(t, func() bool {
    69  		_, ok := c.Get(testCacheKey)
    70  		return !ok
    71  	}, expirationTime+(5*time.Millisecond), 1*time.Millisecond)
    72  }
    73  

View as plain text