7
7
"maps"
8
8
"math/big"
9
9
"os"
10
+ "path"
10
11
"sync"
11
12
"testing"
12
13
"time"
@@ -20,13 +21,15 @@ import (
20
21
"github.com/nspcc-dev/neo-go/pkg/util"
21
22
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
22
23
"github.com/nspcc-dev/neofs-node/pkg/core/object"
24
+ meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
23
25
utilcore "github.com/nspcc-dev/neofs-node/pkg/util"
24
26
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
25
27
objectsdk "github.com/nspcc-dev/neofs-sdk-go/object"
26
28
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
27
29
oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
28
30
objecttest "github.com/nspcc-dev/neofs-sdk-go/object/test"
29
31
"github.com/stretchr/testify/require"
32
+ "go.etcd.io/bbolt"
30
33
"go.uber.org/zap/zaptest"
31
34
)
32
35
@@ -499,3 +502,46 @@ func TestObjectPut(t *testing.T) {
499
502
}, 3 * time .Second , time .Millisecond * 100 , "object was not deleted" )
500
503
})
501
504
}
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