Search in sources :

Example 1 with SingleConnectionRMProxiesManager

use of org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager in project scheduling by ow2-proactive.

the class RMProxiesManager method createRMProxiesManager.

/**
 * Create a RMProxiesManager using RM's URI (example : "rmi://localhost:1099/" ).
 *
 * @param rmURI The URI of a started Resource Manager
 * @return an instance of RMProxiesManager joined to the Resource Manager at the given URI
 */
public static RMProxiesManager createRMProxiesManager(final URI rmURI) throws RMException, RMProxyCreationException, URISyntaxException {
    Credentials schedulerProxyCredentials;
    try {
        schedulerProxyCredentials = Credentials.getCredentials(PASchedulerProperties.getAbsolutePath(PASchedulerProperties.RESOURCE_MANAGER_CREDS.getValueAsString()));
    } catch (Exception e) {
        throw new RMProxyCreationException(e);
    }
    boolean singleConnection = PASchedulerProperties.RESOURCE_MANAGER_SINGLE_CONNECTION.getValueAsBoolean();
    if (singleConnection) {
        return new SingleConnectionRMProxiesManager(rmURI, schedulerProxyCredentials);
    } else {
        return new PerUserConnectionRMProxiesManager(rmURI, schedulerProxyCredentials);
    }
}
Also used : Credentials(org.ow2.proactive.authentication.crypto.Credentials) URISyntaxException(java.net.URISyntaxException) RMException(org.ow2.proactive.resourcemanager.exception.RMException)

Example 2 with SingleConnectionRMProxiesManager

use of org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager in project scheduling by ow2-proactive.

the class TestRMProxy method testRMProxies.

private void testRMProxies(boolean singleUserConnection) throws Exception {
    ResourceManager rm = rmHelper.getResourceManager();
    assertEquals(NODES_NUMBER, rm.getState().getFreeNodesNumber());
    URI rmUri = new URI(RMTHelper.getLocalUrl());
    Credentials schedulerProxyCredentials = Credentials.getCredentials(PASchedulerProperties.getAbsolutePath(PASchedulerProperties.RESOURCE_MANAGER_CREDS.getValueAsString()));
    if (singleUserConnection) {
        proxiesManager = new SingleConnectionRMProxiesManager(rmUri, schedulerProxyCredentials);
    } else {
        proxiesManager = new PerUserConnectionRMProxiesManager(rmUri, schedulerProxyCredentials);
    }
    RMProxy user1RMProxy = proxiesManager.getUserRMProxy("admin", user1Credentials);
    assertSame("Proxy manager should return cached proxy instance", user1RMProxy, proxiesManager.getUserRMProxy("admin", user1Credentials));
    RMProxy user2RMProxy = proxiesManager.getUserRMProxy("demo", user2Credentials);
    assertSame("Proxy manager should return cached proxy instance", user2RMProxy, proxiesManager.getUserRMProxy("demo", user2Credentials));
    requestReleaseOneNode(user1RMProxy, rm);
    testSplitNodeSet(user1RMProxy, rm);
    checkSchedulerProxy(proxiesManager);
    requestWithExtraNodes(user1RMProxy, rm);
    requestTooManyNodes(user1RMProxy, rm);
    requestReleaseAllNodes(user1RMProxy, rm);
    checkSchedulerProxy(proxiesManager);
    requestReleaseOneNode(user2RMProxy, rm);
    requestReleaseAllNodes(user2RMProxy, rm);
    requestWithTwoUsers(user1RMProxy, user2RMProxy, rm);
    checkSchedulerProxy(proxiesManager);
    log("Terminate user proxy1");
    proxiesManager.terminateRMProxy("admin");
    user1RMProxy = proxiesManager.getUserRMProxy("admin", user1Credentials);
    requestReleaseAllNodes(user1RMProxy, rm);
    log("Terminate user proxy2");
    proxiesManager.terminateRMProxy("demo");
    user2RMProxy = proxiesManager.getUserRMProxy("demo", user2Credentials);
    requestReleaseAllNodes(user2RMProxy, rm);
}
Also used : RMProxy(org.ow2.proactive.scheduler.core.rmproxies.RMProxy) PerUserConnectionRMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.PerUserConnectionRMProxiesManager) ResourceManager(org.ow2.proactive.resourcemanager.frontend.ResourceManager) URI(java.net.URI) SingleConnectionRMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager) Credentials(org.ow2.proactive.authentication.crypto.Credentials)

Example 3 with SingleConnectionRMProxiesManager

use of org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager in project scheduling by ow2-proactive.

the class TestRMProxyRebind method testRebind.

