satellite/accounting: test tally on copied object flaky fix
Resolves: https://github.com/storj/storj/issues/4732 Change-Id: I2abf50aafc62dd97be12b0c0573db2f95d560796
This commit is contained in:
parent
553ef9d640
commit
7e6618cfad
@ -197,7 +197,7 @@ type StoragenodeAccounting interface {
|
|||||||
type ProjectAccounting interface {
|
type ProjectAccounting interface {
|
||||||
// SaveTallies saves the latest project info
|
// SaveTallies saves the latest project info
|
||||||
SaveTallies(ctx context.Context, intervalStart time.Time, bucketTallies map[metabase.BucketLocation]*BucketTally) error
|
SaveTallies(ctx context.Context, intervalStart time.Time, bucketTallies map[metabase.BucketLocation]*BucketTally) error
|
||||||
// GetTallies retrieves all tallies
|
// GetTallies retrieves all tallies ordered by interval start desc
|
||||||
GetTallies(ctx context.Context) ([]BucketTally, error)
|
GetTallies(ctx context.Context) ([]BucketTally, error)
|
||||||
// CreateStorageTally creates a record for BucketStorageTally in the accounting DB table
|
// CreateStorageTally creates a record for BucketStorageTally in the accounting DB table
|
||||||
CreateStorageTally(ctx context.Context, tally BucketStorageTally) error
|
CreateStorageTally(ctx context.Context, tally BucketStorageTally) error
|
||||||
|
@ -318,6 +318,16 @@ func TestTallyOnCopiedObject(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
findTally := func(bucket string, tallies []accounting.BucketTally) accounting.BucketTally {
|
||||||
|
for _, v := range tallies {
|
||||||
|
if v.BucketName == bucket {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
t.Fatalf("unable to find tally for %s", bucket)
|
||||||
|
return accounting.BucketTally{}
|
||||||
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
err := planet.Uplinks[0].CreateBucket(ctx, planet.Satellites[0], tc.name)
|
err := planet.Uplinks[0].CreateBucket(ctx, planet.Satellites[0], tc.name)
|
||||||
@ -340,7 +350,7 @@ func TestTallyOnCopiedObject(t *testing.T) {
|
|||||||
|
|
||||||
tallies, err := planet.Satellites[0].DB.ProjectAccounting().GetTallies(ctx)
|
tallies, err := planet.Satellites[0].DB.ProjectAccounting().GetTallies(ctx)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
lastTally := tallies[len(tallies)-1]
|
lastTally := findTally(tc.name, tallies)
|
||||||
require.Equal(t, tc.name, lastTally.BucketName)
|
require.Equal(t, tc.name, lastTally.BucketName)
|
||||||
require.Equal(t, tc.expectedTallyAfterCopy.ObjectCount, lastTally.ObjectCount)
|
require.Equal(t, tc.expectedTallyAfterCopy.ObjectCount, lastTally.ObjectCount)
|
||||||
require.Equal(t, tc.expectedTallyAfterCopy.TotalBytes, lastTally.TotalBytes)
|
require.Equal(t, tc.expectedTallyAfterCopy.TotalBytes, lastTally.TotalBytes)
|
||||||
@ -354,7 +364,7 @@ func TestTallyOnCopiedObject(t *testing.T) {
|
|||||||
|
|
||||||
tallies, err = planet.Satellites[0].DB.ProjectAccounting().GetTallies(ctx)
|
tallies, err = planet.Satellites[0].DB.ProjectAccounting().GetTallies(ctx)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
lastTally = tallies[len(tallies)-1]
|
lastTally = findTally(tc.name, tallies)
|
||||||
require.Equal(t, tc.name, lastTally.BucketName)
|
require.Equal(t, tc.name, lastTally.BucketName)
|
||||||
require.Equal(t, tc.expectedTallyAfterDelete.ObjectCount, lastTally.ObjectCount)
|
require.Equal(t, tc.expectedTallyAfterDelete.ObjectCount, lastTally.ObjectCount)
|
||||||
require.Equal(t, tc.expectedTallyAfterDelete.TotalBytes, lastTally.TotalBytes)
|
require.Equal(t, tc.expectedTallyAfterDelete.TotalBytes, lastTally.TotalBytes)
|
||||||
|
@ -585,6 +585,7 @@ model bucket_storage_tally (
|
|||||||
|
|
||||||
read all (
|
read all (
|
||||||
select bucket_storage_tally
|
select bucket_storage_tally
|
||||||
|
orderby desc bucket_storage_tally.interval_start
|
||||||
)
|
)
|
||||||
|
|
||||||
read all (
|
read all (
|
||||||
|
@ -13018,11 +13018,11 @@ func (obj *pgxImpl) Paged_BucketBandwidthRollupArchive_By_IntervalStart_GreaterO
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (obj *pgxImpl) All_BucketStorageTally(ctx context.Context) (
|
func (obj *pgxImpl) All_BucketStorageTally_OrderBy_Desc_IntervalStart(ctx context.Context) (
|
||||||
rows []*BucketStorageTally, err error) {
|
rows []*BucketStorageTally, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
var __embed_stmt = __sqlbundle_Literal("SELECT bucket_storage_tallies.bucket_name, bucket_storage_tallies.project_id, bucket_storage_tallies.interval_start, bucket_storage_tallies.total_bytes, bucket_storage_tallies.inline, bucket_storage_tallies.remote, bucket_storage_tallies.total_segments_count, bucket_storage_tallies.remote_segments_count, bucket_storage_tallies.inline_segments_count, bucket_storage_tallies.object_count, bucket_storage_tallies.metadata_size FROM bucket_storage_tallies")
|
var __embed_stmt = __sqlbundle_Literal("SELECT bucket_storage_tallies.bucket_name, bucket_storage_tallies.project_id, bucket_storage_tallies.interval_start, bucket_storage_tallies.total_bytes, bucket_storage_tallies.inline, bucket_storage_tallies.remote, bucket_storage_tallies.total_segments_count, bucket_storage_tallies.remote_segments_count, bucket_storage_tallies.inline_segments_count, bucket_storage_tallies.object_count, bucket_storage_tallies.metadata_size FROM bucket_storage_tallies ORDER BY bucket_storage_tallies.interval_start DESC")
|
||||||
|
|
||||||
var __values []interface{}
|
var __values []interface{}
|
||||||
|
|
||||||
@ -19406,11 +19406,11 @@ func (obj *pgxcockroachImpl) Paged_BucketBandwidthRollupArchive_By_IntervalStart
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (obj *pgxcockroachImpl) All_BucketStorageTally(ctx context.Context) (
|
func (obj *pgxcockroachImpl) All_BucketStorageTally_OrderBy_Desc_IntervalStart(ctx context.Context) (
|
||||||
rows []*BucketStorageTally, err error) {
|
rows []*BucketStorageTally, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
var __embed_stmt = __sqlbundle_Literal("SELECT bucket_storage_tallies.bucket_name, bucket_storage_tallies.project_id, bucket_storage_tallies.interval_start, bucket_storage_tallies.total_bytes, bucket_storage_tallies.inline, bucket_storage_tallies.remote, bucket_storage_tallies.total_segments_count, bucket_storage_tallies.remote_segments_count, bucket_storage_tallies.inline_segments_count, bucket_storage_tallies.object_count, bucket_storage_tallies.metadata_size FROM bucket_storage_tallies")
|
var __embed_stmt = __sqlbundle_Literal("SELECT bucket_storage_tallies.bucket_name, bucket_storage_tallies.project_id, bucket_storage_tallies.interval_start, bucket_storage_tallies.total_bytes, bucket_storage_tallies.inline, bucket_storage_tallies.remote, bucket_storage_tallies.total_segments_count, bucket_storage_tallies.remote_segments_count, bucket_storage_tallies.inline_segments_count, bucket_storage_tallies.object_count, bucket_storage_tallies.metadata_size FROM bucket_storage_tallies ORDER BY bucket_storage_tallies.interval_start DESC")
|
||||||
|
|
||||||
var __values []interface{}
|
var __values []interface{}
|
||||||
|
|
||||||
@ -23715,15 +23715,6 @@ func (rx *Rx) Rollback() (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rx *Rx) All_BucketStorageTally(ctx context.Context) (
|
|
||||||
rows []*BucketStorageTally, err error) {
|
|
||||||
var tx *Tx
|
|
||||||
if tx, err = rx.getTx(ctx); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return tx.All_BucketStorageTally(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rx *Rx) All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalStart_GreaterOrEqual_And_IntervalStart_LessOrEqual_OrderBy_Desc_IntervalStart(ctx context.Context,
|
func (rx *Rx) All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalStart_GreaterOrEqual_And_IntervalStart_LessOrEqual_OrderBy_Desc_IntervalStart(ctx context.Context,
|
||||||
bucket_storage_tally_project_id BucketStorageTally_ProjectId_Field,
|
bucket_storage_tally_project_id BucketStorageTally_ProjectId_Field,
|
||||||
bucket_storage_tally_bucket_name BucketStorageTally_BucketName_Field,
|
bucket_storage_tally_bucket_name BucketStorageTally_BucketName_Field,
|
||||||
@ -23737,6 +23728,15 @@ func (rx *Rx) All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalSta
|
|||||||
return tx.All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalStart_GreaterOrEqual_And_IntervalStart_LessOrEqual_OrderBy_Desc_IntervalStart(ctx, bucket_storage_tally_project_id, bucket_storage_tally_bucket_name, bucket_storage_tally_interval_start_greater_or_equal, bucket_storage_tally_interval_start_less_or_equal)
|
return tx.All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalStart_GreaterOrEqual_And_IntervalStart_LessOrEqual_OrderBy_Desc_IntervalStart(ctx, bucket_storage_tally_project_id, bucket_storage_tally_bucket_name, bucket_storage_tally_interval_start_greater_or_equal, bucket_storage_tally_interval_start_less_or_equal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rx *Rx) All_BucketStorageTally_OrderBy_Desc_IntervalStart(ctx context.Context) (
|
||||||
|
rows []*BucketStorageTally, err error) {
|
||||||
|
var tx *Tx
|
||||||
|
if tx, err = rx.getTx(ctx); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return tx.All_BucketStorageTally_OrderBy_Desc_IntervalStart(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
func (rx *Rx) All_CoinpaymentsTransaction_By_UserId_OrderBy_Desc_CreatedAt(ctx context.Context,
|
func (rx *Rx) All_CoinpaymentsTransaction_By_UserId_OrderBy_Desc_CreatedAt(ctx context.Context,
|
||||||
coinpayments_transaction_user_id CoinpaymentsTransaction_UserId_Field) (
|
coinpayments_transaction_user_id CoinpaymentsTransaction_UserId_Field) (
|
||||||
rows []*CoinpaymentsTransaction, err error) {
|
rows []*CoinpaymentsTransaction, err error) {
|
||||||
@ -25338,9 +25338,6 @@ func (rx *Rx) Update_User_By_Id(ctx context.Context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Methods interface {
|
type Methods interface {
|
||||||
All_BucketStorageTally(ctx context.Context) (
|
|
||||||
rows []*BucketStorageTally, err error)
|
|
||||||
|
|
||||||
All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalStart_GreaterOrEqual_And_IntervalStart_LessOrEqual_OrderBy_Desc_IntervalStart(ctx context.Context,
|
All_BucketStorageTally_By_ProjectId_And_BucketName_And_IntervalStart_GreaterOrEqual_And_IntervalStart_LessOrEqual_OrderBy_Desc_IntervalStart(ctx context.Context,
|
||||||
bucket_storage_tally_project_id BucketStorageTally_ProjectId_Field,
|
bucket_storage_tally_project_id BucketStorageTally_ProjectId_Field,
|
||||||
bucket_storage_tally_bucket_name BucketStorageTally_BucketName_Field,
|
bucket_storage_tally_bucket_name BucketStorageTally_BucketName_Field,
|
||||||
@ -25348,6 +25345,9 @@ type Methods interface {
|
|||||||
bucket_storage_tally_interval_start_less_or_equal BucketStorageTally_IntervalStart_Field) (
|
bucket_storage_tally_interval_start_less_or_equal BucketStorageTally_IntervalStart_Field) (
|
||||||
rows []*BucketStorageTally, err error)
|
rows []*BucketStorageTally, err error)
|
||||||
|
|
||||||
|
All_BucketStorageTally_OrderBy_Desc_IntervalStart(ctx context.Context) (
|
||||||
|
rows []*BucketStorageTally, err error)
|
||||||
|
|
||||||
All_CoinpaymentsTransaction_By_UserId_OrderBy_Desc_CreatedAt(ctx context.Context,
|
All_CoinpaymentsTransaction_By_UserId_OrderBy_Desc_CreatedAt(ctx context.Context,
|
||||||
coinpayments_transaction_user_id CoinpaymentsTransaction_UserId_Field) (
|
coinpayments_transaction_user_id CoinpaymentsTransaction_UserId_Field) (
|
||||||
rows []*CoinpaymentsTransaction, err error)
|
rows []*CoinpaymentsTransaction, err error)
|
||||||
|
@ -74,11 +74,11 @@ func (db *ProjectAccounting) SaveTallies(ctx context.Context, intervalStart time
|
|||||||
return Error.Wrap(err)
|
return Error.Wrap(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTallies saves the latest bucket info.
|
// GetTallies retrieves all tallies ordered by interval start (descending).
|
||||||
func (db *ProjectAccounting) GetTallies(ctx context.Context) (tallies []accounting.BucketTally, err error) {
|
func (db *ProjectAccounting) GetTallies(ctx context.Context) (tallies []accounting.BucketTally, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
dbxTallies, err := db.db.All_BucketStorageTally(ctx)
|
dbxTallies, err := db.db.All_BucketStorageTally_OrderBy_Desc_IntervalStart(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, Error.Wrap(err)
|
return nil, Error.Wrap(err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user