Improve MaxCtrl test coverage

Added tests that cover areas that weren't tested before.
This commit is contained in:
Markus Mäkelä 2018-08-09 11:16:24 +03:00
parent 1447ac2eb9
commit ccdf1c5679
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19
3 changed files with 78 additions and 0 deletions

51
maxctrl/test/api.js Normal file
View File

@ -0,0 +1,51 @@
require('../test_utils.js')()
describe("API", function() {
before(startMaxScale)
it('gets resource', function() {
return doCommand('api get servers')
.should.be.fulfilled
})
it('gets resource with path', function() {
return doCommand('api get servers data[0].id')
.then((res) => {
js = JSON.parse(res)
js.should.equal("server1")
})
})
it('sums integer values', function() {
return doCommand('api get servers data[].attributes.statistics.connections --sum')
.then((res) => {
js = JSON.parse(res)
js.should.equal(0)
})
})
it('does not sum string values', function() {
return doCommand('api get servers data[].id --sum')
.then((res) => {
js = JSON.parse(res)
js.should.deep.equal(["server1", "server2", "server3", "server4"])
})
})
it('does not sum objects', function() {
return doCommand('api get servers --sum')
.should.be.fulfilled
})
it('does not sum undefined objects', function() {
return doCommand('api get servers asdf --sum')
.should.be.fulfilled
})
it('ignores unknown command', function() {
return doCommand('api upgrade')
.should.be.rejected
})
after(stopMaxScale)
});

19
maxctrl/test/drain.js Normal file
View File

@ -0,0 +1,19 @@
require('../test_utils.js')()
describe("Draining servers", function() {
before(startMaxScale)
it('drains server', function() {
return doCommand('drain server server1')
.should.be.fulfilled
})
it('checks server is in maintenance', function() {
// The maintenance state isn't set instantly
return sleepFor(2000)
.then(() => doCommand('api get servers/server1 data.attributes.state'))
.should.eventually.have.string("Maintenance")
})
after(stopMaxScale)
});

View File

@ -88,4 +88,12 @@ module.exports = function() {
return request.get(host + resource, {json: true})
})
};
this.sleepFor = function(time) {
return new Promise((resolve, reject) => {
var timer = setInterval(() => {
resolve()
}, time)
})
}
}