MaxScale/maxctrl/test_utils.js
Markus Mäkelä 938484a73e Allow remote server to be used for maxctrl test suite
The test suite now works with remote servers and is now fully integrated
to the regression test suite.
2017-10-12 13:16:12 +03:00

92 lines
2.8 KiB
JavaScript

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")
this.chaiAsPromised = require("chai-as-promised")
chai.use(chaiAsPromised)
this.should = chai.should()
this.expect = chai.expect
this.host = 'http://localhost:8989/v1/'
this.primary_host = '127.0.0.1:8989'
this.secondary_host = '127.0.0.1:8990'
if (process.env.maxscale2_API) {
this.secondary_host = process.env.maxscale2_API
}
// Start MaxScale, this should be called in the `before` handler of each test unit
this.startMaxScale = function() {
return new Promise(function(resolve, reject) {
child_process.execFile("./start_maxscale.sh", function(err, stdout, stderr) {
if (err) {
reject(err)
} else {
resolve()
}
})
})
};
// Start two MaxScales
this.startDoubleMaxScale = function() {
return new Promise(function(resolve, reject) {
child_process.execFile("./start_double_maxscale.sh", function(err, stdout, stderr) {
if (err) {
reject(err)
} else {
resolve()
}
})
})
};
// Stop MaxScale, this should be called in the `after` handler of each test unit
this.stopMaxScale = function() {
return new Promise(function(resolve, reject) {
child_process.execFile("./stop_maxscale.sh", function(err, stdout, stderr) {
if (err) {
reject(err)
} else {
resolve()
}
})
})
};
// Stop two MaxScales
this.stopDoubleMaxScale = function() {
return new Promise(function(resolve, reject) {
child_process.execFile("./stop_double_maxscale.sh", function(err, stdout, stderr) {
if (err) {
reject(err)
} else {
resolve()
}
})
})
};
// Execute a single MaxCtrl command, returns a Promise
this.doCommand = function(command) {
var ctrl = require('./lib/core.js')
return ctrl.execute(command.split(' '))
}
// Execute a single MaxCtrl command and request a resource via the REST API,
// returns a Promise with the JSON format resource as an argument
this.verifyCommand = function(command, resource) {
return doCommand(command)
.then(function() {
return request.get(host + resource, {json: true})
})
};
}