
If a listener is defined in a static configuration file, it can now be destroyed at runtime. If MaxScale is restarted, the listener will be created again unless the configuration file is modified.
173 lines
6.8 KiB
JavaScript
173 lines
6.8 KiB
JavaScript
require("../utils.js")()
|
|
|
|
describe("Service", function() {
|
|
before(startMaxScale)
|
|
|
|
it("change service parameter", function() {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.attributes.parameters.enable_root_user = true
|
|
return request.patch(base_url + "/services/RW-Split-Router", {json: svc})
|
|
})
|
|
.then(function(resp) {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
})
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.attributes.parameters.enable_root_user.should.be.true
|
|
})
|
|
});
|
|
|
|
|
|
it("missing relationships are not removed", function() {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
delete svc.data.relationships["servers"]
|
|
return request.patch(base_url + "/services/RW-Split-Router", {json: svc})
|
|
})
|
|
.then(function(resp) {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
})
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.relationships.should.not.be.empty
|
|
})
|
|
});
|
|
|
|
it("remove service relationship", function() {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.relationships.servers.data = null
|
|
return request.patch(base_url + "/services/RW-Split-Router", {json: svc})
|
|
})
|
|
.then(function(resp) {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
})
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.relationships.should.be.empty
|
|
})
|
|
});
|
|
|
|
it("add service relationship", function() {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.relationships = {
|
|
servers: {
|
|
data: [
|
|
{id: "server1", type: "servers"},
|
|
{id: "server2", type: "servers"},
|
|
{id: "server3", type: "servers"},
|
|
{id: "server4", type: "servers"},
|
|
]
|
|
}
|
|
}
|
|
|
|
return request.patch(base_url + "/services/RW-Split-Router", {json: svc})
|
|
})
|
|
.then(function(resp) {
|
|
return request.get(base_url + "/services/RW-Split-Router")
|
|
})
|
|
.then(function(resp) {
|
|
var svc = JSON.parse(resp)
|
|
svc.data.relationships.servers.data[0].id.should.be.equal("server1")
|
|
})
|
|
});
|
|
|
|
it("bad request body with `relationships` endpoint should be rejected", function() {
|
|
return request.patch(base_url + "/services/RW-Split-Router/relationships/servers", {json: {servers: null}})
|
|
.should.be.rejected
|
|
})
|
|
|
|
it("remove service→server relationship via `relationships` endpoint", function() {
|
|
return request.patch(base_url + "/services/RW-Split-Router/relationships/servers", { json: {data: null}})
|
|
.then(() => request.get(base_url + "/services/RW-Split-Router", { json: true }))
|
|
.then((res) => {
|
|
res.data.relationships.should.not.have.keys("servers")
|
|
})
|
|
});
|
|
|
|
it("add service→server relationship via `relationships` endpoint", function() {
|
|
return request.patch(base_url + "/services/RW-Split-Router/relationships/servers",
|
|
{ json: { data: [
|
|
{id: "server1", type: "servers"},
|
|
{id: "server2", type: "servers"},
|
|
{id: "server3", type: "servers"},
|
|
{id: "server4", type: "servers"},
|
|
]}})
|
|
.then(() => request.get(base_url + "/services/RW-Split-Router", { json: true}))
|
|
.then((res) => {
|
|
res.data.relationships.servers.data.should.have.lengthOf(4)
|
|
})
|
|
});
|
|
|
|
it("add service→filter relationship via `relationships` endpoint", function() {
|
|
return request.patch(base_url + "/services/RW-Split-Router/relationships/filters",
|
|
{ json: { data: [
|
|
{id: "QLA", type: "filters"},
|
|
]}})
|
|
.then(() => request.get(base_url + "/services/RW-Split-Router", { json: true}))
|
|
.then((res) => {
|
|
res.data.relationships.filters.data.should.have.lengthOf(1)
|
|
})
|
|
});
|
|
|
|
it("remove service→filter relationship via `relationships` endpoint", function() {
|
|
return request.patch(base_url + "/services/RW-Split-Router/relationships/filters",
|
|
{ json: { data: null}})
|
|
.then(() => request.get(base_url + "/services/RW-Split-Router", { json: true}))
|
|
.then((res) => {
|
|
res.data.relationships.should.not.have.keys("filters")
|
|
})
|
|
});
|
|
|
|
const listener = {
|
|
"links": {
|
|
"self": "http://localhost:8989/v1/services/RW-Split-Router/listeners"
|
|
},
|
|
"data": {
|
|
"attributes": {
|
|
"parameters": {
|
|
"port": 4012,
|
|
"protocol": "MariaDBClient",
|
|
"authenticator": "MySQLAuth",
|
|
"address": "127.0.0.1"
|
|
}
|
|
},
|
|
"id": "RW-Split-Listener-2",
|
|
"type": "listeners"
|
|
}
|
|
}
|
|
|
|
it("create a listener", function() {
|
|
return request.post(base_url + "/services/RW-Split-Router/listeners", {json: listener})
|
|
.should.be.fulfilled
|
|
});
|
|
|
|
it("create an already existing listener", function() {
|
|
return request.post(base_url + "/services/RW-Split-Router/listeners", {json: listener})
|
|
.should.be.rejected
|
|
});
|
|
|
|
it("destroy a listener", function() {
|
|
return request.delete(base_url + "/services/RW-Split-Router/listeners/RW-Split-Listener-2")
|
|
.should.be.fulfilled
|
|
});
|
|
|
|
it("destroy a nonexistent listener", function() {
|
|
return request.delete(base_url + "/services/RW-Split-Router/listeners/I-bet-this-listener-exists")
|
|
.should.be.rejected
|
|
});
|
|
|
|
it("destroy a static listener", function() {
|
|
return request.delete(base_url + "/services/RW-Split-Router/listeners/RW-Split-Listener")
|
|
.should.be.fulfilled
|
|
});
|
|
|
|
after(stopMaxScale)
|
|
});
|