Skip to content

Commit

Permalink
satellite/metabase/metabasetest/create: return segments
Browse files Browse the repository at this point in the history
Return segments when creating a test object so that it can be checked
that the correct segments are remaining after a delete action.

Change-Id: Ifc245948935ba278806e887672c03abc5f2c2654
  • Loading branch information
Erikvv committed Feb 28, 2022
1 parent 8caa4c4 commit 7a01a2a
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 34 deletions.
7 changes: 5 additions & 2 deletions satellite/metabase/commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,12 @@ func (db *DB) BeginObjectExactVersion(ctx context.Context, opts BeginObjectExact
type BeginSegment struct {
ObjectStream

Position SegmentPosition
Position SegmentPosition

// TODO: unused field, can remove
RootPieceID storj.PieceID
Pieces Pieces

Pieces Pieces
}

// BeginSegment verifies, whether a new segment upload can be started.
Expand Down
10 changes: 5 additions & 5 deletions satellite/metabase/copy_object_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func TestBeginCopyObject(t *testing.T) {

expectedMetadataNonce := testrand.Nonce()
expectedMetadataKey := testrand.Bytes(265)
expectedObject := metabasetest.CreateTestObject{
expectedObject, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -254,7 +254,7 @@ func TestFinishCopyObject(t *testing.T) {
numberOfSegments := 10
newObjectKey := testrand.Bytes(32)

newObj := metabasetest.CreateTestObject{
newObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -302,7 +302,7 @@ func TestFinishCopyObject(t *testing.T) {
numberOfSegments := 10
newObjectKey := testrand.Bytes(32)

newObj := metabasetest.CreateTestObject{
newObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -354,7 +354,7 @@ func TestFinishCopyObject(t *testing.T) {
copyStream.ProjectID = objStream.ProjectID
copyStream.BucketName = objStream.BucketName

originalObj := metabasetest.CreateTestObject{
originalObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: objStream,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -401,7 +401,7 @@ func TestFinishCopyObject(t *testing.T) {
numberOfSegments := 10
copyStream := metabasetest.RandObjectStream()

originalObj := metabasetest.CreateTestObject{
originalObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down
8 changes: 4 additions & 4 deletions satellite/metabase/delete_objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,15 @@ func TestDeleteExpiredObjects(t *testing.T) {
t.Run("committed objects", func(t *testing.T) {
defer metabasetest.DeleteAll{}.Check(ctx, t, db)

object1 := metabasetest.CreateTestObject{}.Run(ctx, t, db, obj1, 1)
object1, _ := metabasetest.CreateTestObject{}.Run(ctx, t, db, obj1, 1)
metabasetest.CreateTestObject{
BeginObjectExactVersion: &metabase.BeginObjectExactVersion{
ObjectStream: obj2,
ExpiresAt: &pastTime,
Encryption: metabasetest.DefaultEncryption,
},
}.Run(ctx, t, db, obj2, 1)
object3 := metabasetest.CreateTestObject{
object3, _ := metabasetest.CreateTestObject{
BeginObjectExactVersion: &metabase.BeginObjectExactVersion{
ObjectStream: obj3,
ExpiresAt: &futureTime,
Expand Down Expand Up @@ -398,7 +398,7 @@ func TestDeleteZombieObjects(t *testing.T) {
t.Run("committed objects", func(t *testing.T) {
defer metabasetest.DeleteAll{}.Check(ctx, t, db)

object1 := metabasetest.CreateTestObject{}.Run(ctx, t, db, obj1, 1)
object1, _ := metabasetest.CreateTestObject{}.Run(ctx, t, db, obj1, 1)

object2 := object1
object2.ObjectStream = obj2
Expand All @@ -410,7 +410,7 @@ func TestDeleteZombieObjects(t *testing.T) {
},
}.Run(ctx, t, db, object2.ObjectStream, 1)

object3 := metabasetest.CreateTestObject{
object3, _ := metabasetest.CreateTestObject{
BeginObjectExactVersion: &metabase.BeginObjectExactVersion{
ObjectStream: obj3,
ZombieDeletionDeadline: &futureTime,
Expand Down
4 changes: 2 additions & 2 deletions satellite/metabase/delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ func TestDeleteObjectExactVersion(t *testing.T) {
encryptedMetadataNonce := testrand.Nonce()
encryptedMetadataKey := testrand.Bytes(265)

object := metabasetest.CreateTestObject{
object, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadataNonce: encryptedMetadataNonce[:],
Expand Down Expand Up @@ -536,7 +536,7 @@ func TestDeleteObjectAnyStatusAllVersions(t *testing.T) {
encryptedMetadataNonce := testrand.Nonce()
encryptedMetadataKey := testrand.Bytes(265)

object := metabasetest.CreateTestObject{
object, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadataNonce: encryptedMetadataNonce[:],
Expand Down
71 changes: 54 additions & 17 deletions satellite/metabase/metabasetest/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ type CreateTestObject struct {
}

// Run runs the test.
func (co CreateTestObject) Run(ctx *testcontext.Context, t testing.TB, db *metabase.DB, obj metabase.ObjectStream, numberOfSegments byte) metabase.Object {
func (co CreateTestObject) Run(ctx *testcontext.Context, t testing.TB, db *metabase.DB, obj metabase.ObjectStream, numberOfSegments byte) (metabase.Object, []metabase.Segment) {
boeOpts := metabase.BeginObjectExactVersion{
ObjectStream: obj,
Encryption: DefaultEncryption,
Expand All @@ -213,6 +213,8 @@ func (co CreateTestObject) Run(ctx *testcontext.Context, t testing.TB, db *metab
Version: obj.Version,
}.Check(ctx, t, db)

createdSegments := []metabase.Segment{}

for i := byte(0); i < numberOfSegments; i++ {
BeginSegment{
Opts: metabase.BeginSegment{
Expand All @@ -226,24 +228,57 @@ func (co CreateTestObject) Run(ctx *testcontext.Context, t testing.TB, db *metab
},
}.Check(ctx, t, db)

commitSegmentOpts := metabase.CommitSegment{
ObjectStream: obj,
ExpiresAt: boeOpts.ExpiresAt,
Position: metabase.SegmentPosition{Part: 0, Index: uint32(i)},
RootPieceID: storj.PieceID{1},
Pieces: metabase.Pieces{{Number: 0, StorageNode: storj.NodeID{2}}},

EncryptedKey: []byte{3},
EncryptedKeyNonce: []byte{4},
EncryptedETag: []byte{5},

EncryptedSize: 1060,
PlainSize: 512,
PlainOffset: int64(i) * 512,
Redundancy: DefaultRedundancy,
}

CommitSegment{
Opts: metabase.CommitSegment{
ObjectStream: obj,
ExpiresAt: boeOpts.ExpiresAt,
Position: metabase.SegmentPosition{Part: 0, Index: uint32(i)},
RootPieceID: storj.PieceID{1},
Pieces: metabase.Pieces{{Number: 0, StorageNode: storj.NodeID{2}}},
Opts: commitSegmentOpts,
}.Check(ctx, t, db)

EncryptedKey: []byte{3},
EncryptedKeyNonce: []byte{4},
EncryptedETag: []byte{5},
segment, err := db.GetSegmentByPosition(ctx, metabase.GetSegmentByPosition{
StreamID: commitSegmentOpts.StreamID,
Position: commitSegmentOpts.Position,
})
require.NoError(t, err)

EncryptedSize: 1060,
PlainSize: 512,
PlainOffset: int64(i) * 512,
Redundancy: DefaultRedundancy,
},
}.Check(ctx, t, db)
createdSegments = append(createdSegments, metabase.Segment{
StreamID: obj.StreamID,
Position: commitSegmentOpts.Position,

CreatedAt: segment.CreatedAt,
RepairedAt: nil,
ExpiresAt: nil,

RootPieceID: commitSegmentOpts.RootPieceID,
EncryptedKeyNonce: commitSegmentOpts.EncryptedKeyNonce,
EncryptedKey: commitSegmentOpts.EncryptedKey,

EncryptedSize: commitSegmentOpts.EncryptedSize,
PlainSize: commitSegmentOpts.PlainSize,
PlainOffset: commitSegmentOpts.PlainOffset,
EncryptedETag: commitSegmentOpts.EncryptedETag,

Redundancy: commitSegmentOpts.Redundancy,

InlineData: nil,
Pieces: commitSegmentOpts.Pieces,

Placement: segment.Placement,
})
}

coOpts := metabase.CommitObject{
Expand All @@ -253,9 +288,11 @@ func (co CreateTestObject) Run(ctx *testcontext.Context, t testing.TB, db *metab
coOpts = *co.CommitObject
}

return CommitObject{
createdObject := CommitObject{
Opts: coOpts,
}.Check(ctx, t, db)

return createdObject, createdSegments
}

// CreateObjectCopy is for testing object copy.
Expand Down
8 changes: 4 additions & 4 deletions satellite/metabase/move_object_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func TestBeginMoveObject(t *testing.T) {

expectedMetadataNonce := testrand.Nonce()
expectedMetadataKey := testrand.Bytes(265)
expectedObject := metabasetest.CreateTestObject{
expectedObject, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -244,7 +244,7 @@ func TestFinishMoveObject(t *testing.T) {
numberOfSegments := 10
newObjectKey := testrand.Bytes(32)

newObj := metabasetest.CreateTestObject{
newObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -293,7 +293,7 @@ func TestFinishMoveObject(t *testing.T) {
numberOfSegments := 10
newObjectKey := testrand.Bytes(32)

newObj := metabasetest.CreateTestObject{
newObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down Expand Up @@ -342,7 +342,7 @@ func TestFinishMoveObject(t *testing.T) {
numberOfSegments := 10
newObjectKey := testrand.Bytes(32)

newObj := metabasetest.CreateTestObject{
newObj, _ := metabasetest.CreateTestObject{
CommitObject: &metabase.CommitObject{
ObjectStream: obj,
EncryptedMetadata: testrand.Bytes(64),
Expand Down

0 comments on commit 7a01a2a

Please sign in to comment.