You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/04/23 22:55:29 UTC

airavata git commit: adding ultrascan application to test framework

Repository: airavata
Updated Branches:
  refs/heads/master 4f89c6725 -> f76a4a045


adding ultrascan application to test framework


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f76a4a04
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f76a4a04
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f76a4a04

Branch: refs/heads/master
Commit: f76a4a045d44ae4afb551bd5a68e99baacd8b2a7
Parents: 4f89c67
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Thu Apr 23 16:55:21 2015 -0400
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Thu Apr 23 16:55:21 2015 -0400

----------------------------------------------------------------------
 .../ApplicationRegister.java                    | 99 +++++++++++++++++++-
 .../ComputeResourceRegister.java                | 67 ++++++++++---
 .../ExperimentExecution.java                    | 93 ++++++++++++++++++
 .../FrameworkBootstrapping.java                 | 16 ++--
 .../utils/TestFrameworkConstants.java           |  4 +
 .../src/main/resources/test-framework.json      | 18 ++++
 6 files changed, 273 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f76a4a04/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
index 5c82a65..6959fff 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
@@ -49,6 +49,8 @@ public class ApplicationRegister {
     private String stampedeResourceId;
     private String trestlesResourceId;
     private String br2ResourceId;
+    private String gordenResourceId;
+    private String alamoResourceId;
     private List<String> gatewaysToAvoid;
 
 
@@ -81,11 +83,16 @@ public class ApplicationRegister {
                 trestlesResourceId = resourceId;
             }else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.BR2_RESOURCE_NAME)){
                 br2ResourceId = resourceId;
+            }else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.GORDEN_RESOURCE_NAME)){
+                gordenResourceId = resourceId;
+            }else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.ALAMO_RESOURCE_NAME)){
+                alamoResourceId = resourceId;
             }
         }
