Skip to content

Commit 6652296

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

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

Diff for: 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

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

0 commit comments

Comments
 (0)