Skip to content

Commit a69a151

Browse files
committed
sem/builtins: audit a few tests for randomized test tenant
This commit adjusts one test to work with randomized test tenant. Additionally, it exempts 3 tests from that randomization since those are specific to PerStore RPCs that we currently don't expose for secondary tenants. It also adjusts `TestSerialNormalizationWithUniqueUnorderedID` which is quite heavy to exempt the default test tenant from rate limiting to avoid timeouts. Release note: None
1 parent f09626f commit a69a151

File tree

5 files changed

+62
-28
lines changed

5 files changed

+62
-28
lines changed

pkg/sql/sem/builtins/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ go_test(
192192
"//pkg/kv",
193193
"//pkg/kv/kvpb",
194194
"//pkg/kv/kvserver",
195+
"//pkg/multitenant/tenantcapabilitiespb",
195196
"//pkg/roachpb",
196197
"//pkg/security/securityassets",
197198
"//pkg/security/securitytest",

pkg/sql/sem/builtins/builtins_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"time"
1616

1717
"github.com/cockroachdb/cockroach/pkg/base"
18+
"github.com/cockroachdb/cockroach/pkg/multitenant/tenantcapabilitiespb"
1819
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
1920
"github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtinconstants"
2021
"github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtinsregistry"
@@ -86,8 +87,17 @@ func TestSerialNormalizationWithUniqueUnorderedID(t *testing.T) {
8687
},
8788
},
8889
}
89-
s, db, _ := serverutils.StartServer(t, params)
90-
defer s.Stopper().Stop(ctx)
90+
srv, db, _ := serverutils.StartServer(t, params)
91+
defer srv.Stopper().Stop(ctx)
92+
93+
if srv.DeploymentMode().IsExternal() {
94+
// If we're in the external-process mode, then disable rate
95+
// limiting for it (we're going to slam the server with load,
96+
// and we don't want for queries to be artificially delayed).
97+
require.NoError(t, srv.GrantTenantCapabilities(
98+
ctx, serverutils.TestTenantID(),
99+
map[tenantcapabilitiespb.ID]string{tenantcapabilitiespb.ExemptFromRateLimiting: "true"}))
100+
}
91101

92102
tdb := sqlutils.MakeSQLRunner(db)
93103
// Create a new table with serial primary key i (unordered_rowid) and int j (index).

