[VOL-5417] Add GetWithPrefix and GetWithPrefixKeysOnly functions for the kvclient Interface
Change-Id: I446f414d157d5794de4302450fc075073243b564
Signed-off-by: pnalmas <praneeth.nalmas@radisys.com>
diff --git a/pkg/ponresourcemanager/ponresourcemanager_test.go b/pkg/ponresourcemanager/ponresourcemanager_test.go
index ff80b11..626864e 100644
--- a/pkg/ponresourcemanager/ponresourcemanager_test.go
+++ b/pkg/ponresourcemanager/ponresourcemanager_test.go
@@ -20,11 +20,12 @@
"context"
"encoding/json"
"errors"
- "github.com/boljen/go-bitmap"
"strings"
"testing"
"time"
+ "github.com/boljen/go-bitmap"
+
"github.com/opencord/voltha-lib-go/v7/pkg/db"
"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
"github.com/opencord/voltha-lib-go/v7/pkg/log"
@@ -44,6 +45,7 @@
func newMockKvClient(ctx context.Context) *MockResKVClient {
var mockResKVClient MockResKVClient
mockResKVClient.resourceMap = make(map[string]interface{})
+ logger.Debug(ctx, "Creating new MockKVClient")
return &mockResKVClient
}
@@ -74,6 +76,42 @@
return nil, errors.New("key didn't find")
}
+// GetWithPrefix mock function implementation for KVClient
+func (kvclient *MockResKVClient) GetWithPrefix(ctx context.Context, prefixKey string) (map[string]*kvstore.KVPair, error) {
+ logger.Debugw(ctx, "GetWithPrefix of MockKVClient called", log.Fields{"prefixKey": prefixKey})
+ if prefixKey != "" {
+ if strings.Contains(prefixKey, GEM_POOL_PATH) {
+ logger.Debug(ctx, "Getting keys with prefix:", GEM_POOL_PATH)
+ maps := make(map[string]*kvstore.KVPair)
+ for key, resource := range kvclient.resourceMap {
+ if strings.HasPrefix(key, prefixKey) {
+ maps[key] = kvstore.NewKVPair(key, resource, "mock", 3000, 1)
+ }
+ }
+ return maps, nil
+ }
+ }
+ return nil, errors.New("prefixKey didn't find")
+}
+
+// GetWithPrefixKeysOnly returns only the keys with the specified prefix.
+func (kvclient *MockResKVClient) GetWithPrefixKeysOnly(ctx context.Context, prefixKey string) ([]string, error) {
+ logger.Debugw(ctx, "GetWithPrefixKeysOnly of MockKVClient called", log.Fields{"prefixKey": prefixKey})
+ if prefixKey != "" {
+ if strings.Contains(prefixKey, GEM_POOL_PATH) {
+ logger.Debug(ctx, "Getting keys with prefix:", GEM_POOL_PATH)
+ var keys []string
+ for key := range kvclient.resourceMap {
+ if strings.HasPrefix(key, prefixKey) {
+ keys = append(keys, key)
+ }
+ }
+ return keys, nil
+ }
+ }
+ return nil, errors.New("prefixKey not found")
+}
+
// Put mock function implementation for KVClient
func (kvclient *MockResKVClient) Put(ctx context.Context, key string, value interface{}) error {
if key != "" {