github.com/Axway/agent-sdk@v1.1.101/pkg/agent/cache/watchresource_test.go (about)

     1  package cache
     2  
     3  import (
     4  	"testing"
     5  
     6  	v1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1"
     7  	"github.com/Axway/agent-sdk/pkg/config"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func createWatchResource(group, kind, id, name string) *v1.ResourceInstance {
    12  	return &v1.ResourceInstance{
    13  		ResourceMeta: v1.ResourceMeta{
    14  			GroupVersionKind: v1.GroupVersionKind{
    15  				GroupKind: v1.GroupKind{
    16  					Group: group,
    17  					Kind:  kind,
    18  				},
    19  			},
    20  			Metadata: v1.Metadata{
    21  				ID: id,
    22  			},
    23  			Name: name,
    24  		},
    25  	}
    26  }
    27  
    28  // add watch resource
    29  // get watch resource by key
    30  // get watch resource by id
    31  // get watch resource by name
    32  // delete watch resource
    33  func TestWatchResourceCache(t *testing.T) {
    34  	m := NewAgentCacheManager(&config.CentralConfiguration{}, false)
    35  	assert.NotNil(t, m)
    36  
    37  	cachedRes := m.GetWatchResourceByKey("group:kind:test-id-1")
    38  	assert.Nil(t, cachedRes)
    39  
    40  	instance1 := createWatchResource("group-1", "kind-1", "test-id-1", "test-name-1")
    41  	instance2 := createWatchResource("group-2", "kind-2", "test-id-2", "test-name-2")
    42  	m.AddWatchResource(instance1)
    43  	m.AddWatchResource(instance2)
    44  
    45  	keys := m.GetWatchResourceCacheKeys("group-1", "kind-1")
    46  	assert.Equal(t, 1, len(keys))
    47  
    48  	keys = m.GetWatchResourceCacheKeys("group-2", "kind-2")
    49  	assert.Equal(t, 1, len(keys))
    50  
    51  	cachedRes = m.GetWatchResourceByKey("group-1:kind-1:test-id-1")
    52  	assert.Equal(t, instance1, cachedRes)
    53  
    54  	cachedRes = m.GetWatchResourceByID("dummy-group", "dummy=kind", "test-id-1")
    55  	assert.Nil(t, cachedRes)
    56  
    57  	cachedRes = m.GetWatchResourceByID("group-1", "kind-1", "test-id-1")
    58  	assert.Equal(t, instance1, cachedRes)
    59  
    60  	cachedRes = m.GetWatchResourceByName("group-2", "kind-2", "test-name-2")
    61  	assert.Equal(t, instance2, cachedRes)
    62  
    63  	err := m.DeleteWatchResource("group-2", "kind-2", "test-id-2")
    64  	assert.Nil(t, err)
    65  
    66  	cachedRes = m.GetWatchResourceByID("group-2", "kind-2", "test-id-2")
    67  	assert.Nil(t, cachedRes)
    68  
    69  	cachedRes = m.GetWatchResourceByID("group-1", "kind-1", "test-id-1")
    70  	assert.NotNil(t, cachedRes)
    71  
    72  	err = m.DeleteWatchResource("group-1", "kind-1", "test-id-1")
    73  	assert.Nil(t, err)
    74  
    75  	keys = m.GetWatchResourceCacheKeys("group-1", "kind-1")
    76  	assert.Equal(t, 0, len(keys))
    77  
    78  	keys = m.GetWatchResourceCacheKeys("group-2", "kind-2")
    79  	assert.Equal(t, 0, len(keys))
    80  }