pkg/sql/sem/builtins/fingerprint_builtin_test.go

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestFingerprint(t *testing.T) {
3939
var mu syncutil.Mutex
4040
var numExportResponses int
4141
var numSSTsInExportResponses int
42-
s, sqlDB, db := serverutils.StartServer(t, base.TestServerArgs{
42+
srv, sqlDB, db := serverutils.StartServer(t, base.TestServerArgs{
4343
Knobs: base.TestingKnobs{
4444
Store: &kvserver.StoreTestingKnobs{
4545
TestingResponseFilter: func(ctx context.Context, ba *kvpb.BatchRequest, br *kvpb.BatchResponse) *kvpb.Error {
@@ -57,7 +57,12 @@ func TestFingerprint(t *testing.T) {
5757
},
5858
},
5959
})
60-
defer s.Stopper().Stop(ctx)
60+
defer srv.Stopper().Stop(ctx)
61+
s := srv.ApplicationLayer()
62+
63+
makeKey := func(k string) roachpb.Key {
64+
return append(append(roachpb.Key(nil), s.Codec().TenantPrefix()...), roachpb.Key(k)...)
65+
}
6166

6267
resetVars := func() {
6368
mu.Lock()
@@ -69,7 +74,7 @@ func TestFingerprint(t *testing.T) {
6974
returnPointAndRangeKeys := func(eng storage.Engine) ([]storage.MVCCKeyValue, []storage.MVCCRangeKey) {
7075
var rangeKeys []storage.MVCCRangeKey
7176
var pointKeys []storage.MVCCKeyValue
72-
for _, kvI := range storageutils.ScanKeySpan(t, eng, roachpb.Key("a"), roachpb.Key("z")) {
77+
for _, kvI := range storageutils.ScanKeySpan(t, eng, makeKey("a"), makeKey("z")) {
7378
switch kv := kvI.(type) {
7479
case storage.MVCCRangeKeyValue:
7580
rangeKeys = append(rangeKeys, kv.RangeKey)
@@ -88,7 +93,7 @@ func TestFingerprint(t *testing.T) {
8893
aost := endTime.AsOfSystemTime()
8994
var fingerprint int64
9095
query := fmt.Sprintf(`SELECT * FROM crdb_internal.fingerprint(ARRAY[$1::BYTES, $2::BYTES],$3::DECIMAL, $4) AS OF SYSTEM TIME '%s'`, aost)
91-
require.NoError(t, sqlDB.QueryRow(query, roachpb.Key(startKey), roachpb.Key(endKey),
96+
require.NoError(t, sqlDB.QueryRow(query, makeKey(startKey), makeKey(endKey),
9297
startTime.AsOfSystemTime(), allRevisions).Scan(&fingerprint))
9398
return fingerprint
9499
}
@@ -105,22 +110,22 @@ func TestFingerprint(t *testing.T) {
105110
require.Zero(t, fingerprint)
106111
})
107112

108-
store, err := s.GetStores().(*kvserver.Stores).GetStore(s.GetFirstStoreID())
113+
store, err := srv.GetStores().(*kvserver.Stores).GetStore(srv.GetFirstStoreID())
109114
require.NoError(t, err)
110115
eng := store.TODOEngine()
111116

112117
// Insert some point keys.
113118
txn := db.NewTxn(ctx, "test-point-keys")
114119
pointKeysTS := hlc.Timestamp{WallTime: timeutil.Now().Round(time.Microsecond).UnixNano()}
115120
require.NoError(t, txn.SetFixedTimestamp(ctx, pointKeysTS))
116-
require.NoError(t, txn.Put(ctx, "a", "value"))
117-
require.NoError(t, txn.Put(ctx, "b", "value"))
118-
require.NoError(t, txn.Put(ctx, "c", "value"))
119-
require.NoError(t, txn.Put(ctx, "d", "value"))
121+
require.NoError(t, txn.Put(ctx, makeKey("a"), "value"))
122+
require.NoError(t, txn.Put(ctx, makeKey("b"), "value"))
123+
require.NoError(t, txn.Put(ctx, makeKey("c"), "value"))
124+
require.NoError(t, txn.Put(ctx, makeKey("d"), "value"))
120125
require.NoError(t, txn.Commit(ctx))
121126

122127
// Run a scan to force intent resolution.
123-
_, err = db.Scan(ctx, "a", "z", 0)
128+
_, err = db.Scan(ctx, makeKey("a"), makeKey("z"), 0)
124129
require.NoError(t, err)
125130

126131
pointKeys, rangeKeys := returnPointAndRangeKeys(eng)
@@ -144,15 +149,15 @@ func TestFingerprint(t *testing.T) {
144149
//
145150
// ts1 value value value value
146151
// a b c d
147-
require.NoError(t, db.DelRangeUsingTombstone(ctx, "a", "c"))
152+
require.NoError(t, db.DelRangeUsingTombstone(ctx, makeKey("a"), makeKey("c")))
148153
pointKeys, rangeKeys = returnPointAndRangeKeys(eng)
149154
require.Len(t, pointKeys, 4)
150155
require.Len(t, rangeKeys, 1)
151156
rangeKey1Timestamp := rangeKeys[0].Timestamp
152157
// Note, the timestamp comparison is a noop here but we need the timestamp for
153158
// future AOST fingerprint queries.
154159
require.Equal(t, []storage.MVCCRangeKey{
155-
storageutils.RangeKeyWithTS("a", "c", rangeKey1Timestamp),
160+
storageutils.RangeKeyWithTS(string(makeKey("a")), string(makeKey("c")), rangeKey1Timestamp),
156161
}, rangeKeys)
157162

158163
// Fingerprint the point and range keys.
@@ -176,16 +181,16 @@ func TestFingerprint(t *testing.T) {
176181
//
177182
// ts1 value value value value
178183
// a b c d
179-
require.NoError(t, db.DelRangeUsingTombstone(ctx, "b", "d"))
184+
require.NoError(t, db.DelRangeUsingTombstone(ctx, makeKey("b"), makeKey("d")))
180185
pointKeys, rangeKeys = returnPointAndRangeKeys(eng)
181186
require.Len(t, pointKeys, 4)
182187
require.Len(t, rangeKeys, 4)
183188
rangeKey2Timestamp := rangeKeys[1].Timestamp
184189
require.Equal(t, []storage.MVCCRangeKey{
185-
storageutils.RangeKeyWithTS("a", "b", rangeKey1Timestamp),
186-
storageutils.RangeKeyWithTS("b", "c", rangeKey2Timestamp),
187-
storageutils.RangeKeyWithTS("b", "c", rangeKey1Timestamp),
188-
storageutils.RangeKeyWithTS("c", "d", rangeKey2Timestamp),
190+
storageutils.RangeKeyWithTS(string(makeKey("a")), string(makeKey("b")), rangeKey1Timestamp),
191+
storageutils.RangeKeyWithTS(string(makeKey("b")), string(makeKey("c")), rangeKey2Timestamp),
192+
storageutils.RangeKeyWithTS(string(makeKey("b")), string(makeKey("c")), rangeKey1Timestamp),
193+
storageutils.RangeKeyWithTS(string(makeKey("c")), string(makeKey("d")), rangeKey2Timestamp),
189194
}, rangeKeys)
190195

191196
// Even with the fragmentation of the first range key, our fingerprint for the
@@ -202,7 +207,7 @@ func TestFingerprint(t *testing.T) {
202207
require.Equal(t, 1, numSSTsInExportResponses)
203208
require.Equal(t, 1, numExportResponses)
204209

205-
require.NoError(t, db.AdminSplit(ctx, "c", hlc.MaxTimestamp))
210+
require.NoError(t, db.AdminSplit(ctx, makeKey("c"), hlc.MaxTimestamp))
206211

207212
resetVars()
208213
fingerprintPostSplit := fingerprint(t, "a", "z", pointKeysTS.Add(int64(-time.Microsecond), 0),

pkg/sql/sem/builtins/generator_builtins_test.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/cockroachdb/cockroach/pkg/sql/sem/eval"
2323
"github.com/cockroachdb/cockroach/pkg/storage/enginepb"
2424
"github.com/cockroachdb/cockroach/pkg/testutils/serverutils"
25+
"github.com/cockroachdb/cockroach/pkg/testutils/skip"
2526
"github.com/cockroachdb/cockroach/pkg/testutils/sqlutils"
2627
"github.com/cockroachdb/cockroach/pkg/util/leaktest"
2728
"github.com/cockroachdb/cockroach/pkg/util/log"
@@ -63,8 +64,16 @@ func TestConcurrentProcessorsReadEpoch(t *testing.T) {
6364
func TestGetSSTableMetricsMultiNode(t *testing.T) {
6465
defer leaktest.AfterTest(t)()
6566
defer log.Scope(t).Close(t)
67+
68+
skip.UnderRace(t, "heavy test")
69+
6670
ctx := context.Background()
67-
tc := serverutils.StartCluster(t, 3, base.TestClusterArgs{})
71+
tc := serverutils.StartCluster(t, 3, base.TestClusterArgs{
72+
ServerArgs: base.TestServerArgs{
73+
// CompactEngineSpan RPC is available only in the system tenant.
74+
DefaultTestTenant: base.TestIsSpecificToStorageLayerAndNeedsASystemTenant,
75+
},
76+
})
6877
defer tc.Stopper().Stop(ctx)
6978

7079
sqlDB := sqlutils.MakeSQLRunner(tc.ServerConn(0))
@@ -155,8 +164,13 @@ func TestGetSSTableMetricsSingleNode(t *testing.T) {
155164
defer leaktest.AfterTest(t)()
156165
defer log.Scope(t).Close(t)
157166

167+
skip.UnderRace(t, "heavy test")
168+
158169
ctx := context.Background()
159-
ts, hostDB, _ := serverutils.StartServer(t, base.TestServerArgs{})
170+
ts, hostDB, _ := serverutils.StartServer(t, base.TestServerArgs{
171+
// CompactEngineSpan RPC is available only in the system tenant.
172+
DefaultTestTenant: base.TestIsSpecificToStorageLayerAndNeedsASystemTenant,
173+
})
160174
defer ts.Stopper().Stop(ctx)
161175

162176
nodeIDArg := int(ts.NodeID())
@@ -207,9 +221,18 @@ func TestGetSSTableMetricsSingleNode(t *testing.T) {
207221
func TestScanStorageInternalKeys(t *testing.T) {
208222
defer leaktest.AfterTest(t)()
209223
defer log.Scope(t).Close(t)
224+
225+
skip.UnderRace(t, "too slow")
226+
210227
ctx := context.Background()
211228
const numNodes = 3
212-
tc := serverutils.StartCluster(t, numNodes, base.TestClusterArgs{})
229+
tc := serverutils.StartCluster(t, numNodes, base.TestClusterArgs{
230+
ServerArgs: base.TestServerArgs{
231+
// ScanStorageInternalKeys RPC is available only in the system
232+
// tenant.
233+
DefaultTestTenant: base.TestIsSpecificToStorageLayerAndNeedsASystemTenant,
234+
},
235+
})
213236
defer tc.Stopper().Stop(ctx)
214237

215238
sqlDB := sqlutils.MakeSQLRunner(tc.ServerConn(0))

pkg/sql/sem/builtins/main_test.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"os"
1010
"testing"
1111

12-
"github.com/cockroachdb/cockroach/pkg/base"
1312
"github.com/cockroachdb/cockroach/pkg/security/securityassets"
1413
"github.com/cockroachdb/cockroach/pkg/security/securitytest"
1514
"github.com/cockroachdb/cockroach/pkg/server"
@@ -26,9 +25,5 @@ func TestMain(m *testing.M) {
2625
serverutils.InitTestServerFactory(server.TestServerFactory)
2726
serverutils.InitTestClusterFactory(testcluster.TestClusterFactory)
2827

29-
defer serverutils.TestingSetDefaultTenantSelectionOverride(
30-
base.TestIsForStuffThatShouldWorkWithSecondaryTenantsButDoesntYet(76378),
31-
)()
32-
3328
os.Exit(m.Run())
3429
}

0 commit comments

Comments
 (0)