Skip to content

Commit a064b11

Browse files
craig[bot]shubhamdhama
craig[bot]
andcommitted
Merge #139436
139436: server: enable tenant testing for server/admin APIs r=cthumuluru-crdb a=shubhamdhama `` server: copy `StubTimeNow` server testing knobs to tenants `` `` server: enable tenant testing for server/admin APIs `` This change is mostly straightforward: * Removed remaining usages of `TODOTestTenantDisabled`, enabling tenant testing for those tests. * Made some improvements to a couple of tests. * Created a new function (hopefully temporary) `TestSkippedForExternalModeDueToPerformance` to exclude external mode for `TestAdminAPIEvents` due to poor performance. Informs: #138912 Epic: CRDB-38970 Release note: None Co-authored-by: Shubham Dhama <[email protected]>
2 parents ccc3f31 + b735991 commit a064b11

11 files changed

+77
-51
lines changed

pkg/base/test_server_args.go

+15
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,21 @@ func TestIsForStuffThatShouldWorkWithSharedProcessModeButDoesntYet(
519519
}
520520
}
521521

522+
// TestSkippedForExternalModeDueToPerformance can be used to disable selecting
523+
// the external process virtual cluster due to significant performance
524+
// degradation compared to other modes. However, the goal is to eventually make
525+
// it work efficiently in external mode.
526+
//
527+
// It should link to a github issue with label C-investigation.
528+
func TestSkippedForExternalModeDueToPerformance(issueNumber int) DefaultTestTenantOptions {
529+
return DefaultTestTenantOptions{
530+
testBehavior: ttSharedProcess,
531+
allowAdditionalTenants: true,
532+
issueNum: issueNumber,
533+
label: "C-investigation",
534+
}
535+
}
536+
522537
// InternalNonDefaultDecision builds a sentinel value used inside a
523538
// mechanism in serverutils. Should not be used by tests directly.
524539
func InternalNonDefaultDecision(

pkg/ccl/serverccl/admin_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,7 @@ func TestAdminAPIJobs(t *testing.T) {
118118

119119
dir, dirCleanupFn := testutils.TempDir(t)
120120
defer dirCleanupFn()
121-
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{
122-
// Fails with the default test tenant. Tracked with #76378.
123-
DefaultTestTenant: base.TODOTestTenantDisabled,
124-
ExternalIODir: dir})
121+
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{ExternalIODir: dir})
125122
defer s.Stopper().Stop(context.Background())
126123
sqlDB := sqlutils.MakeSQLRunner(conn)
127124

pkg/server/application_api/BUILD.bazel

