blob: b026e57b6ac584937448e5237bfa27c0c000c9ad (
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
config_variables:
- &keyFile jstests/libs/authTestsKey
- &keyFileData Thiskeyisonlyforrunningthesuitewithauthenticationdontuseitinanytestsdirectly
- &authOptions
authenticationDatabase: admin
authenticationMechanism: SCRAM-SHA-256
password: *keyFileData
username: __system
test_kind: js_test
selector:
roots:
- jstests/core/**/*.js
exclude_files:
- jstests/core/txns/**/*.js
# Skip any tests that run with auth explicitly.
- jstests/core/*[aA]uth*.js
exclude_with_any_tags:
- assumes_standalone_mongod
# These tests run getMore commands which are not supported in the tenant migration passthrough.
- requires_getmore
# Due to background tenant migrations, operations in the main test shell are not guaranteed to
# be causally consistent with operations in a parallel shell. The reason is that
# TenantMigrationCommitted error is only thrown when the client does a write or a atClusterTime/
# afterClusterTime or linearlizable read. Therefore, one of shell may not be aware that the
# migration has occurred and would not forward the read/write command to the right replica set.
- uses_parallel_shell
# Profile settings are stored in-memory only so are not transferred to the recipient.
- requires_profiling
# capped collections are banned in Serverless
- requires_capped
# emptycapped command is blocked during tenant migration.
- requires_emptycapped
# Multi-updates that conflict with tenant migration are not retried by inject_tenant_prefix.js.
- requires_multi_updates
# Full validation can cause ongoing queries to fail. This can affect the tenant migration
# process.
- uses_full_validation
- tenant_migration_incompatible
- requires_timeseries # Tenant migration not supported
executor:
archive:
tests: true
hooks:
- CheckReplDBHash
- CheckReplOplogs
- ValidateCollections
config:
shell_options:
eval: >-
testingReplication = true;
load('jstests/libs/override_methods/inject_tenant_prefix.js');
jsTest.authenticate(db.getMongo());
global_vars:
TestData: &TestData
tenantId: "tenantMigrationTenantId"
auth: true
authMechanism: SCRAM-SHA-256
keyFile: *keyFile
keyFileData: *keyFileData
roleGraphInvalidationIsFatal: true
hooks:
- class: ContinuousTenantMigration
shell_options:
global_vars:
TestData:
<<: *TestData
authOptions: *authOptions
# 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
shell_options:
global_vars:
TestData: *TestData
- class: CheckReplDBHash
shell_options:
global_vars:
TestData: *TestData
- class: ValidateCollections
shell_options:
global_vars:
TestData: *TestData
- class: CleanEveryN
n: 20
fixture:
class: TenantMigrationFixture
common_mongod_options:
set_parameters:
enableTestCommands: 1
failpoint.abortTenantMigrationBeforeLeavingBlockingState:
mode:
activationProbability: 0.5
failpoint.pauseTenantMigrationBeforeLeavingBlockingState:
mode: alwaysOn
data:
blockTimeMS: 250
# To avoid routing commands in each test incorrectly, the ContinuousTenantMigration hook
# only runs donorForgetMigration against the donor of each migration when it is safe to do
# so. Therefore, the garbage collection delay doesn't need to be large.
tenantMigrationGarbageCollectionDelayMS: 1
ttlMonitorSleepSecs: 1
# Tenant migrations is not currently compatible with implicitly replicated retryable
# findAndModify images.
storeFindAndModifyImagesInSideCollection: false
tlsMode: allowTLS
tlsCAFile: jstests/libs/ca.pem
tlsAllowInvalidHostnames: ''
auth: ''
keyFile: *keyFile
per_mongod_options:
# Each entry is for a different replica set's extra mongod options.
- tlsCertificateKeyFile: jstests/libs/rs0.pem
- tlsCertificateKeyFile: jstests/libs/rs1.pem
num_replica_sets: 2
num_nodes_per_replica_set: 3
use_replica_set_connection_string: true
auth_options: *authOptions
|