var Redis = require('../lib/client/Redis.js').Redis;
// var profiler = require('v8-profiler');
// profiler.startProfiling('redis');
// profiler.startProfiling('test');
//var OpalCredentialsProvider = require('../lib/opal/OpalCredentialsProvider.js').OpalCredentialsProvider;
var CredentialsProvider = require('../lib/credentials/CredentialsProvider.js').CredentialsProvider;
//var cred = new OpalCredentialsProvider('ddb.redis.edgeserver.onetapi.pl', 'edgeserver.edgeserver.onetapi.pl');
// profiler.stopProfiling('test');

var cred = new CredentialsProvider({
    hosts: [{
        host: 'localhost',
        port: 6379
    }, {
        host: '127.0.0.1',
        port: 6379
    }, {
        host: '127.0.0.1',
        port: 6379
    }],
    connections: 3,
     hbInterval: 4000,
        hbTimeout: 1000
});

var redisClient = new Redis(cred);
redisClient.onReady(function() {
        console.log('====> REDIS CLIENT READY <====');
});

// setTimeout(function() {
//     console.log('=========update > reduce connections to 2==========');
//     redisClient._onCredentialsChange(null, {
//         hosts: [{
//             host: 'localhost',
//             port: 6379
//         }, {
//             host: '127.0.0.1',
//             port: 6379
//         }, {
//             host: '127.0.0.1',
//             port: 6379
//         }],
//         connections: 3
//     });

//     redisClient.set('test', 123);
//     redisClient.set('test1', 123);
//     redisClient.set('atest2', 123);
//     redisClient.set('btest3', 123);
//     redisClient.set('ctest4', 123);
// }, 2000);

// setTimeout(function() {
//     console.log('=========update -> delete all ==========');
//     redisClient._onCredentialsChange(null, {
//         hosts: [],
//         connections: 0
//     });

//     console.log(redisClient.getStats());
// }, 4000);

// setTimeout(function() {
//     console.log('=========update -> add 127 && 127 && connection 3==========');
//     redisClient._onCredentialsChange(null, {
//         hosts: [{
//             host: 'localhost',
//             port: 6379
//         }, {
//             host: '127.0.0.1',
//             port: 6379
//         }, {
//             host: '127.0.0.1',
//             port: 6379
//         }],
//         hbInterval: 4000,
//         hbTimeout: 1000,
//         connections: 3
//     });
//     // console.log(redisClient.getStats());
// }, 6000);

// setTimeout(function() {
//     console.log('=========update -> del 127 ========== =====');
//     redisClient._onCredentialsChange(null, {
//         hosts: [{
//             host: 'localhost',
//             port: 6379
//         }, {
//             host: '127.0.0.1',
//             port: 6379
//         }],
//         hbInterval: false,
//         hbTimeout: false,
//         connections: 5
//     });

//     // console.log(redisClient.getStats());
// }, 10000);

setInterval(function() {
    redisClient.set('test', 123);
    console.log(redisClient.getStats(true), '<<--');
    //	console.log(redisClient._pools);
    //	redisClient.set('test', new Date().getTime());
    //	redisClient.publish('test', new Date().getTime())
}, 1801);
