From dd1379b2f5a6b879b0dfe463548cdb363ffda77a Mon Sep 17 00:00:00 2001 From: Prashant Verma Date: Thu, 16 Jan 2020 17:14:46 +0530 Subject: [PATCH] ZEPHYR-28000 --- .../com/thed/service/TCRCatalogTreeService.java | 8 ++++++++ .../java/com/thed/service/ZephyrRestService.java | 8 ++++++++ .../service/impl/TCRCatalogTreeServiceImpl.java | 5 +++++ .../thed/service/impl/ZephyrRestServiceImpl.java | 13 +++++++++++++ .../thed/zephyr/jenkins/reporter/ZeeDescriptor.java | 5 +++++ .../thed/zephyr/jenkins/reporter/ZeeReporter.java | 11 +++++++++-- 6 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thed/service/TCRCatalogTreeService.java b/src/main/java/com/thed/service/TCRCatalogTreeService.java index f9f9618..4353bdc 100644 --- a/src/main/java/com/thed/service/TCRCatalogTreeService.java +++ b/src/main/java/com/thed/service/TCRCatalogTreeService.java @@ -19,6 +19,14 @@ public interface TCRCatalogTreeService extends BaseService { */ List getTCRCatalogTreeNodes(String type, Long releaseId) throws URISyntaxException; + /** + * Get tcrCatalogTree node for given id. + * @param tcrCatalogTreeId + * @return + * @throws URISyntaxException + */ + TCRCatalogTreeDTO getTCRCatalogTreeNode(Long tcrCatalogTreeId) throws URISyntaxException; + /** * Create a tree node such as phase. * @param tcrCatalogTreeDTO diff --git a/src/main/java/com/thed/service/ZephyrRestService.java b/src/main/java/com/thed/service/ZephyrRestService.java index 4b8356d..978a1ae 100644 --- a/src/main/java/com/thed/service/ZephyrRestService.java +++ b/src/main/java/com/thed/service/ZephyrRestService.java @@ -79,6 +79,14 @@ public interface ZephyrRestService { */ List getTCRCatalogTreeNodes(String type, Long revisionId, Long releaseId) throws URISyntaxException; + /** + * Get tcrCatalogTree node for given id. + * @param tcrCatalogTreeId + * @return + * @throws URISyntaxException + */ + TCRCatalogTreeDTO getTCRCatalogTreeNode(Long tcrCatalogTreeId) throws URISyntaxException; + /** * Create a tree node such as phase. * @param tcrCatalogTreeDTO diff --git a/src/main/java/com/thed/service/impl/TCRCatalogTreeServiceImpl.java b/src/main/java/com/thed/service/impl/TCRCatalogTreeServiceImpl.java index 136a342..497153e 100644 --- a/src/main/java/com/thed/service/impl/TCRCatalogTreeServiceImpl.java +++ b/src/main/java/com/thed/service/impl/TCRCatalogTreeServiceImpl.java @@ -21,6 +21,11 @@ public List getTCRCatalogTreeNodes(String type, Long releaseI return zephyrRestService.getTCRCatalogTreeNodes(type, 0l, releaseId); } + @Override + public TCRCatalogTreeDTO getTCRCatalogTreeNode(Long tcrCatalogTreeId) throws URISyntaxException { + return zephyrRestService.getTCRCatalogTreeNode(tcrCatalogTreeId); + } + @Override public TCRCatalogTreeDTO createTCRCatalogTreeNode(TCRCatalogTreeDTO tcrCatalogTreeDTO) throws URISyntaxException { return zephyrRestService.createTCRCatalogTreeNode(tcrCatalogTreeDTO); diff --git a/src/main/java/com/thed/service/impl/ZephyrRestServiceImpl.java b/src/main/java/com/thed/service/impl/ZephyrRestServiceImpl.java index 1de9539..d7d5f53 100644 --- a/src/main/java/com/thed/service/impl/ZephyrRestServiceImpl.java +++ b/src/main/java/com/thed/service/impl/ZephyrRestServiceImpl.java @@ -31,6 +31,7 @@ public class ZephyrRestServiceImpl implements ZephyrRestService { public static final String GET_ALL_RELEASES_FOR_PROJECT_ID_URL = "/flex/services/rest/{restVersion}/release/paged/project/{projectId}"; //?order=id&isascorder=true&isVisible=false public static final String GET_TCR_CATALOG_TREE_NODES_URL = "/flex/services/rest/{restVersion}/testcasetree"; //?type=Phase&revisionid=0&releaseid=10 + public static final String GET_TCR_CATALOG_TREE_NODE_URL = "/flex/services/rest/{restVersion}/testcasetree/{tcrCatalogTreeId}"; public static final String CREATE_TCR_CATALOG_TREE_NODE_URL = "/flex/services/rest/{restVersion}/testcasetree"; //?parentid=0 public static final String MAP_TESTCASE_TO_REQUIREMENTS_URL = "/flex/services/rest/v3/requirement/bulk"; @@ -200,6 +201,7 @@ public List getAllCyclesForReleaseId(Long releaseId) throws URISyntaxExce return gson.fromJson(res, releaseListType); } + @Override public List getTCRCatalogTreeNodes(String type, Long revisionId, Long releaseId) throws URISyntaxException { List queryParams = new ArrayList<>(); queryParams.add(new BasicNameValuePair("type", type)); @@ -213,6 +215,17 @@ public List getTCRCatalogTreeNodes(String type, Long revision return gson.fromJson(res, tcrCatalogTreeListType); } + @Override + public TCRCatalogTreeDTO getTCRCatalogTreeNode(Long tcrCatalogTreeId) throws URISyntaxException { + Map pathParams = new HashMap<>(); + pathParams.put("tcrCatalogTreeId", tcrCatalogTreeId.toString()); + + String url = buildUrl(prepareUrl(GET_TCR_CATALOG_TREE_NODE_URL), pathParams, null); + String res = httpClientService.getRequest(url); + + return gson.fromJson(res, TCRCatalogTreeDTO.class); + } + @Override public TCRCatalogTreeDTO createTCRCatalogTreeNode(TCRCatalogTreeDTO tcrCatalogTreeDTO) throws URISyntaxException { List queryParams = new ArrayList<>(); diff --git a/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeDescriptor.java b/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeDescriptor.java index 16be37c..59673f4 100644 --- a/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeDescriptor.java +++ b/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeDescriptor.java @@ -396,6 +396,11 @@ public ListBoxModel doFillParserIndexItems() { listBoxModel.add("Cucumber", "1"); listBoxModel.add("TestNG", "2"); listBoxModel.add("Eggplant", "3"); + listBoxModel.add("Selenium", "4"); + listBoxModel.add("TestComplete", "5"); + listBoxModel.add("SoapUI", "6"); + listBoxModel.add("Tosca", "7"); + listBoxModel.add("UFT", "8"); return listBoxModel; } diff --git a/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeReporter.java b/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeReporter.java index 8c5fdb6..5ab1b69 100755 --- a/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeReporter.java +++ b/src/main/java/com/thed/zephyr/jenkins/reporter/ZeeReporter.java @@ -121,7 +121,12 @@ public boolean perform(final Run build, final TaskListener listener) throws IOEx "[{ \"status\": \"$testsuite.testcase.failure\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"$testsuite.testcase.failure\", \"statusPassAttachment\": \"classname: $testsuite.testcase:classname \nname: $testsuite.testcase:name \ntime: $testsuite.testcase:time\", \"packageName\": \"$testsuite.testcase:classname\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]",//junit "[{ \"status\": \"\", \"system-out\": \"$testsuite.testcase.system-out\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"\", \"statusPassAttachment\": \"classname: $testsuite.testcase:classname \nname: $testsuite.testcase:name \ntime: $testsuite.testcase:time\", \"packageName\": \"$testsuite.testcase:classname\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]", //cucumber "[{ \"status\": \"$testng-results.suite.test.class.test-method:status\", \"statusExistPass\": true, \"statusString\": \"PASS\", \"packageName\": \"$testng-results.suite.test.class:name\", \"skipTestcaseNames\": \"afterMethod,beforeMethod,afterClass,beforeClass,afterSuite,beforeSuite\", \"testcase\" : {\"name\": \"$testng-results.suite.test.class.test-method:name\"}}]", //testng - "[{ \"status\": \"$testsuite.testcase:successes\", \"statusExistPass\": true, \"statusString\": \"1\", \"packageName\": \"$testsuite:name\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}]}]"//eggplant + "[{ \"status\": \"$testsuite.testcase:successes\", \"statusExistPass\": true, \"statusString\": \"1\", \"packageName\": \"$testsuite:name\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}]}]", //eggplant + "[{ \"status\": \"$testsuite.testcase.failure\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"$testsuite.testcase.failure\", \"statusPassAttachment\": \"classname: $testsuite.testcase:classname \nname: $testsuite.testcase:name \ntime: $testsuite.testcase:time\", \"packageName\": \"$testsuite.testcase:classname\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]",//selenium + "[{ \"status\": \"\", \"system-out\": \"$testsuite.testcase.system-out\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"\", \"statusPassAttachment\": \"classname: $testsuite.testcase:classname \nname: $testsuite.testcase:name \ntime: $testsuite.testcase:time\", \"packageName\": \"$testsuite.testcase:classname\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]", //testcomplete + "[{ \"status\": \"$testsuite.testcase.failure\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"$testsuite.testcase.failure\", \"statusPassAttachment\": \"name: $testsuite.testcase:name \ntime: $testsuite.testcase:time\", \"packageName\": \"$testsuite:name\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]",//soapui + "[{ \"status\": \"$testsuite.testcase.failure\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"$testsuite.testcase.failure\", \"statusPassAttachment\": \"name: $testsuite.testcase:name \ntime: $testsuite.testcase:time \ntimestamp: $testsuite.testcase:timestamp \nlog: $testsuite.testcase:log \", \"packageName\": \"$testsuite:name\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]",//tosca + "[{ \"status\": \"$testsuite.testcase.failure:message\", \"statusExistPass\": false, \"statusString\": null, \"statusFailAttachment\": \"$testsuite.testcase.failure:message\", \"statusPassAttachment\": \"name: $testsuite.testcase:name \nreport: $testsuite.testcase:report \ntime: $testsuite.testcase:time \nclassname: $testsuite.testcase:classname \nstatus: $testsuite.testcase:status \", \"packageName\": \"$testsuite:package\" , \"skipTestcaseNames\": \"\", \"testcase\" : {\"name\": \"$testsuite.testcase:name\"}, \"requirements\": [{\"id\": \"$testsuite.testcase.requirements.requirement\"}], \"attachments\": [{\"filePath\": \"$testsuite.testcase.attachments.attachment\"}]}]"//uft }; if (!validateBuildConfig()) { @@ -374,8 +379,10 @@ private Map createPackagePhaseMap(ZephyrConfigModel z for(String packageName : packageNames) { String[] packageNameArr = packageName.split("\\."); + //todo: make hierarchy locally instead of these extra rest calls + automationPhase = tcrCatalogTreeService.getTCRCatalogTreeNode(automationPhase.getId()); //To refresh child nodes already created in the loop below TCRCatalogTreeDTO endingNode = automationPhase; //This node is where testcases will be created, it is the last node to be created in this package hierarchy - + createPhase = false; for (int i = 0; i < packageNameArr.length; i++) { String pName = packageNameArr[i];