MXS-1220: Add server test
The test creates, alters and destroys servers.
This commit is contained in:
@ -105,8 +105,8 @@ HttpRequest::HttpRequest(struct MHD_Connection *connection, string url, string m
|
|||||||
|
|
||||||
HttpRequest::~HttpRequest()
|
HttpRequest::~HttpRequest()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpRequest::validate_api_version()
|
bool HttpRequest::validate_api_version()
|
||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
|
@ -573,5 +573,7 @@ static SpinLock resource_lock;
|
|||||||
HttpResponse resource_handle_request(const HttpRequest& request)
|
HttpResponse resource_handle_request(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
SpinLockGuard guard(resource_lock);
|
SpinLockGuard guard(resource_lock);
|
||||||
|
MXS_DEBUG("%s %s %s", request.get_verb().c_str(), request.get_uri().c_str(),
|
||||||
|
request.get_json_str().c_str());
|
||||||
return resources.process_request(request);
|
return resources.process_request(request);
|
||||||
}
|
}
|
||||||
|
@ -9,27 +9,15 @@ test -z "$MAXSCALE_DIR" && exit 1
|
|||||||
|
|
||||||
maxscaledir=$MAXSCALE_DIR
|
maxscaledir=$MAXSCALE_DIR
|
||||||
|
|
||||||
pid=`cat $maxscaledir/maxscale.pid`
|
|
||||||
echo $pid
|
|
||||||
|
|
||||||
for ((i=0;i<60;i++))
|
for ((i=0;i<60;i++))
|
||||||
do
|
do
|
||||||
kill -0 $pid
|
pkill maxscale || break
|
||||||
|
sleep 0.5
|
||||||
if [ $? -eq 0 ]
|
|
||||||
then
|
|
||||||
# Process is still up
|
|
||||||
kill $pid
|
|
||||||
|
|
||||||
if [ $i -gt 3 ]
|
|
||||||
then
|
|
||||||
sleep 0.1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# If it wasn't dead before, now it is
|
||||||
|
pgrep maxscale && pkill -9 maxscale
|
||||||
|
|
||||||
rm -r $maxscaledir/lib/maxscale
|
rm -r $maxscaledir/lib/maxscale
|
||||||
rm -r $maxscaledir/cache/maxscale
|
rm -r $maxscaledir/cache/maxscale
|
||||||
rm -r $maxscaledir/run/maxscale
|
rm -r $maxscaledir/run/maxscale
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
require("../utils.js")()
|
require("../utils.js")()
|
||||||
|
|
||||||
|
before(startMaxScale)
|
||||||
|
|
||||||
describe("Resource Collections", function(){
|
describe("Resource Collections", function(){
|
||||||
|
|
||||||
var tests = [
|
var tests = [
|
||||||
@ -48,3 +50,5 @@ describe("Individual Resources", function(){
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
after(stopMaxScale)
|
||||||
|
82
server/core/test/rest-api/test/server.js
Normal file
82
server/core/test/rest-api/test/server.js
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
require("../utils.js")()
|
||||||
|
|
||||||
|
var server = {
|
||||||
|
data: {
|
||||||
|
id: "test-server",
|
||||||
|
type: "servers",
|
||||||
|
attributes: {
|
||||||
|
parameters: {
|
||||||
|
port: 3003,
|
||||||
|
address: "127.0.0.1",
|
||||||
|
protocol: "MySQLBackend"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var rel = {
|
||||||
|
services: {
|
||||||
|
data: [
|
||||||
|
{ id: "RW-Split-Router", type: "services" },
|
||||||
|
{ id: "Read-Connection-Router", type: "services" },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
describe("Creating a Server", function(){
|
||||||
|
before(startMaxScale)
|
||||||
|
|
||||||
|
it("create the server", function(){
|
||||||
|
return request.post(base_url + "/servers/", {json: server })
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
it("request the created server", function(){
|
||||||
|
return request.get(base_url + "/servers/" + server.data.id)
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
it("update the created server", function(){
|
||||||
|
server.data.attributes.parameters.weight = 10
|
||||||
|
return request.put(base_url + "/servers/" + server.data.id, { json: server})
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
it("destroy the server", function(){
|
||||||
|
return request.delete(base_url + "/servers/" + server.data.id)
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
after(stopMaxScale)
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Creating a Server With Relationships", function(){
|
||||||
|
before(startMaxScale)
|
||||||
|
|
||||||
|
// We need a deep copy of the original server
|
||||||
|
var rel_server = JSON.parse(JSON.stringify(server))
|
||||||
|
rel_server.data.relationships = rel
|
||||||
|
|
||||||
|
it("create the server", function(){
|
||||||
|
return request.post(base_url + "/servers/", {json: rel_server})
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
it("request the server", function(){
|
||||||
|
return request.get(base_url + "/servers/" + rel_server.data.id)
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
it("remove relationships", function(){
|
||||||
|
delete rel_server.data["relationships"]
|
||||||
|
return request.put(base_url + "/servers/" + rel_server.data.id, {json: rel_server})
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
it("destroy the server", function(){
|
||||||
|
return request.delete(base_url + "/servers/" + rel_server.data.id)
|
||||||
|
.should.be.fulfilled
|
||||||
|
});
|
||||||
|
|
||||||
|
after(stopMaxScale)
|
||||||
|
});
|
@ -421,7 +421,7 @@ module.exports = function() {
|
|||||||
this.validate_func = ajv.compile(json_api_schema)
|
this.validate_func = ajv.compile(json_api_schema)
|
||||||
this.validate = validate_json
|
this.validate = validate_json
|
||||||
this.base_url = "http://localhost:8989/v1"
|
this.base_url = "http://localhost:8989/v1"
|
||||||
this.before(function(done) {
|
this.startMaxScale = function(done) {
|
||||||
child_process.execFile("./before.sh", function(err, stdout, stderr) {
|
child_process.execFile("./before.sh", function(err, stdout, stderr) {
|
||||||
if (process.env.MAXSCALE_DIR == null) {
|
if (process.env.MAXSCALE_DIR == null) {
|
||||||
throw new Error("MAXSCALE_DIR is not set");
|
throw new Error("MAXSCALE_DIR is not set");
|
||||||
@ -429,10 +429,10 @@ module.exports = function() {
|
|||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
});
|
};
|
||||||
this.after(function(done) {
|
this.stopMaxScale = function(done) {
|
||||||
child_process.execFile("./after.sh", function(err, stdout, stderr) {
|
child_process.execFile("./after.sh", function(err, stdout, stderr) {
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user