diff --git a/maxctrl/test/states.js b/maxctrl/test/states.js new file mode 100644 index 000000000..bcd2a5e8b --- /dev/null +++ b/maxctrl/test/states.js @@ -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) +}); diff --git a/maxctrl/test_utils.js b/maxctrl/test_utils.js index aca8ee661..3fa90727b 100644 --- a/maxctrl/test_utils.js +++ b/maxctrl/test_utils.js @@ -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() + } + }) }) }; }