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/03/31 22:37:36 UTC
airavata git commit: Adding main classes - AIRAVATA-1652
Repository: airavata
Updated Branches:
refs/heads/master 7812dcaf0 -> 1f9ac846a
Adding main classes - AIRAVATA-1652
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/1f9ac846
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/1f9ac846
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/1f9ac846
Branch: refs/heads/master
Commit: 1f9ac846aa0c3bf3f3ec41b3c818780baf280207
Parents: 7812dca
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Tue Mar 31 16:37:28 2015 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Tue Mar 31 16:37:28 2015 -0400
----------------------------------------------------------------------
.../test-suite/multi-tenanted-airavata/pom.xml | 5 +
.../multitenantedairavata/AiravataClient.java | 4 +-
.../ApplicationRegister.java | 16 +-
.../ComputeResourceRegister.java | 7 +-
.../ExperimentExecution.java | 2 -
.../FrameworkBootstrapping.java | 44 ++++
.../multitenantedairavata/FrameworkSetup.java | 73 ++++++
.../multitenantedairavata/GatewayRegister.java | 220 +++++++++++++++++++
.../multitenantedairavata/LoadTester.java | 50 +++++
.../testsuite/multitenantedairavata/Setup.java | 208 ------------------
10 files changed, 405 insertions(+), 224 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/modules/test-suite/multi-tenanted-airavata/pom.xml
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/pom.xml b/modules/test-suite/multi-tenanted-airavata/pom.xml
index f974c59..9068996 100644
--- a/modules/test-suite/multi-tenanted-airavata/pom.xml
+++ b/modules/test-suite/multi-tenanted-airavata/pom.xml
@@ -74,6 +74,11 @@
<artifactId>airavata-credential-store</artifactId>
<version>${project.version}</version>
</dependency>
+ <!--<dependency>-->
+ <!--<groupId>mysql</groupId>-->
+ <!--<artifactId>mysql-connector-java</artifactId>-->
+ <!--<version>5.1.35</version>-->
+ <!--</dependency>-->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/AiravataClient.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/AiravataClient.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/AiravataClient.java
index b20cdc2..5126249 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/AiravataClient.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/AiravataClient.java
@@ -45,7 +45,7 @@ public class AiravataClient {
propertyReader = new PropertyReader();
}
- public Airavata.Client getAiravataClient(){
+ public Airavata.Client getAiravataClient() throws Exception{
try {
String airavataHost = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.THRIFT_SERVER_HOST, PropertyFileType.AIRAVATA_CLIENT);
int airavataport = Integer.valueOf(propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.THRIFT_SERVER_PORT, PropertyFileType.AIRAVATA_CLIENT));
@@ -53,7 +53,7 @@ public class AiravataClient {
return airavataClient;
} catch (AiravataClientConnectException e) {
logger.error("Error while creating airavata client instance", e);
+ throw new Exception("Error while creating airavata client instance", e);
}
- return null;
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/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 8e71958..d73ccba 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
@@ -83,7 +83,7 @@ public class ApplicationRegister {
addLAMMPSApplication();
}
- public void addAmberApplication () throws Exception{
+ protected void addAmberApplication () throws Exception{
for (Gateway gateway : allGateways){
// add amber module
String amberModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
@@ -185,7 +185,7 @@ public class ApplicationRegister {
}
- public void addEchoApplication() throws Exception{
+ protected void addEchoApplication() throws Exception{
for (Gateway gateway : allGateways){
// add echo module
String echoModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
@@ -218,14 +218,14 @@ public class ApplicationRegister {
}
}
- public void addLAMMPSApplication() throws Exception{
+ protected void addLAMMPSApplication() throws Exception{
// add LAMPPS module
// add LAMPSS interface
// add LAMPSS deployment
}
- public static ApplicationDeploymentDescription createApplicationDeployment(String appModuleId,
+ protected ApplicationDeploymentDescription createApplicationDeployment(String appModuleId,
String computeResourceId,
String executablePath,
ApplicationParallelismType parallelism,
@@ -245,7 +245,7 @@ public class ApplicationRegister {
return deployment;
}
- public static ApplicationModule createApplicationModule(String appModuleName,
+ protected ApplicationModule createApplicationModule(String appModuleName,
String appModuleVersion, String appModuleDescription) {
ApplicationModule module = new ApplicationModule();
module.setAppModuleDescription(appModuleDescription);
@@ -254,7 +254,7 @@ public class ApplicationRegister {
return module;
}
- public static InputDataObjectType createAppInput (String inputName,
+ protected InputDataObjectType createAppInput (String inputName,
String value,
DataType type,
String applicationArgument,
@@ -278,7 +278,7 @@ public class ApplicationRegister {
return input;
}
- public static OutputDataObjectType createAppOutput(String inputName,
+ protected OutputDataObjectType createAppOutput(String inputName,
String value,
DataType type,
boolean isRequired,
@@ -292,7 +292,7 @@ public class ApplicationRegister {
return outputDataObjectType;
}
- public static ApplicationInterfaceDescription createApplicationInterfaceDescription
+ protected ApplicationInterfaceDescription createApplicationInterfaceDescription
(String applicationName, String applicationDescription, List<String> applicationModules,
List<InputDataObjectType> applicationInputs, List<OutputDataObjectType>applicationOutputs) {
ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/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 9127fc9..db2965f 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
@@ -144,7 +144,7 @@ public class ComputeResourceRegister {
return computeResourceId;
}
- public static ComputeResourceDescription createComputeResourceDescription(
+ public ComputeResourceDescription createComputeResourceDescription(
String hostName, String hostDesc, List<String> hostAliases, List<String> ipAddresses) {
ComputeResourceDescription host = new ComputeResourceDescription();
host.setHostName(hostName);
@@ -154,7 +154,7 @@ public class ComputeResourceRegister {
return host;
}
- public static ResourceJobManager createResourceJobManager(
+ public ResourceJobManager createResourceJobManager(
ResourceJobManagerType resourceJobManagerType, String pushMonitoringEndpoint, String jobManagerBinPath,
Map<JobManagerCommand, String> jobManagerCommands) {
ResourceJobManager resourceJobManager = new ResourceJobManager();
@@ -197,8 +197,7 @@ public class ComputeResourceRegister {
}
}
- public static ComputeResourcePreference
- createComputeResourcePreference(String computeResourceId, String allocationProjectNumber,
+ public ComputeResourcePreference createComputeResourcePreference(String computeResourceId, String allocationProjectNumber,
boolean overridebyAiravata, String preferredBatchQueue,
JobSubmissionProtocol preferredJobSubmissionProtocol,
DataMovementProtocol preferredDataMovementProtocol,
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/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 b6b5476..7a79735 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
@@ -149,8 +149,6 @@ public class ExperimentExecution {
}
});
}
-
-
}
public void createAmberExperiment () throws Exception{
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/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
new file mode 100644
index 0000000..22a1608
--- /dev/null
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.testsuite.multitenantedairavata;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FrameworkBootstrapping {
+ private final static Logger logger = LoggerFactory.getLogger(FrameworkBootstrapping.class);
+
+ public static void main(String[] args) {
+ try {
+ FrameworkSetup setup = FrameworkSetup.getInstance();
+ setup.getGatewayRegister().createGateways();
+ logger.info("Gateways created...");
+ setup.getGatewayRegister().registerSSHKeys();
+ logger.info("Registered SSH keys to each gateway...");
+ setup.getApplicationRegister().addApplications();
+ logger.info("Applications registered for each each gateway...");
+ } catch (Exception e) {
+ logger.error("Error occured while set up", e);
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkSetup.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkSetup.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkSetup.java
new file mode 100644
index 0000000..d0666e4
--- /dev/null
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkSetup.java
@@ -0,0 +1,73 @@
+/*
+ *
+ * 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.testsuite.multitenantedairavata;
+
+import org.apache.airavata.api.Airavata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FrameworkSetup {
+ private static FrameworkSetup instance = new FrameworkSetup();
+ private GatewayRegister gatewayRegister;
+ private ApplicationRegister applicationRegister;
+ private Airavata.Client airavata;
+ private final static Logger logger = LoggerFactory.getLogger(FrameworkSetup.class);
+
+ public static FrameworkSetup getInstance() {
+ return instance;
+ }
+
+ private FrameworkSetup() {
+ try {
+ AiravataClient airavataClient = AiravataClient.getInstance();
+ this.airavata = airavataClient.getAiravataClient();
+ gatewayRegister = new GatewayRegister(airavata);
+ applicationRegister = new ApplicationRegister(airavata);
+ } catch (Exception e) {
+ logger.error("Error while creating airavata client instance", e);
+ }
+ }
+
+ public GatewayRegister getGatewayRegister() {
+ return gatewayRegister;
+ }
+
+ public void setGatewayRegister(GatewayRegister gatewayRegister) {
+ this.gatewayRegister = gatewayRegister;
+ }
+
+ public ApplicationRegister getApplicationRegister() {
+ return applicationRegister;
+ }
+
+ public void setApplicationRegister(ApplicationRegister applicationRegister) {
+ this.applicationRegister = applicationRegister;
+ }
+
+ public Airavata.Client getAiravata() {
+ return airavata;
+ }
+
+ public void setAiravata(Airavata.Client airavata) {
+ this.airavata = airavata;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
new file mode 100644
index 0000000..f0fba59
--- /dev/null
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
@@ -0,0 +1,220 @@
+/*
+ *
+ * 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.testsuite.multitenantedairavata;
+
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.common.utils.DBUtil;
+import org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential;
+import org.apache.airavata.credential.store.store.CredentialStoreException;
+import org.apache.airavata.credential.store.store.impl.SSHCredentialWriter;
+import org.apache.airavata.credential.store.util.TokenGenerator;
+import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.error.AiravataClientException;
+import org.apache.airavata.model.error.AiravataSystemException;
+import org.apache.airavata.model.error.InvalidRequestException;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.Project;
+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.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class GatewayRegister {
+ private final static Logger logger = LoggerFactory.getLogger(GatewayRegister.class);
+ private Airavata.Client airavata;
+ private PropertyReader propertyReader;
+ private int gatewayCount;
+ private Map<String, String> tokenMap;
+ private Map<String, String> projectMap;
+
+ public GatewayRegister(Airavata.Client client) throws Exception{
+ try {
+ this.airavata = client;
+ this.tokenMap = new HashMap<String, String>();
+ this.projectMap = new HashMap<String, String>();
+ propertyReader = new PropertyReader();
+ }catch (Exception e){
+ logger.error("Error while initializing setup step", e);
+ throw new Exception("Error while initializing setup step", e);
+ }
+
+ }
+
+ public void createGateways() throws Exception{
+ try {
+ // read gateway count from properties file
+ gatewayCount = Integer.valueOf(propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.NUMBER_OF_GATEWAYS, PropertyFileType.TEST_FRAMEWORK));
+ String genericGatewayName = propertyReader.readProperty(TestFrameworkConstants.GatewayConstants.GENERIC_GATEWAY_NAME, PropertyFileType.TEST_FRAMEWORK);
+ String genericGatewayDomain = propertyReader.readProperty(TestFrameworkConstants.GatewayConstants.GENERIC_GATEWAY_DOMAIN, PropertyFileType.TEST_FRAMEWORK);
+ for (int i = 0; i < gatewayCount; i++){
+ Gateway gateway = new Gateway();
+ String gatewayId = genericGatewayName + (i + 1);
+ gateway.setGatewayId(gatewayId);
+ gateway.setGatewayName(gatewayId);
+ gateway.setDomain(gatewayId + genericGatewayDomain);
+ airavata.addGateway(gateway);
+ GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
+ gatewayResourceProfile.setGatewayID(gatewayId);
+ airavata.registerGatewayResourceProfile(gatewayResourceProfile);
+ // create a project per each gateway
+ createProject(gatewayId);
+ }
+ } catch (AiravataSystemException e) {
+ logger.error("Error while creating airavata client instance", e);
+ throw new Exception("Error while creating airavata client instance", e);
+ } catch (InvalidRequestException e) {
+ logger.error("Invalid request for airavata client instance", e);
+ throw new Exception("Invalid request for airavata client instance", e);
+ } catch (AiravataClientException e) {
+ logger.error("Error while creating airavata client instance", e);
+ throw new Exception("Error while creating airavata client instance", e);
+ } catch (TException e) {
+ logger.error("Error while communicating with airavata client ", e);
+ throw new Exception("Error while communicating with airavata client", e);
+ }
+ }
+
+ public void createProject (String gatewayId) throws Exception{
+ Project project = new Project();
+ project.setName("testProj_" + gatewayId);
+ project.setOwner("testUser_" + gatewayId);
+ String projectId = airavata.createProject(gatewayId, project);
+ projectMap.put(projectId, gatewayId);
+ }
+
+ public void registerSSHKeys () throws Exception{
+ try {
+ // credential store related functions are not in the current api, so need to call credential store directly
+ AiravataUtils.setExecutionAsClient();
+ String jdbcURL = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_JBDC_URL, PropertyFileType.AIRAVATA_CLIENT);
+ String jdbcDriver = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_JBDC_DRIVER, PropertyFileType.AIRAVATA_CLIENT);
+ String userName = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_DB_USERNAME, PropertyFileType.AIRAVATA_CLIENT);
+ String password = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_DB_PWD, PropertyFileType.AIRAVATA_CLIENT);
+ String privateKeyPath = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.SSH_PRIKEY_LOCATION, PropertyFileType.TEST_FRAMEWORK);
+ String pubKeyPath = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.SSH_PUBKEY_LOCATION, PropertyFileType.TEST_FRAMEWORK);
+ String keyPassword = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.SSH_PWD, PropertyFileType.TEST_FRAMEWORK);
+ DBUtil dbUtil = new DBUtil(jdbcURL, userName, password, jdbcDriver);
+ SSHCredentialWriter writer = new SSHCredentialWriter(dbUtil);
+ List<Gateway> allGateways = airavata.getAllGateways();
+ for (Gateway gateway : allGateways){
+ SSHCredential sshCredential = new SSHCredential();
+ sshCredential.setGateway(gateway.getGatewayId());
+ String token = TokenGenerator.generateToken(gateway.getGatewayId(), null);
+ sshCredential.setToken(token);
+ sshCredential.setPortalUserName("testuser");
+ FileInputStream privateKeyStream = new FileInputStream(privateKeyPath);
+ File filePri = new File(privateKeyPath);
+ byte[] bFilePri = new byte[(int) filePri.length()];
+ privateKeyStream.read(bFilePri);
+ FileInputStream pubKeyStream = new FileInputStream(pubKeyPath);
+ File filePub = new File(pubKeyPath);
+ byte[] bFilePub = new byte[(int) filePub.length()];
+ pubKeyStream.read(bFilePub);
+ privateKeyStream.close();
+ pubKeyStream.close();
+ sshCredential.setPrivateKey(bFilePri);
+ sshCredential.setPublicKey(bFilePub);
+ sshCredential.setPassphrase(keyPassword);
+ writer.writeCredentials(sshCredential);
+ tokenMap.put(gateway.getGatewayId(), token);
+ }
+ } catch (ClassNotFoundException e) {
+ logger.error("Unable to find mysql driver", e);
+ throw new Exception("Unable to find mysql driver",e);
+ } catch (InstantiationException e) {
+ logger.error("Error while saving SSH credentials", e);
+ throw new Exception("Error while saving SSH credentials",e);
+ } catch (IllegalAccessException e) {
+ logger.error("Error while saving SSH credentials", e);
+ throw new Exception("Error while saving SSH credentials",e);
+ } catch (ApplicationSettingsException e) {
+ logger.error("Unable to read airavata-client properties", e);
+ throw new Exception("Unable to read airavata-client properties",e);
+ } catch (AiravataSystemException e) {
+ logger.error("Error occured while connecting with airavata client", e);
+ throw new Exception("Error occured while connecting with airavata client",e);
+ } catch (InvalidRequestException e) {
+ logger.error("Error occured while connecting with airavata client", e);
+ throw new Exception("Error occured while connecting with airavata client",e);
+ } catch (AiravataClientException e) {
+ logger.error("Error occured while connecting with airavata client", e);
+ throw new Exception("Error occured while connecting with airavata client",e);
+ } catch (TException e) {
+ logger.error("Error occured while connecting with airavata client", e);
+ throw new Exception("Error occured while connecting with airavata client",e);
+ } catch (FileNotFoundException e) {
+ logger.error("Could not find keys specified in the path", e);
+ throw new Exception("Could not find keys specified in the path",e);
+ } catch (CredentialStoreException e) {
+ logger.error("Error while saving SSH credentials", e);
+ throw new Exception("Error while saving SSH credentials",e);
+ } catch (IOException e) {
+ logger.error("Error while saving SSH credentials", e);
+ throw new Exception("Error while saving SSH credentials",e);
+ }
+ }
+
+ public int getGatewayCount() {
+ return gatewayCount;
+ }
+
+ public void setGatewayCount(int gatewayCount) {
+ this.gatewayCount = gatewayCount;
+ }
+
+ public Map<String, String> getTokenMap() {
+ return tokenMap;
+ }
+
+ public void setTokenMap(Map<String, String> tokenMap) {
+ this.tokenMap = tokenMap;
+ }
+
+ public Map<String, String> getProjectMap() {
+ return projectMap;
+ }
+
+ public void setProjectMap(Map<String, String> projectMap) {
+ this.projectMap = projectMap;
+ }
+
+ public Airavata.Client getAiravata() {
+ return airavata;
+ }
+
+ public void setAiravata(Airavata.Client airavata) {
+ this.airavata = airavata;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/LoadTester.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/LoadTester.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/LoadTester.java
new file mode 100644
index 0000000..b27b429
--- /dev/null
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/LoadTester.java
@@ -0,0 +1,50 @@
+/*
+ *
+ * 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.testsuite.multitenantedairavata;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+
+public class LoadTester {
+ private final static Logger logger = LoggerFactory.getLogger(LoadTester.class);
+ public static void main(String[] args) {
+ try {
+ FrameworkSetup frameworkSetup = FrameworkSetup.getInstance();
+ Map<String, String> tokenMap = frameworkSetup.getGatewayRegister().getTokenMap();
+ Map<String, String> projectMap = frameworkSetup.getGatewayRegister().getProjectMap();
+ Map<String, String> appInterfaceMap = frameworkSetup.getApplicationRegister().getApplicationInterfaceListPerGateway();
+
+ ExperimentExecution experimentExecution = new ExperimentExecution(frameworkSetup.getAiravata(),tokenMap, appInterfaceMap, projectMap);
+ experimentExecution.createAmberExperiment();
+ experimentExecution.createEchoExperiment();
+ experimentExecution.launchExperiments();
+ experimentExecution.monitorExperiments();
+ } catch (Exception e) {
+ logger.error("Error while submitting experiments", e);
+ }
+
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9ac846/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/Setup.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/Setup.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/Setup.java
deleted file mode 100644
index 9b94d4e..0000000
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/Setup.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- *
- * 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.testsuite.multitenantedairavata;
-
-
-import org.apache.airavata.api.Airavata;
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.common.utils.DBUtil;
-import org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential;
-import org.apache.airavata.credential.store.store.CredentialStoreException;
-import org.apache.airavata.credential.store.store.impl.SSHCredentialWriter;
-import org.apache.airavata.credential.store.util.TokenGenerator;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
-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.thrift.TException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class Setup {
- private final static Logger logger = LoggerFactory.getLogger(Setup.class);
- private AiravataClient airavataClient;
- private Airavata.Client airavata;
- private PropertyReader propertyReader;
- private int gatewayCount;
- private Map<String, String> tokenMap;
- private Map<String, String> projectMap;
-
- public Setup() {
- this.airavataClient = AiravataClient.getInstance();
- this.airavata = airavataClient.getAiravataClient();
- this.tokenMap = new HashMap<String, String>();
- this.projectMap = new HashMap<String, String>();
- propertyReader = new PropertyReader();
- }
-
- public void createGateways() throws Exception{
- try {
- // read gateway count from properties file
- gatewayCount = Integer.valueOf(propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.NUMBER_OF_GATEWAYS, PropertyFileType.TEST_FRAMEWORK));
- String genericGatewayName = propertyReader.readProperty(TestFrameworkConstants.GatewayConstants.GENERIC_GATEWAY_NAME, PropertyFileType.TEST_FRAMEWORK);
- String genericGatewayDomain = propertyReader.readProperty(TestFrameworkConstants.GatewayConstants.GENERIC_GATEWAY_DOMAIN, PropertyFileType.TEST_FRAMEWORK);
- for (int i = 0; i < gatewayCount; i++){
- Gateway gateway = new Gateway();
- String gatewayId = genericGatewayName + (i + 1);
- gateway.setGatewayId(gatewayId);
- gateway.setGatewayName(gatewayId);
- gateway.setDomain(gatewayId + genericGatewayDomain);
- airavata.addGateway(gateway);
- GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
- gatewayResourceProfile.setGatewayID(gatewayId);
- airavata.registerGatewayResourceProfile(gatewayResourceProfile);
- // create a project per each gateway
- createProject(gatewayId);
- }
- } catch (AiravataSystemException e) {
- logger.error("Error while creating airavata client instance", e);
- throw new Exception("Error while creating airavata client instance", e);
- } catch (InvalidRequestException e) {
- logger.error("Invalid request for airavata client instance", e);
- throw new Exception("Invalid request for airavata client instance", e);
- } catch (AiravataClientException e) {
- logger.error("Error while creating airavata client instance", e);
- throw new Exception("Error while creating airavata client instance", e);
- } catch (TException e) {
- logger.error("Error while communicating with airavata client ", e);
- throw new Exception("Error while communicating with airavata client", e);
- }
- }
-
- public void createProject (String gatewayId) throws Exception{
- Project project = new Project();
- project.setName("testProj_" + gatewayId);
- project.setOwner("testUser_" + gatewayId);
- String projectId = airavata.createProject(gatewayId, project);
- projectMap.put(projectId, gatewayId);
- }
-
- public void registerSSHKeys () throws Exception{
- try {
- // credential store related functions are not in the current api, so need to call credential store directly
- AiravataUtils.setExecutionAsClient();
- String jdbcURL = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_JBDC_URL, PropertyFileType.AIRAVATA_CLIENT);
- String jdbcDriver = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_JBDC_DRIVER, PropertyFileType.AIRAVATA_CLIENT);
- String userName = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_DB_USERNAME, PropertyFileType.AIRAVATA_CLIENT);
- String password = propertyReader.readProperty(TestFrameworkConstants.AiravataClientConstants.CS_DB_PWD, PropertyFileType.AIRAVATA_CLIENT);
- String privateKeyPath = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.SSH_PRIKEY_LOCATION, PropertyFileType.TEST_FRAMEWORK);
- String pubKeyPath = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.SSH_PUBKEY_LOCATION, PropertyFileType.TEST_FRAMEWORK);
- String keyPassword = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.SSH_PWD, PropertyFileType.TEST_FRAMEWORK);
- DBUtil dbUtil = new DBUtil(jdbcURL, userName, password, jdbcDriver);
- SSHCredentialWriter writer = new SSHCredentialWriter(dbUtil);
- List<Gateway> allGateways = airavata.getAllGateways();
- for (Gateway gateway : allGateways){
- SSHCredential sshCredential = new SSHCredential();
- sshCredential.setGateway(gateway.getGatewayId());
- String token = TokenGenerator.generateToken(gateway.getGatewayId(), null);
- sshCredential.setToken(token);
- sshCredential.setPortalUserName("testuser");
- FileInputStream privateKeyStream = new FileInputStream(privateKeyPath);
- File filePri = new File(privateKeyPath);
- byte[] bFilePri = new byte[(int) filePri.length()];
- privateKeyStream.read(bFilePri);
- FileInputStream pubKeyStream = new FileInputStream(pubKeyPath);
- File filePub = new File(pubKeyPath);
- byte[] bFilePub = new byte[(int) filePub.length()];
- pubKeyStream.read(bFilePub);
- privateKeyStream.close();
- pubKeyStream.close();
- sshCredential.setPrivateKey(bFilePri);
- sshCredential.setPublicKey(bFilePub);
- sshCredential.setPassphrase(keyPassword);
- writer.writeCredentials(sshCredential);
- tokenMap.put(gateway.getGatewayId(), token);
- }
- } catch (ClassNotFoundException e) {
- logger.error("Unable to find mysql driver", e);
- throw new Exception("Unable to find mysql driver",e);
- } catch (InstantiationException e) {
- logger.error("Error while saving SSH credentials", e);
- throw new Exception("Error while saving SSH credentials",e);
- } catch (IllegalAccessException e) {
- logger.error("Error while saving SSH credentials", e);
- throw new Exception("Error while saving SSH credentials",e);
- } catch (ApplicationSettingsException e) {
- logger.error("Unable to read airavata-client properties", e);
- throw new Exception("Unable to read airavata-client properties",e);
- } catch (AiravataSystemException e) {
- logger.error("Error occured while connecting with airavata client", e);
- throw new Exception("Error occured while connecting with airavata client",e);
- } catch (InvalidRequestException e) {
- logger.error("Error occured while connecting with airavata client", e);
- throw new Exception("Error occured while connecting with airavata client",e);
- } catch (AiravataClientException e) {
- logger.error("Error occured while connecting with airavata client", e);
- throw new Exception("Error occured while connecting with airavata client",e);
- } catch (TException e) {
- logger.error("Error occured while connecting with airavata client", e);
- throw new Exception("Error occured while connecting with airavata client",e);
- } catch (FileNotFoundException e) {
- logger.error("Could not find keys specified in the path", e);
- throw new Exception("Could not find keys specified in the path",e);
- } catch (CredentialStoreException e) {
- logger.error("Error while saving SSH credentials", e);
- throw new Exception("Error while saving SSH credentials",e);
- } catch (IOException e) {
- logger.error("Error while saving SSH credentials", e);
- throw new Exception("Error while saving SSH credentials",e);
- }
- }
-
- public int getGatewayCount() {
- return gatewayCount;
- }
-
- public void setGatewayCount(int gatewayCount) {
- this.gatewayCount = gatewayCount;
- }
-
- public Map<String, String> getTokenMap() {
- return tokenMap;
- }
-
- public void setTokenMap(Map<String, String> tokenMap) {
- this.tokenMap = tokenMap;
- }
-
- public Map<String, String> getProjectMap() {
- return projectMap;
- }
-
- public void setProjectMap(Map<String, String> projectMap) {
- this.projectMap = projectMap;
- }
-}