001package com.thed.util; 002 003import com.thed.model.*; 004import com.thed.zblast.parser.jaxb.junit.Testsuite; 005import com.thed.zblast.parser.model.TCRCatalogTreeTestcase; 006import com.thed.zblast.parser.model.TCRTestcase; 007import com.thed.zblast.parser.model.TestcaseModel; 008import org.apache.commons.configuration.PropertiesConfiguration; 009 010import javax.xml.datatype.DatatypeConfigurationException; 011import java.text.SimpleDateFormat; 012import java.util.*; 013import java.util.logging.Logger; 014 015import static com.thed.util.ZeeConstants.*; 016 017public class ZephyrTestCaseUploader { 018 private static Logger logger = Logger.getLogger(ZephyrTestCaseUploader.class.getName()); 019 020 021 022 023 public ZephyrConfigModel publishTests(List<TestcaseModel> testcaseModelList, AutomationJobDetail automationJobDetail, 024 List<Testsuite> testSuiteList, Long userId, TCRCatalogTreeDTO tree) { 025 ZephyrConfigModel zephyrConfig = null; 026 try { 027 PropertiesConfiguration props = Utils.getZbotProperties(); 028 zephyrConfig = initializeZephyrData(automationJobDetail, props,userId); 029 ZephyrSoapClient client = new ZephyrSoapClient(); 030 } catch (Exception e) { 031 logger.info(e.getMessage()); 032 } 033 034 return zephyrConfig; 035 } 036 037 public ZephyrConfigModel publishcyclesandExecutions (List<TCRCatalogTreeTestcase> testcases, 038 AutomationJobDetail automationJobDetail, Long userId, ZephyrConfigModel zephyrData) { 039 try { 040 ZephyrSoapClient client = new ZephyrSoapClient(); 041 client.uploadTestResults(zephyrData, testcases,automationJobDetail); 042 } catch (DatatypeConfigurationException e) { 043 logger.severe(e.getMessage()); 044 } catch (Exception e) { 045 logger.severe(e.getMessage()); 046 } 047 048 return zephyrData; 049 } 050 051 052 053 public ZephyrConfigModel initializeZephyrData(AutomationJobDetail automationJobDetail, 054 PropertiesConfiguration props, Long userId) { 055 try { 056 057 SimpleDateFormat sdf = new SimpleDateFormat(ZeeConstants.DATE_FORMAT); 058 String dateFormatForCycleCreation = sdf.format(new Date()); 059 String cycleName=automationJobDetail.getCycleName(); 060 String phaseName=automationJobDetail.getPhaseName(); 061 if(cycleName !=null && !cycleName.isEmpty()){ 062 if(cycleName.length()>ZeeConstants.CYCLE_NAME_LIMIT){ 063 cycleName=cycleName.substring(0,cycleName.length()-(cycleName.length()-ZeeConstants.CYCLE_NAME_LIMIT)); 064 } 065 } 066 if(phaseName !=null && !phaseName.isEmpty()){ 067 if(phaseName.length()>ZeeConstants.CYCLE_NAME_LIMIT){ 068 phaseName=phaseName.substring(0,phaseName.length()-(phaseName.length()-ZeeConstants.CYCLE_NAME_LIMIT)); 069 } 070 } 071 if(automationJobDetail.getIsTimeStamp()) { 072 cycleName=cycleName+ZeeConstants.CYCLE_PREFIX_DELIMITER+dateFormatForCycleCreation; 073 phaseName=phaseName+ZeeConstants.CYCLE_PREFIX_DELIMITER+dateFormatForCycleCreation; 074 } 075 076 ZephyrConfigModel zephyrData = new ZephyrConfigModel(); 077 zephyrData.setSelectedZephyrServer(new ZephyrInstance(props.getString(ZeeConstants.ZEPHYR_SERVER_URL))); 078 zephyrData.setCycleDuration(automationJobDetail.getCycleDuration()==0 ? ZeeConstants.DEFAULT_CYCLE_DURATION:String.valueOf(automationJobDetail.getCycleDuration())); 079 zephyrData.setZephyrProjectId(automationJobDetail.getProjectId()); 080 zephyrData.setReleaseId(automationJobDetail.getReleaseId()); 081 zephyrData.setCycleId(ZeeConstants.NEW_CYCLE_KEY_IDENTIFIER); 082 zephyrData.setPhaseName((phaseName!=null && !phaseName.isEmpty())?(phaseName):(automationJobDetail.getAutomationFramework())); 083 zephyrData.setUserId(userId); 084 zephyrData.setCycleName(cycleName); 085 zephyrData.setCreatePhase(automationJobDetail.getCreatePhase()); 086 zephyrData.setJobIntiatedBy(automationJobDetail.getJobIntiatedBy()); 087 zephyrData.setAssignResultsTo(automationJobDetail.getAssignResultsTo()); 088 zephyrData.setCycleStartDate(automationJobDetail.getCycleStartDate()); 089 zephyrData.setCycleEndDate(automationJobDetail.getCycleEndDate()); 090 091 092 return zephyrData; 093 } catch (Exception e) { 094 logger.severe(e.getMessage()); 095 return null; 096 } 097 } 098 099 public boolean prepareZephyrTests(ZephyrConfigModel zephyrConfig, List<TestcaseModel> testsFromTestSuiteList, List<Testsuite> testSuiteList, Boolean createPackage) { 100 try { 101 102 Set<String> packageNames = new HashSet<String>(); 103 List<TestCaseResultModel> testcases = new ArrayList<TestCaseResultModel>(); 104 List<String> testcaseNameList=new ArrayList<>(); 105 for(TestcaseModel testcaseModel:testsFromTestSuiteList){ 106 TCRTestcase testcase = new TCRTestcase(); 107 String testcaseName = testcaseModel.getTcName(); 108 if(testcaseName.length() >= ZeeConstants.CYCLE_NAME_LIMIT) { 109 testcaseNameList.add(testcaseName); 110 } 111 packageNames.add(testcaseModel.getPackageName()); 112 testcase.setName(testcaseModel.getTestcaseName()); 113 testcase.setComments(TEST_CASE_COMMENT); 114 testcase.setAutomated(AUTOMATED); 115 testcase.setPriority(TEST_CASE_PRIORITY); 116 testcase.setTag(testcaseModel.getTestcaseTag()); 117 testcase.setScriptName(SCRIPT_FILE_FOR_AUTOMATED_TESTCASE); 118 testcase.setScriptPath(SCRIPT_FILE_FOR_AUTOMATED_TESTCASE); 119 testcase.setScriptId(SCRIPT_FILE_FOR_AUTOMATED_TESTCASE); 120 121 logger.info("tcm.getTcName():::"+testcaseModel.getTcName()); 122 logger.info("tcm.getClassName():::"+testcaseModel.getClassName()); 123 testcase.setMetadataTCName(testcaseModel.getTcName()); 124 testcase.setMetadataTCClassName(testcaseModel.getClassName()); 125 126 TestCaseResultModel caseWithStatus = new TestCaseResultModel(); 127 caseWithStatus.setExecutionRequest(testcaseModel.getExecutionRequest()); 128 caseWithStatus.setTestcase(testcase); 129 caseWithStatus.setTestStep(testcaseModel.getTestStep()); 130 caseWithStatus.setTestStep(testcaseModel.getTestStep()); 131 caseWithStatus.setAttachment(testcaseModel.getAttachement()); 132 if(testcaseModel.getTestcaseAttachement()!=null){ 133 caseWithStatus.setTestcaseAttachement(testcaseModel.getTestcaseAttachement()); 134 } 135 if(testcaseModel.getRequirements()!=null){ 136 caseWithStatus.setTestcaseRequirement(testcaseModel.getRequirements()); 137 } 138 testcases.add(caseWithStatus); 139 } 140 if (createPackage) { 141 zephyrConfig.setPackageNames(packageNames); 142 zephyrConfig.setCreatePackage(true); 143 } else { 144 zephyrConfig.setCreatePackage(false); 145 } 146 zephyrConfig.setTestcases(testcases); 147 148 if(!testcaseNameList.isEmpty()){ 149 logger.warning(""" 150 Total %d testcases exceed 255 characters limit on name, trimming name to fit size. Example: %s""".formatted(testcaseNameList.size(), testcaseNameList.get(0))); 151 } 152 153 return true; 154 } catch (Exception e) { 155 logger.severe(e.getMessage()); 156 return false; 157 } 158 } 159}