UNPKG

@northscaler/redis-test-support

Version:

Redis Node.js Development Test Support Library

46 lines (38 loc) 5.56 kB
'use strict'; 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