VulpesOS/gaia/tests/jsmarionette/client/socket-retry-connect/test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

57 lines
1.4 KiB
JavaScript
Executable file

'use strict';
suite('socket retry connect', function() {
var PORT = 60012;
var assert = require('assert'),
subject = require('./index').waitForSocket,
net = require('net');
var _server;
function createServer(onConnect) {
onConnect = onConnect || function() {};
// saves reference to last server
return (_server = net.createServer(onConnect).listen(PORT));
}
teardown(function() {
// make sure we actually close the thing
try {
_server.close();
} catch (e) {}
});
function returnsSocket(callback) {
callback = callback || function() {};
return function(err, socket) {
assert.ok(!err, err && err.message);
assert.ok(socket instanceof net.Socket);
callback();
};
}
test('socket is open', function(done) {
var pending = 2;
function next() {
if (--pending === 0) {
done();
}
}
// verify that both the server gets hit and socket callback fires.
createServer(next);
subject({ port: PORT }, returnsSocket(next));
});
test('waits before connection is open', function(done) {
this.timeout('5s');
setTimeout(createServer, 575);
subject({ port: PORT }, returnsSocket(done));
});
test('fails to connect after retires', function(done) {
this.timeout('3s');
subject({ port: PORT, tries: 2 }, function(err) {
assert.ok(err);
assert.ok(err.message.match(/socket/));
done();
});
});
});