Java tutorial
/* * Copyright (c) 2014-2015, Yunnex and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license. */ package com.xn.interfacetest.service.impl; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.xn.interfacetest.Enum.PlanStatusEnum; import com.xn.interfacetest.api.*; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.xn.common.base.CommonResult; import com.xn.common.utils.BeanUtils; import com.xn.common.utils.PageInfo; import com.xn.common.utils.PageResult; import com.xn.interfacetest.dao.RelationSuitCaseMapper; import com.xn.interfacetest.dao.TestInterfaceMapper; import com.xn.interfacetest.dao.TestSuitMapper; import com.xn.interfacetest.dto.TestCaseDto; import com.xn.interfacetest.dto.TestEnvironmentDto; import com.xn.interfacetest.dto.TestInterfaceDto; import com.xn.interfacetest.dto.TestPlanDto; import com.xn.interfacetest.dto.TestReportDto; import com.xn.interfacetest.dto.TestSuitDto; import com.xn.interfacetest.dto.TestSystemDto; import com.xn.interfacetest.entity.TestSuit; import com.xn.interfacetest.result.ReportResult; import com.xn.interfacetest.util.CollectionUtils; /** * TestSuit Service * * @author Carol * @date 2017-02-14 */ @Service @Transactional public class TestSuitServiceImpl implements TestSuitService { private static final Logger logger = LoggerFactory.getLogger(TestSuitServiceImpl.class); private static final String reportName = "report"; public static ExecutorService exe = Executors.newFixedThreadPool(50); private static SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); /** * Dao */ @Autowired private TestSuitMapper testSuitMapper; @Autowired private TestSystemService testSystemService; @Autowired private TestCaseService testCaseService; @Autowired private RelationSuitCaseService relationSuitCaseService; @Autowired private TestInterfaceMapper testInterfaceMapper; @Autowired private RelationSuitCaseMapper relationSuitCaseMapper; @Autowired private TestInterfaceService testInterfaceService; @Autowired private TestReportService testReportService; @Autowired private TestPlanService testPlanService; @Autowired private TestEnvironmentService testEnvironmentService; @Autowired private TestSuitService testSuitService; @Override @Transactional(readOnly = true) public TestSuitDto get(Object condition) { TestSuit testSuit = testSuitMapper.get(condition); TestSuitDto testSuitDto = BeanUtils.toBean(testSuit, TestSuitDto.class); return testSuitDto; } @Override @Transactional(readOnly = true) public long count(TestSuitDto condition) { return testSuitMapper.count(condition); } @Override @Transactional(readOnly = true) public List<TestSuitDto> list(TestSuitDto condition) { List<TestSuit> list = testSuitMapper.list(condition); List<TestSuitDto> dtoList = CollectionUtils.transform(list, TestSuitDto.class); return dtoList; } @Override @Transactional(readOnly = true) public List<TestSuitDto> list(Map<String, Object> condition) { List<TestSuit> list = testSuitMapper.list(condition); List<TestSuitDto> dtoList = CollectionUtils.transform(list, TestSuitDto.class); return dtoList; } @Override @Transactional(readOnly = true) public PageResult<TestSuitDto> page(Map<String, Object> condition) { return PageResult.wrap((PageInfo) condition.get("page"), listWithSystemAndInterface(condition)); } @Override public TestSuitDto save(TestSuitDto testSuitDto) { TestSuit testSuit = BeanUtils.toBean(testSuitDto, TestSuit.class); if (null == testSuitDto.getId()) { testSuitMapper.save(testSuit); } else { testSuitMapper.update(testSuit); } testSuitDto.setId(testSuit.getId()); return testSuitDto; } @Override public int save(List<TestSuitDto> testSuitDtos) { if (testSuitDtos == null || testSuitDtos.isEmpty()) { return 0; } List<TestSuit> testSuits = CollectionUtils.transform(testSuitDtos, TestSuit.class); return testSuitMapper.saveBatch(testSuits); } @Override public int update(TestSuitDto testSuitDto) { TestSuit testSuit = BeanUtils.toBean(testSuitDto, TestSuit.class); return testSuitMapper.update(testSuit); } @Override public int deleteByPK(Long id) { return testSuitMapper.deleteByPK(id); } @Override public int delete(TestSuitDto testSuitDto) { TestSuit testSuit = BeanUtils.toBean(testSuitDto, TestSuit.class); return testSuitMapper.delete(testSuit); } @Override public int deleteBatchByPK(List<Long> ids) { return testSuitMapper.deleteBatchByPK(ids); } @Override public int deleteBatch(List<TestSuitDto> testSuits) { return 0; } @Override public List<TestSuitDto> listWithSystemAndInterface(Map<String, Object> params) { List<TestSuit> list = testSuitMapper.list(params); List<TestSuitDto> dtoList = CollectionUtils.transform(list, TestSuitDto.class); for (TestSuitDto suitDto : dtoList) { //???? Map<String, Object> paramsMap = new HashMap<String, Object>(); paramsMap.put("suitId", suitDto.getId()); List<TestInterfaceDto> interfaceDtoList = relationSuitCaseService.listGroupByInterface(paramsMap); suitDto.setInterfaceList(interfaceDtoList); //? if (null != suitDto.getSystemId()) { TestSystemDto testSystemDto = testSystemService.get(suitDto.getSystemId()); if (null != testSystemDto) { suitDto.setTestSystemDto(testSystemDto); } } } return dtoList; } @Override public List<TestSuitDto> getSuitByCaseId(Long id) { List<TestSuit> testSuitList = testSuitMapper.getSuitByCaseId(id); List<TestSuitDto> dtoList = CollectionUtils.transform(testSuitList, TestSuitDto.class); return dtoList; } @Override public List<TestSuitDto> getByPlanId(Long id) { List<TestSuit> testSuitList = testSuitMapper.getByPlanId(id); List<TestSuitDto> dtoList = CollectionUtils.transform(testSuitList, TestSuitDto.class); return dtoList; } @Override @Transactional(propagation = Propagation.NOT_SUPPORTED) public CommonResult excuteSuitList(List<TestSuitDto> testSuitDtoList, TestEnvironmentDto testEnvironmentDto, Long planId) throws Exception { CommonResult result = new CommonResult(); TestReportDto testReportDto = new TestReportDto(); try { ExecutorService exe = Executors.newFixedThreadPool(50); TestPlanDto testPlanDto = testPlanService.get(planId); //????? changePlanInfo(testSuitDtoList, testEnvironmentDto, planId, PlanStatusEnum.EXCUTING.getId()); ReportResult.resetReportResult(); ReportResult.getReportResult().setStartTime(new Date()); logger.info("reportResult" + ReportResult.getReportResult().toString()); testReportDto = initTestReport(testEnvironmentDto, testPlanDto, testReportDto, testSuitDtoList); result.setData(testReportDto); excute(testSuitDtoList, testEnvironmentDto, planId, testReportDto); } catch (Exception e) { logger.error("?", e); result.setCode(1); result.setMessage("" + e.getMessage()); throw e; } finally { //? changePlanInfo(testSuitDtoList, testEnvironmentDto, planId, PlanStatusEnum.EXECUTED.getId()); } //? updateReportResult(testReportDto); return result; } private TestReportDto initTestReport(TestEnvironmentDto testEnvironmentDto, TestPlanDto testPlanDto, TestReportDto testReportDto, List<TestSuitDto> testSuitDtoList) { //id testReportDto.setPlanId(testPlanDto.getId()); testReportDto.setEnvironmentId(testEnvironmentDto.getId()); //?? Date dataTime = new Date(); testReportDto.setName(testPlanDto.getName() + "-" + reportName + format.format(dataTime)); if (null != testSuitDtoList && testSuitDtoList.size() > 0) { String suitIds = ""; for (TestSuitDto testsuit : testSuitDtoList) { suitIds = testsuit.getId() + ","; } testReportDto.setSuitIds( StringUtils.isNotBlank(suitIds) ? suitIds.substring(0, suitIds.length() - 1) : null); //?? List<TestInterfaceDto> testInterfaceDtoList = testInterfaceService.listAllBySuitList(testSuitDtoList); if (null != testInterfaceDtoList && testInterfaceDtoList.size() > 0) { String interfaceIds = ""; for (TestInterfaceDto testInterfaceDto : testInterfaceDtoList) { interfaceIds += testInterfaceDto.getId() + ","; } testReportDto.setInterfaceIds( StringUtils.isNotBlank(interfaceIds) ? interfaceIds.substring(0, interfaceIds.length() - 1) : null); } // List<TestCaseDto> testCaseDtoList = testCaseService.listAllBySuitList(testSuitDtoList); if (null != testCaseDtoList && testCaseDtoList.size() > 0) { String caseIds = ""; for (TestCaseDto testCaseDto : testCaseDtoList) { caseIds += testCaseDto.getId() + ","; logger.info("caseid:" + testCaseDto.getId()); } logger.info("caseids:" + caseIds); testReportDto.setCaseIds( StringUtils.isNotBlank(caseIds) ? caseIds.substring(0, caseIds.length() - 1) : null); } } testReportDto = testReportService.save(testReportDto); logger.info("?report:" + testReportDto.toString()); return testReportDto; } @Override public List<TestSuitDto> listAll() { List<TestSuit> list = testSuitMapper.list(new TestSuit()); List<TestSuitDto> dtoList = CollectionUtils.transform(list, TestSuitDto.class); return dtoList; } @Override public void changeStatus(int status, List<TestSuitDto> testSuitDtoList) { if (null != testSuitDtoList && testSuitDtoList.size() > 0) { for (TestSuitDto testSuit : testSuitDtoList) { //? testSuitMapper.changeStatus(status, testSuit.getId()); //? List<TestCaseDto> testCaseDtoList = testCaseService.listBySuitId(testSuit.getId()); testCaseService.changeStatusList(status, testCaseDtoList); //?? List<TestInterfaceDto> interfaceIdList = testInterfaceService.listAllBySuitId(testSuit.getId()); testInterfaceService.changeStatusList(status, interfaceIdList); } } } @Override public TestSuitDto getByName(String name) { TestSuit testSuit = testSuitMapper.getByName(name); TestSuitDto testSuitDto = BeanUtils.toBean(testSuit, TestSuitDto.class); return testSuitDto; } @Transactional(propagation = Propagation.NOT_SUPPORTED) private void excute(List<TestSuitDto> testSuitDtoList, TestEnvironmentDto testEnvironmentDto, Long planId, TestReportDto testReportDto) throws Exception { String systemIds = ""; for (int i = 0; i < testSuitDtoList.size(); i++) { try { //id systemIds = testSuitDtoList.get(i).getSystemId() + ","; //? excuteSuit(testSuitDtoList.get(i), testEnvironmentDto, planId, testReportDto); } catch (Exception e) { logger.error("?:" + testSuitDtoList.get(i).getName(), e); throw e; } } testReportDto.setSystemIds( StringUtils.isNotBlank(systemIds) ? systemIds.substring(0, systemIds.length() - 1) : null); } private void updateReportResult(TestReportDto testReportDto) { ReportResult.getReportResult().setStopTime(new Date()); //? testReportDto.setBeginTime(format.format(ReportResult.getReportResult().getStartTime())); testReportDto.setEndTime(format.format(ReportResult.getReportResult().getStopTime())); testReportDto.setCostTime(Integer.valueOf(ReportResult.getReportResult().getTimeLong())); testReportDto.setCaseCount((long) ReportResult.getReportResult().getTotal()); testReportDto.setErrorCaseCout((long) ReportResult.getReportResult().getError()); testReportDto.setFailCaseCout((long) ReportResult.getReportResult().getFailed()); testReportDto.setPassCaseCount( (long) ReportResult.getReportResult().getTotal() - (long) ReportResult.getReportResult().getFailed() - (long) ReportResult.getReportResult().getError()); logger.info(":{}" + testReportDto.toString()); testReportService.update(testReportDto); //? ReportResult.resetReportResult(); } /** * ??????? * @param testSuitDtoList * @param testEnvironmentDto * @param planId */ private void changePlanInfo(List<TestSuitDto> testSuitDtoList, TestEnvironmentDto testEnvironmentDto, Long planId, int status) { //---?? testPlanService.changeStatusOfPlan(status, planId); //---?? this.changeStatus(status, testSuitDtoList); //---?? testEnvironmentService.changeStatus(status, testEnvironmentDto.getId()); } /** * * @param testSuitDto * @param testEnvironmentDto * @param testReportDto */ private void excuteSuit(TestSuitDto testSuitDto, TestEnvironmentDto testEnvironmentDto, Long planId, TestReportDto testReportDto) { logger.info("=================="); //?????? List<TestCaseDto> testCaseDtoList = testCaseService.listBySuitId(testSuitDto.getId()); //? if (null != testCaseDtoList && testCaseDtoList.size() > 0) { logger.info("==========??========"); try { testCaseService.excuteCaseList(testCaseDtoList, testEnvironmentDto, planId, testReportDto, testSuitDto); } catch (Exception e) { logger.error("?", e); } } } }