Skip to content

Commit 29e5ef7

Browse files
committed
test: disable historically flakey test until we can triage the cause
1 parent 63e8fb5 commit 29e5ef7

File tree

1 file changed

+134
-130
lines changed

1 file changed

+134
-130
lines changed

test/core/functional/rs_mocks/all_servers_close_tests.js

Lines changed: 134 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -165,145 +165,149 @@ describe('ReplSet All Servers Close (mocks)', function() {
165165
}
166166
});
167167

168-
it('Successfully come back from a dead replicaset that has been unavailable for a long time', {
169-
metadata: {
170-
requires: {
171-
generators: true,
172-
topology: 'single'
173-
}
174-
},
175-
176-
test: function(done) {
177-
var electionIds = [new ObjectId(), new ObjectId()];
178-
var die = false;
179-
180-
// Default message fields
181-
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
182-
setName: 'rs',
183-
setVersion: 1,
184-
electionId: electionIds[0],
185-
hosts: ['localhost:34000', 'localhost:34001', 'localhost:34002'],
186-
arbiters: ['localhost:34002']
187-
});
188-
189-
// Primary server states
190-
var primary = [
191-
Object.assign({}, defaultFields, {
192-
ismaster: true,
193-
secondary: false,
194-
me: 'localhost:34000',
195-
primary: 'localhost:34000',
196-
tags: { loc: 'ny' }
197-
})
198-
];
199-
200-
// Primary server states
201-
var firstSecondary = [
202-
Object.assign({}, defaultFields, {
203-
ismaster: false,
204-
secondary: true,
205-
me: 'localhost:34001',
206-
primary: 'localhost:34000',
207-
tags: { loc: 'sf' }
208-
})
209-
];
210-
211-
// Primary server states
212-
var arbiter = [
213-
Object.assign({}, defaultFields, {
214-
ismaster: false,
215-
secondary: false,
216-
arbiterOnly: true,
217-
me: 'localhost:34002',
218-
primary: 'localhost:34000'
219-
})
220-
];
221-
222-
// Boot the mock
223-
co(function*() {
224-
const primaryServer = yield mock.createServer(34000, 'localhost');
225-
const firstSecondaryServer = yield mock.createServer(34001, 'localhost');
226-
const arbiterServer = yield mock.createServer(34002, 'localhost');
227-
228-
primaryServer.setMessageHandler(request => {
229-
if (die) {
230-
request.connection.destroy();
231-
} else {
232-
var doc = request.document;
233-
if (doc.ismaster) {
234-
request.reply(primary[0]);
235-
}
236-
}
168+
// NOTE: notoriously flakey test, skipped until we have time to triage
169+
it.skip(
170+
'Successfully come back from a dead replicaset that has been unavailable for a long time',
171+
{
172+
metadata: {
173+
requires: {
174+
generators: true,
175+
topology: 'single'
176+
}
177+
},
178+
179+
test: function(done) {
180+
var electionIds = [new ObjectId(), new ObjectId()];
181+
var die = false;
182+
183+
// Default message fields
184+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
185+
setName: 'rs',
186+
setVersion: 1,
187+
electionId: electionIds[0],
188+
hosts: ['localhost:34000', 'localhost:34001', 'localhost:34002'],
189+
arbiters: ['localhost:34002']
237190
});
238191

239-
firstSecondaryServer.setMessageHandler(request => {
240-
if (die) {
241-
request.connection.destroy();
242-
} else {
243-
var doc = request.document;
244-
if (doc.ismaster) {
245-
request.reply(firstSecondary[0]);
192+
// Primary server states
193+
var primary = [
194+
Object.assign({}, defaultFields, {
195+
ismaster: true,
196+
secondary: false,
197+
me: 'localhost:34000',
198+
primary: 'localhost:34000',
199+
tags: { loc: 'ny' }
200+
})
201+
];
202+
203+
// Primary server states
204+
var firstSecondary = [
205+
Object.assign({}, defaultFields, {
206+
ismaster: false,
207+
secondary: true,
208+
me: 'localhost:34001',
209+
primary: 'localhost:34000',
210+
tags: { loc: 'sf' }
211+
})
212+
];
213+
214+
// Primary server states
215+
var arbiter = [
216+
Object.assign({}, defaultFields, {
217+
ismaster: false,
218+
secondary: false,
219+
arbiterOnly: true,
220+
me: 'localhost:34002',
221+
primary: 'localhost:34000'
222+
})
223+
];
224+
225+
// Boot the mock
226+
co(function*() {
227+
const primaryServer = yield mock.createServer(34000, 'localhost');
228+
const firstSecondaryServer = yield mock.createServer(34001, 'localhost');
229+
const arbiterServer = yield mock.createServer(34002, 'localhost');
230+
231+
primaryServer.setMessageHandler(request => {
232+
if (die) {
233+
request.connection.destroy();
234+
} else {
235+
var doc = request.document;
236+
if (doc.ismaster) {
237+
request.reply(primary[0]);
238+
}
246239
}
247-
}
248-
});
249-
250-
arbiterServer.setMessageHandler(request => {
251-
if (die) {
252-
request.connection.destroy();
253-
} else {
254-
var doc = request.document;
255-
if (doc.ismaster) {
256-
request.reply(arbiter[0]);
240+
});
241+
242+
firstSecondaryServer.setMessageHandler(request => {
243+
if (die) {
244+
request.connection.destroy();
245+
} else {
246+
var doc = request.document;
247+
if (doc.ismaster) {
248+
request.reply(firstSecondary[0]);
249+
}
257250
}
258-
}
259-
});
260-
261-
// Attempt to connect
262-
var server = new ReplSet(
263-
[
264-
{ host: 'localhost', port: 34000 },
265-
{ host: 'localhost', port: 34001 },
266-
{ host: 'localhost', port: 34002 }
267-
],
268-
{
269-
setName: 'rs',
270-
connectionTimeout: 5000,
271-
socketTimeout: 5000,
272-
haInterval: 100,
273-
size: 1
274-
}
275-
);
251+
});
252+
253+
arbiterServer.setMessageHandler(request => {
254+
if (die) {
255+
request.connection.destroy();
256+
} else {
257+
var doc = request.document;
258+
if (doc.ismaster) {
259+
request.reply(arbiter[0]);
260+
}
261+
}
262+
});
263+
264+
// Attempt to connect
265+
var server = new ReplSet(
266+
[
267+
{ host: 'localhost', port: 34000 },
268+
{ host: 'localhost', port: 34001 },
269+
{ host: 'localhost', port: 34002 }
270+
],
271+
{
272+
setName: 'rs',
273+
connectionTimeout: 5000,
274+
socketTimeout: 5000,
275+
haInterval: 100,
276+
size: 1
277+
}
278+
);
276279

277-
server.on('connect', function() {
278-
setTimeout(function() {
279-
die = true;
280+
server.on('connect', function() {
281+
setTimeout(function() {
282+
die = true;
280283

281-
var intervalId = setInterval(function() {
282-
server.command('admin.$cmd', { ismaster: true }, function() {});
283-
}, 500);
284+
var intervalId = setInterval(function() {
285+
server.command('admin.$cmd', { ismaster: true }, function() {});
286+
}, 500);
284287

285-
setTimeout(function() {
286-
die = false;
287288
setTimeout(function() {
288-
clearInterval(intervalId);
289-
290-
server.command('admin.$cmd', { ismaster: true }, function(err, r) {
291-
expect(r).to.exist;
292-
expect(err).to.be.null;
293-
expect(server.s.replicaSetState.primary).to.not.be.null;
294-
expect(server.s.replicaSetState.secondaries).to.have.length(1);
295-
expect(server.s.replicaSetState.arbiters).to.have.length(1);
289+
die = false;
290+
setTimeout(function() {
291+
clearInterval(intervalId);
292+
293+
server.command('admin.$cmd', { ismaster: true }, function(err, r) {
294+
expect(r).to.exist;
295+
expect(err).to.be.null;
296+
expect(server.s.replicaSetState.primary).to.not.be.null;
297+
expect(server.s.replicaSetState.secondaries).to.have.length(1);
298+
expect(server.s.replicaSetState.arbiters).to.have.length(1);
299+
300+
server.destroy();
301+
done();
302+
});
303+
}, 1500);
304+
}, 1000);
305+
}, 500);
306+
});
296307

297-
server.destroy();
298-
done();
299-
});
300-
}, 1500);
301-
}, 1000);
302-
}, 500);
308+
server.connect();
303309
});
304-
305-
server.connect();
306-
});
310+
}
307311
}
308-
});
312+
);
309313
});

0 commit comments

Comments
 (0)