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
@@ -494,3 +497,46 @@ func TestObjectPut(t *testing.T) {
494
497
}, 3 * time .Second , time .Millisecond * 100 , "object was not deleted" )
495
498
})
496
499
}
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