Skip to content

Commit ac39354

Browse files
committed
server: enable tenant testing for application_api_test
Informs: cockroachdb#138912 Epic: CRDB-38970 Release note: None
1 parent f7c32ec commit ac39354

8 files changed

+79
-44
lines changed

pkg/base/test_server_args.go

+15
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,21 @@ func TestIsForStuffThatShouldWorkWithSharedProcessModeButDoesntYet(
465465
}
466466
}
467467

468+
// TestSkippedForExternalModeDueToPerformance can be used to disable selecting
469+
// the external process virtual cluster due to significant performance
470+
// degradation compared to other modes. However, the goal is to eventually make
471+
// it work efficiently in external mode.
472+
//
473+
// It should link to a github issue with label C-investigation.
474+
func TestSkippedForExternalModeDueToPerformance(issueNumber int) DefaultTestTenantOptions {
475+
return DefaultTestTenantOptions{
476+
testBehavior: ttSharedProcess,
477+
allowAdditionalTenants: true,
478+
issueNum: issueNumber,
479+
label: "C-bug",
480+
}
481+
}
482+
468483
// InternalNonDefaultDecision builds a sentinel value used inside a
469484
// mechanism in serverutils. Should not be used by tests directly.
470485
func InternalNonDefaultDecision(

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

+50-9
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,51 @@ 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+
ReplicationMode: base.ReplicationManual,
38+
ReusableListenerReg: lisReg,
39+
ServerArgs: base.TestServerArgs{
40+
// TODO: time taken by first /events API call is unusually high
41+
// (>40s) for external mode.
42+
DefaultTestTenant: base.TestSkippedForExternalModeDueToPerformance(12345),
43+
// Below parameters are required to make tc.Restart work
44+
StoreSpecs: []base.StoreSpec{
45+
{
46+
InMemory: true,
47+
StickyVFSID: "1",
48+
},
49+
},
50+
Knobs: base.TestingKnobs{
51+
Server: &server.TestingKnobs{
52+
StickyVFSRegistry: stickyVFSRegistry,
53+
},
54+
},
55+
},
3056
})
31-
defer s.Stopper().Stop(context.Background())
57+
defer tc.Stopper().Stop(ctx)
58+
require.NoError(t, tc.Restart())
59+
s := tc.Server(0)
60+
db := tc.ServerConn(0)
3261

3362
setupQueries := []string{
3463
"CREATE DATABASE api_test",
@@ -37,6 +66,7 @@ func TestAdminAPIEvents(t *testing.T) {
3766
"CREATE TABLE api_test.tbl3 (a INT)",
3867
"DROP TABLE api_test.tbl1",
3968
"DROP TABLE api_test.tbl2",
69+
"DROP DATABASE api_test",
4070
"SET CLUSTER SETTING cluster.label = 'somestring';",
4171
}
4272
for _, q := range setupQueries {
@@ -54,9 +84,7 @@ func TestAdminAPIEvents(t *testing.T) {
5484
expCount int
5585
}
5686
testcases := []testcase{
57-
{"node_join", false, 0, false, 1},
58-
{"node_restart", false, 0, false, 0},
59-
{"drop_database", false, 0, false, 0},
87+
{"drop_database", false, 0, false, 1},
6088
{"create_database", false, 0, false, 3},
6189
{"drop_table", false, 0, false, 2},
6290
{"create_table", false, 0, false, 3},
@@ -68,6 +96,19 @@ func TestAdminAPIEvents(t *testing.T) {
6896
{"create_table", true, -1, false, 3},
6997
{"create_table", true, 2, false, 2},
7098
}
99+
100+
if s.StartedDefaultTestTenant() {
101+
testcases = append(testcases, []testcase{
102+
{"node_join", false, 0, false, 0},
103+
{"node_restart", false, 0, false, 0},
104+
}...)
105+
} else {
106+
testcases = append(testcases, []testcase{
107+
{"node_join", false, 0, false, 1},
108+
{"node_restart", false, 0, false, 1},
109+
}...)
110+
}
111+
71112
minTotalEvents := 0
72113
for _, tc := range testcases {
73114
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

+9-17
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,12 @@ func TestAdminAPIJobs(t *testing.T) {
7575
defer log.Scope(t).Close(t)
7676

7777
now := timeutil.Now()
78-
retentionTime := 336 * time.Hour
78+
retentionDuration := 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{
86-
RetentionTime: &retentionTime,
83+
RetentionTime: &retentionDuration,
8784
},
8885
},
8986
Server: &server.TestingKnobs{
@@ -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)
@@ -275,22 +272,17 @@ func TestAdminAPIJobs(t *testing.T) {
275272
if e, a := expected, resIDs; !reflect.DeepEqual(e, a) {
276273
t.Errorf("%d - %v: expected job IDs %v, but got %v", i, testCase.uri, e, a)
277274
}
278-
// We don't use require.Equal() because timestamps don't necessarily
279-
// compare == due to only one of them having a monotonic clock reading.
280-
require.True(t, now.Add(-retentionTime).Equal(res.EarliestRetainedTime))
281-
}
282-
})
275+
retentionTime := now.Add(-retentionDuration)
276+
require.WithinDuration(t, retentionTime, res.EarliestRetainedTime, 5*time.Second)
277+
})
278+
}
283279
}
284280

285281
func TestAdminAPIJobsDetails(t *testing.T) {
286282
defer leaktest.AfterTest(t)()
287283
defer log.Scope(t).Close(t)
288284

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-
})
285+
s, conn, _ := serverutils.StartServer(t, base.TestServerArgs{})
294286
defer s.Stopper().Stop(context.Background())
295287
sqlDB := sqlutils.MakeSQLRunner(conn)
296288

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.

0 commit comments

Comments
 (0)