Search in sources :

Example 56 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class RMCoreTest method testGetNodeByUrlIncludingDeployingNodesKnownUrlNonDeployingNode.

@Test
public void testGetNodeByUrlIncludingDeployingNodesKnownUrlNonDeployingNode() {
    RMNode rmNodeFound = rmCore.getNodeByUrlIncludingDeployingNodes(mockedRemovableNode.getNodeURL());
    assertThat(rmNodeFound).isSameAs(mockedRemovableNode);
}
Also used : RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) Test(org.junit.Test)

Example 57 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class RMCoreTest method testLockNodeState.

private void testLockNodeState(NodeState nodeState) {
    RMNodeImpl rmNode = spy(RMNodeHelper.basicWithMockedInternals().getLeft());
    rmNode.setState(nodeState);
    HashMap<String, RMNode> allNodes = new HashMap<>();
    allNodes.put(rmNode.getNodeURL(), rmNode);
    ArrayList<RMNode> freeNodes = Lists.newArrayList((RMNode) rmNode);
    RMCore rmCore = new RMCore(new HashMap<String, NodeSource>(), allNodes, Mockito.mock(Client.class), Mockito.mock(RMMonitoringImpl.class), Mockito.mock(SelectionManager.class), freeNodes, Mockito.mock(RMDBManager.class));
    rmCore.signalRMCoreIsInitialized();
    BooleanWrapper lockResult = rmCore.lockNodes(ImmutableSet.of(rmNode.getNodeURL()));
    assertThat(lockResult.getBooleanValue()).isTrue();
    assertThat(rmNode.getState()).isEqualTo(nodeState);
    assertThat(rmNode.isLocked()).isTrue();
    assertThat(freeNodes).isEmpty();
}
Also used : RMDBManager(org.ow2.proactive.resourcemanager.db.RMDBManager) SelectionManager(org.ow2.proactive.resourcemanager.selection.SelectionManager) HashMap(java.util.HashMap) RMMonitoringImpl(org.ow2.proactive.resourcemanager.frontend.RMMonitoringImpl) Matchers.anyString(org.mockito.Matchers.anyString) NodeSource(org.ow2.proactive.resourcemanager.nodesource.NodeSource) BooleanWrapper(org.objectweb.proactive.core.util.wrapper.BooleanWrapper) RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) RMNodeImpl(org.ow2.proactive.resourcemanager.rmnode.RMNodeImpl) Client(org.ow2.proactive.resourcemanager.authentication.Client)

Example 58 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class RMCoreTest method testGetNodeByUrlIncludingDeployingNodesUnknownNodeUrl.

@Test
public void testGetNodeByUrlIncludingDeployingNodesUnknownNodeUrl() {
    RMDeployingNode rmNode = new RMDeployingNode("node", mockedNodeSource, "command", new Client());
    doReturn(rmNode).when(mockedNodeSource).getNodeInDeployingOrLostNodes(rmNode.getNodeURL());
    RMNode rmNodeFound = rmCore.getNodeByUrlIncludingDeployingNodes(rmNode.getNodeURL());
    assertThat(rmNodeFound).isSameAs(rmNode);
}
Also used : RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) RMDeployingNode(org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode) Client(org.ow2.proactive.resourcemanager.authentication.Client) Test(org.junit.Test)

Example 59 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class RMCore method internalSetToRemove.

/**
 * Mark node to be removed after releasing.
 *
 * @param rmNode node to be removed after node is released.
 */
void internalSetToRemove(final RMNode rmNode, Client initiator) {
    // If the node is already marked to be removed, so no need to go further
    if (rmNode.isToRemove()) {
        return;
    }
    if (logger.isDebugEnabled()) {
        logger.debug("Prepare to removing the node " + rmNode.getNodeURL());
    }
    // Get the previous state of the node needed for the event
    final NodeState previousNodeState = rmNode.getState();
    rmNode.setToRemove();
    persistUpdatedRMNodeIfRecoveryEnabled(rmNode);
    // create the event
    this.registerAndEmitNodeEvent(rmNode.createNodeEvent(RMEventType.NODE_STATE_CHANGED, previousNodeState, initiator.getName()));
}
Also used : NodeState(org.ow2.proactive.resourcemanager.common.NodeState)

Example 60 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class RMCore method internalSetFree.

/**
 * Change the state of the node to free, after a Task has been completed by the specified node.
 * The node passed as parameter is moved to the list of nodes which are eligible for scheduling if it is not locked.
 * In all cases, an event informing the node state's change is propagated to RMMonitoring.
 *
 * @param rmNode node to set free.
 * @return true if the node successfully set as free, false if it was down before.
 */
@VisibleForTesting
BooleanWrapper internalSetFree(final RMNode rmNode) {
    if (logger.isDebugEnabled()) {
        logger.debug("Current node state " + rmNode.getState() + " " + rmNode.getNodeURL());
        logger.debug("Setting node state to free " + rmNode.getNodeURL());
    }
    // If the node is already free no need to go further
    if (rmNode.isFree()) {
        return new BooleanWrapper(true);
    }
    // Get the previous state of the node needed for the event
    final NodeState previousNodeState = rmNode.getState();
    Client client = rmNode.getOwner();
    if (client == null) {
        // node has been just configured, so the user initiated this action is the node provider
        client = rmNode.getProvider();
    }
    // resetting owner here
    rmNode.setFree();
    // an eligible node is a node that is free and not locked
    if (!rmNode.isLocked()) {
        this.eligibleNodes.add(rmNode);
    }
    persistUpdatedRMNodeIfRecoveryEnabled(rmNode);
    this.registerAndEmitNodeEvent(rmNode.createNodeEvent(RMEventType.NODE_STATE_CHANGED, previousNodeState, client.getName()));
    return new BooleanWrapper(true);
}
Also used : BooleanWrapper(org.objectweb.proactive.core.util.wrapper.BooleanWrapper) NodeState(org.ow2.proactive.resourcemanager.common.NodeState) Client(org.ow2.proactive.resourcemanager.authentication.Client) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Aggregations

RMNode (org.ow2.proactive.resourcemanager.rmnode.RMNode)55 Test (org.junit.Test)27 Node (org.objectweb.proactive.core.node.Node)12 BooleanWrapper (org.objectweb.proactive.core.util.wrapper.BooleanWrapper)12 Client (org.ow2.proactive.resourcemanager.authentication.Client)12 SelectionScript (org.ow2.proactive.scripting.SelectionScript)12 ArrayList (java.util.ArrayList)11 RMDeployingNode (org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode)11 LinkedList (java.util.LinkedList)10 RMNodeImpl (org.ow2.proactive.resourcemanager.rmnode.RMNodeImpl)10 SelectionManager (org.ow2.proactive.resourcemanager.selection.SelectionManager)8 NodeState (org.ow2.proactive.resourcemanager.common.NodeState)7 NodeSource (org.ow2.proactive.resourcemanager.nodesource.NodeSource)7 Permission (java.security.Permission)6 SelectionManagerTest (org.ow2.proactive.resourcemanager.selection.SelectionManagerTest)6 NodeSet (org.ow2.proactive.utils.NodeSet)6 HashMap (java.util.HashMap)5 HashSet (java.util.HashSet)5 MutableInteger (org.objectweb.proactive.core.util.MutableInteger)5 PrincipalPermission (org.ow2.proactive.permissions.PrincipalPermission)5