Skip to content

Commit d99cd3d

Browse files
DrewKimballyuzefovich
authored andcommitted
multitenant: deflake TestConsumption
This patch adds retries to the `TestConsumption` test for retrieving the total tenant RU consumption in order to ensure that the delta includes the bucket flush that was triggered by the test query, instead of background activity. Fixes cockroachdb#94286 Fixes cockroachdb#106572 Release note: None
1 parent 4413ec7 commit d99cd3d

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

pkg/ccl/multitenantccl/tenantcostclient/tenant_side_test.go

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -873,8 +873,9 @@ func TestConsumption(t *testing.T) {
873873
hostServer, _, _ := serverutils.StartServer(t, base.TestServerArgs{DefaultTestTenant: base.TestControlsTenantsExplicitly})
874874
defer hostServer.Stopper().Stop(context.Background())
875875

876+
const targetPeriod = time.Millisecond
876877
st := cluster.MakeTestingClusterSettings()
877-
tenantcostclient.TargetPeriodSetting.Override(context.Background(), &st.SV, time.Millisecond)
878+
tenantcostclient.TargetPeriodSetting.Override(context.Background(), &st.SV, targetPeriod)
878879
tenantcostclient.CPUUsageAllowance.Override(context.Background(), &st.SV, 0)
879880

880881
testProvider := newTestProvider()
@@ -902,21 +903,32 @@ func TestConsumption(t *testing.T) {
902903
r.Exec(t, "INSERT INTO t (v) SELECT repeat('1234567890', 1024) FROM generate_series(1, 10) AS g(i)")
903904
const expectedBytes = 10 * 10 * 1024
904905

905-
afterWrite := testProvider.waitForConsumption(t)
906-
delta := afterWrite
907-
delta.Sub(&beforeWrite)
908-
if delta.WriteBatches < 1 || delta.WriteRequests < 2 || delta.WriteBytes < expectedBytes*2 {
909-
t.Errorf("usage after write: %s", delta.String())
910-
}
906+
// Try a few times because background activity can trigger bucket
907+
// requests before the test query does.
908+
testutils.SucceedsSoon(t, func() error {
909+
afterWrite := testProvider.waitForConsumption(t)
910+
delta := afterWrite
911+
delta.Sub(&beforeWrite)
912+
if delta.WriteBatches < 1 || delta.WriteRequests < 2 || delta.WriteBytes < expectedBytes*2 {
913+
return errors.Newf("usage after write: %s", delta.String())
914+
}
915+
return nil
916+
})
911917

918+
beforeRead := testProvider.waitForConsumption(t)
912919
r.QueryStr(t, "SELECT min(v) FROM t")
913920

914-
afterRead := testProvider.waitForConsumption(t)
915-
delta = afterRead
916-
delta.Sub(&afterWrite)
917-
if delta.ReadBatches < 1 || delta.ReadRequests < 1 || delta.ReadBytes < expectedBytes {
918-
t.Errorf("usage after read: %s", delta.String())
919-
}
921+
// Try a few times because background activity can trigger bucket
922+
// requests before the test query does.
923+
testutils.SucceedsSoon(t, func() error {
924+
afterRead := testProvider.waitForConsumption(t)
925+
delta := afterRead
926+
delta.Sub(&beforeRead)
927+
if delta.ReadBatches < 1 || delta.ReadRequests < 1 || delta.ReadBytes < expectedBytes {
928+
return errors.Newf("usage after read: %s", delta.String())
929+
}
930+
return nil
931+
})
920932
r.Exec(t, "DELETE FROM t WHERE true")
921933
}
922934
// Make sure some CPU usage is reported.

0 commit comments

Comments
 (0)