github.com/weaviate/weaviate@v1.24.6/adapters/repos/db/lsmkv/store_integration_test.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 //go:build integrationTest 13 // +build integrationTest 14 15 package lsmkv 16 17 import ( 18 "context" 19 "testing" 20 21 "github.com/stretchr/testify/assert" 22 "github.com/stretchr/testify/require" 23 "github.com/weaviate/weaviate/entities/cyclemanager" 24 ) 25 26 func TestStoreLifecycle(t *testing.T) { 27 ctx := testCtx() 28 tests := bucketIntegrationTests{ 29 { 30 name: "testStoreLifecycle", 31 f: testStoreLifecycle, 32 opts: []BucketOption{ 33 WithStrategy(StrategyReplace), 34 }, 35 }, 36 } 37 tests.run(ctx, t) 38 } 39 40 func testStoreLifecycle(ctx context.Context, t *testing.T, opts []BucketOption) { 41 dirName := t.TempDir() 42 logger := nullLogger() 43 44 t.Run("cycle 1", func(t *testing.T) { 45 store, err := New(dirName, dirName, logger, nil, 46 cyclemanager.NewCallbackGroupNoop(), cyclemanager.NewCallbackGroupNoop()) 47 require.Nil(t, err) 48 49 err = store.CreateOrLoadBucket(testCtx(), "bucket1", opts...) 50 require.Nil(t, err) 51 52 b1 := store.Bucket("bucket1") 53 require.NotNil(t, b1) 54 55 err = b1.Put([]byte("name"), []byte("Jane Doe")) 56 require.Nil(t, err) 57 58 err = store.CreateOrLoadBucket(testCtx(), "bucket2", opts...) 59 require.Nil(t, err) 60 61 b2 := store.Bucket("bucket2") 62 require.NotNil(t, b2) 63 64 err = b2.Put([]byte("foo"), []byte("bar")) 65 require.Nil(t, err) 66 67 err = store.Shutdown(context.Background()) 68 require.Nil(t, err) 69 }) 70 71 t.Run("cycle 2", func(t *testing.T) { 72 store, err := New(dirName, dirName, logger, nil, 73 cyclemanager.NewCallbackGroupNoop(), cyclemanager.NewCallbackGroupNoop()) 74 require.Nil(t, err) 75 76 err = store.CreateOrLoadBucket(testCtx(), "bucket1", opts...) 77 require.Nil(t, err) 78 79 b1 := store.Bucket("bucket1") 80 require.NotNil(t, b1) 81 82 err = store.CreateOrLoadBucket(testCtx(), "bucket2", opts...) 83 require.Nil(t, err) 84 85 b2 := store.Bucket("bucket2") 86 require.NotNil(t, b2) 87 88 res, err := b1.Get([]byte("name")) 89 require.Nil(t, err) 90 assert.Equal(t, []byte("Jane Doe"), res) 91 92 res, err = b2.Get([]byte("foo")) 93 require.Nil(t, err) 94 assert.Equal(t, []byte("bar"), res) 95 96 err = store.Shutdown(context.Background()) 97 require.Nil(t, err) 98 }) 99 }