sundry
Version:
A dynamically configurable, load balancing, reverse proxy.
79 lines (71 loc) • 2.43 kB
JavaScript
var expect = require('chai').expect;
var path = require('path')
var mockRedis = require('./mocks/Redis_mock');
var Router = require(path.join(process.cwd(), 'lib/Router/RobinRouter'))
describe("Round Robin Router", function() {
describe("Host lookup", function(){
var router = new Router({client: mockRedis})
it('Should find the host',function(done){
router.findRoute('a.test.host', null, function(route){
expect(route.host).to.equal('127.0.0.1')
expect(route.port).to.equal('10000')
done()
})
});
it('Should load balance', function(done){
var count = 4
var callDone = function(){
if(!(count -= 1)) {
done()
}
};
router.findRoute('c.test.host',null, function(route){
expect(route.host).to.equal('127.0.0.1')
expect(route.port).to.equal('30000')
callDone()
});
router.findRoute('c.test.host',null, function(route){
expect(route.host).to.equal('127.0.0.1')
expect(route.port).to.equal('30001')
callDone()
});
router.findRoute('c.test.host',null, function(route){
expect(route.host).to.equal('127.0.0.1')
expect(route.port).to.equal('30002')
callDone()
});
router.findRoute('c.test.host',null, function(route){
expect(route.host).to.equal('127.0.0.1')
expect(route.port).to.equal('30000')
callDone()
});
})
});
describe('Caching', function(){
var router = new Router({client: mockRedis, ttl: .4})
it("Should cache the host provided", function(){
var cached = router.cacheRoute("an.added.host", ["127.0.0.1:8000"])
expect(cached.routes).to.be.a('array')
expect(cached.routes.length).to.equal(1)
});
it("Retrieves the previously cached host", function(done){
router.findRoute('an.added.host',null, function(route){
expect(route.host).to.equal('127.0.0.1')
expect(route.port).to.equal('8000')
done()
})
});
it("Routes expire when they should.", function(done){
setTimeout(function(){
var route = router.getHost('an.added.host');
console.log(route);
expect(route).to.equal(null)
//router.findRoute('an.added.host',null, function(route){
// expect(route).to.equal(false)
// done()
//})
done()
}, 500)
})
})
});