@northscaler/redis-test-support
Version:
Redis Node.js Development Test Support Library
46 lines (38 loc) • 5.56 kB
JavaScript
;
const fs = require('fs');
const Redis = require('redis');
const startRedis = require('./start-redis');
const defaultPort = parseInt(fs.readFileSync(`${__dirname}/default-redis-test-port`));
const defaultContainerName = fs.readFileSync(`${__dirname}/default-redis-test-container`).toString('utf8').trim();
let client;
async function redisConnect({
// redis.creatClient opts
port = defaultPort
} = {}, {
// redisConnect opts
waitUntilReady = true
} = {}) {
if (client) return client;
let start = Date.now();
if (!process.env.CI) {
await startRedis();
console.log(`started redis container in ${Date.now() - start} ms`);
} else {
console.log('skipped launching container');
}
arguments[0] = arguments[0] || {};
arguments[0].port = arguments[0].port || defaultPort;
start = Date.now();
client = Redis.createClient(arguments[0]);
return waitUntilReady ? new Promise((resolve, reject) => {
client.on('error', reject);
client.on('ready', () => {
console.log(`connected to redis in ${Date.now() - start} ms`);
resolve(client);
});
}) : client;
}
redisConnect.defaultPort = defaultPort;
redisConnect.defaultContainerName = defaultContainerName;
module.exports = redisConnect;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWRpcy9yZWRpcy1jb25uZWN0LmpzIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsIlJlZGlzIiwic3RhcnRSZWRpcyIsImRlZmF1bHRQb3J0IiwicGFyc2VJbnQiLCJyZWFkRmlsZVN5bmMiLCJfX2Rpcm5hbWUiLCJkZWZhdWx0Q29udGFpbmVyTmFtZSIsInRvU3RyaW5nIiwidHJpbSIsImNsaWVudCIsInJlZGlzQ29ubmVjdCIsInBvcnQiLCJ3YWl0VW50aWxSZWFkeSIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInByb2Nlc3MiLCJlbnYiLCJDSSIsImNvbnNvbGUiLCJsb2ciLCJhcmd1bWVudHMiLCJjcmVhdGVDbGllbnQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsTUFBTUEsRUFBRSxHQUFHQyxPQUFPLENBQUMsSUFBRCxDQUFsQjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxPQUFELENBQXJCOztBQUVBLE1BQU1FLFVBQVUsR0FBR0YsT0FBTyxDQUFDLGVBQUQsQ0FBMUI7O0FBRUEsTUFBTUcsV0FBVyxHQUFHQyxRQUFRLENBQUNMLEVBQUUsQ0FBQ00sWUFBSCxDQUFpQixHQUFFQyxTQUFVLDBCQUE3QixDQUFELENBQTVCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUdSLEVBQUUsQ0FBQ00sWUFBSCxDQUFpQixHQUFFQyxTQUFVLCtCQUE3QixFQUE2REUsUUFBN0QsQ0FBc0UsTUFBdEUsRUFBOEVDLElBQTlFLEVBQTdCO0FBRUEsSUFBSUMsTUFBSjs7QUFFQSxlQUFlQyxZQUFmLENBQTZCO0FBQUU7QUFDN0JDLEVBQUFBLElBQUksR0FBR1Q7QUFEb0IsSUFFekIsRUFGSixFQUVRO0FBQUU7QUFDUlUsRUFBQUEsY0FBYyxHQUFHO0FBRFgsSUFFSixFQUpKLEVBSVE7QUFDTixNQUFJSCxNQUFKLEVBQVksT0FBT0EsTUFBUDtBQUVaLE1BQUlJLEtBQUssR0FBR0MsSUFBSSxDQUFDQyxHQUFMLEVBQVo7O0FBQ0EsTUFBSSxDQUFDQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsRUFBakIsRUFBcUI7QUFDbkIsVUFBTWpCLFVBQVUsRUFBaEI7QUFDQWtCLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFhLDhCQUE2Qk4sSUFBSSxDQUFDQyxHQUFMLEtBQWFGLEtBQU0sS0FBN0Q7QUFDRCxHQUhELE1BR087QUFDTE0sSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksNkJBQVo7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxDQUFDLENBQUQsQ0FBVCxHQUFlQSxTQUFTLENBQUMsQ0FBRCxDQUFULElBQWdCLEVBQS9CO0FBQ0FBLEVBQUFBLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYVYsSUFBYixHQUFvQlUsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhVixJQUFiLElBQXFCVCxXQUF6QztBQUVBVyxFQUFBQSxLQUFLLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxFQUFSO0FBQ0FOLEVBQUFBLE1BQU0sR0FBR1QsS0FBSyxDQUFDc0IsWUFBTixDQUFtQkQsU0FBUyxDQUFDLENBQUQsQ0FBNUIsQ0FBVDtBQUVBLFNBQU9ULGNBQWMsR0FDakIsSUFBSVcsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNqQ2hCLElBQUFBLE1BQU0sQ0FBQ2lCLEVBQVAsQ0FBVSxPQUFWLEVBQW1CRCxNQUFuQjtBQUNBaEIsSUFBQUEsTUFBTSxDQUFDaUIsRUFBUCxDQUFVLE9BQVYsRUFBbUIsTUFBTTtBQUN2QlAsTUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEseUJBQXdCTixJQUFJLENBQUNDLEdBQUwsS0FBYUYsS0FBTSxLQUF4RDtBQUNBVyxNQUFBQSxPQUFPLENBQUNmLE1BQUQsQ0FBUDtBQUNELEtBSEQ7QUFJRCxHQU5DLENBRGlCLEdBUWpCQSxNQVJKO0FBU0Q7O0FBRURDLFlBQVksQ0FBQ1IsV0FBYixHQUEyQkEsV0FBM0I7QUFDQVEsWUFBWSxDQUFDSixvQkFBYixHQUFvQ0Esb0JBQXBDO0FBRUFxQixNQUFNLENBQUNDLE9BQVAsR0FBaUJsQixZQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcbmNvbnN0IFJlZGlzID0gcmVxdWlyZSgncmVkaXMnKVxuXG5jb25zdCBzdGFydFJlZGlzID0gcmVxdWlyZSgnLi9zdGFydC1yZWRpcycpXG5cbmNvbnN0IGRlZmF1bHRQb3J0ID0gcGFyc2VJbnQoZnMucmVhZEZpbGVTeW5jKGAke19fZGlybmFtZX0vZGVmYXVsdC1yZWRpcy10ZXN0LXBvcnRgKSlcbmNvbnN0IGRlZmF1bHRDb250YWluZXJOYW1lID0gZnMucmVhZEZpbGVTeW5jKGAke19fZGlybmFtZX0vZGVmYXVsdC1yZWRpcy10ZXN0LWNvbnRhaW5lcmApLnRvU3RyaW5nKCd1dGY4JykudHJpbSgpXG5cbmxldCBjbGllbnRcblxuYXN5bmMgZnVuY3Rpb24gcmVkaXNDb25uZWN0ICh7IC8vIHJlZGlzLmNyZWF0Q2xpZW50IG9wdHNcbiAgcG9ydCA9IGRlZmF1bHRQb3J0XG59ID0ge30sIHsgLy8gcmVkaXNDb25uZWN0IG9wdHNcbiAgd2FpdFVudGlsUmVhZHkgPSB0cnVlXG59ID0ge30pIHtcbiAgaWYgKGNsaWVudCkgcmV0dXJuIGNsaWVudFxuXG4gIGxldCBzdGFydCA9IERhdGUubm93KClcbiAgaWYgKCFwcm9jZXNzLmVudi5DSSkge1xuICAgIGF3YWl0IHN0YXJ0UmVkaXMoKVxuICAgIGNvbnNvbGUubG9nKGBzdGFydGVkIHJlZGlzIGNvbnRhaW5lciBpbiAke0RhdGUubm93KCkgLSBzdGFydH0gbXNgKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdza2lwcGVkIGxhdW5jaGluZyBjb250YWluZXInKVxuICB9XG5cbiAgYXJndW1lbnRzWzBdID0gYXJndW1lbnRzWzBdIHx8IHt9XG4gIGFyZ3VtZW50c1swXS5wb3J0ID0gYXJndW1lbnRzWzBdLnBvcnQgfHwgZGVmYXVsdFBvcnRcblxuICBzdGFydCA9IERhdGUubm93KClcbiAgY2xpZW50ID0gUmVkaXMuY3JlYXRlQ2xpZW50KGFyZ3VtZW50c1swXSlcblxuICByZXR1cm4gd2FpdFVudGlsUmVhZHlcbiAgICA/IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNsaWVudC5vbignZXJyb3InLCByZWplY3QpXG4gICAgICBjbGllbnQub24oJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhgY29ubmVjdGVkIHRvIHJlZGlzIGluICR7RGF0ZS5ub3coKSAtIHN0YXJ0fSBtc2ApXG4gICAgICAgIHJlc29sdmUoY2xpZW50KVxuICAgICAgfSlcbiAgICB9KVxuICAgIDogY2xpZW50XG59XG5cbnJlZGlzQ29ubmVjdC5kZWZhdWx0UG9ydCA9IGRlZmF1bHRQb3J0XG5yZWRpc0Nvbm5lY3QuZGVmYXVsdENvbnRhaW5lck5hbWUgPSBkZWZhdWx0Q29udGFpbmVyTmFtZVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZGlzQ29ubmVjdFxuIl19