Skip to content

Commit 5088635

Browse files
committed
node/meta: add meta indexes compatibility test
Refs #3139. Signed-off-by: Pavel Karpy <[email protected]>
1 parent feb978e commit 5088635

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

pkg/services/meta/notifications_test.go

+46
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"maps"
88
"math/big"
99
"os"
10+
"path"
1011
"sync"
1112
"testing"
1213
"time"
@@ -20,13 +21,15 @@ import (
2021
"github.com/nspcc-dev/neo-go/pkg/util"
2122
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
2223
"github.com/nspcc-dev/neofs-node/pkg/core/object"
24+
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
2325
utilcore "github.com/nspcc-dev/neofs-node/pkg/util"
2426
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
2527
objectsdk "github.com/nspcc-dev/neofs-sdk-go/object"
2628
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
2729
oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
2830
objecttest "github.com/nspcc-dev/neofs-sdk-go/object/test"
2931
"github.com/stretchr/testify/require"
32+
"go.etcd.io/bbolt"
3033
"go.uber.org/zap/zaptest"
3134
)
3235

@@ -499,3 +502,46 @@ func TestObjectPut(t *testing.T) {
499502
}, 3*time.Second, time.Millisecond*100, "object was not deleted")
500503
})
501504
}
505+
506+
func TestCompatibility(t *testing.T) {
507+
o := objecttest.Object()
508+
o.SetSplitID(nil) // no split info is expected for split V2 era
509+
510+
// database from engine's metabases
511+
512+
db, err := bbolt.Open(path.Join(t.TempDir(), "db.db"), 0600, bbolt.DefaultOptions)
513+
require.NoError(t, err)
514+
t.Cleanup(func() {
515+
_ = db.Close()
516+
})
517+
518+
metabaseMap := make(map[string][]byte)
519+
520+
err = db.Update(func(tx *bbolt.Tx) error {
521+
err = meta.PutMetadataForObject(tx, o, true, true)
522+
require.NoError(t, err)
523+
524+
cID := o.GetContainerID()
525+
metaBucketKey := []byte{255}
526+
metaBucketKey = append(metaBucketKey, cID[:]...)
527+
528+
b := tx.Bucket(metaBucketKey)
529+
return b.ForEach(func(k, v []byte) error {
530+
metabaseMap[string(k)] = v
531+
return nil
532+
})
533+
})
534+
require.NoError(t, err)
535+
536+
// batch for meta-data service
537+
538+
serviceMap := make(map[string][]byte)
539+
err = fillObjectIndex(serviceMap, o)
540+
require.NoError(t, err)
541+
542+
require.Equal(t, len(metabaseMap), len(serviceMap))
543+
for k := range metabaseMap {
544+
_, found := serviceMap[k]
545+
require.Truef(t, found, "%s key not found: %v", k, []byte(k))
546+
}
547+
}

0 commit comments

Comments
 (0)