/** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.airavata.app.catalog; import org.apache.airavata.app.catalog.util.Initialize; import org.apache.airavata.model.appcatalog.computeresource.*; import org.apache.airavata.model.data.movement.*; import org.apache.airavata.registry.core.app.catalog.resources.AppCatAbstractResource; import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory; import org.apache.airavata.registry.cpi.AppCatalog; import org.apache.airavata.registry.cpi.AppCatalogException; import org.apache.airavata.registry.cpi.ComputeResource; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.*; import static org.junit.Assert.assertTrue; public class ComputeAppCatalogExperimentCatResourceTest { private static Initialize initialize; private static AppCatalog appcatalog; private static final Logger logger = LoggerFactory.getLogger(ComputeAppCatalogExperimentCatResourceTest.class); @Before public void setUp() { try { initialize = new Initialize("appcatalog-derby.sql"); initialize.initializeDB(); appcatalog = RegistryFactory.getAppCatalog(); } catch (AppCatalogException e) { logger.error(e.getMessage(), e); } } @After public void tearDown() throws Exception { System.out.println("********** TEAR DOWN ************"); initialize.stopDerbyServer(); } @Test public void testAddComputeResource (){ try { ComputeResource computeResource = appcatalog.getComputeResource(); ComputeResourceDescription description = new ComputeResourceDescription(); description.setHostName("localhost"); description.setResourceDescription("test compute resource"); List<String> ipdaresses = new ArrayList<String>(); ipdaresses.add("222.33.43.444"); ipdaresses.add("23.344.44.454"); description.setIpAddresses(ipdaresses); // List<String> aliases = new ArrayList<String>(); // aliases.add("test.alias1"); // aliases.add("test.alias2"); // description.setHostAliases(aliases); String sshsubmissionId = addSSHJobSubmission(); System.out.println("**** SSH Submission id ****** :" + sshsubmissionId); // String gsiSSHsubmissionId = addGSISSHJobSubmission(); // System.out.println("**** GSISSH Submission id ****** :" + gsiSSHsubmissionId); // String globusSubmissionId = addGlobusJobSubmission(); // System.out.println("**** Globus Submission id ****** :" + globusSubmissionId); JobSubmissionInterface sshSubmissionInt = new JobSubmissionInterface(); sshSubmissionInt.setJobSubmissionInterfaceId(sshsubmissionId); sshSubmissionInt.setPriorityOrder(1); sshSubmissionInt.setJobSubmissionProtocol(JobSubmissionProtocol.SSH); // JobSubmissionInterface globusSubInt = new JobSubmissionInterface(); // globusSubInt.setJobSubmissionInterfaceId(globusSubmissionId); // globusSubInt.setPriorityOrder(2); // globusSubInt.setJobSubmissionProtocol(JobSubmissionProtocol.GLOBUS); List<JobSubmissionInterface> interfaceList = new ArrayList<JobSubmissionInterface>(); interfaceList.add(sshSubmissionInt); // interfaceList.add(globusSubInt); description.setJobSubmissionInterfaces(interfaceList); String scpDataMoveId = addSCPDataMovement(); System.out.println("**** SCP DataMoveId****** :" + scpDataMoveId); String gridFTPDataMoveId = addGridFTPDataMovement(); System.out.println("**** grid FTP DataMoveId****** :" + gridFTPDataMoveId); List<DataMovementInterface> dataMovementInterfaces = new ArrayList<DataMovementInterface>(); DataMovementInterface scpInterface = new DataMovementInterface(); scpInterface.setDataMovementInterfaceId(scpDataMoveId); scpInterface.setDataMovementProtocol(DataMovementProtocol.SCP); scpInterface.setPriorityOrder(1); DataMovementInterface gridFTPMv = new DataMovementInterface(); gridFTPMv.setDataMovementInterfaceId(gridFTPDataMoveId); gridFTPMv.setDataMovementProtocol(DataMovementProtocol.GridFTP); gridFTPMv.setPriorityOrder(2); description.setDataMovementInterfaces(dataMovementInterfaces); BatchQueue batchQueue1 = new BatchQueue(); batchQueue1.setQueueName("queue1"); batchQueue1.setQueueDescription("que1Desc1"); batchQueue1.setMaxRunTime(10); batchQueue1.setMaxNodes(4); batchQueue1.setMaxJobsInQueue(1); BatchQueue batchQueue2 = new BatchQueue(); batchQueue2.setQueueName("queue2"); batchQueue2.setQueueDescription("que1Desc2"); batchQueue2.setMaxRunTime(10); batchQueue2.setMaxNodes(4); batchQueue2.setMaxJobsInQueue(1); List<BatchQueue> batchQueueList = new ArrayList<BatchQueue>(); batchQueueList.add(batchQueue1); batchQueueList.add(batchQueue2); description.setBatchQueues(batchQueueList); Map<FileSystems, String> fileSysMap = new HashMap<FileSystems, String>(); fileSysMap.put(FileSystems.HOME, "/home"); fileSysMap.put(FileSystems.SCRATCH, "/tmp"); description.setFileSystems(fileSysMap); String resourceId = computeResource.addComputeResource(description); System.out.println("**********Resource id ************* : " + resourceId); ComputeResourceDescription host = null; if (computeResource.isComputeResourceExists(resourceId)){ host = computeResource.getComputeResource(resourceId); List<BatchQueue> batchQueues = host.getBatchQueues(); for (BatchQueue queue : batchQueues){ System.out.println("%%%%%%%%%%%%%%%% queue description : %%%%%%%%%%%%%%%%%%% : " + queue.getQueueDescription()); } List<String> hostAliases = host.getHostAliases(); if (hostAliases != null && !hostAliases.isEmpty()){ for (String alias : hostAliases){ System.out.println("%%%%%%%%%%%%%%%% alias value : %%%%%%%%%%%%%%%%%%% : " + alias); } } host.addToHostAliases("abc"); computeResource.updateComputeResource(resourceId, host); List<String> hostAliases1 = computeResource.getComputeResource(resourceId).getHostAliases(); for (String alias : hostAliases1){ System.out.println("%%%%%%%%%%%%%%%% alias value : %%%%%%%%%%%%%%%%%%% : " + alias); } System.out.println("**********Resource name ************* : " + host.getHostName()); } SSHJobSubmission sshJobSubmission = computeResource.getSSHJobSubmission(sshsubmissionId); System.out.println("**********SSH Submission resource job manager ************* : " + sshJobSubmission.getResourceJobManager().toString()); System.out.println("**********Monitor mode ************* : " + sshJobSubmission.getMonitorMode().toString()); // GlobusJobSubmission globusJobSubmission = computeResource.get(globusSubmissionId); // System.out.println("**********Globus Submission resource job manager ************* : " + globusJobSubmission.getResourceJobManager().toString()); SCPDataMovement scpDataMovement = computeResource.getSCPDataMovement(scpDataMoveId); System.out.println("**********SCP Data Move Security protocol ************* : " + scpDataMovement.getSecurityProtocol().toString()); GridFTPDataMovement gridFTPDataMovement = computeResource.getGridFTPDataMovement(gridFTPDataMoveId); System.out.println("**********GRID FTP Data Move Security protocol ************* : " + gridFTPDataMovement.getSecurityProtocol().toString()); description.setHostName("localhost2"); computeResource.updateComputeResource(resourceId, description); if (computeResource.isComputeResourceExists(resourceId)){ host = computeResource.getComputeResource(resourceId); System.out.println("**********Updated Resource name ************* : " + host.getHostName()); } Map<String, String> cfilters = new HashMap<String, String>(); cfilters.put(AppCatAbstractResource.ComputeResourceConstants.HOST_NAME, "localhost2"); List<ComputeResourceDescription> computeResourceList = computeResource.getComputeResourceList(cfilters); System.out.println("**********Size of compute resources ************* : " + computeResourceList.size()); List<ComputeResourceDescription> allComputeResourceList = computeResource.getAllComputeResourceList(); System.out.println("**********Size of all compute resources ************* : " + allComputeResourceList.size()); Map<String, String> allComputeResourceIdList = computeResource.getAllComputeResourceIdList(); System.out.println("**********Size of all compute resources ids ************* : " + allComputeResourceIdList.size()); // Map<String, String> globusfilters = new HashMap<String, String>(); // globusfilters.put(AbstractResource.GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER, ResourceJobManager.PBS.toString()); // List<GlobusJobSubmission> gList = computeResource.getGlobusJobSubmissionList(globusfilters); // System.out.println("**********Size of globus jobs ************* : " + gList.size()); // Map<String, String> sshfilters = new HashMap<String, String>(); // sshfilters.put(AbstractResource.SSHSubmissionConstants.RESOURCE_JOB_MANAGER, ResourceJobManager.PBS.toString()); // List<SSHJobSubmission> sshList = computeResource.getSS(sshfilters); // System.out.println("**********Size of SSH jobs ************* : " + sshList.size()); // Map<String, String> gsishfilters = new HashMap<String, String>(); // gsishfilters.put(AbstractResource.GSISSHSubmissionConstants.RESOURCE_JOB_MANAGER, ResourceJobManager.PBS.toString()); // List<GSISSHJobSubmission> gsisshList = computeResource.getGSISSHJobSubmissionList(gsishfilters); // System.out.println("**********Size of GSISSH jobs ************* : " + gsisshList.size()); // Map<String, String> scpfilters = new HashMap<String, String>(); // scpfilters.put(AbstractResource.SCPDataMovementConstants.SECURITY_PROTOCOL, SecurityProtocol.SSH_KEYS.toString()); // List<SCPDataMovement> scpDataMovementList = computeResource.getSCPDataMovementList(scpfilters); // System.out.println("**********Size of SCP DM list ************* : " + scpDataMovementList.size()); // // Map<String, String> ftpfilters = new HashMap<String, String>(); // ftpfilters.put(AbstractResource.GridFTPDataMovementConstants.SECURITY_PROTOCOL, SecurityProtocol.SSH_KEYS.toString()); // List<GridFTPDataMovement> ftpDataMovementList = computeResource.getGridFTPDataMovementList(ftpfilters); // System.out.println("**********Size of FTP DM list ************* : " + ftpDataMovementList.size()); assertTrue("Compute resource save successfully", host != null); } catch (AppCatalogException e) { logger.error(e.getMessage(), e); } } public String addSSHJobSubmission (){ try { SSHJobSubmission jobSubmission = new SSHJobSubmission(); jobSubmission.setSshPort(22); jobSubmission.setSecurityProtocol(SecurityProtocol.GSI); ResourceJobManager jobManager = new ResourceJobManager(); jobManager.setResourceJobManagerType(ResourceJobManagerType.PBS); jobManager.setPushMonitoringEndpoint("monitor ep"); jobManager.setJobManagerBinPath("/bin"); Map<JobManagerCommand, String> commands = new HashMap<JobManagerCommand, String>(); commands.put(JobManagerCommand.SUBMISSION, "Sub command"); commands.put(JobManagerCommand.SHOW_QUEUE, "show q command"); jobManager.setJobManagerCommands(commands); jobSubmission.setMonitorMode(MonitorMode.POLL_JOB_MANAGER); // String jobManagerID = appcatalog.getComputeResource().addResourceJobManager(jobManager); // jobManager.setResourceJobManagerId(jobManagerID); jobSubmission.setResourceJobManager(jobManager); return appcatalog.getComputeResource().addSSHJobSubmission(jobSubmission); } catch (AppCatalogException e) { logger.error(e.getMessage(), e); } return null; } // public String addGlobusJobSubmission (){ // try { // GlobusJobSubmission jobSubmission = new GlobusJobSubmission(); // jobSubmission.setSecurityProtocol(SecurityProtocol.GSI); // jobSubmission.setResourceJobManager(ResourceJobManager.PBS); // List<String> endPoints = new ArrayList<String>(); // endPoints.add("222.33.43.444"); // endPoints.add("23.344.44.454"); // jobSubmission.setGlobusGateKeeperEndPoint(endPoints); // return appcatalog.getComputeResource().addGlobusJobSubmission(jobSubmission); // } catch (AppCatalogException e) { // e.printStackTrace(); // } // return null; // } public String addSCPDataMovement (){ try { SCPDataMovement dataMovement = new SCPDataMovement(); dataMovement.setSshPort(22); dataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS); return appcatalog.getComputeResource().addScpDataMovement(dataMovement); }catch (AppCatalogException e) { logger.error(e.getMessage(), e); } return null; } public String addGridFTPDataMovement (){ try { GridFTPDataMovement dataMovement = new GridFTPDataMovement(); dataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS); List<String> endPoints = new ArrayList<String>(); endPoints.add("222.33.43.444"); endPoints.add("23.344.44.454"); dataMovement.setGridFTPEndPoints(endPoints); return appcatalog.getComputeResource().addGridFTPDataMovement(dataMovement); }catch (AppCatalogException e) { logger.error(e.getMessage(), e); } return null; } }