satellite/metabase: add tests CommitObject.Versioned
Change-Id: Ie26e8806cfea0d0ba6ce58d290d329e04754f20a
This commit is contained in:
parent
a23d9d20aa
commit
74e4368cf1
@ -4365,7 +4365,114 @@ func TestCommitObjectVersioned(t *testing.T) {
|
|||||||
now := time.Now()
|
now := time.Now()
|
||||||
zombieExpiration := now.Add(24 * time.Hour)
|
zombieExpiration := now.Add(24 * time.Hour)
|
||||||
|
|
||||||
t.Run("Commit mixed versioned and unversioned", func(t *testing.T) {
|
t.Run("Commit versioned only", func(t *testing.T) {
|
||||||
|
defer metabasetest.DeleteAll{}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
v1 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v1,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 1,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v1.Version = 1
|
||||||
|
|
||||||
|
v2 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v2,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 2,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v2.Version = 2
|
||||||
|
|
||||||
|
v3 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v3,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 3,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v3.Version = 3
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v1,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v2,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v3,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Commit unversioned then versioned", func(t *testing.T) {
|
||||||
defer metabasetest.DeleteAll{}.Check(ctx, t, db)
|
defer metabasetest.DeleteAll{}.Check(ctx, t, db)
|
||||||
|
|
||||||
v1 := obj
|
v1 := obj
|
||||||
@ -4526,6 +4633,448 @@ func TestCommitObjectVersioned(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}.Check(ctx, t, db)
|
}.Check(ctx, t, db)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("Commit versioned then unversioned", func(t *testing.T) {
|
||||||
|
defer metabasetest.DeleteAll{}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
v1 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v1,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 1,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v1.Version = 1
|
||||||
|
|
||||||
|
v2 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v2,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 2,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v2.Version = 2
|
||||||
|
|
||||||
|
v3 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v3,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 3,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v3.Version = 3
|
||||||
|
|
||||||
|
v4 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v4,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 4,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v4.Version = 4
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v1,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v3,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v2,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v4,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
// committing v4 should overwrite the previous unversioned commit (v2),
|
||||||
|
// so v2 is not in the result check
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedUnversioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Commit mixed versioned and unversioned", func(t *testing.T) {
|
||||||
|
defer metabasetest.DeleteAll{}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
v1 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v1,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 1,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v1.Version = 1
|
||||||
|
|
||||||
|
v2 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v2,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 2,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v2.Version = 2
|
||||||
|
|
||||||
|
v3 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v3,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 3,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v3.Version = 3
|
||||||
|
|
||||||
|
v4 := obj
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v4,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: 4,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v4.Version = 4
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v1,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v2,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedUnversioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v3,
|
||||||
|
Versioned: true,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v2,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedUnversioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.Pending,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: v4,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
// committing v4 should overwrite the previous unversioned commit (v2),
|
||||||
|
// so v2 is not in the result check
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: []metabase.RawObject{
|
||||||
|
{
|
||||||
|
ObjectStream: v1,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v3,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ObjectStream: v4,
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedUnversioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Commit large number mixed versioned and unversioned", func(t *testing.T) {
|
||||||
|
defer metabasetest.DeleteAll{}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
// half the commits are versioned half are unversioned
|
||||||
|
numCommits := 1000
|
||||||
|
objs := make([]*metabase.ObjectStream, numCommits)
|
||||||
|
for i := 0; i < numCommits; i++ {
|
||||||
|
v := obj
|
||||||
|
objs[i] = &v
|
||||||
|
metabasetest.BeginObjectNextVersion{
|
||||||
|
Opts: metabase.BeginObjectNextVersion{
|
||||||
|
ObjectStream: v,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
ZombieDeletionDeadline: &zombieExpiration,
|
||||||
|
},
|
||||||
|
Version: metabase.Version(i + 1),
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
v.Version = metabase.Version(i + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
rawObjects := make([]metabase.RawObject, 0, len(objs))
|
||||||
|
for i := 0; i < len(objs); i++ {
|
||||||
|
versioned := i%2 == 0
|
||||||
|
|
||||||
|
metabasetest.CommitObject{
|
||||||
|
Opts: metabase.CommitObject{
|
||||||
|
ObjectStream: *objs[i],
|
||||||
|
Versioned: versioned,
|
||||||
|
},
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
|
||||||
|
if versioned {
|
||||||
|
rawObjects = append(rawObjects, metabase.RawObject{
|
||||||
|
ObjectStream: *objs[i],
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedVersioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// all the unversioned commits overwrite previous unversioned commits,
|
||||||
|
// so the result should only contain a single unversioned commit.
|
||||||
|
rawObjects = append(rawObjects, metabase.RawObject{
|
||||||
|
ObjectStream: *objs[len(objs)-1],
|
||||||
|
CreatedAt: now,
|
||||||
|
Status: metabase.CommittedUnversioned,
|
||||||
|
Encryption: metabasetest.DefaultEncryption,
|
||||||
|
})
|
||||||
|
metabasetest.Verify{
|
||||||
|
Objects: rawObjects,
|
||||||
|
}.Check(ctx, t, db)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user