Search in sources :

Example 6 with Policy

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);
}
Also used : Serializable(java.io.Serializable) DefaultInfrastructureManager(org.ow2.proactive.resourcemanager.nodesource.infrastructure.DefaultInfrastructureManager) StaticPolicy(org.ow2.proactive.resourcemanager.nodesource.policy.StaticPolicy) NodeSourceData(org.ow2.proactive.resourcemanager.db.NodeSourceData) Client(org.ow2.proactive.resourcemanager.authentication.Client)

Example 7 with Policy

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());
}
Also used : RMState(org.ow2.proactive.resourcemanager.common.RMState) Test(org.junit.Test) RMFunctionalTest(functionaltests.utils.RMFunctionalTest)

Example 8 with Policy

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());
}
Also used : NodeSet(org.ow2.proactive.utils.NodeSet) Node(org.objectweb.proactive.core.node.Node) Criteria(org.ow2.proactive.utils.Criteria) RMState(org.ow2.proactive.resourcemanager.common.RMState) RMNodeEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeEvent) Test(org.junit.Test) RMFunctionalTest(functionaltests.utils.RMFunctionalTest)

Example 9 with Policy

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());
}
Also used : NodeSet(org.ow2.proactive.utils.NodeSet) RestartDownNodesPolicy(org.ow2.proactive.resourcemanager.nodesource.policy.RestartDownNodesPolicy) Node(org.objectweb.proactive.core.node.Node) SSHInfrastructureV2(org.ow2.proactive.resourcemanager.nodesource.infrastructure.SSHInfrastructureV2) Criteria(org.ow2.proactive.utils.Criteria) RMState(org.ow2.proactive.resourcemanager.common.RMState) RMNodeEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeEvent) RMMonitorsHandler(functionaltests.monitor.RMMonitorsHandler) Test(org.junit.Test) RMFunctionalTest(functionaltests.utils.RMFunctionalTest)

Example 10 with Policy

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;
}
Also used : Command(org.ow2.proactive_grid_cloud_portal.cli.cmd.Command) LoginWithCredentialsCommand(org.ow2.proactive_grid_cloud_portal.cli.cmd.LoginWithCredentialsCommand) ImodeCommand(org.ow2.proactive_grid_cloud_portal.cli.cmd.ImodeCommand) File(java.io.File) LinkedList(java.util.LinkedList) LoginWithCredentialsCommand(org.ow2.proactive_grid_cloud_portal.cli.cmd.LoginWithCredentialsCommand) ImodeCommand(org.ow2.proactive_grid_cloud_portal.cli.cmd.ImodeCommand)

Aggregations

Node (org.objectweb.proactive.core.node.Node)7 Test (org.junit.Test)6 NodeSet (org.ow2.proactive.utils.NodeSet)5 RMFunctionalTest (functionaltests.utils.RMFunctionalTest)4 KeyException (java.security.KeyException)4 LinkedList (java.util.LinkedList)4 List (java.util.List)4 ActiveObjectCreationException (org.objectweb.proactive.ActiveObjectCreationException)4 RMState (org.ow2.proactive.resourcemanager.common.RMState)4 RMException (org.ow2.proactive.resourcemanager.exception.RMException)4 RMNode (org.ow2.proactive.resourcemanager.rmnode.RMNode)4 HttpResponseWrapper (org.ow2.proactive_grid_cloud_portal.cli.utils.HttpResponseWrapper)4 IOException (java.io.IOException)3 ArrayList (java.util.ArrayList)3 SchedulerAuthenticationInterface (org.ow2.proactive.scheduler.common.SchedulerAuthenticationInterface)3 Throwables.getStackTraceAsString (com.google.common.base.Throwables.getStackTraceAsString)2 File (java.io.File)2 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)2 LoginException (javax.security.auth.login.LoginException)2 UniqueID (org.objectweb.proactive.core.UniqueID)2