use of org.ow2.proactive.scheduler.policy.Policy in project scheduling by ow2-proactive.
the class NodeSourcesTest method createNodeSource.
private NodeSourceData createNodeSource() {
List<Serializable> infraParams = new ArrayList<>(1);
infraParams.add("infrastructure");
List<Serializable> policyParams = new ArrayList<>(1);
policyParams.add("policy");
return new NodeSourceData("ns1", DefaultInfrastructureManager.class.getName(), infraParams, StaticPolicy.class.getName(), policyParams, new Client(null, false), false, NodeSourceStatus.NODES_DEPLOYED);
}
use of org.ow2.proactive.scheduler.policy.Policy in project scheduling by ow2-proactive.
the class TestLocalInfrastructureRestartDownNodesPolicy method testRestartDownNodesPolicyWithNullParams.
@Test
public void testRestartDownNodesPolicyWithNullParams() throws Exception {
RMTHelper.log("Test 0 - create down nodes policy with null parameters (null is a valid input)");
nodeSourceName = "Node_source_0";
createNodeSourceWithNodes(nodeSourceName, null);
RMState stateTest0 = resourceManager.getState();
assertEquals(defaultDescriptorNodesNb, stateTest0.getTotalNodesNumber());
assertEquals(defaultDescriptorNodesNb, stateTest0.getFreeNodesNumber());
}
use of org.ow2.proactive.scheduler.policy.Policy in project scheduling by ow2-proactive.
the class TestLocalInfrastructureRestartDownNodesPolicy method testRestartDownNodesPolicyWithRemoveNode.
/**
* This test ensures that when a node has been manually removed it is not redeployed by the policy
*/
@Test
public void testRestartDownNodesPolicyWithRemoveNode() throws Exception {
nodeSourceName = "Node_source_2";
RMTHelper.log("Test 2 - restart down nodes policy with a node removed");
createNodeSourceWithNodes(nodeSourceName, new Object[] { "ALL", "ALL", "10000" });
RMState stateTest1 = resourceManager.getState();
assertEquals(defaultDescriptorNodesNb, stateTest1.getTotalNodesNumber());
assertEquals(defaultDescriptorNodesNb, stateTest1.getFreeNodesNumber());
NodeSet ns = resourceManager.getNodes(new Criteria(defaultDescriptorNodesNb));
for (Node n : ns) {
rmHelper.waitForNodeEvent(RMEventType.NODE_STATE_CHANGED, n.getNodeInformation().getURL());
}
// remove the first node
Node nodeToRemove = ns.remove(0);
resourceManager.removeNode(nodeToRemove.getNodeInformation().getURL(), true);
rmHelper.waitForNodeEvent(RMEventType.NODE_REMOVED, nodeToRemove.getNodeInformation().getURL());
RMTHelper.log("Node removed.");
stateTest1 = resourceManager.getState();
assertEquals(defaultDescriptorNodesNb - 1, stateTest1.getTotalNodesNumber());
String nodeUrl = ns.get(0).getNodeInformation().getURL();
// Nodes will be redeployed only if we kill the whole runtime
rmHelper.killRuntime(nodeUrl);
// one node is down - the policy should detect it and redeploy
for (int i = 0; i < defaultDescriptorNodesNb - 1; i++) {
rmHelper.waitForNodeEvent(RMEventType.NODE_REMOVED, ns.get(i).getNodeInformation().getURL());
}
RMNodeEvent ev = rmHelper.waitForNodeEvent(RMEventType.NODE_STATE_CHANGED, nodeUrl);
assertEquals(NodeState.DOWN, ev.getNodeState());
// one node is down - the policy should detect it and redeploy
for (int i = 0; i < defaultDescriptorNodesNb - 1; i++) {
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_ADDED);
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_REMOVED);
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_ADDED);
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_STATE_CHANGED);
}
// now one node less should be deployed
assertEquals(defaultDescriptorNodesNb - 1, stateTest1.getTotalNodesNumber());
assertEquals(defaultDescriptorNodesNb - 1, stateTest1.getTotalAliveNodesNumber());
}
use of org.ow2.proactive.scheduler.policy.Policy in project scheduling by ow2-proactive.
the class TestSSHInfrastructureV2RestartDownNodesPolicy method testSSHInfrastructureV2WithRestartDownNodes.
@Test
public void testSSHInfrastructureV2WithRestartDownNodes() throws Exception {
nsname = "testSSHInfraRestart";
resourceManager = this.rmHelper.getResourceManager();
RMTHelper.log("Test - Create SSH infrastructure with RestartDownNodes policy on ssh://localhost on port " + TestSSHInfrastructureV2.port);
resourceManager.createNodeSource(nsname, SSHInfrastructureV2.class.getName(), TestSSHInfrastructureV2.infraParams, RestartDownNodesPolicy.class.getName(), TestSSHInfrastructureV2.policyParameters, NODES_NOT_RECOVERABLE);
RMMonitorsHandler monitorsHandler = this.rmHelper.getMonitorsHandler();
this.rmHelper.waitForNodeSourceCreation(nsname, NB_NODES, monitorsHandler);
RMState s = resourceManager.getState();
assertEquals(NB_NODES, s.getTotalNodesNumber());
assertEquals(NB_NODES, s.getFreeNodesNumber());
NodeSet nodeset = resourceManager.getNodes(new Criteria(NB_NODES));
if (nodeset.size() != NB_NODES) {
RMTHelper.log("Illegal state : the infrastructure could not deploy nodes or they died immediately. Ending test");
throw new RuntimeException("Illegal state : the infrastructure could not deploy nodes or they died immediately. Ending test");
}
for (Node n : nodeset) {
rmHelper.waitForNodeEvent(RMEventType.NODE_STATE_CHANGED, n.getNodeInformation().getURL(), 60000, monitorsHandler);
}
String nodeUrl = nodeset.get(0).getNodeInformation().getURL();
RMTHelper.log("Killing nodes");
// Nodes will be redeployed only if we kill the whole runtime
rmHelper.killRuntime(nodeUrl);
RMTHelper.log("Wait for down nodes detection by the rm");
for (Node n : nodeset) {
RMNodeEvent ev = rmHelper.waitForNodeEvent(RMEventType.NODE_STATE_CHANGED, n.getNodeInformation().getURL(), 120000, monitorsHandler);
assertEquals(NodeState.DOWN, ev.getNodeState());
}
for (Node n : nodeset) {
rmHelper.waitForNodeEvent(RMEventType.NODE_REMOVED, n.getNodeInformation().getURL(), 120000, monitorsHandler);
}
RMTHelper.log("Dumping events not consumed yet");
monitorsHandler.dumpEvents();
RMTHelper.log("Wait for nodes restart by the policy");
rmHelper.waitForAnyMultipleNodeEvent(RMEventType.NODE_ADDED, NB_NODES, monitorsHandler);
for (int i = 0; i < NB_NODES; i++) {
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_REMOVED, monitorsHandler);
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_ADDED, monitorsHandler);
rmHelper.waitForAnyNodeEvent(RMEventType.NODE_STATE_CHANGED, monitorsHandler);
}
RMTHelper.log("Final checks on the scheduler state");
nodeset = resourceManager.getNodes(new Criteria(NB_NODES));
for (Node n : nodeset) {
System.out.println("NODE::" + n.getNodeInformation().getURL());
}
s = resourceManager.getState();
assertEquals(NB_NODES, s.getTotalNodesNumber());
// check amount of all nodes that are not down
assertEquals(NB_NODES, s.getTotalAliveNodesNumber());
}
use of org.ow2.proactive.scheduler.policy.Policy in project scheduling by ow2-proactive.
the class CommandFactory method getCommandList.
/**
* Returns an ordered {@link Command} list for specified user arguments.
*
* @param cli the command-line arguments
* @return an ordered {@link Command} list.
*/
protected List<Command> getCommandList(CommandLine cli, Map<String, Command> map, ApplicationContext currentContext) {
LinkedList<Command> list = new LinkedList<>();
if (map.containsKey(opt(COMMON_HELP))) {
list.add(map.remove(opt(COMMON_HELP)));
return list;
}
if (map.containsKey(opt(RM_HELP))) {
list.add(map.remove(opt(RM_HELP)));
return list;
}
if (map.containsKey(opt(SCHEDULER_HELP))) {
list.add(map.remove(opt(SCHEDULER_HELP)));
return list;
}
if (map.containsKey(opt(SILENT))) {
list.add(map.remove(opt(SILENT)));
}
if (map.containsKey(opt(DEBUG))) {
list.add(map.remove(opt(DEBUG)));
}
if (map.containsKey(opt(URL))) {
list.addFirst(map.remove(opt(URL)));
}
if (map.containsKey(opt(INSECURE))) {
list.add(map.remove(opt(INSECURE)));
} else if (map.containsKey(opt(CA_CERTS))) {
list.add(map.remove(opt(CA_CERTS)));
if (map.containsKey(opt(CA_CERTS_PASSWORD))) {
list.add(map.remove(opt(CA_CERTS_PASSWORD)));
}
}
if (map.containsKey(opt(SESSION_ID))) {
list.add(map.remove(opt(SESSION_ID)));
} else if (map.containsKey(opt(SESSION_ID_FILE))) {
list.add(map.remove(opt(SESSION_ID_FILE)));
}
if (map.containsKey(opt(PASSWORD))) {
list.add(map.remove(opt(PASSWORD)));
}
if (map.containsKey(opt(LOGIN))) {
list.add(map.remove(opt(LOGIN)));
} else if (map.containsKey(opt(CREDENTIALS))) {
list.add(map.remove(opt(CREDENTIALS)));
} else {
// auto login
String resourceType = currentContext.getResourceType();
String filename = resourceType + ".cc";
File credFile = new File(DFLT_SESSION_DIR, filename);
if (credFile.exists()) {
list.add(new LoginWithCredentialsCommand(credFile.getAbsolutePath(), true));
} else {
String schedulerHome = ClasspathUtils.findSchedulerHome();
File defaultCredentials = new File(schedulerHome, DEFAULT_CREDENTIALS_PATH);
if (defaultCredentials.exists()) {
list.add(new LoginWithCredentialsCommand(defaultCredentials.getAbsolutePath(), true));
}
}
}
if (map.containsKey(opt(INFRASTRUCTURE))) {
list.add(map.remove(opt(INFRASTRUCTURE)));
}
if (map.containsKey(opt(POLICY))) {
list.add(map.remove(opt(POLICY)));
}
if (map.isEmpty()) {
list.add(new ImodeCommand());
} else {
Command output = map.remove(opt(OUTPUT));
list.addAll(map.values());
if (output != null) {
list.add(output);
}
}
return list;
}
Aggregations