mirror of https://gitee.com/bigwinds/arangodb
finished asymmetrical and symmetrical plan
This commit is contained in:
parent
d6f705f8b9
commit
f196f4361d
|
@ -16,62 +16,44 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
startPlan: function() {
|
startPlan: function() {
|
||||||
var countDispatcher = 0;
|
var isDBServer;
|
||||||
$(".dispatcher").each(function(dispatcher) {
|
var isCoordinator;
|
||||||
|
var self = this;
|
||||||
|
var data = {dbServer : [], coordinator: []};
|
||||||
|
$(".dispatcher").each(function(i, dispatcher) {
|
||||||
var host = $(".host", dispatcher).val();
|
var host = $(".host", dispatcher).val();
|
||||||
var port = $(".port", dispatcher).val();
|
var port = $(".port", dispatcher).val();
|
||||||
if (!this.isSymmetric) {
|
if (!host || 0 === host.length || !port || 0 === port.length) {
|
||||||
var isDBServer = $(".isDBServer", dispatcher).val();
|
return true;
|
||||||
var isCoordinator = $(".isCoordinator", dispatcher).val();
|
|
||||||
}
|
}
|
||||||
if (host != null && !host.isEmpty() &&
|
if (!self.isSymmetric) {
|
||||||
port != null && !port.isEmpty() &&
|
isDBServer = $(".isDBServer", dispatcher).val();
|
||||||
(this.isSymmetric) || isDBServer || isCoordinator) {
|
isCoordinator = $(".isCoordinator", dispatcher).val();
|
||||||
countDispatcher++;
|
} else {
|
||||||
|
isDBServer = "true";
|
||||||
|
isCoordinator = "true";
|
||||||
}
|
}
|
||||||
|
isDBServer === "true" ? data.dbServer.push(host + ":" + port) : null;
|
||||||
|
isCoordinator === "true" ? data.coordinator.push(host + ":" + port) : null;
|
||||||
})
|
})
|
||||||
if (countDispatcher === 0) {
|
if (data.dbServer.length === 0) {
|
||||||
|
if (!self.isSymmetric) {
|
||||||
|
alert("Please provide at least one DBServer");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
alert("Please provide at least one dispatcher");
|
alert("Please provide at least one dispatcher");
|
||||||
}
|
|
||||||
var type = this.isSymmetric ? "symmetricalSetup" : "asymmetricalSetup";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var h = $("#host").val(),
|
|
||||||
p = $("#port").val(),
|
|
||||||
c = $("#coordinators").val(),
|
|
||||||
d = $("#dbs").val();
|
|
||||||
if (!h) {
|
|
||||||
alert("Please define a Host");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!p) {
|
}
|
||||||
alert("Please define a Port");
|
if (data.coordinator.length === 0) {
|
||||||
return;
|
alert("Please provide at least one Coordinator");
|
||||||
}
|
|
||||||
if (!c) {
|
|
||||||
alert("Please define a number of Coordinators");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!d) {
|
|
||||||
alert("Please define a number of DBServers");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data.type = this.isSymmetric ? "symmetricalSetup" : "asymmetricalSetup";
|
||||||
$.ajax("cluster/plan", {
|
$.ajax("cluster/plan", {
|
||||||
type: "POST",
|
type: "POST",
|
||||||
data: {
|
data: JSON.stringify(data)
|
||||||
type: "testSetup",
|
|
||||||
dispatcher: h + ":" + p,
|
|
||||||
numberDBServers: parseInt(d, 10),
|
|
||||||
numberCoordinators: parseInt(c, 10)
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -99,3 +81,4 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
|
|
@ -191,6 +191,7 @@ module.exports = function(karma) {
|
||||||
|
|
||||||
//Views Planner
|
//Views Planner
|
||||||
'plannerFrontend/js/views/planScenarioSelectorView.js',
|
'plannerFrontend/js/views/planScenarioSelectorView.js',
|
||||||
|
'plannerFrontend/js/views/planSymmetricView.js',
|
||||||
'plannerFrontend/js/views/planTestView.js',
|
'plannerFrontend/js/views/planTestView.js',
|
||||||
|
|
||||||
|
|
||||||
|
@ -271,7 +272,11 @@ module.exports = function(karma) {
|
||||||
//Planner
|
//Planner
|
||||||
|
|
||||||
//Router
|
//Router
|
||||||
'test/specs/planner/router/routerSpec.js'
|
'test/specs/planner/router/routerSpec.js',
|
||||||
|
//View
|
||||||
|
'test/specs/planner/views/planSymmetricViewSpec.js',
|
||||||
|
'test/specs/planner/views/planTestViewSpec.js',
|
||||||
|
'test/specs/planner/views/planScenarioSelectorViewSpec.js'
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -191,6 +191,7 @@ module.exports = function(karma) {
|
||||||
|
|
||||||
//Views Planner
|
//Views Planner
|
||||||
'plannerFrontend/js/views/planScenarioSelectorView.js',
|
'plannerFrontend/js/views/planScenarioSelectorView.js',
|
||||||
|
'plannerFrontend/js/views/planSymmetricView.js',
|
||||||
'plannerFrontend/js/views/planTestView.js',
|
'plannerFrontend/js/views/planTestView.js',
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,6 +206,9 @@ module.exports = function(karma) {
|
||||||
// GraphViewer
|
// GraphViewer
|
||||||
//Router
|
//Router
|
||||||
'test/specs/planner/router/routerSpec.js',
|
'test/specs/planner/router/routerSpec.js',
|
||||||
|
//View
|
||||||
|
'test/specs/planner/views/planSymmetricViewSpec.js',
|
||||||
|
'test/specs/planner/views/planTestViewSpec.js',
|
||||||
'test/specs/planner/views/planScenarioSelectorViewSpec.js'
|
'test/specs/planner/views/planScenarioSelectorViewSpec.js'
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
|
@ -110,7 +110,7 @@
|
||||||
it("should route to planScenarioSelector", function() {
|
it("should route to planScenarioSelector", function() {
|
||||||
simpleNavigationCheck(
|
simpleNavigationCheck(
|
||||||
{
|
{
|
||||||
url: "planScenarioSelector"
|
url: ""
|
||||||
},
|
},
|
||||||
"PlanScenarioSelectorView"
|
"PlanScenarioSelectorView"
|
||||||
);
|
);
|
||||||
|
|
|
@ -0,0 +1,152 @@
|
||||||
|
/*jslint indent: 2, nomen: true, maxlen: 100, white: true plusplus: true, browser: true*/
|
||||||
|
/*global describe, beforeEach, afterEach, it, spyOn, expect*/
|
||||||
|
/*global runs, waitsFor, jasmine*/
|
||||||
|
/*global $, arangoCollection*/
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
describe("Plan Symmetric/Asymmetric View", function() {
|
||||||
|
var myView, ip_base;
|
||||||
|
|
||||||
|
beforeEach(function() {
|
||||||
|
$('body').append('<div id="content" class="removeMe"></div>');
|
||||||
|
|
||||||
|
myView = new window.PlanSymmetricView();
|
||||||
|
myView.render(true);
|
||||||
|
|
||||||
|
ip_base = "123.456.78";
|
||||||
|
|
||||||
|
spyOn($, "ajax");
|
||||||
|
spyOn(window, "alert");
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function() {
|
||||||
|
$('.removeMe').remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should start a symmetrical cluster", function() {
|
||||||
|
myView.render(true);
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".dispatcher").each(function (i, d) {
|
||||||
|
$(".host", d).val(ip_base + i);
|
||||||
|
$(".port", d).val(i);
|
||||||
|
});
|
||||||
|
$("#startPlan").click();
|
||||||
|
expect($.ajax).toHaveBeenCalledWith("cluster/plan", {
|
||||||
|
type: "POST",
|
||||||
|
data: JSON.stringify({
|
||||||
|
dbServer: [ip_base + "0:0", ip_base + "1:1", ip_base + "2:2"],
|
||||||
|
coordinator: [ip_base + "0:0", ip_base + "1:1", ip_base + "2:2"],
|
||||||
|
type: "symmetricalSetup"
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it("should start a asymmetrical cluster", function() {
|
||||||
|
myView.render(false);
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".dispatcher").each(function (i, d) {
|
||||||
|
$(".host", d).val(ip_base + i);
|
||||||
|
$(".port", d).val(i);
|
||||||
|
if (i === 0) {
|
||||||
|
$(".isDBServer", d).val(true);
|
||||||
|
$(".isCoordinator", d).val(false)
|
||||||
|
} else if (i === 1) {
|
||||||
|
$(".isDBServer", d).val(false);
|
||||||
|
$(".isCoordinator", d).val(true);
|
||||||
|
} else {
|
||||||
|
$(".isDBServer", d).val(true);
|
||||||
|
$(".isCoordinator", d).val(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#startPlan").click();
|
||||||
|
expect($.ajax).toHaveBeenCalledWith("cluster/plan", {
|
||||||
|
type: "POST",
|
||||||
|
data: JSON.stringify({
|
||||||
|
dbServer: [ip_base + "0:0", ip_base + "2:2"],
|
||||||
|
coordinator: [ ip_base + "1:1", ip_base + "2:2"],
|
||||||
|
type: "asymmetricalSetup"
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not start a symmetrical cluster because no complete host ist provided", function() {
|
||||||
|
myView.render(true);
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".dispatcher").each(function (i, d) {
|
||||||
|
if (i === 0) {
|
||||||
|
$(".host", d).val(ip_base + i);
|
||||||
|
} else {
|
||||||
|
$(".port", d).val(i);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#startPlan").click();
|
||||||
|
expect($.ajax).not.toHaveBeenCalled();
|
||||||
|
expect(window.alert).toHaveBeenCalledWith("Please provide at least one dispatcher");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not start an asymmetrical cluster because no dbserver and coordinator ist provided", function() {
|
||||||
|
myView.render(false);
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".dispatcher").each(function (i, d) {
|
||||||
|
$(".host", d).val(ip_base + i);
|
||||||
|
$(".port", d).val(i);
|
||||||
|
if (i === 0) {
|
||||||
|
$(".isDBServer", d).val(false);
|
||||||
|
$(".isCoordinator", d).val(false)
|
||||||
|
} else if (i === 1) {
|
||||||
|
$(".isDBServer", d).val(false);
|
||||||
|
$(".isCoordinator", d).val(false);
|
||||||
|
} else {
|
||||||
|
$(".isDBServer", d).val(false);
|
||||||
|
$(".isCoordinator", d).val(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#startPlan").click();
|
||||||
|
expect($.ajax).not.toHaveBeenCalled();
|
||||||
|
expect(window.alert).toHaveBeenCalledWith("Please provide at least one DBServer");
|
||||||
|
});
|
||||||
|
it("should not start an asymmetrical cluster because no coordinator ist provided", function() {
|
||||||
|
myView.render(false);
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".dispatcher").each(function (i, d) {
|
||||||
|
$(".host", d).val(ip_base + i);
|
||||||
|
$(".port", d).val(i);
|
||||||
|
if (i === 0) {
|
||||||
|
$(".isDBServer", d).val(true);
|
||||||
|
$(".isCoordinator", d).val(false)
|
||||||
|
} else if (i === 1) {
|
||||||
|
$(".isDBServer", d).val(false);
|
||||||
|
$(".isCoordinator", d).val(false);
|
||||||
|
} else {
|
||||||
|
$(".isDBServer", d).val(false);
|
||||||
|
$(".isCoordinator", d).val(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#startPlan").click();
|
||||||
|
expect($.ajax).not.toHaveBeenCalled();
|
||||||
|
expect(window.alert).toHaveBeenCalledWith("Please provide at least one Coordinator");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("should be able to add 3 and remove 2 input lines for hosts", function() {
|
||||||
|
myView.render(false);
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".add").click();
|
||||||
|
$(".dispatcher").each(function (i, d) {
|
||||||
|
if (i >= 2) {
|
||||||
|
$(".delete", d).click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
expect($(".dispatcher").length).toEqual(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}());
|
|
@ -37,15 +37,14 @@
|
||||||
$("#startPlan").click();
|
$("#startPlan").click();
|
||||||
expect($.ajax).toHaveBeenCalledWith("cluster/plan", {
|
expect($.ajax).toHaveBeenCalledWith("cluster/plan", {
|
||||||
type: "POST",
|
type: "POST",
|
||||||
data: {
|
data: JSON.stringify({
|
||||||
|
type: "testSetup",
|
||||||
dispatcher: ip + ":" + port,
|
dispatcher: ip + ":" + port,
|
||||||
numberCoordinators: coords,
|
|
||||||
numberDBServers: dbs,
|
numberDBServers: dbs,
|
||||||
type: "testSetup"
|
numberCoordinators: coords
|
||||||
}
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should not start a cluster if dispatcher port is missing", function() {
|
it("should not start a cluster if dispatcher port is missing", function() {
|
||||||
$("#host").val("");
|
$("#host").val("");
|
||||||
$("#startPlan").click();
|
$("#startPlan").click();
|
||||||
|
|
Loading…
Reference in New Issue