private void testRebind(URI rmUri1, URI rmUri2, ResourceManager rm1, ResourceManager rm2, RMMonitorsHandler monitorsHandler1, RMMonitorsHandler monitorsHandler2, boolean singleConnection) throws Exception {
    RMProxiesManager proxiesManager;
    if (singleConnection) {
        proxiesManager = new SingleConnectionRMProxiesManager(rmUri1, schedulerProxyCredentials);
    } else {
        proxiesManager = new PerUserConnectionRMProxiesManager(rmUri1, schedulerProxyCredentials);
    }
    Credentials user1Credentials = Credentials.createCredentials(new CredData("admin", "admin"), helper1.getAuth().getPublicKey());
    RMProxy proxy1 = proxiesManager.getUserRMProxy("admin", user1Credentials);
    log("Get one node with RM1");
    NodeSet rm1NodeSet1 = proxy1.getNodes(new Criteria(1));
    waitWhenNodeSetAcquired(rm1NodeSet1, 1, monitorsHandler1);
    checkFreeNodes(rm1, NODES_NUMBER - 1);
    checkFreeNodes(rm2, NODES_NUMBER);
    assertEquals(NODES_NUMBER - 1, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    log("Get one node with RM1");
    NodeSet rm1NodeSet2 = proxy1.getNodes(new Criteria(1));
    waitWhenNodeSetAcquired(rm1NodeSet2, 1, monitorsHandler1);
    checkFreeNodes(rm1, NODES_NUMBER - 2);
    checkFreeNodes(rm2, NODES_NUMBER);
    assertEquals(NODES_NUMBER - 2, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    assertTrue(proxiesManager.getRmProxy().isActive().getBooleanValue());
    log("Rebinding to " + rmUri2);
    proxiesManager.rebindRMProxiesManager(rmUri2);
    assertEquals(NODES_NUMBER, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    assertTrue(proxiesManager.getRmProxy().isActive().getBooleanValue());
    waitWhenNodeSetReleased(2, monitorsHandler1);
    log("Get one node with RM2");
    NodeSet rm2NodeSet1 = proxy1.getNodes(new Criteria(1));
    waitWhenNodeSetAcquired(rm2NodeSet1, 1, monitorsHandler2);
    checkFreeNodes(rm1, NODES_NUMBER);
    checkFreeNodes(rm2, NODES_NUMBER - 1);
    assertEquals(NODES_NUMBER - 1, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    log("Get two nodes with RM2");
    NodeSet rm2NodeSet2 = proxy1.getNodes(new Criteria(2));
    waitWhenNodeSetAcquired(rm2NodeSet2, 2, monitorsHandler2);
    checkFreeNodes(rm1, NODES_NUMBER);
    checkFreeNodes(rm2, NODES_NUMBER - 3);
    assertEquals(NODES_NUMBER - 3, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    log("Release one node with RM2");
    proxy1.releaseNodes(rm2NodeSet1);
    waitWhenNodeSetReleased(1, monitorsHandler2);
    checkFreeNodes(rm1, NODES_NUMBER);
    checkFreeNodes(rm2, NODES_NUMBER - 2);
    assertEquals(NODES_NUMBER - 2, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    log("Kill RM1");
    PAFuture.waitFor(rm1.shutdown(true));
    helper1.kill();
    rm1 = null;
    assertEquals(NODES_NUMBER - 2, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    assertTrue(proxiesManager.getRmProxy().isActive().getBooleanValue());
    log("Release two nodes with RM2");
    proxy1.releaseNodes(rm2NodeSet2);
    waitWhenNodeSetReleased(2, monitorsHandler2);
    checkFreeNodes(rm2, NODES_NUMBER);
    assertEquals(NODES_NUMBER, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    assertTrue(proxiesManager.getRmProxy().isActive().getBooleanValue());
    log("Try to release node with terminated RM1");
    proxy1.releaseNodes(rm1NodeSet2);
    log("Try to release node with terminated RM1 one more time");
    proxy1.releaseNodes(rm1NodeSet2);
    assertEquals(NODES_NUMBER, proxiesManager.getRmProxy().getState().getFreeNodesNumber());
    assertTrue(proxiesManager.getRmProxy().isActive().getBooleanValue());
    log("Terminate all proxies");
    proxiesManager.terminateAllProxies();
}
Also used : NodeSet(org.ow2.proactive.utils.NodeSet) RMProxy(org.ow2.proactive.scheduler.core.rmproxies.RMProxy) PerUserConnectionRMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.PerUserConnectionRMProxiesManager) CredData(org.ow2.proactive.authentication.crypto.CredData) Criteria(org.ow2.proactive.utils.Criteria) SingleConnectionRMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager) PerUserConnectionRMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.PerUserConnectionRMProxiesManager) SingleConnectionRMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager) RMProxiesManager(org.ow2.proactive.scheduler.core.rmproxies.RMProxiesManager) Credentials(org.ow2.proactive.authentication.crypto.Credentials)

Aggregations

Credentials (org.ow2.proactive.authentication.crypto.Credentials)3 PerUserConnectionRMProxiesManager (org.ow2.proactive.scheduler.core.rmproxies.PerUserConnectionRMProxiesManager)2 RMProxy (org.ow2.proactive.scheduler.core.rmproxies.RMProxy)2 SingleConnectionRMProxiesManager (org.ow2.proactive.scheduler.core.rmproxies.SingleConnectionRMProxiesManager)2 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 CredData (org.ow2.proactive.authentication.crypto.CredData)1 RMException (org.ow2.proactive.resourcemanager.exception.RMException)1 ResourceManager (org.ow2.proactive.resourcemanager.frontend.ResourceManager)1 RMProxiesManager (org.ow2.proactive.scheduler.core.rmproxies.RMProxiesManager)1 Criteria (org.ow2.proactive.utils.Criteria)1 NodeSet (org.ow2.proactive.utils.NodeSet)1