blob: 240a9c9460919247f097292f3673e412dda137ec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
test_kind: js_test
selector:
roots:
- jstests/core/**/*.js
exclude_files:
- jstests/core/txns/**/*.js
# These tests depend on hardcoded database name equality.
- jstests/core/json_schema/misc_validation.js
- jstests/core/list_databases.js
- jstests/core/profile1.js
- jstests/core/profile3.js
- jstests/core/views/views_stats.js
# These tests expect hardcoded count of write operations and this suite retries writes on
# migration conflict errors.
- jstests/core/operation_latency_histogram.js
- jstests/core/top.js
# The override cannot deep copy very large or small dates.
- jstests/core/index_large_and_small_dates.js
# These tests expect the profiler to observe batched write operations but batched writes are
# disabled in this suite.
- jstests/core/profile_insert.js
- jstests/core/profile_delete.js
- jstests/core/profile_findandmodify.js
- jstests/core/profile_update.js
# These tests are not expected to pass with replica-sets.
- jstests/core/opcounters_write_cmd.js
- jstests/core/read_after_optime.js
# This test expects that the connection (i.e. 'threadName') does not change throughout each test
# case. That is not always true when there is a background tenant migration.
- jstests/core/failcommand_failpoint.js
# The set_param1.js test attempts to compare the response from running the {getParameter: "*"}
# command multiple times, which may observe the change to the failpoint enabled by the migration
# hook.
- jstests/core/set_param1.js
# This test does not support tojson of command objects so the override cannot deep copy the
# command objects correctly.
- jstests/core/SERVER-23626.js
# These tests write with {w: 0} which doesn't wait for the storage transaction writing the
# document and the oplog entry to commit so the TenantMigrationConflict will not be caught.
- jstests/core/batch_write_command_w0.js
- jstests/core/crud_api.js
# These tests use benchRun which does not use runCommand.
- jstests/core/bench_test1.js
- jstests/core/bench_test3.js
- jstests/core/benchrun_pipeline_updates.js
# This test uses exhaust which does not use runCommand.
- jstests/core/exhaust.js
# These tests use db._authOrThrow which does not use runCommand.
- jstests/core/auth1.js
- jstests/core/connection_status.js
- jstests/core/user_management_helpers.js
# These tests use legacy read mode which does not use runCommand.
- jstests/core/comment_field.js
- jstests/core/invalidated_legacy_cursors.js
executor:
archive:
hooks:
- CheckReplDBHash
- CheckReplOplogs
- ValidateCollections
config:
shell_options:
eval: >-
testingReplication = true;
load('jstests/libs/override_methods/inject_tenant_prefix.js');
global_vars:
TestData: &TestData
dbPrefix: "tenantMigrationDbPrefix_"
# TODO (SERVER-50494): Implement proxy's retry logic for batch write commands.
disableBatchWrites: true
readMode: commands
hooks:
- class: ContinuousTenantMigration
shell_options:
global_vars:
TestData: *TestData
# The CheckReplDBHash hook waits until all operations have replicated to and have been applied
# on the secondaries, so we run the ValidateCollections hook after it to ensure we're
# validating the entire contents of the collection.
- class: CheckReplOplogs
- class: CheckReplDBHash
- class: ValidateCollections
- class: CleanEveryN
# TODO (SERVER-49204): The ContinuousTenantMigration hook reuses TestData.dbPrefix hook for all
# migrations. Therefore, it needs to run the donorForgetMigration command after each migration
# (i.e. test) in order to make the subsequent migration not conflict with the one run by the
# previous test. Until we have the donorForgetMigration command, we need to specify n: 1 to
# clear the in-memory and persisted state for each migration.
n: 1
fixture:
class: ReplicaSetFixture
mongod_options:
set_parameters:
enableTestCommands: 1
enableTenantMigrations: true
failpoint.skipSendingRecipientSyncDataCommand:
mode: alwaysOn
num_nodes: 3
use_replica_set_connection_string: true
|