+2
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ go_test(
7575
"//pkg/sql/sqlstats",
7676
"//pkg/sql/sqlstats/persistedsqlstats",
7777
"//pkg/sql/sqlstats/persistedsqlstats/sqlstatstestutil",
78+
"//pkg/storage/fs",
7879
"//pkg/testutils",
7980
"//pkg/testutils/diagutils",
81+
"//pkg/testutils/listenerutil",
8082
"//pkg/testutils/serverutils",
8183
"//pkg/testutils/skip",
8284
"//pkg/testutils/sqlutils",

pkg/server/application_api/events_test.go

+49-9
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,50 @@ import (
1313
"time"
1414

1515
"github.com/cockroachdb/cockroach/pkg/base"
16+
"github.com/cockroachdb/cockroach/pkg/server"
1617
"github.com/cockroachdb/cockroach/pkg/server/serverpb"
1718
"github.com/cockroachdb/cockroach/pkg/server/srvtestutils"
18-
"github.com/cockroachdb/cockroach/pkg/testutils/serverutils"
19+
"github.com/cockroachdb/cockroach/pkg/storage/fs"
20+
"github.com/cockroachdb/cockroach/pkg/testutils/listenerutil"
21+
"github.com/cockroachdb/cockroach/pkg/testutils/testcluster"
1922
"github.com/cockroachdb/cockroach/pkg/util/leaktest"
2023
"github.com/cockroachdb/cockroach/pkg/util/log"
24+
"github.com/stretchr/testify/require"
2125
)
2226

2327
func TestAdminAPIEvents(t *testing.T) {
2428
defer leaktest.AfterTest(t)()
2529
defer log.Scope(t).Close(t)
26-
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{
27-
// Disable the default test tenant for now as this tests fails
28-
// with it enabled. Tracked with #81590.
29-
DefaultTestTenant: base.TODOTestTenantDisabled,
30+
ctx := context.Background()
31+
32+
stickyVFSRegistry := fs.NewStickyRegistry()
33+
lisReg := listenerutil.NewListenerRegistry()
34+
defer lisReg.Close()
35+
36+
tc := testcluster.StartTestCluster(t, 1, base.TestClusterArgs{
37+
ReusableListenerReg: lisReg,
38+
ServerArgs: base.TestServerArgs{
39+
// TODO: time taken by first /events API call is unusually high
40+
// (>40s) for external mode.
41+
DefaultTestTenant: base.TestSkippedForExternalModeDueToPerformance(142381),
42+
// Below parameters are required to make tc.Restart work
43+
StoreSpecs: []base.StoreSpec{
44+
{
45+
InMemory: true,
46+
StickyVFSID: "1",
47+
},
48+
},
49+
Knobs: base.TestingKnobs{
50+
Server: &server.TestingKnobs{
51+
StickyVFSRegistry: stickyVFSRegistry,
52+
},
53+
},
54+
},
3055
})
31-
defer s.Stopper().Stop(context.Background())
56+
require.NoError(t, tc.Restart())
57+
defer tc.Stopper().Stop(ctx)
58+
s := tc.Server(0)
59+
db := tc.ServerConn(0)
3260

3361
setupQueries := []string{
3462
"CREATE DATABASE api_test",
@@ -37,6 +65,7 @@ func TestAdminAPIEvents(t *testing.T) {
3765
"CREATE TABLE api_test.tbl3 (a INT)",
3866
"DROP TABLE api_test.tbl1",
3967
"DROP TABLE api_test.tbl2",
68+
"DROP DATABASE api_test",
4069
"SET CLUSTER SETTING cluster.label = 'somestring';",
4170
}
4271
for _, q := range setupQueries {
@@ -54,9 +83,7 @@ func TestAdminAPIEvents(t *testing.T) {
5483
expCount int
5584
}
5685
testcases := []testcase{
57-
{"node_join", false, 0, false, 1},
58-
{"node_restart", false, 0, false, 0},
59-
{"drop_database", false, 0, false, 0},
86+
{"drop_database", false, 0, false, 1},
6087
{"create_database", false, 0, false, 3},
6188
{"drop_table", false, 0, false, 2},
6289
{"create_table", false, 0, false, 3},
@@ -68,6 +95,19 @@ func TestAdminAPIEvents(t *testing.T) {
6895
{"create_table", true, -1, false, 3},
6996
{"create_table", true, 2, false, 2},
7097
}
98+
99+
if s.StartedDefaultTestTenant() {
100+
testcases = append(testcases, []testcase{
101+
{"node_join", false, 0, false, 0},
102+
{"node_restart", false, 0, false, 0},
103+
}...)
104+
} else {
105+
testcases = append(testcases, []testcase{
106+
{"node_join", false, 0, false, 1},
107+
{"node_restart", false, 0, false, 1},
108+
}...)
109+
}
110+
71111
minTotalEvents := 0
72112
for _, tc := range testcases {
73113
if !tc.hasLimit {

pkg/server/application_api/insights_test.go

-3
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ func TestDatabaseAndTableIndexRecommendations(t *testing.T) {
7474
stubDropUnusedDuration := time.Hour
7575

7676
s, sqlDB, _ := serverutils.StartServer(t, base.TestServerArgs{
77-
// Disable the default test tenant for now as this tests fails
78-
// with it enabled. Tracked with #81590.
79-
DefaultTestTenant: base.TODOTestTenantDisabled,
8077
Knobs: base.TestingKnobs{
8178
UnusedIndexRecommendKnobs: &idxusage.UnusedIndexRecommendationTestingKnobs{
8279
GetCreatedAt: stubTime.getCreatedAt,

pkg/server/application_api/jobs_test.go

+5-12
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,6 @@ func TestAdminAPIJobs(t *testing.T) {
7777
now := timeutil.Now()
7878
retentionTime := 336 * time.Hour
7979
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{
80-
// Disable the default test tenant for now as this tests fails
81-
// with it enabled. Tracked with #81590.
82-
DefaultTestTenant: base.TODOTestTenantDisabled,
8380
Knobs: base.TestingKnobs{
8481
JobsTestingKnobs: &jobs.TestingKnobs{
8582
IntervalOverrides: jobs.TestingIntervalOverrides{
@@ -249,8 +246,8 @@ func TestAdminAPIJobs(t *testing.T) {
249246
},
250247
}
251248

252-
testutils.RunTrueAndFalse(t, "isAdmin", func(t *testing.T, isAdmin bool) {
253-
for i, testCase := range testCases {
249+
for i, testCase := range testCases {
250+
testutils.RunTrueAndFalse(t, fmt.Sprintf("%s-isAdmin", testCase.uri), func(t *testing.T, isAdmin bool) {
254251
var res serverpb.JobsResponse
255252
if err := srvtestutils.GetAdminJSONProtoWithAdminOption(s, testCase.uri, &res, isAdmin); err != nil {
256253
t.Fatal(err)
@@ -278,19 +275,15 @@ func TestAdminAPIJobs(t *testing.T) {
278275
// We don't use require.Equal() because timestamps don't necessarily
279276
// compare == due to only one of them having a monotonic clock reading.
280277
require.True(t, now.Add(-retentionTime).Equal(res.EarliestRetainedTime))
281-
}
282-
})
278+
})
279+
}
283280
}
284281

285282
func TestAdminAPIJobsDetails(t *testing.T) {
286283
defer leaktest.AfterTest(t)()
287284
defer log.Scope(t).Close(t)
288285

289-
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{
290-
// Disable the default test tenant for now as this tests fails
291-
// with it enabled. Tracked with #81590.
292-
DefaultTestTenant: base.TODOTestTenantDisabled,
293-
})
286+
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{})
294287
defer s.Stopper().Stop(context.Background())
295288
sqlDB := sqlutils.MakeSQLRunner(conn)
296289

pkg/server/application_api/query_plan_test.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,7 @@ func TestAdminAPIQueryPlan(t *testing.T) {
2525
defer leaktest.AfterTest(t)()
2626
defer log.Scope(t).Close(t)
2727

28-
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{
29-
// Disable the default test tenant for now as this tests fails
30-
// with it enabled. Tracked with #81590.
31-
DefaultTestTenant: base.TODOTestTenantDisabled,
32-
})
28+
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{})
3329
defer s.Stopper().Stop(context.Background())
3430
sqlDB := sqlutils.MakeSQLRunner(conn)
3531

pkg/server/application_api/security_test.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,7 @@ import (
2222
func TestAdminAPIUsers(t *testing.T) {
2323
defer leaktest.AfterTest(t)()
2424
defer log.Scope(t).Close(t)
25-
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{
26-
// Disable the default test tenant for now as this tests fails
27-
// with it enabled. Tracked with #81590.
28-
DefaultTestTenant: base.TODOTestTenantDisabled,
29-
})
25+
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{})
3026
defer s.Stopper().Stop(context.Background())
3127

3228
// Create sample users.

pkg/server/application_api/zcfg_test.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,7 @@ import (
2727
func TestAdminAPIZoneDetails(t *testing.T) {
2828
defer leaktest.AfterTest(t)()
2929
defer log.Scope(t).Close(t)
30-
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{
31-
// Disable the default test tenant for now as this tests fails
32-
// with it enabled. Tracked with #81590.
33-
DefaultTestTenant: base.TODOTestTenantDisabled,
34-
})
30+
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{})
3531
defer s.Stopper().Stop(context.Background())
3632

3733
// Create database and table.

pkg/server/storage_api/rangelog_test.go

+1-8
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,7 @@ import (
2525
func TestAdminAPIRangeLogByRangeID(t *testing.T) {
2626
defer leaktest.AfterTest(t)()
2727
defer log.Scope(t).Close(t)
28-
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{
29-
// Disable the default test tenant for now as this tests fails
30-
// with it enabled. Tracked with #81590.
31-
DefaultTestTenant: base.TODOTestTenantDisabled,
32-
})
28+
s, db, _ := serverutils.StartServer(t, base.TestServerArgs{})
3329
defer s.Stopper().Stop(context.Background())
3430

3531
rangeID := 654321
@@ -95,9 +91,6 @@ func TestAdminAPIFullRangeLog(t *testing.T) {
9591
defer log.Scope(t).Close(t)
9692
s, db, _ := serverutils.StartServer(t,
9793
base.TestServerArgs{
98-
// Disable the default test tenant for now as this tests fails
99-
// with it enabled. Tracked with #81590.
100-
DefaultTestTenant: base.TODOTestTenantDisabled,
10194
Knobs: base.TestingKnobs{
10295
Store: &kvserver.StoreTestingKnobs{
10396
DisableSplitQueue: true,

pkg/server/testserver.go

+1
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,7 @@ func (ts *testServer) setupTenantTestingKnobs(tenantKnobs *base.TestingKnobs) {
681681
InjectedLatencyOracle: ts.params.Knobs.Server.(*TestingKnobs).ContextTestingKnobs.InjectedLatencyOracle,
682682
InjectedLatencyEnabled: ts.params.Knobs.Server.(*TestingKnobs).ContextTestingKnobs.InjectedLatencyEnabled,
683683
}
684+
tenantKnobs.Server.(*TestingKnobs).StubTimeNow = ts.params.Knobs.Server.(*TestingKnobs).StubTimeNow
684685
}
685686
if ts.params.Knobs.UpgradeManager != nil {
686687
tenantKnobs.UpgradeManager.(*upgradebase.TestingKnobs).SkipSomeUpgradeSteps = ts.params.Knobs.UpgradeManager.(*upgradebase.TestingKnobs).SkipSomeUpgradeSteps

0 commit comments

Comments
 (0)