Skip to content

Commit

Permalink
node/meta: add meta indexes compatibility test
Browse files Browse the repository at this point in the history
Refs #3139.

Signed-off-by: Pavel Karpy <[email protected]>
  • Loading branch information
carpawell committed Feb 26, 2025
1 parent 32d92c7 commit 3299a41
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions pkg/services/meta/notifications_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"maps"
"math/big"
"os"
"path"
"sync"
"testing"
"time"
Expand All @@ -20,13 +21,15 @@ import (
"github.com/nspcc-dev/neo-go/pkg/util"
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
"github.com/nspcc-dev/neofs-node/pkg/core/object"
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
utilcore "github.com/nspcc-dev/neofs-node/pkg/util"
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
objectsdk "github.com/nspcc-dev/neofs-sdk-go/object"
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
objecttest "github.com/nspcc-dev/neofs-sdk-go/object/test"
"github.com/stretchr/testify/require"
"go.etcd.io/bbolt"
"go.uber.org/zap/zaptest"
)

Expand Down Expand Up @@ -499,3 +502,46 @@ func TestObjectPut(t *testing.T) {
}, 3*time.Second, time.Millisecond*100, "object was not deleted")
})
}

func TestCompatibility(t *testing.T) {
o := objecttest.Object()
o.SetSplitID(nil) // no split info is expected for split V2 era

// database from engine's metabases

db, err := bbolt.Open(path.Join(t.TempDir(), "db.db"), 0600, bbolt.DefaultOptions)
require.NoError(t, err)
t.Cleanup(func() {
_ = db.Close()
})

metabaseMap := make(map[string][]byte)

err = db.Update(func(tx *bbolt.Tx) error {
err = meta.PutMetadataForObject(tx, o, true, true)
require.NoError(t, err)

cID := o.GetContainerID()
metaBucketKey := []byte{255}
metaBucketKey = append(metaBucketKey, cID[:]...)

b := tx.Bucket(metaBucketKey)
return b.ForEach(func(k, v []byte) error {
metabaseMap[string(k)] = v
return nil
})
})
require.NoError(t, err)

// batch for meta-data service

serviceMap := make(map[string][]byte)
err = fillObjectIndex(serviceMap, o)
require.NoError(t, err)

require.Equal(t, len(metabaseMap), len(serviceMap))
for k := range metabaseMap {
_, found := serviceMap[k]
require.Truef(t, found, "%s key not found: %v", k, []byte(k))
}
}

0 comments on commit 3299a41

Please sign in to comment.