Skip to content

Commit f69bdec

Browse files
committed
SERVER-42476 Improve free monitoring tests
1 parent 821f1a2 commit f69bdec

11 files changed

+62
-31
lines changed

jstests/free_mon/free_mon_http_down.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ const admin = conn.getDB('admin');
2121

2222
mock_web.waitRegisters(3);
2323

24-
const freeMonStats = assert.commandWorked(admin.runCommand({serverStatus: 1})).freeMonitoring;
25-
assert.gte(freeMonStats.registerErrors, 3);
24+
assert.soon(function() {
25+
const freeMonStats = FreeMonGetServerStatus(conn);
26+
return freeMonStats.registerErrors >= 3;
27+
}, "Failed to wait for 3 register errors: " + FreeMonGetServerStatus(conn), 20 * 1000);
2628

2729
MongoRunner.stopMongod(conn);
2830

jstests/free_mon/free_mon_metrics_halt.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ assert.neq(null, conn, 'mongod was unable to start up');
2121
mock_web.waitMetrics(6);
2222

2323
// It gets marked as disabled on halt
24-
const reg = FreeMonGetRegistration(conn);
25-
print(tojson(reg));
26-
assert.eq(reg.state, "disabled");
24+
WaitForUnRegistration(conn);
2725

2826
MongoRunner.stopMongod(conn);
2927

jstests/free_mon/free_mon_metrics_perm_del.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,13 @@ assert.neq(null, conn, 'mongod was unable to start up');
2121
mock_web.waitMetrics(4);
2222

2323
// Make sure the registration document gets removed
24-
const reg = FreeMonGetRegistration(conn);
25-
print(tojson(reg));
26-
assert.eq(reg, undefined);
24+
assert.soon(
25+
function() {
26+
const reg = FreeMonGetRegistration(conn);
27+
return reg === undefined;
28+
},
29+
"Failed to wait for free mon document to be removed: " + FreeMonGetRegistration(conn),
30+
20 * 1000);
2731

2832
MongoRunner.stopMongod(conn);
2933

jstests/free_mon/free_mon_register_cmd.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ assert.eq(0, mock_web.queryStats().registers, "mongod registered without enablin
2828

2929
assert.commandWorked(conn.adminCommand({setFreeMonitoring: 1, action: "enable"}));
3030

31+
WaitForFreeMonServerStatusState(conn, 'enabled');
32+
3133
// The command should either timeout or suceed after registration is complete
3234
const retStatus1 = conn.adminCommand({getFreeMonitoringStatus: 1});
3335
assert.commandWorked(retStatus1);

jstests/free_mon/free_mon_rs_delete.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,26 @@ WaitForRegistration(rst.getSecondary());
2929

3030
const qs1 = mock_web.queryStats();
3131

32+
jsTestLog("Breaking Free Monitoring");
33+
3234
// For kicks, delete the free monitoring storage state to knock free mon offline
3335
// and make sure the node does not crash
3436
rst.getPrimary().getDB("admin").system.version.remove({_id: "free_monitoring"});
3537

38+
jsTestLog("Sleeping for 20s");
3639
sleep(20 * 1000);
3740

3841
const qs2 = mock_web.queryStats();
3942

43+
// Make sure we are back to the initial state.
44+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'undecided');
45+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'undecided');
46+
4047
// Verify free monitoring stops but tolerate one additional collection
4148
assert.gte(qs1.metrics + 2, qs2.metrics);
42-
assert.eq(qs1.registers, qs2.registers);
43-
44-
// Make sure we are back to the initial state.
45-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'undecided');
46-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'undecided');
49+
// Tolerate an additional registration on the secondary side. We may delete the record on the
50+
// primary before the secondary processes all pending registrations requests.
51+
assert.lte(qs1.registers, qs2.registers);
4752

4853
// Enable it again to be sure we can resume
4954
assert.commandWorked(rst.getPrimary().adminCommand({setFreeMonitoring: 1, action: "enable"}));

jstests/free_mon/free_mon_rs_halt.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ WaitForRegistration(rst.getPrimary());
2323

2424
mock_web.waitRegisters(2);
2525

26-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'enabled');
27-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'enabled');
26+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'enabled');
27+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'enabled');
2828

2929
mock_web.enableFaults();
3030
mock_web.waitFaults(1);
@@ -40,8 +40,8 @@ assert.gte(qs1.metrics + 1, qs2.metrics);
4040
assert.eq(qs1.registers, qs2.registers);
4141

4242
// Halt causes us to disable free monitoring, not return it to initial state.
43-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'disabled');
44-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'disabled');
43+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'disabled');
44+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'disabled');
4545

4646
// Disable the fault so we can re-enable again
4747
mock_web.disableFaults();
@@ -53,8 +53,8 @@ WaitForRegistration(rst.getSecondary());
5353

5454
sleep(20 * 1000);
5555

56-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'enabled');
57-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'enabled');
56+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'enabled');
57+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'enabled');
5858

5959
rst.stopSet();
6060

jstests/free_mon/free_mon_rs_perm_del.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ mock_web.waitFaults(1);
3333
sleep(20 * 1000);
3434

3535
// Make sure we are back to the initial state.
36-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'undecided');
37-
38-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'undecided');
36+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'undecided');
37+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'undecided');
3938

4039
// Disable the fault so we can re-enable again
4140
mock_web.disableFaults();
@@ -47,8 +46,8 @@ WaitForRegistration(rst.getSecondary());
4746

4847
sleep(20 * 1000);
4948

50-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'enabled');
51-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'enabled');
49+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'enabled');
50+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'enabled');
5251

5352
rst.stopSet();
5453

jstests/free_mon/free_mon_rs_register.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ assert.commandWorked(rst.getPrimary().adminCommand({setFreeMonitoring: 1, action
7272
WaitForUnRegistration(rst.getPrimary());
7373
WaitForUnRegistration(rst.getSecondary());
7474

75-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'disabled');
76-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'disabled');
75+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'disabled');
76+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'disabled');
7777

7878
// Restart the secondary with it disabled
7979
var s1 = rst._slaves[0];
@@ -85,8 +85,8 @@ rst.waitForState(s1, ReplSetTest.State.DOWN);
8585
rst.restart(s1Id);
8686

8787
// Make sure it is disabled
88-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'disabled');
89-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'disabled');
88+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'disabled');
89+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'disabled');
9090

9191
rst.stopSet();
9292

jstests/free_mon/free_mon_rs_resend.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ WaitForRegistration(rst.getPrimary());
3939
mock_web.waitRegisters(1);
4040
mock_web_sec.waitRegisters(1);
4141

42-
assert.eq(FreeMonGetServerStatus(rst.getPrimary()).state, 'enabled');
43-
assert.eq(FreeMonGetServerStatus(rst.getSecondary()).state, 'enabled');
42+
WaitForFreeMonServerStatusState(rst.getPrimary(), 'enabled');
43+
WaitForFreeMonServerStatusState(rst.getSecondary(), 'enabled');
4444

4545
mock_web.waitRegisters(2);
4646
mock_web_sec.waitRegisters(2);

jstests/free_mon/free_mon_server_status.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ assert.eq(enabled.metricsErrors, 0);
3434

3535
// Explicitly disabled.
3636
admin.disableFreeMonitoring();
37-
sleep(2); // Give the async command time to run.
37+
38+
WaitForFreeMonServerStatusState(mongod, "disabled");
3839

3940
const disabled = freeMonStats();
4041
assert.eq(disabled.state, 'disabled');

0 commit comments

Comments
 (0)