-        addAmberApplication();
-        addEchoApplication();
-        addLAMMPSApplication();
+        addUltrascanApplication();
+//        addAmberApplication();
+//        addEchoApplication();
+//        addLAMMPSApplication();
     }
 
     protected void addAmberApplication () throws Exception{
@@ -137,6 +144,92 @@ public class ApplicationRegister {
 
     }
 
+    protected void addUltrascanApplication () throws Exception{
+        for (Gateway gateway : allGateways) {
+            boolean isgatewayValid = true;
+            for (String ovoidGateway : gatewaysToAvoid){
+                if (gateway.getGatewayId().equals(ovoidGateway)){
+                    isgatewayValid = false;
+                    break;
+                }
+            }
+            if (isgatewayValid) {
+                // add amber module
+                String ultrascanModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
+                        createApplicationModule(TestFrameworkConstants.AppcatalogConstants.ULTRASCAN, "1.0", TestFrameworkConstants.AppcatalogConstants.ULTRASCAN_DESCRIPTION));
+                System.out.println("Ultrascan module Id " + ultrascanModuleId);
+
+                // add amber interface
+                String ultrascanInterfaceId = registerUltrascanInterface(gateway, ultrascanModuleId);
+                applicationInterfaceListPerGateway.put(ultrascanInterfaceId, gateway.getGatewayId());
+
+                // add amber deployment
+                ApplicationDeploymentDescription ultrascanStampedeDeployment = createApplicationDeployment(ultrascanModuleId, stampedeResourceId,
+                        "/home1/01623/us3/bin/us_mpi_analysis", ApplicationParallelismType.MPI,
+                        TestFrameworkConstants.AppcatalogConstants.ULTRASCAN_DESCRIPTION, null, null, null);
+                String ultrascanStampedeAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(), ultrascanStampedeDeployment);
+
+                String ultrascanTrestlesAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+                        createApplicationDeployment(ultrascanModuleId, trestlesResourceId,
+                                "/home/us3/trestles/bin/us_mpi_analysis", ApplicationParallelismType.MPI,
+                                TestFrameworkConstants.AppcatalogConstants.ULTRASCAN_DESCRIPTION, null, null, null));
+
+                String ultrascanGordenAppDepId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+                        createApplicationDeployment(ultrascanModuleId,gordenResourceId,
+                                "/home/us3/gordon/bin/us_mpi_analysis", ApplicationParallelismType.MPI,
+                                TestFrameworkConstants.AppcatalogConstants.ULTRASCAN_DESCRIPTION, null, null, null));
+
+                List<String> alamoModules = new ArrayList<>();
+                alamoModules.add("module load intel/2015/64");
+                alamoModules.add("module load openmpi/intel/1.8.4");
+                alamoModules.add("module load qt4/4.8.6");
+                alamoModules.add("module load ultrascan3/3.3");
+                String ultrascanAlamoAppId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+                        createApplicationDeployment(ultrascanModuleId,alamoResourceId,
+                                "/home/us3/bin/us_mpi_analysis", ApplicationParallelismType.OPENMP,
+                                TestFrameworkConstants.AppcatalogConstants.ULTRASCAN_DESCRIPTION, alamoModules, null, null));
+
+                applicationDeployementListPerGateway.put(ultrascanStampedeAppDeployId, gateway.getGatewayId());
+                applicationDeployementListPerGateway.put(ultrascanTrestlesAppDeployId, gateway.getGatewayId());
+                applicationDeployementListPerGateway.put(ultrascanGordenAppDepId, gateway.getGatewayId());
+                applicationDeployementListPerGateway.put(ultrascanAlamoAppId, gateway.getGatewayId());
+            }
+        }
+    }
+
+    private String registerUltrascanInterface(Gateway gateway, String ultrascanModuleId) throws org.apache.thrift.TException {
+        List<String> appModules = new ArrayList<String>();
+        appModules.add(ultrascanModuleId);
+
+        InputDataObjectType input1 = createAppInput("input", null,
+                DataType.URI, null, 1, true, true,false, "Input tar file", null);
+
+        InputDataObjectType input2 = createAppInput("mgroupcount", "-mgroupcount=1",
+                DataType.STRING, null, 3, true, true,false, "mgroupcount", null);
+
+        InputDataObjectType input3 = createAppInput("walltime", "-walltime=60",
+                DataType.STRING, null, 2, true, true,false, "walltime", null);
+        List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+        applicationInputs.add(input1);
+        applicationInputs.add(input2);
+        applicationInputs.add(input3);
+
+        OutputDataObjectType output1 = createAppOutput("ultrascanOutput", "analysis-results.tar", DataType.URI, true, false, null);
+        output1.setLocation("output");
+        OutputDataObjectType output2 = createAppOutput("STDOUT", null, DataType.STDOUT, true, false, null);
+        OutputDataObjectType output3 = createAppOutput("STDERR", null, DataType.STDERR, true, false, null);
+        List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+        applicationOutputs.add(output1);
+        applicationOutputs.add(output2);
+        applicationOutputs.add(output3);
+
+        String ultrascanAppId = airavata.registerApplicationInterface(gateway.getGatewayId(),
+                createApplicationInterfaceDescription(TestFrameworkConstants.AppcatalogConstants.ULTRASCAN, TestFrameworkConstants.AppcatalogConstants.ULTRASCAN_DESCRIPTION,
+                        appModules, applicationInputs, applicationOutputs));
+        System.out.println("Ultrascan Application Interface Id " + ultrascanAppId);
+        return ultrascanAppId;
+    }
+
     private String registerAmberInterface(Gateway gateway, String amberModuleId) throws org.apache.thrift.TException {
         List<String> appModules = new ArrayList<String>();
         appModules.add(amberModuleId);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f76a4a04/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
index 1127212..3ca61ba 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
@@ -77,6 +77,8 @@ public class ComputeResourceRegister {
         String stampedeResourceId = null;
         String trestlesResourceId = null;
         String bigredResourceId = null;
+        String gordenResourceId = null;
+        String alamoResourceId = null;
         try {
             for (String resourceName : loginNamesWithResourceMap.keySet()) {
                 if (resourceName.contains("stampede")) {
@@ -94,11 +96,23 @@ public class ComputeResourceRegister {
                     bigredResourceId = registerComputeHost("bigred2.uits.iu.edu", "IU BigRed II Cluster",
                             ResourceJobManagerType.PBS, "push", "/opt/torque/torque-5.0.1/bin/", SecurityProtocol.SSH_KEYS, 22, "aprun -n");
                     System.out.println("BigredII Resource Id is " + bigredResourceId);
+                } else if (resourceName.contains("gorden")) {
+                    //Register BigRedII
+                    gordenResourceId = registerComputeHost("gordon.sdsc.edu", "SDSC Gorden Cluster",
+                            ResourceJobManagerType.PBS, "push", "/opt/torque/bin/", SecurityProtocol.SSH_KEYS, 22, "mpirun_rsh -hostfile $PBS_NODEFILE -np");
+                    System.out.println("BigredII Resource Id is " + bigredResourceId);
+                } else if (resourceName.contains("alamo")) {
+                    //Register BigRedII
+                    alamoResourceId = registerComputeHost("alamo.uthscsa.edu", "TACC alamo Cluster",
+                            ResourceJobManagerType.PBS, "push", "/usr/bin/", SecurityProtocol.SSH_KEYS, 22, " /usr/bin/mpiexec -np");
+                    System.out.println("BigredII Resource Id is " + bigredResourceId);
                 }
             }
             computeResourceIds.add(stampedeResourceId);
             computeResourceIds.add(trestlesResourceId);
             computeResourceIds.add(bigredResourceId);
+            computeResourceIds.add(gordenResourceId);
+            computeResourceIds.add(alamoResourceId);
         }catch (Exception e) {
             logger.error("Error occured while adding compute resources", e);
             throw new Exception("Error occured while adding compute resources", e);
@@ -162,27 +176,52 @@ public class ComputeResourceRegister {
 
     public void registerGatewayResourceProfile() throws Exception{
         try {
-            ComputeResourcePreference stampedeResourcePreferences = null;
-            ComputeResourcePreference trestlesResourcePreferences = null;
-            ComputeResourcePreference bigRedResourcePreferences = null;
+            ComputeResourcePreference stampedeOGCEResourcePreferences = null;
+            ComputeResourcePreference stampedeUS3ResourcePreferences = null;
+            ComputeResourcePreference trestlesOGCEResourcePreferences = null;
+            ComputeResourcePreference trestlesUS3ResourcePreferences = null;
+            ComputeResourcePreference bigRedCgatewayResourcePreferences = null;
+            ComputeResourcePreference gordenUS3ResourcePreference = null;
+            ComputeResourcePreference alamoUS3ResourcePreference = null;
 
             loginNamesWithResourceIds = getLoginNamesWithResourceIDs();
 
             List<GatewayResourceProfile> allGatewayComputeResources = airavata.getAllGatewayComputeResources();
             for (GatewayResourceProfile gatewayResourceProfile : allGatewayComputeResources) {
                 for (String resourceId : loginNamesWithResourceIds.keySet()) {
-                    if (resourceId.contains("stampede")) {
-                        stampedeResourcePreferences = createComputeResourcePreference(resourceId, "TG-STA110014S", false, null,
-                                JobSubmissionProtocol.SSH, DataMovementProtocol.SCP, "/scratch/01437/ogce/gta-work-dirs", loginNamesWithResourceIds.get(resourceId));
-                        airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, stampedeResourcePreferences);
+                    String loginUserName = loginNamesWithResourceIds.get(resourceId);
+                    if (resourceId.contains("stampede") ) {
+                        if (loginUserName.equals("ogce")){
+                            stampedeOGCEResourcePreferences = createComputeResourcePreference(resourceId, "TG-STA110014S", false, null,
+                                    JobSubmissionProtocol.SSH, DataMovementProtocol.SCP, "/scratch/01437/ogce/gta-work-dirs", loginUserName);
+                            airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, stampedeOGCEResourcePreferences);
+                        }else if (loginUserName.equals("us3")){
+                            stampedeUS3ResourcePreferences = createComputeResourcePreference(resourceId, "TG-MCB070039N", false, null,
+                                    JobSubmissionProtocol.SSH, DataMovementProtocol.SCP, "/scratch/01623/us3/jobs/", loginUserName);
+                            airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, stampedeUS3ResourcePreferences);
+                        }
                     }else if (resourceId.contains("trestles")){
-                        trestlesResourcePreferences = createComputeResourcePreference(resourceId, "sds128", false, null, JobSubmissionProtocol.SSH,
-                                DataMovementProtocol.SCP, "/oasis/scratch/trestles/ogce/temp_project/gta-work-dirs", loginNamesWithResourceIds.get(resourceId));
-                        airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, trestlesResourcePreferences);
-                    }else if (resourceId.contains("bigred2")){
-                        bigRedResourcePreferences = createComputeResourcePreference(resourceId, "TG-STA110014S", false, null, null, null,
-                                "/N/dc2/scratch/cgateway/gta-work-dirs", loginNamesWithResourceIds.get(resourceId));
-                        airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, bigRedResourcePreferences);
+                        if (loginUserName.equals("ogce")){
+                            trestlesOGCEResourcePreferences = createComputeResourcePreference(resourceId, "sds128", false, null, JobSubmissionProtocol.SSH,
+                                    DataMovementProtocol.SCP, "/oasis/scratch/trestles/ogce/temp_project/gta-work-dirs", loginUserName);
+                            airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, trestlesOGCEResourcePreferences);
+                        }else if (loginUserName.equals("us3")){
+                            trestlesUS3ResourcePreferences = createComputeResourcePreference(resourceId, "uot111", false, null, JobSubmissionProtocol.SSH,
+                                    DataMovementProtocol.SCP, "/oasis/projects/nsf/uot111/us3/airavata-workdirs/", loginUserName);
+                            airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, trestlesUS3ResourcePreferences);
+                        }
+                    }else if (resourceId.contains("bigred2") && loginUserName.equals("cgateway")){
+                        bigRedCgatewayResourcePreferences = createComputeResourcePreference(resourceId, "TG-STA110014S", false, null, null, null,
+                                "/N/dc2/scratch/cgateway/gta-work-dirs", loginUserName);
+                        airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, bigRedCgatewayResourcePreferences);
+                    }else if (resourceId.contains("gorden") && loginUserName.equals("us3")){
+                        gordenUS3ResourcePreference = createComputeResourcePreference(resourceId, "uot111", false, null, JobSubmissionProtocol.SSH,
+                                DataMovementProtocol.SCP, "/home/us3/gordon/work/airavata", loginUserName);
+                        airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, gordenUS3ResourcePreference);
+                    }else if (resourceId.contains("alamo") && loginUserName.equals("us3")){
+                        alamoUS3ResourcePreference = createComputeResourcePreference(resourceId, null, false, "batch", JobSubmissionProtocol.SSH,
+                                DataMovementProtocol.SCP, "/home/us3/work/airavata", loginUserName);
+                        airavata.addGatewayComputeResourcePreference(gatewayResourceProfile.getGatewayID(), resourceId, alamoUS3ResourcePreference);
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f76a4a04/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
index 50c83bf..03da1e7 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
@@ -498,6 +498,99 @@ public class ExperimentExecution {
         }
     }
 
+    public void createUltrascanExperiment () throws Exception{
+        try {
+            TestFrameworkProps.Application[] applications = properties.getApplications();
+            Map<String, String> userGivenAmberInputs = new HashMap<>();
+            for (TestFrameworkProps.Application application : applications){
+                if (application.getName().equals(TestFrameworkConstants.AppcatalogConstants.ULTRASCAN)){
+                    userGivenAmberInputs = application.getInputs();
+                }
+            }
+
+            for (String gatewayId : csTokens.keySet()){
+                String token = csTokens.get(gatewayId);
+                Map<String, String> appsWithNames = appInterfaceMap.get(gatewayId);
+                for (String appId : appsWithNames.keySet()){
+                    String appName = appsWithNames.get(appId);
+                    if (appName.equals(TestFrameworkConstants.AppcatalogConstants.ULTRASCAN)){
+                        List<InputDataObjectType> applicationInputs = airavata.getApplicationInputs(appId);
+                        List<OutputDataObjectType> appOutputs = airavata.getApplicationOutputs(appId);
+                        for (String inputName : userGivenAmberInputs.keySet()){
+                            for (InputDataObjectType inputDataObjectType : applicationInputs) {
+                                if (inputDataObjectType.getName().equalsIgnoreCase(inputName)) {
+                                    inputDataObjectType.setValue(userGivenAmberInputs.get(inputName));
+                                }
+                            }
+                        }
+                        List<Project> projectsPerGateway = projectsMap.get(gatewayId);
+                        String projectID = null;
+                        if (projectsPerGateway != null && !projectsPerGateway.isEmpty()){
+                            projectID = projectsPerGateway.get(0).getProjectID();
+                        }
+                        Experiment simpleExperiment =
+                                ExperimentModelUtil.createSimpleExperiment(projectID, testUser, "Ultrascan Experiment", "Ultrascan Experiment run", appId, applicationInputs);
+                        simpleExperiment.setExperimentOutputs(appOutputs);
+                        String experimentId;
+                        Map<String, String> computeResources = airavata.getAvailableAppInterfaceComputeResources(appId);
+                        if (computeResources != null && computeResources.size() != 0) {
+                            for (String id : computeResources.keySet()) {
+                                String resourceName = computeResources.get(id);
+                                if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.TRESTLES_RESOURCE_NAME)) {
+                                    ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 30, 0, 1, null);
+                                    UserConfigurationData userConfigurationData = new UserConfigurationData();
+                                    userConfigurationData.setAiravataAutoSchedule(false);
+                                    userConfigurationData.setOverrideManualScheduledParams(false);
+                                    userConfigurationData.setComputationalResourceScheduling(scheduling);
+                                    simpleExperiment.setUserConfigurationData(userConfigurationData);
+                                    experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+                                    experimentsWithTokens.put(experimentId, token);
+                                    experimentsWithGateway.put(experimentId, gatewayId);
+                                }else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.STAMPEDE_RESOURCE_NAME)) {
+                                    ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 30, 0, 1, null);
+                                    UserConfigurationData userConfigurationData = new UserConfigurationData();
+                                    userConfigurationData.setAiravataAutoSchedule(false);
+                                    userConfigurationData.setOverrideManualScheduledParams(false);
+                                    userConfigurationData.setComputationalResourceScheduling(scheduling);
+                                    simpleExperiment.setUserConfigurationData(userConfigurationData);
+                                    experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+                                    experimentsWithTokens.put(experimentId, token);
+                                    experimentsWithGateway.put(experimentId, gatewayId);
+                                    createAmberWithErrorInputs(gatewayId, token, projectID, id, appId);
+                                    createAmberWithErrorUserConfig(gatewayId, token, projectID, id, appId);
+                                } else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.ALAMO_RESOURCE_NAME)) {
+                                    ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 30, 0, 1, null);
+                                    UserConfigurationData userConfigurationData = new UserConfigurationData();
+                                    userConfigurationData.setAiravataAutoSchedule(false);
+                                    userConfigurationData.setOverrideManualScheduledParams(false);
+                                    userConfigurationData.setComputationalResourceScheduling(scheduling);
+                                    simpleExperiment.setUserConfigurationData(userConfigurationData);
+                                    experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+                                    experimentsWithTokens.put(experimentId, token);
+                                    experimentsWithGateway.put(experimentId, gatewayId);
+                                }else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.GORDEN_RESOURCE_NAME)) {
+                                    ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 30, 0, 1, null);
+                                    UserConfigurationData userConfigurationData = new UserConfigurationData();
+                                    userConfigurationData.setAiravataAutoSchedule(false);
+                                    userConfigurationData.setOverrideManualScheduledParams(false);
+                                    userConfigurationData.setComputationalResourceScheduling(scheduling);
+                                    simpleExperiment.setUserConfigurationData(userConfigurationData);
+                                    experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+                                    experimentsWithTokens.put(experimentId, token);
+                                    experimentsWithGateway.put(experimentId, gatewayId);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }catch (Exception e){
+            logger.error("Error while creating Ultrascan experiment", e);
+            throw new Exception("Error while creating Ultrascan experiment", e);
+        }
+    }
+
+
     public void createEchoExperiment () throws Exception{
         try {
             for (String gatewayId : csTokens.keySet()) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/f76a4a04/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
index d689428..0d3f68d 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
@@ -21,14 +21,15 @@
 
 package org.apache.airavata.testsuite.multitenantedairavata;
 
-import org.apache.airavata.testsuite.multitenantedairavata.utils.PropertyFileType;
-import org.apache.airavata.testsuite.multitenantedairavata.utils.PropertyReader;
 import org.apache.airavata.testsuite.multitenantedairavata.utils.TestFrameworkConstants;
 import org.apache.commons.cli.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -81,10 +82,11 @@ public class FrameworkBootstrapping {
             }else if (expExec){
                 tokens = readTokens();
                 experimentExecution = new ExperimentExecution(setup.getAiravata(), tokens, setup.getTestFrameworkProps());
-                experimentExecution.createEchoExperiment();
-                experimentExecution.createAmberExperiment();
-                experimentExecution.launchExperiments();
-                experimentExecution.monitorExperiments();
+                experimentExecution.createUltrascanExperiment();
+//                experimentExecution.createEchoExperiment();
+//                experimentExecution.createAmberExperiment();
+//                experimentExecution.launchExperiments();
+//                experimentExecution.monitorExperiments();
             }
         } catch (Exception e) {
             logger.error("Error occured while set up", e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f76a4a04/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
index 8fc2b28..04d3250 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
@@ -72,6 +72,7 @@ public class TestFrameworkConstants {
     public static final class AppcatalogConstants {
         public static final String AMBER_APP_NAME = "amber_sander";
         public static final String ECHO_NAME = "Echo";
+        public static final String ULTRASCAN = "Ultrascan";
         public static final String ESPRESSO_NAME = "ESPRESSO";
         public static final String GROMACS_NAME = "GROMACS";
         public static final String LAMMPS_NAME = "LAMMPS";
@@ -85,6 +86,7 @@ public class TestFrameworkConstants {
 
         public static final String ECHO_DESCRIPTION = "A Simple Echo Application";
         public static final String AMBER_DESCRIPTION = "Assisted Model Building with Energy Refinement MD Package";
+        public static final String ULTRASCAN_DESCRIPTION = "Ultrascan application";
         public static final String ESPRESSO_DESCRIPTION = "Nanoscale electronic-structure calculations and materials modeling";
         public static final String GROMACS_DESCRIPTION = "GROMACS Molecular Dynamics Package";
         public static final String LAMMPS_DESCRIPTION = "Large-scale Atomic/Molecular Massively Parallel Simulator";
@@ -99,6 +101,8 @@ public class TestFrameworkConstants {
         public static final String STAMPEDE_RESOURCE_NAME = "stampede.tacc.xsede.org";
         public static final String TRESTLES_RESOURCE_NAME = "trestles.sdsc.xsede.org";
         public static final String BR2_RESOURCE_NAME = "bigred2.uits.iu.edu";
+        public static final String GORDEN_RESOURCE_NAME = "gordon.sdsc.edu";
+        public static final String ALAMO_RESOURCE_NAME = "alamo.uthscsa.edu";
 
 
         public static final String AMBER_HEAT_RST_LOCATION = "02_Heat.rst_location";

http://git-wip-us.apache.org/repos/asf/airavata/blob/f76a4a04/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json b/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json
index 68723ac..e5526fa 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.json
@@ -24,6 +24,16 @@
 
         },
         {
+            "name": "gordon.sdsc.edu",
+            "loginUser": "us3"
+
+        },
+        {
+            "name": "alamo.uthscsa.edu",
+            "loginUser": "us3"
+
+        },
+        {
             "name": "bigred2.uits.iu.edu",
             "loginUser": "cgateway"
 
@@ -37,6 +47,14 @@
                 "prodIn": "/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/03_Prod.in",
                 "prmtop": "/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/prmtop"
             }
+        },
+        {
+            "name": "ultrascan",
+            "inputs": {
+                "input": "/Users/chathuri/dev/airavata/source/php/inputs/hpcinput.tar",
+                "mgroupcount": "-mgroupcount=1",
+                "walltime": "-walltime=60"
+            }
         }
     ],
     "errors": [