/*
* ###
* Framework Web Archive
*
* Copyright (C) 1999 - 2012 Photon Infotech Inc.
*
* Licensed 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 com.photon.phresco.framework.actions.applications;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.xml.bind.JAXBException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import com.google.gson.Gson;
import com.photon.phresco.commons.BuildInfo;
import com.photon.phresco.commons.FrameworkConstants;
import com.photon.phresco.configuration.Environment;
import com.photon.phresco.exception.PhrescoException;
import com.photon.phresco.framework.PhrescoFrameworkFactory;
import com.photon.phresco.framework.actions.FrameworkBaseAction;
import com.photon.phresco.framework.api.ActionType;
import com.photon.phresco.framework.api.Project;
import com.photon.phresco.framework.api.ProjectAdministrator;
import com.photon.phresco.framework.api.ProjectRuntimeManager;
import com.photon.phresco.framework.commons.ApplicationsUtil;
import com.photon.phresco.framework.commons.FrameworkUtil;
import com.photon.phresco.framework.commons.LogErrorReport;
import com.photon.phresco.framework.commons.PBXNativeTarget;
import com.photon.phresco.framework.commons.QualityUtil;
import com.photon.phresco.framework.commons.filter.FileListFilter;
import com.photon.phresco.framework.model.PerformanceTestResult;
import com.photon.phresco.framework.model.TestCase;
import com.photon.phresco.framework.model.TestCaseError;
import com.photon.phresco.framework.model.TestCaseFailure;
import com.photon.phresco.framework.model.TestResult;
import com.photon.phresco.framework.model.TestSuite;
import com.photon.phresco.model.PropertyInfo;
import com.photon.phresco.model.SettingsInfo;
import com.photon.phresco.util.Constants;
import com.photon.phresco.util.IosSdkUtil;
import com.photon.phresco.util.TechnologyTypes;
import com.photon.phresco.util.Utility;
import com.photon.phresco.util.IosSdkUtil.MacSdkType;
import com.phresco.pom.exception.PhrescoPomException;
import com.phresco.pom.model.Model.Modules;
import com.phresco.pom.util.PomProcessor;
import com.photon.phresco.commons.PerformanceDetails;
public class Quality extends FrameworkBaseAction implements FrameworkConstants {
private static final long serialVersionUID = -2040671011555139339L;
private static final Logger S_LOGGER = Logger.getLogger(Quality.class);
private static Boolean debugEnabled =S_LOGGER.isDebugEnabled();
private List<SettingsInfo> serverSettings = null;
private String showSettings = null;
private String testSuite = null;
private String failures = null;
private String errs = null;
private String tests = null;
private String setting = null;
private String projectCode = null;
private String testType = null;
private String testResultFile = null;
private String projectModule = "";
private String techReport = "";
private String testModule = null;
private String showError = null;
private String hideLog = null;
private String showDebug = null;
private String jarLocation = null;
private String testAgainst = null;
private String jarName = null;
private File systemPath = null;
private List<String> configName = null;
private List<String> buildInfoEnvs = null;
private String settingType = null;
private String settingName = null;
private String caption = null;
private List<String> testResultFiles = null;
private List<TestSuite> testSuites = null;
private List<String> testSuiteNames = null;
private boolean validated = false;
private String testResultsType = null;
//Below variables gets the value of performance test Url, Context and TestName
private PerformanceDetails performanceDetails = null;
private List<String> name = null;
private List<String> context = null;
private List<String> contextType = null;
private List<String> contextPostData = null;
private List<String> encodingType = null;
private String testName = null;
//Below variables get the value of PerformanceTest for Db
private List<String> dbPerName = null;
private String Database = null;
private List<String> queryType = null;
private List<String> query = null;
//Thread group details
private String noOfUsers = null;
private String rampUpPeriod = null;
private String loopCount = null;
//jmeterTestAgainst radio button value
private String jmeterTestAgainst = null;
private String technologyId=null;
private boolean isAtleastOneFileAvail = false;
// android performance tag name
private String testResultDeviceId = null;
private Map<String, String> deviceNames = null;
private String serialNumber = null;
// iphone unit test
private String sdk = null;
private String target = "";
private String fromPage = "";
//perfromance DB
private String hostValue = null;
private String portNo = null;
private String pwd = null;
private String dbType = null;
private String schema = null;
private String uname = null;
private String dbUrl = null;
private String driver = null;
// report generation
private String reportName = null;
private String reoportLocation = null;
private String reportDataType = null;
// download report
private InputStream fileInputStream;
private String fileName = "";
private String reportFileName = null;
private static Map<String, Map<String, NodeList>> testSuiteMap = Collections.synchronizedMap(new HashMap<String, Map<String, NodeList>>(8));
public String unit() {
S_LOGGER.debug("Entering Method Quality.unit()");
getHttpRequest().setAttribute(REQ_TEST_TYPE_SELECTED, REQ_TEST_UNIT);
try{
ActionType actionType = null;
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String techId = project.getProjectInfo().getTechnology().getId();
Map<String, String> settingsInfoMap = new HashMap<String, String>(2);
if (TechnologyTypes.ANDROIDS.contains(techId)) {
String device = getHttpRequest().getParameter(REQ_ANDROID_DEVICE);
if (device.equals(SERIAL_NUMBER)) {
device = serialNumber;
}
S_LOGGER.debug("Android device name " + device);
settingsInfoMap.put(DEPLOY_ANDROID_DEVICE_MODE, device); //TODO: Need to be changed
settingsInfoMap.put(DEPLOY_ANDROID_EMULATOR_AVD, REQ_ANDROID_DEFAULT);
actionType = ActionType.MOBILE_COMMON_COMMAND;
} else if (TechnologyTypes.IPHONE_NATIVE.equals(techId)) {
actionType = ActionType.IPHONE_BUILD_UNIT_TEST;
settingsInfoMap.put(UNIT_TEST, TRUE);
settingsInfoMap.put(IPHONE_TARGET_NAME, target);
settingsInfoMap.put(IPHONE_SDK, sdk);
} else {
settingsInfoMap.put(TEST_PARAM, TEST_PARAM_VALUE);
if (TechnologyTypes.SHAREPOINT.equals(techId) || TechnologyTypes.DOT_NET.equals(techId)) {
actionType = ActionType.SHAREPOINT_NUNIT_TEST;
} else {
actionType = ActionType.TEST;
}
}
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(project.getProjectInfo().getCode());
List<String> projectModules = getProjectModules(projectCode);
if (CollectionUtils.isEmpty(projectModules)) {
String unitTestDir = frameworkUtil.getUnitTestDir(techId);
builder.append(unitTestDir);
} else {
builder.append(File.separatorChar);
builder.append(testModule);
}
actionType.setWorkingDirectory(builder.toString());
S_LOGGER.debug("Unit test directory " + builder.toString());
S_LOGGER.debug("Unit test Setting Info map value " + settingsInfoMap);
ProjectRuntimeManager runtimeManager = PhrescoFrameworkFactory.getProjectRuntimeManager();
BufferedReader reader = runtimeManager.performAction(project, actionType, settingsInfoMap, null);
getHttpSession().setAttribute(projectCode + UNIT, reader);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
getHttpRequest().setAttribute(REQ_TEST_TYPE, UNIT);
} catch (Exception e){
if (e instanceof FileNotFoundException) {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, getText(ERROR_UNIT_TEST));
}
S_LOGGER.error("Entered into catch block of Quality.unit()"+ e);
new LogErrorReport(e, "Quality Unit test");
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return APP_ENVIRONMENT_READER;
}
public String functional() {
S_LOGGER.debug("Entering Method Quality.functional()");
getHttpRequest().setAttribute(REQ_TEST_TYPE_SELECTED, REQ_TEST_FUNCTIONAL);
try {
ActionType actionType = null;
String envs = getHttpRequest().getParameter(ENVIRONMENT_VALUES);
String browser = getHttpRequest().getParameter(REQ_TEST_BROWSER);
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String techId = project.getProjectInfo().getTechnology().getId();
getHttpRequest().setAttribute(REQ_PROJECT, project);
Map<String, String> settingsInfoMap = new HashMap<String, String>(2);
if (TechnologyTypes.ANDROIDS.contains(techId)) {
String device = getHttpRequest().getParameter(REQ_ANDROID_DEVICE);
if(device.equals(SERIAL_NUMBER)) {
device = serialNumber;
}
S_LOGGER.debug("Android device name " + device);
settingsInfoMap.put(DEPLOY_ANDROID_DEVICE_MODE, device); //TODO: Need to be changed
settingsInfoMap.put(DEPLOY_ANDROID_EMULATOR_AVD, REQ_ANDROID_DEFAULT);
actionType = ActionType.MOBILE_COMMON_COMMAND;
} else if (TechnologyTypes.IPHONE_NATIVE.equals(techId)) {
String buildNumber = getHttpRequest().getParameter(REQ_TEST_BUILD_ID);
String applicationPath = administrator.getBuildInfo(project, Integer.parseInt(buildNumber)).getBuildName();
settingsInfoMap.put(IPHONE_BUILD_NAME, applicationPath);
actionType = ActionType.IPHONE_FUNCTIONAL_COMMAND;
} else if (TechnologyTypes.IPHONE_HYBRID.equals(techId)) {
settingsInfoMap = null;
actionType = ActionType.TEST;
} else {
settingsInfoMap.put(TEST_PARAM, TEST_PARAM_VALUE);
if (TechnologyTypes.SHAREPOINT.equals(project.getProjectInfo().getTechnology().getId()) || TechnologyTypes.DOT_NET.equals(project.getProjectInfo().getTechnology().getId())) {
actionType = ActionType.SHAREPOINT_NUNIT_TEST;
} else {
actionType = ActionType.TEST;
}
}
technologyId = project.getProjectInfo().getTechnology().getId();
if (StringUtils.isEmpty(testModule) && !TechnologyTypes.ANDROIDS.contains(technologyId) && !TechnologyTypes.IPHONES.contains(technologyId) &&
!TechnologyTypes.BLACKBERRY.equals(technologyId) && !TechnologyTypes.SHAREPOINT.equals(technologyId) && !TechnologyTypes.DOT_NET.equals(technologyId) && !TechnologyTypes.JAVA_STANDALONE.equals(technologyId)) {
FunctionalUtil.adaptTestConfig(project, envs, browser);
} /*else {
actionType = ActionType.INSTALL;
}*/
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(project.getProjectInfo().getCode());
if (StringUtils.isNotEmpty(testModule)) {
builder.append(File.separatorChar);
builder.append(testModule);
}
String funcitonalTestDir = frameworkUtil.getFuncitonalTestDir(project.getProjectInfo().getTechnology().getId());
builder.append(funcitonalTestDir);
actionType.setWorkingDirectory(builder.toString());
S_LOGGER.debug("Functional test directory " + builder.toString());
S_LOGGER.debug("Functional test Setting Info map value " + settingsInfoMap);
//java stand alone - run against jar
if( TechnologyTypes.JAVA_STANDALONE.equals(techId) && (testAgainst.trim().equalsIgnoreCase("jar"))){
systemPath = new File(builder.toString() + File.separator + POM_FILE);
PomProcessor pomprocessor = new PomProcessor(systemPath);
pomprocessor.addDependency(JAVA_STANDALONE, JAVA_STANDALONE, DEPENDENCY_VERSION, SYSTEM, null, jarLocation);
pomprocessor.save();
}
// java stand alone - run against build
if( TechnologyTypes.JAVA_STANDALONE.equals(techId) && (testAgainst.trim().equalsIgnoreCase("build"))){
builder = new StringBuilder(Utility.getProjectHome()); // Getting Name of Jar From POM Processor
builder.append(project.getProjectInfo().getCode());
systemPath = new File(builder.toString() + File.separator + POM_FILE);
PomProcessor pomprocessor = new PomProcessor(systemPath);
jarName = pomprocessor.getFinalName();
builder.append(File.separator);
builder.append(DO_NOT_CHECKIN_DIR);
builder.append(File.separator);
builder.append(TARGET_DIR);
builder.append(File.separator);
builder.append(jarName);
builder.append(".jar");
jarLocation = builder.toString();
builder = new StringBuilder(Utility.getProjectHome()); // Adding Location of JAR as Dependency in pom.xml
builder.append(project.getProjectInfo().getCode());
funcitonalTestDir = frameworkUtil.getFuncitonalTestDir(project.getProjectInfo().getTechnology().getId());
builder.append(funcitonalTestDir);
systemPath = new File(builder.toString() + File.separator + POM_FILE);
pomprocessor = new PomProcessor(systemPath);
pomprocessor.addDependency(JAVA_STANDALONE, JAVA_STANDALONE, DEPENDENCY_VERSION, SYSTEM, null, jarLocation);
pomprocessor.save();
}
ProjectRuntimeManager runtimeManager = PhrescoFrameworkFactory.getProjectRuntimeManager();
BufferedReader reader = runtimeManager.performAction(project, actionType, settingsInfoMap, null);
getHttpSession().setAttribute(projectCode + FUNCTIONAL, reader);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
getHttpRequest().setAttribute(REQ_TEST_TYPE, FUNCTIONAL);
} catch (Exception e) {
if (e instanceof FileNotFoundException) {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, getText(ERROR_FUNCTIONAL_TEST));
}
S_LOGGER.error("Entered into catch block of Quality.functional()"+ e);
new LogErrorReport(e, "Quality Functional test");
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return APP_ENVIRONMENT_READER;
}
private String getTestResultPath(Project project, String testResultFile) throws ParserConfigurationException,
SAXException, IOException, TransformerException, PhrescoException {
S_LOGGER.debug("Entering Method Quality.getTestDocument(Project project, String testResultFile)");
S_LOGGER.debug("getTestDocument() ProjectInfo = "+project.getProjectInfo());
S_LOGGER.debug("getTestDocument() TestResultFile = "+testResultFile);
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
if (FUNCTIONAL.equals(testType)) {
if (StringUtils.isNotEmpty(projectModule)) {
sb.append(File.separatorChar);
sb.append(projectModule);
}
sb.append(frameworkUtil.getFunctionalReportDir(project.getProjectInfo().getTechnology().getId()));
} else if (UNIT.equals(testType)) {
if (StringUtils.isNotEmpty(projectModule)) {
sb.append(File.separatorChar);
sb.append(projectModule);
}
StringBuilder tempsb = new StringBuilder(sb);
if ("javascript".equals(techReport)) {
tempsb.append(UNIT_TEST_QUNIT_REPORT_DIR);
File file = new File(tempsb.toString());
if (file.isDirectory() && file.list().length > 0) {
sb.append(UNIT_TEST_QUNIT_REPORT_DIR);
} else {
sb.append(UNIT_TEST_JASMINE_REPORT_DIR);
}
} else {
sb.append(frameworkUtil.getUnitReportDir(project.getProjectInfo().getTechnology().getId()));
}
} else if (LOAD.equals(testType)) {
sb.append(frameworkUtil.getLoadReportDir(project.getProjectInfo().getTechnology().getId()));
sb.append(File.separator);
sb.append(testResultFile);
} else if (PERFORMACE.equals(testType)) {
String performanceReportDir = frameworkUtil.getPerformanceReportDir(project.getProjectInfo().getTechnology().getId());
Pattern p = Pattern.compile(TEST_DIRECTORY);
Matcher matcher = p.matcher(performanceReportDir);
if (StringUtils.isNotEmpty(performanceReportDir) && matcher.find()) {
performanceReportDir = matcher.replaceAll(testResultsType);
}
sb.append(performanceReportDir);
sb.append(File.separator);
sb.append(testResultFile);
}
// return getDocument(getTestResultFile(sb.toString()));
return sb.toString();
}
private Document getDocument(File resultFile) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException {
InputStream fis = null;
DocumentBuilder builder = null;
try {
S_LOGGER.debug("Report path" + resultFile.getAbsolutePath());
// fis = new FileInputStream(getTestResultFile(sb.toString()));
fis = new FileInputStream(resultFile);
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(false);
builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(fis);
return doc;
} finally {
if(fis != null) {
try {
fis.close();
} catch (IOException e) {
S_LOGGER.error("Entered into catch block of Quality.getTestDocument()"+ e);
}
}
}
}
private File[] getTestResultFiles(String path) {
File testDir = new File(path);
if (testDir.isDirectory()) {
FilenameFilter filter = new FileListFilter("", "xml");
return testDir.listFiles(filter);
}
return null;
}
public String fillTestResultFiles() throws ParserConfigurationException, SAXException, IOException, TransformerException {
S_LOGGER.debug("Entering Method Quality.getTestSuites(Project project)");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
Map<String, NodeList> mapTestResultName = null;
mapTestResultName = testSuiteMap.get(projectCode + testType + projectModule + techReport);
// String resultPath = "";
String testResultPath = getTestResultPath(project, null);
/*if (StringUtils.isNotEmpty(projectModule)) {
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
sb.append(File.separatorChar);
sb.append(projectModule);
sb.append(resultPath);
testResultPath = sb.toString();
} else {
testResultPath = getTestResultPath(project, null);
}*/
if (MapUtils.isEmpty(mapTestResultName) || StringUtils.isNotEmpty(fromPage)) {
File[] resultFiles = getTestResultFiles(testResultPath);
if (resultFiles != null) {
QualityUtil.sortResultFile(resultFiles);
updateCache(resultFiles);
} else {
setValidated(true);
if(UNIT.equals(testType)) {
setShowError(getText(ERROR_UNIT_TEST));
} else {
setShowError(getText(ERROR_FUNCTIONAL_TEST));
}
return SUCCESS;
}
String testSuitesMapKey = projectCode + testType + projectModule + techReport;
mapTestResultName = testSuiteMap.get(testSuitesMapKey);
}
List<String> resultFileNames = new ArrayList<String>(mapTestResultName.keySet());
if (CollectionUtils.isEmpty(resultFileNames)) {
setValidated(true);
setShowError(getText(ERROR_UNIT_TEST));
return SUCCESS;
}
setTestType(testType);
setTestResultFiles(resultFileNames);
return SUCCESS;
} catch (PhrescoException e) {
S_LOGGER.error("Entered into catch block of Quality.getTestSuites()"+ e);
}
return null;
}
public String fillTestSuites() {
S_LOGGER.debug("Entering Method Quality.fillTestSuites");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
Map<String, NodeList> mapTestResultName = null;
mapTestResultName = testSuiteMap.get(projectCode + testType + projectModule + techReport);
String testResultPath = getTestResultPath(project, null);
if (MapUtils.isEmpty(mapTestResultName) || StringUtils.isNotEmpty(fromPage)) {
File[] resultFiles = getTestResultFiles(testResultPath);
if (resultFiles != null) {
QualityUtil.sortResultFile(resultFiles);
updateCache(resultFiles);
} else {
setValidated(true);
if(UNIT.equals(testType)) {
setShowError(getText(ERROR_UNIT_TEST));
} else {
setShowError(getText(ERROR_FUNCTIONAL_TEST));
}
return SUCCESS;
}
String testSuitesMapKey = projectCode + testType + projectModule + techReport;
mapTestResultName = testSuiteMap.get(testSuitesMapKey);
}
List<String> resultTestSuiteNames = new ArrayList<String>(mapTestResultName.keySet());
if (CollectionUtils.isEmpty(resultTestSuiteNames)) {
setValidated(true);
if(UNIT.equals(testType)){
setShowError(getText(ERROR_UNIT_TEST));
} else {
setShowError(getText(ERROR_FUNCTIONAL_TEST));
}
return SUCCESS;
}
setTestType(testType);
setTestSuiteNames(resultTestSuiteNames);
} catch(SAXParseException e) {
setValidated(true);
setShowError(getText(ERROR_PARSE_EXCEPTION));
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.fillTestSuites()");
}
return SUCCESS;
}
private void updateCache(File[] resultFiles) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException, TransformerException {
Map<String, NodeList> mapTestSuites = new HashMap<String, NodeList>(10);
for (File resultFile : resultFiles) {
try {
Document doc = getDocument(resultFile);
NodeList testSuiteNodeList = evaluateTestSuite(doc);
if (testSuiteNodeList.getLength() > 0) {
List<TestSuite> testSuites = getTestSuite(testSuiteNodeList);
for (TestSuite testSuite : testSuites) {
mapTestSuites.put(testSuite.getName(), testSuiteNodeList);
}
}
} catch (PhrescoException e) {
// continue the loop to filter the testResultFile
} catch (XPathExpressionException e) {
// continue the loop to filter the testResultFile
}
}
String testSuitesKey = projectCode + testType + projectModule + techReport;
testSuiteMap.put(testSuitesKey, mapTestSuites);
}
private NodeList evaluateTestSuite(Document doc) throws PhrescoException, XPathExpressionException {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String techId = project.getProjectInfo().getTechnology().getId();
String testSuitePath = null;
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
if (APP_UNIT_TEST.equals(testType)) {
testSuitePath = frameworkUtil.getUnitTestSuitePath(techId);
} else if (APP_FUNCTIONAL_TEST.equals(testType)) {
testSuitePath = frameworkUtil.getFunctionalTestSuitePath(techId);
}
S_LOGGER.debug("Project info " + project.getProjectInfo().getName() +" Test suite path " + testSuitePath);
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression xPathExpression = xpath.compile(testSuitePath);
NodeList testSuiteNode = (NodeList) xPathExpression.evaluate(doc, XPathConstants.NODESET);
return testSuiteNode;
}
private List<TestSuite> getTestSuite(NodeList nodelist) throws TransformerException, PhrescoException {
S_LOGGER.debug("Entering Method Quality.getTestSuite(NodeList nodelist)");
List<TestSuite> testSuites = new ArrayList<TestSuite>(2);
TestSuite testSuite = null;
for (int i = 0; i < nodelist.getLength(); i++) {
testSuite = new TestSuite();
Node node = nodelist.item(i);
NamedNodeMap nameNodeMap = node.getAttributes();
for (int k = 0; k < nameNodeMap.getLength(); k++){
Node attribute = nameNodeMap.item(k);
String attributeName = attribute.getNodeName();
String attributeValue = attribute.getNodeValue();
if (ATTR_ASSERTIONS.equals(attributeName)) {
testSuite.setAssertions(attributeValue);
} else if (ATTR_ERRORS.equals(attributeName)) {
testSuite.setErrors(Float.parseFloat(attributeValue));
} else if (ATTR_FAILURES.equals(attributeName)) {
testSuite.setFailures(Float.parseFloat(attributeValue));
} else if (ATTR_FILE.equals(attributeName)) {
testSuite.setFile(attributeValue);
} else if (ATTR_NAME.equals(attributeName)) {
testSuite.setName(attributeValue);
} else if (ATTR_TESTS.equals(attributeName)) {
testSuite.setTests(Float.parseFloat(attributeValue));
} else if (ATTR_TIME.equals(attributeName)) {
testSuite.setTime(attributeValue);
}
}
testSuites.add(testSuite);
}
return testSuites;
}
private List<TestCase> getTestCases(NodeList testSuites) throws TransformerException, PhrescoException {
S_LOGGER.debug("Entering Method Quality.getTestCases(Document doc, String testSuiteName)");
try {
String testCasePath = null;
String testSuitePath = null;
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
String techId = project.getProjectInfo().getTechnology().getId();
if (APP_UNIT_TEST.equals(testType)) {
testSuitePath = frameworkUtil.getUnitTestSuitePath(techId);
} else if (APP_FUNCTIONAL_TEST.equals(testType)) {
testSuitePath = frameworkUtil.getFunctionalTestSuitePath(techId);
}
testCasePath = frameworkUtil.getTestCasePath(project.getProjectInfo().getTechnology().getId());
S_LOGGER.debug("Test suite path " + testSuitePath);
S_LOGGER.debug("Test suite path " + testCasePath);
StringBuilder sb = new StringBuilder(); //testsuites/testsuite[@name='yyy']/testcase
//sb.append(XPATH_SINGLE_TESTSUITE);
sb.append(testSuitePath);
sb.append(NAME_FILTER_PREFIX);
sb.append(testSuite);
sb.append(NAME_FILTER_SUFIX);
sb.append(testCasePath);
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodelist = (NodeList) xpath.evaluate(sb.toString(), testSuites.item(0).getParentNode(), XPathConstants.NODESET);
// For tehnologies like php and drupal duoe to plugin change xml testcase path modified
if (nodelist.getLength() == 0) {
StringBuilder sbMulti = new StringBuilder();
sbMulti.append(testSuitePath);
sbMulti.append(NAME_FILTER_PREFIX);
sbMulti.append(testSuite);
sbMulti.append(NAME_FILTER_SUFIX);
sbMulti.append(XPATH_TESTSUTE_TESTCASE);
nodelist = (NodeList) xpath.evaluate(sbMulti.toString(), testSuites.item(0).getParentNode(), XPathConstants.NODESET);
}
// For technology sharepoint
if (nodelist.getLength() == 0) {
StringBuilder sbMulti = new StringBuilder(); //testsuites/testsuite[@name='yyy']/testcase
sbMulti.append(XPATH_MULTIPLE_TESTSUITE);
sbMulti.append(NAME_FILTER_PREFIX);
sbMulti.append(testSuite);
sbMulti.append(NAME_FILTER_SUFIX);
sbMulti.append(testCasePath);
nodelist = (NodeList) xpath.evaluate(sbMulti.toString(), testSuites.item(0).getParentNode(), XPathConstants.NODESET);
}
List<TestCase> testCases = new ArrayList<TestCase>();
int failureTestCases = 0;
int errorTestCases = 0;
for (int i = 0; i < nodelist.getLength(); i++) {
Node node = nodelist.item(i);
NodeList childNodes = node.getChildNodes();
NamedNodeMap nameNodeMap = node.getAttributes();
TestCase testCase = new TestCase();
if (childNodes != null && childNodes.getLength() > 0) {
for (int j = 0; j < childNodes.getLength(); j++) {
Node childNode = childNodes.item(j);
if (ELEMENT_FAILURE.equals(childNode.getNodeName())) {
failureTestCases++;
TestCaseFailure failure = getFailure(childNode);
if (failure != null) {
testCase.setTestCaseFailure(failure);
}
}
if (ELEMENT_ERROR.equals(childNode.getNodeName())) {
errorTestCases++;
TestCaseError error = getError(childNode);
if (error != null) {
testCase.setTestCaseError(error);
}
}
}
}
for (int k = 0; k < nameNodeMap.getLength(); k++){
Node attribute = nameNodeMap.item(k);
String attributeName = attribute.getNodeName();
String attributeValue = attribute.getNodeValue();
if (ATTR_NAME.equals(attributeName)) {
testCase.setName(attributeValue);
} else if (ATTR_CLASS.equals(attributeName) || ATTR_CLASSNAME.equals(attributeName)) {
testCase.setTestClass(attributeValue);
} else if (ATTR_FILE.equals(attributeName)) {
testCase.setFile(attributeValue);
} else if (ATTR_LINE.equals(attributeName)) {
testCase.setLine(Float.parseFloat(attributeValue));
} else if (ATTR_ASSERTIONS.equals(attributeName)) {
testCase.setAssertions(Float.parseFloat(attributeValue));
} else if (ATTR_TIME.equals(attributeName)) {
testCase.setTime(attributeValue);
}
}
testCases.add(testCase);
}
getHttpRequest().setAttribute(REQ_TESTSUITE_FAILURES, failureTestCases + "");
getHttpRequest().setAttribute(REQ_TESTSUITE_ERRORS, errorTestCases + "");
getHttpRequest().setAttribute(REQ_TESTSUITE_TESTS, nodelist.getLength() + "");
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
return testCases;
} catch (PhrescoException e) {
S_LOGGER.error("Entered into catch block of Quality.getTestCases()"+ e);
throw e;
} catch (XPathExpressionException e) {
S_LOGGER.error("Entered into XPathExpressionException catch block of Quality.getTestCases()"+ e);
throw new PhrescoException(e);
}
}
private static TestCaseFailure getFailure(Node failureNode) throws TransformerException {
S_LOGGER.debug("Entering Method Quality.getFailure(Node failureNode)");
S_LOGGER.debug("getFailure() NodeName = "+failureNode.getNodeName());
TestCaseFailure failure = new TestCaseFailure();
try {
failure.setDescription(failureNode.getTextContent());
failure.setFailureType(REQ_TITLE_EXCEPTION);
NamedNodeMap nameNodeMap = failureNode.getAttributes();
if (nameNodeMap != null && nameNodeMap.getLength() > 0) {
for (int k = 0; k < nameNodeMap.getLength(); k++){
Node attribute = nameNodeMap.item(k);
String attributeName = attribute.getNodeName();
String attributeValue = attribute.getNodeValue();
if (ATTR_TYPE.equals(attributeName)) {
failure.setFailureType(attributeValue);
}
}
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.getFailure()"+ e);
}
return failure;
}
private static TestCaseError getError(Node errorNode) throws TransformerException {
S_LOGGER.debug("Entering Method Quality.getError(Node errorNode)");
S_LOGGER.debug("getError() Node = "+errorNode.getNodeName());
TestCaseError tcError = new TestCaseError();
try {
tcError.setDescription(errorNode.getTextContent());
tcError.setErrorType(REQ_TITLE_ERROR);
NamedNodeMap nameNodeMap = errorNode.getAttributes();
if (nameNodeMap != null && nameNodeMap.getLength() > 0) {
for (int k = 0; k < nameNodeMap.getLength(); k++){
Node attribute = nameNodeMap.item(k);
String attributeName = attribute.getNodeName();
String attributeValue = attribute.getNodeValue();
if (ATTR_TYPE.equals(attributeName)) {
tcError.setErrorType(attributeValue);
}
}
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.getError()"+ e);
}
return tcError;
}
private List<TestResult> getLoadTestResult(Project project, String testResultFile) throws TransformerException, PhrescoException, ParserConfigurationException, SAXException, IOException {
S_LOGGER.debug("Entering Method Quality.getLoadTestResult(Project project, String testResultFile)");
S_LOGGER.debug("getTestResult() ProjectInfo = " + project.getProjectInfo());
S_LOGGER.debug("getTestResult() TestResultFile = " + testResultFile);
List<TestResult> testResults = new ArrayList<TestResult>(2);
try {
String testResultPath = getTestResultPath(project, testResultFile);
Document doc = getDocument(new File(testResultPath));
NodeList nodeList = org.apache.xpath.XPathAPI.selectNodeList(doc, XPATH_TEST_RESULT);
TestResult testResult = null;
for (int i = 0; i < nodeList.getLength(); i++) {
testResult = new TestResult();
Node node = nodeList.item(i);
// NodeList childNodes = node.getChildNodes();
NamedNodeMap nameNodeMap = node.getAttributes();
for (int k = 0; k < nameNodeMap.getLength(); k++) {
Node attribute = nameNodeMap.item(k);
String attributeName = attribute.getNodeName();
String attributeValue = attribute.getNodeValue();
if (ATTR_JM_TIME.equals(attributeName)) {
testResult.setTime(Integer.parseInt(attributeValue));
} else if (ATTR_JM_LATENCY_TIME.equals(attributeName)) {
testResult.setLatencyTime(Integer.parseInt(attributeValue));
} else if (ATTR_JM_TIMESTAMP.equals(attributeName)) {
Date date = new Date(Long.parseLong(attributeValue));
DateFormat format = new SimpleDateFormat(DATE_TIME_FORMAT);
String strDate = format.format(date);
testResult.setTimeStamp(strDate);
} else if (ATTR_JM_SUCCESS_FLAG.equals(attributeName)) {
testResult.setSuccess(Boolean.parseBoolean(attributeValue));
} else if (ATTR_JM_LABEL.equals(attributeName)) {
testResult.setLabel(attributeValue);
} else if (ATTR_JM_THREAD_NAME.equals(attributeName)) {
testResult.setThreadName(attributeValue);
}
}
testResults.add(testResult);
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.getLoadTestResult()"+ e);
}
return testResults;
}
public String testType() {
S_LOGGER.debug("Entering Method Quality.testType()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String testType = getHttpRequest().getParameter(REQ_TEST_TYPE);
// Show warning message for Android technology in quality page when build is not available
if (TechnologyTypes.ANDROIDS.contains(project.getProjectInfo().getTechnology().getId())) {
int buildSize = administrator.getBuildInfos(project).size();
getHttpRequest().setAttribute(REQ_BUILD_WARNING, buildSize == 0);
} else {
getHttpRequest().setAttribute(REQ_BUILD_WARNING, false);
}
S_LOGGER.debug("Test type() test type " + testType);
if (testType != null && (APP_UNIT_TEST.equals(testType) || APP_FUNCTIONAL_TEST.equals(testType))) {
try {
S_LOGGER.debug("Test type() test type unit and Functional test");
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
String techId = project.getProjectInfo().getTechnology().getId();
if (APP_UNIT_TEST.equals(testType)) {
getHttpRequest().setAttribute(PATH,
frameworkUtil.getUnitTestDir(project.getProjectInfo().getTechnology().getId()));
} else if (APP_FUNCTIONAL_TEST.equals(testType) && !TechnologyTypes.IPHONE_HYBRID.equals(techId)) {
ActionType actionType = ActionType.STOP_SELENIUM_SERVER;
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(project.getProjectInfo().getCode());
String funcitonalTestDir = frameworkUtil.getFuncitonalTestDir(project.getProjectInfo().getTechnology().getId());
builder.append(funcitonalTestDir);
actionType.setWorkingDirectory(builder.toString());
ProjectRuntimeManager runtimeManager = PhrescoFrameworkFactory.getProjectRuntimeManager();
runtimeManager.performAction(project, actionType, null, null);
getHttpRequest().setAttribute(PATH,
frameworkUtil.getFuncitonalTestDir(project.getProjectInfo().getTechnology().getId()));
}
getHttpRequest().setAttribute(REQ_FROM_PAGE, fromPage);
List<String> projectModules = getProjectModules(projectCode);
if (CollectionUtils.isNotEmpty(projectModules)) {
getHttpRequest().setAttribute(REQ_PROJECT_MODULES, projectModules);
}
} catch (Exception e) {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, getText(ERROR_FUNCTIONAL_TEST));
}
getHttpRequest().setAttribute(REQ_PROJECT, project);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
getHttpRequest().setAttribute(REQ_TEST_TYPE, testType);
List<String> projectModules = getProjectModules();
getHttpRequest().setAttribute(REQ_PROJECT_MODULES, projectModules);
return testType;
}
if (testType != null && APP_LOAD_TEST.equals(testType)) {
S_LOGGER.debug("Test type() test type load test");
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
getHttpRequest().setAttribute(PATH, frameworkUtil.getLoadTestDir(project.getProjectInfo().getTechnology().getId()));
sb.append(frameworkUtil.getLoadReportDir(project.getProjectInfo().getTechnology().getId()));
S_LOGGER.debug("test type load test Report directory " + sb.toString());
File file = new File(sb.toString());
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
if(children != null) {
QualityUtil.sortResultFile(children);
getHttpRequest().setAttribute(REQ_JMETER_REPORT_FILES, children);
} else {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, getText(ERROR_LOAD_TEST));
}
getHttpRequest().setAttribute(REQ_TEST_TYPE, testType);
getHttpRequest().setAttribute(REQ_PROJECT, project);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
return testType;
}
if (testType != null && APP_PERFORMANCE_TEST.equals(testType)) {
S_LOGGER.debug("Test type() test type performance test");
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
getHttpRequest().setAttribute(PATH, frameworkUtil.getPerformanceTestDir(project.getProjectInfo().getTechnology().getId()));
getHttpRequest().setAttribute(REQ_TEST_TYPE, testType);
getHttpRequest().setAttribute(REQ_PROJECT, project);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
return testType;
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.testType()"+ e);
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, ERROR_TEST_SUITE);
}
return APP_UNIT_TEST;
}
public String performanceTest() {
S_LOGGER.debug("Entering Method Quality.performance()");
String environment = getHttpRequest().getParameter(REQ_ENVIRONMENTS);
getHttpRequest().setAttribute(REQ_TEST_TYPE_SELECTED, REQ_TEST_PERFORMANCE);
BufferedReader reader = null;
Writer writer = null;
try{
ActionType actionType = null;
String jmeterTestAgainst = getHttpRequest().getParameter("jmeterTestAgainst");
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
SettingsInfo selectedSettings = null;
Map<String, String> settingsInfoMap = new HashMap<String, String>(2);
if (TechnologyTypes.ANDROIDS.contains(project.getProjectInfo().getTechnology().getId())) {
String[] connectedDevices = getHttpRequest().getParameterValues(ANDROID_DEVICE);
String devices = FrameworkUtil.convertToCommaDelimited(connectedDevices);
settingsInfoMap.put(ANDROID_DEVICE_LIST, devices);
actionType = ActionType.ANDROID_PERF_COMMAND;
if (SHOW_ERROR.equals(showError)) {
actionType.setShowError(true);
} else {
actionType.setShowError(false);
}
if (HIDE_LOG.equals(hideLog)) {
actionType.setHideLog(true);
} else {
actionType.setHideLog(false);
}
if (SHOW_DEBUG.equals(showDebug)) {
actionType.setShowDebug(true);
} else {
actionType.setShowDebug(false);
}
S_LOGGER.debug("Load method ANDROIDS type settingsInfoMap value " + settingsInfoMap);
S_LOGGER.debug("Performance test method ANDROIDS type settingsInfoMap value " + settingsInfoMap);
} else {
actionType = ActionType.TEST;
if (Constants.SETTINGS_TEMPLATE_SERVER.equals(jmeterTestAgainst)) {
String serverSetting = getHttpRequest().getParameter(Constants.SETTINGS_TEMPLATE_SERVER);
selectedSettings = administrator.getSettingsInfo(serverSetting, Constants.SETTINGS_TEMPLATE_SERVER, project.getProjectInfo().getCode(), environment);
}
if (Constants.SETTINGS_TEMPLATE_WEBSERVICE.equals(jmeterTestAgainst)) {
String webServiceSetting = getHttpRequest().getParameter(Constants.SETTINGS_TEMPLATE_WEBSERVICE);
selectedSettings = administrator.getSettingsInfo(webServiceSetting, Constants.SETTINGS_TEMPLATE_WEBSERVICE, project.getProjectInfo().getCode(), environment);
}
if (Constants.SETTINGS_TEMPLATE_DB.equals(jmeterTestAgainst)) {
String dbSetting = getHttpRequest().getParameter(Constants.SETTINGS_TEMPLATE_DB);
selectedSettings = administrator.getSettingsInfo(dbSetting, Constants.SETTINGS_TEMPLATE_DB, project.getProjectInfo().getCode(), environment);
PropertyInfo host = selectedSettings.getPropertyInfo(Constants.DB_HOST);
PropertyInfo port = selectedSettings.getPropertyInfo(Constants.DB_PORT);
PropertyInfo password = selectedSettings.getPropertyInfo(Constants.DB_PASSWORD);
PropertyInfo type = selectedSettings.getPropertyInfo(Constants.DB_TYPE);
PropertyInfo dbname = selectedSettings.getPropertyInfo(Constants.DB_NAME);
PropertyInfo username = selectedSettings.getPropertyInfo(Constants.DB_USERNAME);
hostValue = host.getValue();
portNo = port.getValue();
pwd = password.getValue();
dbType = type.getValue();
schema = dbname.getValue();
uname = username.getValue();
if(dbType.contains("mysql")){
dbUrl = "jdbc:mysql://" +hostValue +":" +portNo+"/"+schema;
driver = "com.mysql.jdbc.Driver";
}
if(dbType.contains("oracle")){
dbUrl = "jdbc:oracle:thin:@"+hostValue +":" +portNo+":"+schema;
driver = "oracle.jdbc.driver.OracleDriver";
}
if(dbType.contains("mssql")){
dbUrl = "jdbc:sqlserver://"+hostValue +":" +portNo+";databaseName="+schema;
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
}
if(dbType.contains("db2")){
dbUrl = "jdbc:db2://"+hostValue +":" +portNo+"/"+schema;
driver = "com.ibm.db2.jcc.DB2Driver";
}
}
settingsInfoMap.put(TEST_PARAM, TEST_PARAM_VALUE);
S_LOGGER.debug("Performance test method settingsInfoMap value " + settingsInfoMap);
}
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(project.getProjectInfo().getCode());
String performanceTestDir = frameworkUtil.getPerformanceTestDir(project.getProjectInfo().getTechnology().getId());
S_LOGGER.debug("Performance test directory path from framework util " + frameworkUtil.getPerformanceTestDir(project.getProjectInfo().getTechnology().getId()));
builder.append(performanceTestDir);
S_LOGGER.debug("Performance test directory path " + builder.toString());
if (!TechnologyTypes.ANDROIDS.contains(project.getProjectInfo().getTechnology().getId())) {
if ("WebService".equals(jmeterTestAgainst)) {
jmeterTestAgainst = "webservices";
}
builder.append(jmeterTestAgainst.toLowerCase());
QualityUtil.changeTestName(builder.toString(), testName);
QualityUtil.adaptTestConfig(builder.toString(), selectedSettings);
if (!Constants.SETTINGS_TEMPLATE_DB.equals(jmeterTestAgainst)) {
QualityUtil.adaptPerformanceJmx(builder.toString(), name, context, contextType, contextPostData, encodingType, Integer.parseInt(noOfUsers), Integer.parseInt(rampUpPeriod), Integer.parseInt(loopCount));
}
QualityUtil.adaptDBPerformanceJmx(builder.toString(), dbPerName, Database, queryType, query, Integer.parseInt(noOfUsers), Integer.parseInt(rampUpPeriod), Integer.parseInt(loopCount), dbUrl, driver, uname, pwd);
String filepath = builder.toString() + File.separator + testName + ".json";
PerformanceDetails perform = new PerformanceDetails(jmeterTestAgainst, showSettings, setting, testName, name, context, contextType, contextPostData, encodingType,dbPerName,queryType, query,Integer.parseInt(noOfUsers),Integer.parseInt(rampUpPeriod), Integer.parseInt(loopCount));
Gson gson = new Gson();
writer = new OutputStreamWriter(new FileOutputStream(filepath));
gson.toJson(perform,writer);
writer.close();
}
actionType.setWorkingDirectory(builder.toString());
ProjectRuntimeManager runtimeManager = PhrescoFrameworkFactory.getProjectRuntimeManager();
reader = runtimeManager.performAction(project, actionType, settingsInfoMap, null);
getHttpSession().setAttribute(projectCode + PERFORMACE, reader);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
getHttpRequest().setAttribute(REQ_TEST_TYPE,PERFORMACE );
} catch(Exception e) {
if (e instanceof FileNotFoundException) {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, getText(ERROR_PERFORMANCE_TEST));
StringReader sb = new StringReader("Test is not available for this project");
reader = new BufferedReader(sb);
getHttpSession().setAttribute(projectCode + PERFORMACE, reader);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
getHttpRequest().setAttribute(REQ_TEST_TYPE,PERFORMACE );
}
S_LOGGER.error("Entered into catch block of Quality.performance()"+ e);
if (writer != null) {
try {
writer.close();
} catch (IOException e1) {
S_LOGGER.error("Entered into catch block of Quality.performance() Finally "+ e);
}
}
new LogErrorReport(e, "Quality Performance test");
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return APP_ENVIRONMENT_READER;
}
public String load() {
S_LOGGER.debug("Entering Method Quality.load()");
getHttpRequest().setAttribute(REQ_TEST_TYPE_SELECTED, REQ_TEST_LOAD);
try{
ActionType actionType = null;
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
List<SettingsInfo> serverSettings = null;
Map<String, String> settingsInfoMap = new HashMap<String, String>(2);
if (TechnologyTypes.ANDROIDS.contains(project.getProjectInfo().getTechnology().getId())) {
String device = getHttpRequest().getParameter(REQ_ANDROID_DEVICE);
settingsInfoMap.put(DEPLOY_ANDROID_DEVICE_MODE, device); //TODO: Need to be changed
settingsInfoMap.put(DEPLOY_ANDROID_EMULATOR_AVD, REQ_ANDROID_DEFAULT);
actionType = ActionType.MOBILE_COMMON_COMMAND;
S_LOGGER.debug("Load method ANDROIDS type settingsInfoMap value " + settingsInfoMap);
} else {
actionType = ActionType.TEST;
String environment = getHttpRequest().getParameter(REQ_ENVIRONMENTS);
String type = getHttpRequest().getParameter("jmeterTestAgainst");
if(serverSettings == null) {
serverSettings = administrator.getSettingsInfos(type, projectCode, environment);
}
settingsInfoMap.put(TEST_PARAM, TEST_PARAM_VALUE);
S_LOGGER.debug("Load method settingsInfoMap value " + settingsInfoMap);
}
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(project.getProjectInfo().getCode());
String loadTestDirPath = frameworkUtil.getLoadTestDir(project.getProjectInfo().getTechnology().getId());
S_LOGGER.debug("Load test directory path " + loadTestDirPath + "Test Name " + testName);
builder.append(loadTestDirPath);
QualityUtil.changeTestName(builder.toString(), testName);
for (SettingsInfo serverSetting : serverSettings) {
QualityUtil.adaptTestConfig(builder.toString(), serverSetting);
}
QualityUtil.adaptLoadJmx(builder.toString(), Integer.parseInt(noOfUsers), Integer.parseInt(rampUpPeriod), Integer.parseInt(loopCount));
actionType.setWorkingDirectory(builder.toString());
ProjectRuntimeManager runtimeManager = PhrescoFrameworkFactory.getProjectRuntimeManager();
BufferedReader reader = runtimeManager.performAction(project, actionType, settingsInfoMap, null);
getHttpSession().setAttribute(projectCode + LOAD, reader);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
getHttpRequest().setAttribute(REQ_TEST_TYPE, LOAD);
} catch(Exception e) {
if (e instanceof FileNotFoundException) {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, getText(ERROR_LOAD_TEST));
}
S_LOGGER.error("Entered into catch block of Quality.load()"+ e);
new LogErrorReport(e, "Quality Load test");
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return APP_ENVIRONMENT_READER;
}
public String loadTestResult() {
S_LOGGER.debug("Entering Method Quality.loadTestResult()");
try {
String testResultFile = getHttpRequest().getParameter(REQ_TEST_RESULT_FILE);
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
List<TestResult> testResults = getLoadTestResult(project, testResultFile);
getHttpRequest().setAttribute(REQ_TEST_RESULT, testResults);
Gson gson = new Gson();
StringBuilder jSon = new StringBuilder();
StringBuilder data = new StringBuilder();
jSon.append(GRAPH_JSON);
data.append(SQUARE_OPEN);
for (TestResult testResult : testResults) {
jSon.append(gson.toJson(testResult));
data.append(SQUARE_OPEN);
data.append(testResults.indexOf(testResult));
data.append(COMMA);
data.append(testResult.getTime());
data.append(SQUARE_CLOSE);
if(testResults.indexOf(testResult) < testResults.size() - 1) {
jSon.append(COMMA);
data.append(COMMA);
}
}
jSon.append(SQUARE_CLOSE);
jSon.append(SEMI_COLON);
data.append(SQUARE_CLOSE);
data.append(SEMI_COLON);
StringBuilder script = new StringBuilder();
script.append(SCRIPT_START);
script.append(jSon.toString());
script.append(GRAPH_DATA);
script.append(data.toString());
script.append(GRAPH_VOLUME_DATA);
script.append(data.toString());
script.append(GRAPH_SUMMARY_DATA);
script.append(data.toString());
//script.append("var flagData = [[3, 'Login as u1']];");
script.append("var flagData = '';");
script.append(SCRIPT_END);
S_LOGGER.debug("Test result java script constructed for load test" + script.toString());
getHttpSession().setAttribute(SESSION_GRAPH_SCRIPT, script.toString());
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.loadTestResult()"+ e);
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return "loadTestResult";
}
@SuppressWarnings("static-access")
public String performanceTestResultFiles() {
S_LOGGER.debug("Entering Method Quality.performanceTestResultFiles()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
String performanceReportDir = frameworkUtil.getPerformanceReportDir(project.getProjectInfo().getTechnology().getId());
S_LOGGER.debug("test type performance test Report directory " + performanceReportDir);
if (StringUtils.isNotEmpty(performanceReportDir) && StringUtils.isNotEmpty(testResultsType)) {
Pattern p = Pattern.compile("dir_type");
Matcher matcher = p.matcher(performanceReportDir);
performanceReportDir = matcher.replaceAll(testResultsType);
sb.append(performanceReportDir);
}
S_LOGGER.debug("test type performance test Report directory & Type " + sb.toString() + " Type " + testResultsType);
File file = new File(sb.toString());
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
QualityUtil util = new QualityUtil();
if(children != null) {
util.sortResultFile(children);
getHttpRequest().setAttribute(REQ_JMETER_REPORT_FILES, children);
} else {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, ERROR_TEST_SUITE);
}
testResultFiles = new ArrayList<String>();
for (File resultFile : children) {
if (resultFile.isFile()) {
testResultFiles.add(resultFile.getName());
}
}
} catch(Exception e) {
S_LOGGER.error("Entered into catch block of Quality.performanceTestResultFiles()"+ FrameworkUtil.getStackTraceAsString(e));
}
return "success";
}
public String performanceTestResultAvail() {
S_LOGGER.debug("Entering Method Quality.performanceTestResultAvail()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
List<String> testResultsTypes = new ArrayList<String>();
testResultsTypes.add("server");
testResultsTypes.add("database");
testResultsTypes.add("webservices");
for(String perType: testResultsTypes) {
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
String performanceReportDir = frameworkUtil.getPerformanceReportDir(project.getProjectInfo().getTechnology().getId());
if (StringUtils.isNotEmpty(performanceReportDir) && StringUtils.isNotEmpty(perType)) {
Pattern p = Pattern.compile("dir_type");
Matcher matcher = p.matcher(performanceReportDir);
performanceReportDir = matcher.replaceAll(perType);
sb.append(performanceReportDir);
}
File file = new File(sb.toString());
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
if(children != null && children.length > 0) {
isAtleastOneFileAvail = true;
break;
}
}
} catch(Exception e) {
S_LOGGER.error("Entered into catch block of Quality.performanceTestResultAvail()"+ FrameworkUtil.getStackTraceAsString(e));
}
return "success";
}
public String performanceTestResult() {
S_LOGGER.debug("Entering Method Quality.performanceTestResult()");
try {
String testResultFile = getHttpRequest().getParameter(REQ_TEST_RESULT_FILE);
String showGraphFor = getHttpRequest().getParameter("showGraphFor");
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
// String deviceId = getHttpRequest().getParameter("deviceId"); // android device id for display
String techId = project.getProjectInfo().getTechnology().getId();
S_LOGGER.debug("Performance test file name " + testResultFile);
if (!testResultFile.equals("null")) {
String testResultPath = getTestResultPath(project, testResultFile);
Document document = getDocument(new File(testResultPath));
Map<String, PerformanceTestResult> performanceReport = QualityUtil.getPerformanceReport(document, getHttpRequest(), techId, testResultDeviceId); // need to pass tech id and tag name
getHttpRequest().setAttribute(REQ_TEST_RESULT, performanceReport);
Set<String> keySet = performanceReport.keySet();
StringBuilder data = new StringBuilder("[");
StringBuilder label = new StringBuilder("[");
List<Float> allMin = new ArrayList<Float>();
List<Float> allMax = new ArrayList<Float>();
List<Float> allAvg = new ArrayList<Float>();
int index = 0;
for (String key : keySet) {
PerformanceTestResult performanceTestResult = performanceReport.get(key);
if (REQ_TEST_SHOW_THROUGHPUT_GRAPH.equals(showGraphFor)) {
data.append(performanceTestResult.getThroughtPut()); //for ThroughtPut
} else if (REQ_TEST_SHOW_MIN_RESPONSE_GRAPH.equals(showGraphFor)) {
data.append(performanceTestResult.getMin()); //for min response time
} else if (REQ_TEST_SHOW_MAX_RESPONSE_GRAPH.equals(showGraphFor)) {
data.append(performanceTestResult.getMax()); //for max response time
} else if (REQ_TEST_SHOW_RESPONSE_TIME_GRAPH.equals(showGraphFor)) {
data.append(performanceTestResult.getAvg()); //for responseTime
} else if (REQ_TEST_SHOW_ALL_GRAPH.equals(showGraphFor)) {
data.append(performanceTestResult.getThroughtPut()); //for ThroughtPut
allMin.add((float)performanceTestResult.getMin()/1000);
allMax.add((float)performanceTestResult.getMax()/1000);
allAvg.add((float) (performanceTestResult.getAvg())/1000);
}
label.append("'");
label.append(performanceTestResult.getLabel());
label.append("'");
if (index < performanceReport.size() - 1) {
data.append(",");
label.append(",");
}
index++;
}
label.append("]");
data.append("]");
getHttpRequest().setAttribute(FrameworkConstants.REQ_GRAPH_DATA, data.toString());
getHttpRequest().setAttribute(FrameworkConstants.REQ_GRAPH_LABEL, label.toString());
getHttpRequest().setAttribute(FrameworkConstants.REQ_GRAPH_ALL_DATA, allMin +", "+ allAvg +", "+ allMax);
getHttpRequest().setAttribute(FrameworkConstants.REQ_SHOW_GRAPH, showGraphFor);
getHttpRequest().setAttribute(REQ_PROJECT, project);
} else {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, ERROR_TEST_SUITE);
}
} catch (Exception e) {
getHttpRequest().setAttribute(REQ_ERROR_DATA, ERROR_ANDROID_DATA);
S_LOGGER.error("Entered into catch block of Quality.performanceTestResult()"+ e);
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return "performanceTestResult";
}
public String quality() {
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
getHttpRequest().setAttribute(REQ_PROJECT, project);
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.quality()"+ e);
new LogErrorReport(e, "Quality");
}
return APP_QUALITY;
}
public String generateFunctionalTest() {
S_LOGGER.debug("Entering Method Quality.generateTest()");
List<Environment> environments = null;
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String technology = project.getProjectInfo().getTechnology().getId();
getHttpRequest().setAttribute(REQ_PROJECT, project);
List<BuildInfo> buildInfos = administrator.getBuildInfos(project);
environments = administrator.getEnvironments(project);
String osType = getOsName();
if (WINDOWS.equals(osType)) {
Map<String, String> windowsBrowsersMap = new HashMap<String, String>();
if (TechnologyTypes.PHP.equals(technology) || TechnologyTypes.PHP_DRUPAL6.equals(technology) || TechnologyTypes.PHP_DRUPAL7.equals(technology) || TechnologyTypes.WORDPRESS.equals(technology)) {
windowsBrowsersMap.put(WIN_BROWSER_FIREFOX_KEY, BROWSER_FIREFOX_VALUE);
windowsBrowsersMap.put(WIN_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
windowsBrowsersMap.put(WIN_BROWSER_WEB_DRIVER_INTERNET_EXPLORER_KEY, BROWSER_INTERNET_EXPLORER_VALUE);
} else if (!TechnologyTypes.SHAREPOINT.equals(technology) && !TechnologyTypes.DOT_NET.equals(technology)) {
windowsBrowsersMap.put(WIN_BROWSER_FIREFOX_KEY, BROWSER_FIREFOX_VALUE);
windowsBrowsersMap.put(WIN_BROWSER_CHROME_KEY, BROWSER_CHROME_VALUE);
windowsBrowsersMap.put(WIN_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
windowsBrowsersMap.put(WIN_BROWSER_INTERNET_EXPLORER_KEY, BROWSER_INTERNET_EXPLORER_VALUE);
/* windowsBrowsersMap.put(WIN_BROWSER_SAFARI_KEY, BROWSER_SAFARI);*/
} else {
windowsBrowsersMap.put(WIN_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
windowsBrowsersMap.put(WIN_BROWSER_INTERNET_EXPLORER_KEY, BROWSER_INTERNET_EXPLORER_VALUE);
}
S_LOGGER.debug("Windows machine browsers list " + windowsBrowsersMap);
getHttpRequest().setAttribute(REQ_TEST_BROWSERS, windowsBrowsersMap);
}
if (MAC.equals(osType)) {
Map<String, String> macBrowsersMap = new HashMap<String, String>();
if (TechnologyTypes.PHP.equals(technology) || TechnologyTypes.PHP_DRUPAL6.equals(technology) || TechnologyTypes.PHP_DRUPAL7.equals(technology) || TechnologyTypes.WORDPRESS.equals(technology)) {
macBrowsersMap.put(MAC_BROWSER_FIREFOX_KEY, BROWSER_FIREFOX_VALUE);
macBrowsersMap.put(MAC_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
} else if (!TechnologyTypes.SHAREPOINT.equals(technology) && !TechnologyTypes.DOT_NET.equals(technology)) {
macBrowsersMap.put(MAC_BROWSER_FIREFOX_KEY, BROWSER_FIREFOX_VALUE);
macBrowsersMap.put(MAC_BROWSER_CHROME_KEY, BROWSER_CHROME_VALUE);
macBrowsersMap.put(MAC_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
/* macBrowsersMap.put(MAC_BROWSER_SAFARI_KEY, BROWSER_SAFARI);*/
} else {
macBrowsersMap.put(WIN_BROWSER_INTERNET_EXPLORER_KEY, BROWSER_INTERNET_EXPLORER_VALUE);
}
S_LOGGER.debug("Mac machine browsers list " + macBrowsersMap);
getHttpRequest().setAttribute(REQ_TEST_BROWSERS, macBrowsersMap);
}
if (LINUX.equals(osType)) {
Map<String, String> linuxBrowsersMap = new HashMap<String, String>();
if (TechnologyTypes.PHP.equals(technology) || TechnologyTypes.PHP_DRUPAL6.equals(technology) || TechnologyTypes.PHP_DRUPAL7.equals(technology) || TechnologyTypes.WORDPRESS.equals(technology)) {
linuxBrowsersMap.put(LINUX_BROWSER_FIREFOX_KEY, BROWSER_FIREFOX_VALUE);
linuxBrowsersMap.put(LINUX_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
} else if (!TechnologyTypes.SHAREPOINT.equals(technology) && !TechnologyTypes.DOT_NET.equals(technology)) {
linuxBrowsersMap.put(LINUX_BROWSER_FIREFOX_KEY, BROWSER_FIREFOX_VALUE);
linuxBrowsersMap.put(LINUX_BROWSER_CHROME_KEY,BROWSER_CHROME_VALUE);
linuxBrowsersMap.put(WIN_BROWSER_OPERA_KEY, BROWSER_OPERA_VALUE);
/*linuxBrowsersMap.put(LINUX_BROWSER_SAFARI_KEY, BROWSER_SAFARI);*/
} else {
linuxBrowsersMap.put(WIN_BROWSER_INTERNET_EXPLORER_KEY, BROWSER_INTERNET_EXPLORER_VALUE);
}
S_LOGGER.debug("Linux machine browsers list " + linuxBrowsersMap);
getHttpRequest().setAttribute(REQ_TEST_BROWSERS, linuxBrowsersMap);
}
getHttpRequest().setAttribute(REQ_TEST_BUILD_INFOS, buildInfos);
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.generateTest()"+ e);
}
List<String> projectModules = getProjectModules(projectCode);
getHttpRequest().setAttribute(REQ_PROJECT_MODULES, projectModules);
getHttpRequest().setAttribute(REQ_ENVIRONMENTS, environments);
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return APP_GENERATE_TEST;
}
public String generateUnitTest() {
S_LOGGER.debug("Entering Method Quality.generateUnitTest()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
getHttpRequest().setAttribute(REQ_PROJECT, project);
List<String> projectModules = getProjectModules();
getHttpRequest().setAttribute(REQ_PROJECT_MODULES, projectModules);
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.generateTest()"+ e);
}
return APP_GENERATE_UNIT_TEST;
}
private List<String> getProjectModules() {
try {
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(projectCode);
builder.append(File.separatorChar);
builder.append(POM_XML);
File pomPath = new File(builder.toString());
PomProcessor processor = new PomProcessor(pomPath);
Modules pomModule = processor.getPomModule();
if (pomModule != null) {
return pomModule.getModule();
}
} catch (JAXBException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (PhrescoPomException e) {
e.printStackTrace();
}
return null;
}
// This method returns what type of OS we are using
public String getOsName() {
String OS = null;
String osType = null;
if(OS == null) {
OS = System.getProperty(OS_NAME).toLowerCase();
}
if (OS.indexOf(WINDOWS_CHECK) >= 0) {
osType = WINDOWS;
}
if (OS.indexOf(MAC_CHECK) >= 0) {
osType = MAC;
}
if (OS.indexOf(LINUX_CHECK) >= 0) {
osType = LINUX;
}
return osType;
}
public String testReport() {
S_LOGGER.debug("Entering Method Quality.testReport()");
try {
String testSuitesMapKey = projectCode + testType + projectModule + techReport;
Map<String, NodeList> testResultNameMap = testSuiteMap.get(testSuitesMapKey);
// NodeList testSuites = testResultNameMap.get(testResultFile); //testSuite
NodeList testSuites = testResultNameMap.get(testSuite);
if (ALL_TEST_SUITES.equals(testSuite)) {
Map<String, String> testSuitesResultMap = new HashMap<String, String>();
float totalTestSuites = 0;
float successTestSuites = 0;
float failureTestSuites = 0;
float errorTestSuites = 0;
// get all nodelist of testType of a project
Collection<NodeList> allTestResultNodeLists = testResultNameMap.values();
for (NodeList allTestResultNodeList : allTestResultNodeLists) {
if (allTestResultNodeList.getLength() > 0 ) {
List<TestSuite> allTestSuites = getTestSuite(allTestResultNodeList);
if (CollectionUtils.isNotEmpty(allTestSuites)) {
for (TestSuite tstSuite : allTestSuites) {
//testsuite values are set before calling getTestCases value
testSuite = tstSuite.getName();
List<TestCase> testCases = getTestCases(allTestResultNodeList);
float tests = 0;
float failures = 0;
float errors = 0;
tests = Float.parseFloat((String) getHttpRequest().getAttribute(REQ_TESTSUITE_TESTS));
failures = Float.parseFloat((String) getHttpRequest().getAttribute(REQ_TESTSUITE_FAILURES));
errors = Float.parseFloat((String) getHttpRequest().getAttribute(REQ_TESTSUITE_ERRORS));
float success = 0;
if (failures != 0 && errors == 0) {
if (failures > tests) {
success = failures - tests;
} else {
success = tests - failures;
}
} else if (failures == 0 && errors != 0) {
if (errors > tests) {
success = errors - tests;
} else {
success = tests - errors;
}
} else if (failures != 0 && errors != 0) {
float failTotal = (failures + errors);
if (failTotal > tests) {
success = failTotal - tests;
} else {
success = tests - failTotal;
}
} else {
success = tests;
}
totalTestSuites = totalTestSuites + tests;
failureTestSuites = failureTestSuites + failures;
errorTestSuites = errorTestSuites + errors;
successTestSuites = successTestSuites + success;
String rstValues = tests + "," + success + "," + failures + "," + errors;
testSuitesResultMap.put(tstSuite.getName(), rstValues);
}
}
}
}
getHttpRequest().setAttribute(REQ_ALL_TESTSUITE_MAP, testSuitesResultMap);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
return APP_ALL_TEST_REPORT;
} else {
if (testSuites.getLength() > 0 ) {
List<TestCase> testCases = getTestCases(testSuites);
if (CollectionUtils.isEmpty(testCases)) {
getHttpRequest().setAttribute(REQ_ERROR_TESTSUITE, ERROR_TEST_CASE);
} else {
getHttpRequest().setAttribute(REQ_TESTCASES, testCases);
}
}
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.testSuite()"+ e);
}
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
return APP_TEST_REPORT; //APP_QUALITY_TESTSUITE;
}
public String testAndroid(){
HttpServletRequest request = getHttpRequest();
String testType = request.getParameter("testType");
request.setAttribute(REQ_FROM_TAB, REQ_FROM_TAB_TEST);
request.setAttribute("testType", testType);
return APP_TEST_ANDROID;
}
public String generateJmeter() {
S_LOGGER.debug("Entering Method Quality.generateJmeter()");
String technology = null;
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
technology = project.getProjectInfo().getTechnology().getId();
List<Environment> environments = administrator.getEnvironments(project);
getHttpRequest().setAttribute(REQ_ENVIRONMENTS, environments);
getHttpRequest().setAttribute(REQ_SELECTED_MENU, APPLICATIONS);
getHttpRequest().setAttribute("jmeterTestAgainst", jmeterTestAgainst);
getHttpRequest().setAttribute(REQ_TEST_TYPE_SELECTED, testType);
getHttpRequest().setAttribute("technology", technology);
if (TechnologyTypes.ANDROIDS.contains(technology) && testType.equals(REQ_TEST_PERFORMANCE)) {
QualityUtil util = new QualityUtil();
try {
ArrayList<String> connAndroidDevices = util.getConnAndroidDevices("adb devices");
getHttpRequest().setAttribute(REQ_ANDROID_CONN_DEVICES, connAndroidDevices);
testType = ANDROID_PERFORMACE;
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (PhrescoException e) {
S_LOGGER.error("Entered into catch block of Quality.generateJmeter()"+ e);
}
return testType;
}
public String fetchPerfTestJSONData() {
if (debugEnabled) {
S_LOGGER.debug("Entering Method Quality.fetchPerfTestJSONData()");
}
Reader read = null;
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder builder = new StringBuilder(Utility.getProjectHome());
builder.append(project.getProjectInfo().getCode());
String performanceTestDir = frameworkUtil.getPerformanceTestDir(project.getProjectInfo().getTechnology().getId());
builder.append(performanceTestDir);
if(WEBSERVICE.equals(jmeterTestAgainst)) {
builder.append(WEBSERVICES_DIR);
} else {
builder.append(jmeterTestAgainst);
}
builder.append(File.separator);
builder.append(testName);
builder.append(".json");
Gson gson = new Gson();
read = new InputStreamReader(new FileInputStream(builder.toString()));
performanceDetails = gson.fromJson(read, PerformanceDetails.class);
} catch(Exception e){
S_LOGGER.error("Entered into catch block of Quality.fetchPerfTestJSONData()"+ e);
} finally {
if (read != null) {
try {
read.close();
} catch (IOException e) {
S_LOGGER.error("Entered into catch block of Quality.fetchPerfTestJSONData() finally"+ e);
}
}
}
return SUCCESS;
}
public class XmlNameFileFilter implements FilenameFilter {
private String filter_;
public XmlNameFileFilter(String filter) {
filter_ = filter;
}
public boolean accept(File dir, String name) {
return name.endsWith(filter_);
}
}
public class FileNameFileFilter implements FilenameFilter {
private String filter_;
private String startWith_;
public FileNameFileFilter(String filter, String startWith) {
filter_ = filter;
startWith_ = startWith;
}
public boolean accept(File dir, String name) {
return name.endsWith(filter_) && name.startsWith(startWith_);
}
}
public String getSettingCaption() {
S_LOGGER.debug("Entering Method Quality.getSettingCaption()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String envs = getHttpRequest().getParameter(REQ_ENVIRONMENTS);
getHttpRequest().setAttribute(REQ_PROJECT, project);
SettingsInfo Settings = null;
List<PropertyInfo> propertyInfos = null;
String protocol = "";
String host = "";
String port = "";
String context = "";
if(StringUtils.isNotEmpty(settingType) && StringUtils.isNotEmpty(settingName)) {
if (settingType.equals("server")) {
Settings = administrator.getSettingsInfo(settingName, Constants.SETTINGS_TEMPLATE_SERVER, projectCode, envs);
propertyInfos = Settings.getPropertyInfos();
for (PropertyInfo propertyInfo : propertyInfos) {
if (propertyInfo.getKey().equals(Constants.SERVER_PROTOCOL)) {
protocol = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.SERVER_HOST)) {
host = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.SERVER_PORT)) {
port = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.SERVER_CONTEXT)) {
context = propertyInfo.getValue();
}
}
}
if (settingType.equals("webservices")) {
Settings = administrator.getSettingsInfo(settingName, Constants.SETTINGS_TEMPLATE_WEBSERVICE, projectCode, envs);
propertyInfos = Settings.getPropertyInfos();
for (PropertyInfo propertyInfo : propertyInfos) {
if (propertyInfo.getKey().equals(Constants.WEB_SERVICE_PROTOCOL)) {
protocol =propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.WEB_SERVICE_HOST)) {
host = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.WEB_SERVICE_PORT)) {
port = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.WEB_SERVICE_CONTEXT)) {
context = propertyInfo.getValue();
}
}
}
if (settingType.equals("database")) {
Settings = administrator.getSettingsInfo(settingName, Constants.SETTINGS_TEMPLATE_DB, projectCode, envs);
propertyInfos = Settings.getPropertyInfos();
for (PropertyInfo propertyInfo : propertyInfos) {
if (propertyInfo.getKey().equals(Constants.DB_PROTOCOL)) {
//protocol =propertyInfo.getValue();
protocol = Constants.DB_PROTOCOL;
}
if (propertyInfo.getKey().equals(Constants.DB_HOST)) {
host = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.DB_PORT)) {
port = propertyInfo.getValue();
}
if (propertyInfo.getKey().equals(Constants.DB_NAME)) {
context = propertyInfo.getValue();
}
}
}
}
if (StringUtils.isNotEmpty(port)) {
port = ":" + port;
}
if (StringUtils.isNotEmpty(context)) {
context = "/" + context;
}
caption = protocol + "://" + host + port + "" + context + "/";
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.getSettingCaption()"+ FrameworkUtil.getStackTraceAsString(e));
}
return SUCCESS;
}
public String tstResultFiles() {
S_LOGGER.debug("Entering Method Quality.perTstResultFiles()");
try {
String testDirPath = null;
testResultFiles = new ArrayList<String>();
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
if(StringUtils.isEmpty(settingType)) {
testDirPath = frameworkUtil.getLoadReportDir(project.getProjectInfo().getTechnology().getId());
sb.append(testDirPath);
} else {
testDirPath = frameworkUtil.getPerformanceReportDir(project.getProjectInfo().getTechnology().getId());
if (StringUtils.isNotEmpty(testDirPath) && StringUtils.isNotEmpty(settingType)) {
Pattern p = Pattern.compile("dir_type");
Matcher matcher = p.matcher(testDirPath);
if(WEBSERVICE.equals(settingType)) {
testDirPath = matcher.replaceAll(WEBSERVICES_DIR);
} else {
testDirPath = matcher.replaceAll(settingType);
}
sb.append(testDirPath);
}
}
File file = new File(sb.toString());
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
if(children != null && children.length > 0) {
for (File resultFile : children) {
if (resultFile.isFile()) {
testResultFiles.add(resultFile.getName());
}
}
}
} catch(Exception e) {
S_LOGGER.error("Entered into catch block of Quality.perTstResultFiles"+ FrameworkUtil.getStackTraceAsString(e));
}
return "success";
}
public String devices() {
S_LOGGER.debug("Entering Method Quality.devices()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String testResultFile = getHttpRequest().getParameter(REQ_TEST_RESULT_FILE);
if (!testResultFile.equals("null")) {
String testResultPath = getTestResultPath(project, testResultFile);
Document document = getDocument(new File(testResultPath));
deviceNames = QualityUtil.getDeviceNames(document);
}
} catch(Exception e) {
S_LOGGER.error("Entered into catch block of Quality.devices()"+ FrameworkUtil.getStackTraceAsString(e));
}
return SUCCESS;
}
public String testIphone() {
S_LOGGER.debug("Entering Method Quality.testIPhone()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String testType = getHttpRequest().getParameter(REQ_TEST_TYPE);
getHttpRequest().setAttribute(REQ_PROJECT, project);
getHttpRequest().setAttribute(REQ_FROM_TAB, REQ_FROM_TAB_TEST); // test
getHttpRequest().setAttribute(REQ_TEST_TYPE, testType);
if(FUNCTIONAL.equals(testType)) {
List<BuildInfo> buildInfos = administrator.getBuildInfos(project);
getHttpRequest().setAttribute(REQ_TEST_BUILD_INFOS, buildInfos);
}
if(UNIT.equals(testType)) {
// Get xcode targets
List<PBXNativeTarget> xcodeConfigs = ApplicationsUtil.getXcodeConfiguration(projectCode);
getHttpRequest().setAttribute(REQ_XCODE_CONFIGS, xcodeConfigs);
// get list of sdks
List<String> iphoneSdks = IosSdkUtil.getMacSdks(MacSdkType.iphoneos);
iphoneSdks.addAll(IosSdkUtil.getMacSdks(MacSdkType.iphonesimulator));
iphoneSdks.addAll(IosSdkUtil.getMacSdks(MacSdkType.macosx));
getHttpRequest().setAttribute(REQ_IPHONE_SDKS, iphoneSdks);
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.testIPhone()"+ e);
}
return SUCCESS;
}
public String configNames() throws PhrescoException {
try {
String envName = getHttpRequest().getParameter("envName");
String type = getHttpRequest().getParameter("type");
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
List<SettingsInfo> settingsInfos = administrator.getSettingsInfos(type, projectCode, envName);
List<String> settingsInfoNames = new ArrayList<String>();
for (SettingsInfo settingsInfo : settingsInfos) {
settingsInfoNames.add(settingsInfo.getName());
}
configName = settingsInfoNames;
} catch(Exception e) {
throw new PhrescoException(e);
}
return SUCCESS;
}
public String fetchBuildInfoEnvs() {
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String buildNumber = getHttpRequest().getParameter(REQ_TEST_BUILD_ID);
buildInfoEnvs = administrator.getBuildInfo(project, Integer.parseInt(buildNumber)).getEnvironments();
} catch (PhrescoException e) {
// TODO: handle exception
}
return SUCCESS;
}
public String printAsPdfPopup () {
S_LOGGER.debug("Entering Method Quality.printAsPdfPopup()");
try {
boolean XmlResultsAvailable = false;
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
FrameworkUtil frameworkUtil = FrameworkUtil.getInstance();
StringBuilder sb = new StringBuilder();
sb.append(Utility.getProjectHome());
sb.append(project.getProjectInfo().getCode());
String technology = project.getProjectInfo().getTechnology().getId();
//check unit and functional are executed already or not
if(!XmlResultsAvailable) {
File file = new File(sb.toString() + frameworkUtil.getUnitReportDir(technology));
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
if(children != null) {
XmlResultsAvailable = true;
}
}
if(!XmlResultsAvailable) {
File file = new File(sb.toString() + frameworkUtil.getFunctionalReportDir(technology));
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
if(children != null) {
XmlResultsAvailable = true;
}
}
if(!XmlResultsAvailable) {
performanceTestResultAvail();
if(isAtleastOneFileAvail()) {
XmlResultsAvailable = true;
}
}
if(!XmlResultsAvailable) {
File file = new File(sb.toString() + frameworkUtil.getLoadReportDir(technology));
File[] children = file.listFiles(new XmlNameFileFilter(FILE_EXTENSION_XML));
if(children != null) {
XmlResultsAvailable = true;
}
}
getHttpRequest().setAttribute(REQ_TEST_EXE, XmlResultsAvailable);
List<String> pdfFiles = new ArrayList<String>();
// popup showing list of pdf's already created
String pdfDirLoc = "";
String fileFilterName = "";
if (StringUtils.isEmpty(testType)) {
pdfDirLoc = Utility.getProjectHome() + projectCode + File.separator + DO_NOT_CHECKIN_DIR + File.separator + ARCHIVES + File.separator + CUMULATIVE;
fileFilterName = projectCode;
} else {
pdfDirLoc = Utility.getProjectHome() + projectCode + File.separator + DO_NOT_CHECKIN_DIR + File.separator + ARCHIVES + File.separator + testType;
fileFilterName = testType;
}
File pdfFileDir = new File(pdfDirLoc);
if(pdfFileDir.isDirectory()) {
File[] children = pdfFileDir.listFiles(new FileNameFileFilter(DOT + PDF, fileFilterName));
QualityUtil util = new QualityUtil();
if(children != null) {
util.sortResultFile(children);
}
for (File child : children) {
String fileNameWithType = child.getName().replace(DOT + PDF, "").replace(fileFilterName + UNDERSCORE, "");
String[] fileWithType = fileNameWithType.split(UNDERSCORE);
pdfFiles.add(fileWithType[0] + UNDERSCORE + fileWithType[1]);
}
}
if(pdfFiles != null) {
getHttpRequest().setAttribute(REQ_PDF_REPORT_FILES, pdfFiles);
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.printAsPdfPopup()"+ e);
}
getHttpRequest().setAttribute(REQ_TEST_TYPE, testType);
getHttpRequest().setAttribute(REQ_PROJECT_CODE, projectCode);
return SUCCESS;
}
public String printAsPdf () {
S_LOGGER.debug("Entering Method Quality.printAsPdf()");
try {
ProjectAdministrator administrator = PhrescoFrameworkFactory.getProjectAdministrator();
Project project = administrator.getProject(projectCode);
String testType = getHttpRequest().getParameter(REQ_TEST_TYPE);
reportGeneration(project, testType);
getHttpRequest().setAttribute(REQ_REPORT_STATUS, getText(SUCCESS_REPORT_STATUS));
} catch (Exception e) {
getHttpRequest().setAttribute(REQ_REPORT_STATUS, getText(ERROR_REPORT_STATUS));
S_LOGGER.error("Entered into catch block of Quality.printAsPdf()"+ e);
}
return printAsPdfPopup();
}
public void reportGeneration(Project project, String testType) {
S_LOGGER.debug("Entering Method Quality.reportGeneration()");
try {
PhrescoReportGeneration prg = new PhrescoReportGeneration();
if (StringUtils.isEmpty(testType)) {
prg.cumulativePdfReport(project, testType, reportDataType);
} else {
prg.generatePdfReport(project, testType, reportDataType);
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.reportGeneration()" + e);
}
}
public String downloadReport() {
S_LOGGER.debug("Entering Method Quality.downloadReport()");
try {
String testType = getHttpRequest().getParameter(REQ_TEST_TYPE);
String pdfLOC = "";
if (StringUtils.isEmpty(testType)) {
pdfLOC = Utility.getProjectHome() + projectCode + File.separator + DO_NOT_CHECKIN_DIR + File.separator + ARCHIVES + File.separator + CUMULATIVE + File.separator + projectCode + UNDERSCORE + reportFileName + DOT + PDF;
} else {
pdfLOC = Utility.getProjectHome() + projectCode + File.separator + DO_NOT_CHECKIN_DIR + File.separator + ARCHIVES + File.separator + testType + File.separator + testType + UNDERSCORE + reportFileName + DOT + PDF;
}
File pdfFile = new File(pdfLOC);
if (pdfFile.isFile()) {
fileInputStream = new FileInputStream(pdfFile);
fileName = reportFileName.split(UNDERSCORE)[1];
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.downloadReport()" + e);
}
return SUCCESS;
}
public String deleteReport() {
S_LOGGER.debug("Entering Method Quality.deleteReport()");
try {
String testType = getHttpRequest().getParameter(REQ_TEST_TYPE);
String pdfLOC = "";
if (StringUtils.isEmpty(testType)) {
pdfLOC = Utility.getProjectHome() + projectCode + File.separator + DO_NOT_CHECKIN_DIR + File.separator + ARCHIVES + File.separator + CUMULATIVE + File.separator + projectCode + UNDERSCORE + reportFileName + DOT + PDF;
} else {
pdfLOC = Utility.getProjectHome() + projectCode + File.separator + DO_NOT_CHECKIN_DIR + File.separator + ARCHIVES + File.separator + testType + File.separator + testType + UNDERSCORE + reportFileName + DOT + PDF;
}
File pdfFile = new File(pdfLOC);
if (pdfFile.isFile()) {
boolean reportDeleted = pdfFile.delete();
S_LOGGER.info("Report deleted " + reportDeleted);
if(reportDeleted) {
getHttpRequest().setAttribute(REQ_REPORT_DELETE_STATUS, getText(SUCCESS_REPORT_DELETE_STATUS));
} else {
getHttpRequest().setAttribute(REQ_REPORT_DELETE_STATUS, getText(ERROR_REPORT_DELETE_STATUS));
}
}
} catch (Exception e) {
S_LOGGER.error("Entered into catch block of Quality.downloadReport()" + e);
}
return printAsPdfPopup();
}
public List<SettingsInfo> getServerSettings() {
return serverSettings;
}
public void setServerSettings(List<SettingsInfo> serverSettings) {
this.serverSettings = serverSettings;
}
public String getTestSuite() {
return testSuite;
}
public void setTestSuite(String testSuite) {
this.testSuite = testSuite;
}
public String getTests() {
return tests;
}
public void setTests(String tests) {
this.tests = tests;
}
public String getErrs() {
return errs;
}
public void setErrs(String errs) {
this.errs = errs;
}
public String getFailures() {
return failures;
}
public void setFailures(String failures) {
this.failures = failures;
}
public String getSetting() {
return setting;
}
public void setSetting(String setting) {
this.setting = setting;
}
public String getProjectCode() {
return projectCode;
}
public void setProjectCode(String projectCode) {
this.projectCode = projectCode;
}
public String getTestType() {
return testType;
}
public void setTestType(String testType) {
this.testType = testType;
}
public String getTestResultFile() {
return testResultFile;
}
public void setTestResultFile(String testResultFile) {
this.testResultFile = testResultFile;
}
public String getSettingType() {
return settingType;
}
public void setSettingType(String settingType) {
this.settingType = settingType;
}
public String getSettingName() {
return settingName;
}
public void setSettingName(String settingName) {
this.settingName = settingName;
}
public void setCaption(String caption) {
this.caption = caption;
}
public String getCaption() {
return caption;
}
public List<String> getTestResultFiles() {
return testResultFiles;
}
public void setTestResultFiles(List<String> testResultFiles) {
this.testResultFiles = testResultFiles;
}
public List<String> getName() {
return name;
}
public void setName(List<String> name) {
this.name = name;
}
public List<String> getContext() {
return context;
}
public void setContext(List<String> context) {
this.context = context;
}
public String getTestResultsType() {
return testResultsType;
}
public void setTestResultsType(String testResultsType) {
this.testResultsType = testResultsType;
}
public String getNoOfUsers() {
return noOfUsers;
}
public void setNoOfUsers(String noOfUsers) {
this.noOfUsers = noOfUsers;
}
public String getRampUpPeriod() {
return rampUpPeriod;
}
public void setRampUpPeriod(String rampUpPeriod) {
this.rampUpPeriod = rampUpPeriod;
}
public String getLoopCount() {
return loopCount;
}
public void setLoopCount(String loopCount) {
this.loopCount = loopCount;
}
public String getJmeterTestAgainst() {
return jmeterTestAgainst;
}
public void setJmeterTestAgainst(String jmeterTestAgainst) {
this.jmeterTestAgainst = jmeterTestAgainst;
}
public String getTestName() {
return testName;
}
public void setTestName(String testName) {
this.testName = testName;
}
public boolean isAtleastOneFileAvail() {
return isAtleastOneFileAvail;
}
public void setAtleastOneFileAvail(boolean isAtleastOneFileAvail) {
this.isAtleastOneFileAvail = isAtleastOneFileAvail;
}
public String getShowError() {
return showError;
}
public void setShowError(String showError) {
this.showError = showError;
}
public String getTestResultDeviceId() {
return testResultDeviceId;
}
public void setTestResultDeviceId(String testResultDeviceId) {
this.testResultDeviceId = testResultDeviceId;
}
public Map<String, String> getDeviceNames() {
return deviceNames;
}
public void setDeviceNames(Map<String, String> deviceNames) {
this.deviceNames = deviceNames;
}
public List<String> getContextType() {
return contextType;
}
public void setContextType(List<String> contextType) {
this.contextType = contextType;
}
public List<String> getContextPostData() {
return contextPostData;
}
public void setContextPostData(List<String> contextPostData) {
this.contextPostData = contextPostData;
}
public List<String> getEncodingType() {
return encodingType;
}
public void setEncodingType(List<String> encodingType) {
this.encodingType = encodingType;
}
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
public List<String> getConfigName() {
return configName;
}
public void setConfigName(List<String> configName) {
this.configName = configName;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public List<String> getBuildInfoEnvs() {
return buildInfoEnvs;
}
public void setBuildInfoEnvs(List<String> buildInfoEnvs) {
this.buildInfoEnvs = buildInfoEnvs;
}
public String getHideLog() {
return hideLog;
}
public void setHideLog(String hideLog) {
this.hideLog = hideLog;
}
public String getSdk() {
return sdk;
}
public void setSdk(String sdk) {
this.sdk = sdk;
}
public String getDatabase() {
return Database;
}
public void setDatabase(String database) {
Database = database;
}
public List<String> getDbPerName() {
return dbPerName;
}
public void setDbPerName(List<String> dbPerName) {
this.dbPerName = dbPerName;
}
public List<String> getQueryType() {
return queryType;
}
public void setQueryType(List<String> queryType) {
this.queryType = queryType;
}
public List<String> getQuery() {
return query;
}
public void setQuery(List<String> query) {
this.query = query;
}
public String getFromPage() {
return fromPage;
}
public void setFromPage(String fromPage) {
this.fromPage = fromPage;
}
public String getProjectModule() {
return projectModule;
}
public void setProjectModule(String projectModule) {
this.projectModule = projectModule;
}
public List<TestSuite> getTestSuites() {
return testSuites;
}
public void setTestSuites(List<TestSuite> testSuites) {
this.testSuites = testSuites;
}
public boolean getValidated() {
return validated;
}
public void setValidated(boolean validated) {
this.validated = validated;
}
public String getTestModule() {
return testModule;
}
public void setTestModule(String testModule) {
this.testModule = testModule;
}
public String getTechReport() {
return techReport;
}
public void setTechReport(String techReport) {
this.techReport = techReport;
}
public PerformanceDetails getPerformanceDetails() {
return performanceDetails;
}
public void setPerformanceDetails(PerformanceDetails performanceDetails) {
this.performanceDetails = performanceDetails;
}
public List<String> getTestSuiteNames() {
return testSuiteNames;
}
public void setTestSuiteNames(List<String> testSuiteNames) {
this.testSuiteNames = testSuiteNames;
}
public String getShowDebug() {
return showDebug;
}
public void setShowDebug(String showDebug) {
this.showDebug = showDebug;
}
public String getJarLocation() {
return jarLocation;
}
public void setJarLocation(String jarLocation) {
this.jarLocation = jarLocation;
}
public String getTestAgainst() {
return testAgainst;
}
public void setTestAgainst(String testAgainst) {
this.testAgainst = testAgainst;
}
public String getJarName() {
return jarName;
}
public void setJarName(String jarName) {
this.jarName = jarName;
}
public File getSystemPath() {
return systemPath;
}
public void setSystemPath(File systemPath) {
this.systemPath = systemPath;
}
public String getReportName() {
return reportName;
}
public void setReportName(String reportName) {
this.reportName = reportName;
}
public String getReoportLocation() {
return reoportLocation;
}
public void setReoportLocation(String reoportLocation) {
this.reoportLocation = reoportLocation;
}
public String getReportDataType() {
return reportDataType;
}
public void setReportDataType(String reportDataType) {
this.reportDataType = reportDataType;
}
public InputStream getFileInputStream() {
return fileInputStream;
}
public void setFileInputStream(InputStream fileInputStream) {
this.fileInputStream = fileInputStream;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getReportFileName() {
return reportFileName;
}
public void setReportFileName(String reportFileName) {
this.reportFileName = reportFileName;
}
}