github.com/cs3org/reva/v2@v2.27.7/pkg/store/memory/multimemstore_test.go (about)

     1  package memory
     2  
     3  import (
     4  	"context"
     5  	"strconv"
     6  	"testing"
     7  
     8  	"go-micro.dev/v4/store"
     9  )
    10  
    11  func TestWriteReadTables(t *testing.T) {
    12  	cache := NewMultiMemStore()
    13  
    14  	record1 := &store.Record{
    15  		Key:   "sameKey",
    16  		Value: []byte("from record1"),
    17  	}
    18  	record2 := &store.Record{
    19  		Key:   "sameKey",
    20  		Value: []byte("from record2"),
    21  	}
    22  
    23  	_ = cache.Write(record1)
    24  	_ = cache.Write(record2, store.WriteTo("DB02", "Table02"))
    25  
    26  	records1, _ := cache.Read("sameKey")
    27  	if len(records1) != 1 {
    28  		t.Fatalf("Wrong number of records, expected 1, got %d", len(records1))
    29  	}
    30  	if records1[0].Key != "sameKey" {
    31  		t.Errorf("Wrong key, expected \"sameKey\", got %s", records1[0].Key)
    32  	}
    33  	if string(records1[0].Value) != "from record1" {
    34  		t.Errorf("Wrong value, expected \"from record1\", got %s", string(records1[0].Value))
    35  	}
    36  
    37  	records2, _ := cache.Read("sameKey", store.ReadFrom("DB02", "Table02"))
    38  	if len(records2) != 1 {
    39  		t.Fatalf("Wrong number of records, expected 1, got %d", len(records2))
    40  	}
    41  	if records2[0].Key != "sameKey" {
    42  		t.Errorf("Wrong key, expected \"sameKey\", got %s", records2[0].Key)
    43  	}
    44  	if string(records2[0].Value) != "from record2" {
    45  		t.Errorf("Wrong value, expected \"from record2\", got %s", string(records2[0].Value))
    46  	}
    47  }
    48  
    49  func TestDeleteTables(t *testing.T) {
    50  	cache := NewMultiMemStore()
    51  
    52  	record1 := &store.Record{
    53  		Key:   "sameKey",
    54  		Value: []byte("from record1"),
    55  	}
    56  	record2 := &store.Record{
    57  		Key:   "sameKey",
    58  		Value: []byte("from record2"),
    59  	}
    60  
    61  	_ = cache.Write(record1)
    62  	_ = cache.Write(record2, store.WriteTo("DB02", "Table02"))
    63  
    64  	records1, _ := cache.Read("sameKey")
    65  	if len(records1) != 1 {
    66  		t.Fatalf("Wrong number of records, expected 1, got %d", len(records1))
    67  	}
    68  	if records1[0].Key != "sameKey" {
    69  		t.Errorf("Wrong key, expected \"sameKey\", got %s", records1[0].Key)
    70  	}
    71  	if string(records1[0].Value) != "from record1" {
    72  		t.Errorf("Wrong value, expected \"from record1\", got %s", string(records1[0].Value))
    73  	}
    74  
    75  	records2, _ := cache.Read("sameKey", store.ReadFrom("DB02", "Table02"))
    76  	if len(records2) != 1 {
    77  		t.Fatalf("Wrong number of records, expected 1, got %d", len(records2))
    78  	}
    79  	if records2[0].Key != "sameKey" {
    80  		t.Errorf("Wrong key, expected \"sameKey\", got %s", records2[0].Key)
    81  	}
    82  	if string(records2[0].Value) != "from record2" {
    83  		t.Errorf("Wrong value, expected \"from record2\", got %s", string(records2[0].Value))
    84  	}
    85  
    86  	_ = cache.Delete("sameKey")
    87  	if _, err := cache.Read("sameKey"); err != store.ErrNotFound {
    88  		t.Errorf("Key \"sameKey\" still exists after deletion")
    89  	}
    90  
    91  	records2, _ = cache.Read("sameKey", store.ReadFrom("DB02", "Table02"))
    92  	if len(records2) != 1 {
    93  		t.Fatalf("Wrong number of records, expected 1, got %d", len(records2))
    94  	}
    95  	if records2[0].Key != "sameKey" {
    96  		t.Errorf("Wrong key, expected \"sameKey\", got %s", records2[0].Key)
    97  	}
    98  	if string(records2[0].Value) != "from record2" {
    99  		t.Errorf("Wrong value, expected \"from record2\", got %s", string(records2[0].Value))
   100  	}
   101  }
   102  
   103  func TestListTables(t *testing.T) {
   104  	cache := NewMultiMemStore()
   105  
   106  	record1 := &store.Record{
   107  		Key:   "key001",
   108  		Value: []byte("from record1"),
   109  	}
   110  	record2 := &store.Record{
   111  		Key:   "key002",
   112  		Value: []byte("from record2"),
   113  	}
   114  
   115  	_ = cache.Write(record1)
   116  	_ = cache.Write(record2, store.WriteTo("DB02", "Table02"))
   117  
   118  	keys, _ := cache.List(store.ListFrom("DB02", "Table02"))
   119  	expectedKeys := []string{"key002"}
   120  	if len(keys) != 1 {
   121  		t.Fatalf("Wrong number of keys, expected 1, got %d", len(keys))
   122  	}
   123  	for index, key := range keys {
   124  		if expectedKeys[index] != key {
   125  			t.Errorf("Wrong key for index %d, expected %s, got %s", index, expectedKeys[index], key)
   126  		}
   127  	}
   128  }
   129  
   130  func TestWriteSizeLimit(t *testing.T) {
   131  	cache := NewMultiMemStore(
   132  		store.WithContext(
   133  			NewContext(
   134  				context.Background(),
   135  				map[string]interface{}{
   136  					"maxCap": 2,
   137  				},
   138  			),
   139  		),
   140  	)
   141  
   142  	record := &store.Record{}
   143  	for i := 0; i < 4; i++ {
   144  		v := strconv.Itoa(i)
   145  		record.Key = v
   146  		record.Value = []byte(v)
   147  		_ = cache.Write(record)
   148  		_ = cache.Write(record, store.WriteTo("DB02", "Table02"))
   149  	}
   150  
   151  	keys1, _ := cache.List()
   152  	expectedKeys1 := []string{"2", "3"}
   153  	if len(keys1) != 2 {
   154  		t.Fatalf("Wrong number of keys, expected 2, got %d", len(keys1))
   155  	}
   156  	for index, key := range keys1 {
   157  		if expectedKeys1[index] != key {
   158  			t.Errorf("Wrong key for index %d, expected %s, got %s", index, expectedKeys1[index], key)
   159  		}
   160  	}
   161  
   162  	keys2, _ := cache.List(store.ListFrom("DB02", "Table02"))
   163  	expectedKeys2 := []string{"2", "3"}
   164  	if len(keys2) != 2 {
   165  		t.Fatalf("Wrong number of keys, expected 2, got %d", len(keys2))
   166  	}
   167  	for index, key := range keys2 {
   168  		if expectedKeys2[index] != key {
   169  			t.Errorf("Wrong key for index %d, expected %s, got %s", index, expectedKeys2[index], key)
   170  		}
   171  	}
   172  }