
Added scripts that start two MaxScale on the same machine. This allows the cluster synchronization commands to be tested locally.
230 lines
7.7 KiB
JavaScript
230 lines
7.7 KiB
JavaScript
require('../test_utils.js')()
|
|
var cluster = require('../lib/cluster.js')
|
|
|
|
describe('Cluster Command Internals', function() {
|
|
before(startMaxScale)
|
|
|
|
it('detect added and removed objects', function() {
|
|
var a = [
|
|
{
|
|
'id': 'server1',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3000
|
|
}
|
|
}
|
|
}
|
|
]
|
|
|
|
var b = [
|
|
{
|
|
'id': 'server1',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3000
|
|
}
|
|
}
|
|
},
|
|
{
|
|
'id': 'server2',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3001
|
|
}
|
|
}
|
|
}
|
|
]
|
|
|
|
var c = [
|
|
{
|
|
'id': 'server1',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3000
|
|
}
|
|
}
|
|
},
|
|
{
|
|
'id': 'server3',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3002
|
|
}
|
|
}
|
|
}
|
|
]
|
|
cluster.getDifference(b, a)[0].id.should.equal('server2')
|
|
cluster.getDifference(c, a)[0].id.should.equal('server3')
|
|
cluster.getDifference(a, b).should.be.empty
|
|
cluster.getDifference(a, c).should.be.empty
|
|
cluster.getDifference(b, c)[0].id.should.equal('server2')
|
|
cluster.getDifference(c, b)[0].id.should.equal('server3')
|
|
cluster.getDifference(a, a).should.be.empty
|
|
cluster.getDifference(b, b).should.be.empty
|
|
cluster.getDifference(c, c).should.be.empty
|
|
})
|
|
|
|
it('detect changes in objects', function() {
|
|
var a = [
|
|
{
|
|
'id': 'server1',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3000
|
|
}
|
|
}
|
|
}
|
|
]
|
|
|
|
var b = [
|
|
{
|
|
'id': 'server1',
|
|
'type': 'servers',
|
|
'attributes': {
|
|
'parameters': {
|
|
'address': '127.0.0.1',
|
|
'port': 3001
|
|
}
|
|
}
|
|
}
|
|
]
|
|
|
|
cluster.getDifference(a, b).should.be.empty
|
|
cluster.getDifference(b, a).should.be.empty
|
|
cluster.getDifference(a, a).should.be.empty
|
|
cluster.getDifference(b, b).should.be.empty
|
|
var obj = cluster.getChangedObjects(a, b)[0]
|
|
obj.id.should.equal('server1')
|
|
obj.attributes.parameters.port.should.equal(3000)
|
|
})
|
|
|
|
it('detect extra services', function() {
|
|
var a = {
|
|
'services': {
|
|
data: [
|
|
{
|
|
'id': 'CLI',
|
|
'type': 'services',
|
|
'attributes': {
|
|
'parameters': {}
|
|
},
|
|
'relationships': {},
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
var b = {
|
|
'services': {
|
|
data: [
|
|
a.services.data[0],
|
|
{
|
|
'id': 'CLI2',
|
|
'type': 'services',
|
|
'attributes': {
|
|
'parameters': {
|
|
|
|
},
|
|
},
|
|
'relationships': {},
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
cluster.haveExtraServices(a, b).should.be.true
|
|
cluster.haveExtraServices(a, a).should.be.false
|
|
cluster.haveExtraServices(b, b).should.be.false
|
|
})
|
|
|
|
after(stopMaxScale)
|
|
});
|
|
|
|
|
|
describe('Cluster Commands', function() {
|
|
before(startDoubleMaxScale)
|
|
|
|
it('sync after server creation', function() {
|
|
return doCommand('create server server5 127.0.0.1 3003 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'servers/server5'))
|
|
.should.be.resolved
|
|
})
|
|
|
|
it('sync after server alteration', function() {
|
|
return doCommand('alter server server2 port 3000 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'servers/server2'))
|
|
.then(function(res) {
|
|
res.data.attributes.parameters.port.should.equal(3000)
|
|
})
|
|
})
|
|
|
|
it('sync after server deletion', function() {
|
|
return doCommand('destroy server server5 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'servers/server5'))
|
|
.should.be.rejected
|
|
})
|
|
|
|
it('sync after monitor creation', function() {
|
|
return doCommand('create monitor my-monitor-2 mysqlmon --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'monitors/my-monitor2'))
|
|
.should.be.resolved
|
|
})
|
|
|
|
it('sync after monitor alteration', function() {
|
|
return doCommand('alter monitor MySQL-Monitor monitor_interval 12345 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'monitors/MySQL-Monitor'))
|
|
.then(function(res) {
|
|
res.data.attributes.parameters.monitor_interval.should.equal(12345)
|
|
})
|
|
})
|
|
|
|
it('sync after monitor deletion', function() {
|
|
return doCommand('destroy monitor my-monitor-2 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'monitors/my-monitor-2'))
|
|
.should.be.rejected
|
|
})
|
|
|
|
it('sync listener creation', function() {
|
|
return doCommand('create listener RW-Split-Router my-listener-2 5999 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'services/RW-Split-Router/listeners/my-listener-2'))
|
|
.should.be.resolved
|
|
})
|
|
|
|
it('sync after service alteration', function() {
|
|
return doCommand('alter service RW-Split-Router enable_root_user true --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'services/RW-Split-Router'))
|
|
.then(function(res) {
|
|
res.data.attributes.parameters.enable_root_user.should.be.true
|
|
})
|
|
})
|
|
|
|
it('sync after listener deletion', function() {
|
|
return doCommand('destroy listener RW-Split-Router my-listener-2 --hosts 127.0.0.1:8990')
|
|
.then(() => verifyCommand('cluster sync 127.0.0.1:8990 --hosts 127.0.0.1:8989',
|
|
'services/RW-Split-Router/listeners/my-listener-2'))
|
|
.should.be.rejected
|
|
})
|
|
|
|
after(stopDoubleMaxScale)
|
|
})
|