MXS-1300: Add server state manipulation test

The test sets and clears server states and verifies it via the REST
API. It also checks that only correct arguments are accepted.
This commit is contained in:
Markus Mäkelä 2017-07-14 19:30:07 +03:00
parent 18f05578c3
commit aabbf64991
2 changed files with 71 additions and 10 deletions

47
maxctrl/test/states.js Normal file
View File

@ -0,0 +1,47 @@
require('../test_utils.js')()
describe("Server states", function() {
before(function() {
return startMaxScale()
.then(function() {
return request.put(host + 'monitors/MySQL-Monitor/stop')
})
})
var ctrl = require('../core.js')
var opts = {
extra_args: [ '--quiet']
}
it('set correct state', function() {
return ctrl.execute('set server server2 master'.split(' '), opts)
.then(function() {
return request.get(host + 'servers/server2', {json: true})
})
.then(function(res) {
res.data.attributes.state.should.match(/Master/)
})
})
it('clear correct state', function() {
return ctrl.execute('clear server server2 master'.split(' '), opts)
.then(function() {
return request.get(host + 'servers/server2', {json: true})
})
.then(function(res) {
res.data.attributes.state.should.not.match(/Master/)
})
})
it('set incorrect state', function() {
return ctrl.execute('set server server2 something'.split(' '), opts)
.should.be.rejected
})
it('clear incorrect state', function() {
return ctrl.execute('clear server server2 something'.split(' '), opts)
.should.be.rejected
})
after(stopMaxScale)
});

View File

@ -1,6 +1,11 @@
var child_process = require("child_process")
module.exports = function() {
if (process.env.MAXSCALE_DIR == null) {
throw new Error("MAXSCALE_DIR is not set");
}
this.request = require("request-promise-native")
this.chai = require("chai")
this.assert = require("assert")
@ -8,19 +13,28 @@ module.exports = function() {
chai.use(chaiAsPromised)
this.should = chai.should()
this.expect = chai.expect
this.host = 'http://localhost:8989/v1/'
this.startMaxScale = function(done) {
child_process.execFile("./start_maxscale.sh", function(err, stdout, stderr) {
if (process.env.MAXSCALE_DIR == null) {
throw new Error("MAXSCALE_DIR is not set");
}
done()
this.startMaxScale = function() {
return new Promise(function(resolve, reject) {
child_process.execFile("./start_maxscale.sh", function(err, stdout, stderr) {
if (err) {
reject()
} else {
resolve()
}
})
})
};
this.stopMaxScale = function(done) {
child_process.execFile("./stop_maxscale.sh", function(err, stdout, stderr) {
done()
this.stopMaxScale = function() {
return new Promise(function(resolve, reject) {
child_process.execFile("./stop_maxscale.sh", function(err, stdout, stderr) {
if (err) {
reject()
} else {
resolve()
}
})
})
};
}