The test suite now works with remote servers and is now fully integrated to the regression test suite.
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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})
 | 
						|
            })
 | 
						|
    };
 | 
						|
}
 |