public long countByTypeAndCreationDate(DbSession dbSession, BranchType branchType, long sinceDate) { return mapper(dbSession).countByTypeAndCreationDate(branchType.name(), sinceDate); }
private static ProjectBranches.Branch.Builder toBranchBuilder(BranchDto branch, Optional<BranchDto> mergeBranch) { ProjectBranches.Branch.Builder builder = ProjectBranches.Branch.newBuilder(); String branchKey = branch.getKey(); ofNullable(branchKey).ifPresent(builder::setName); builder.setIsMain(branch.isMain()); builder.setType(Common.BranchType.valueOf(branch.getBranchType().name())); if (branch.getBranchType() == SHORT) { if (mergeBranch.isPresent()) { String mergeBranchKey = mergeBranch.get().getKey(); builder.setMergeBranch(mergeBranchKey); } else { builder.setIsOrphan(true); } } return builder; }
@CheckForNull private BranchImpl createBranch() { org.sonar.ce.task.projectanalysis.analysis.Branch analysisBranch = analysisMetadataHolder.getBranch(); if (!analysisBranch.isLegacyFeature()) { String branchKey = analysisBranch.getType() == PULL_REQUEST ? analysisBranch.getPullRequestKey() : analysisBranch.getName(); return new BranchImpl(analysisBranch.isMain(), branchKey, Branch.Type.valueOf(analysisBranch.getType().name())); } return null; }
private WebhookPayload buildWebHookPayload(DbSession dbSession, QGChangeEvent event, @Nullable EvaluatedQualityGate evaluatedQualityGate) { ComponentDto project = event.getProject(); BranchDto branch = event.getBranch(); SnapshotDto analysis = event.getAnalysis(); Map<String, String> analysisProperties = dbClient.analysisPropertiesDao().selectBySnapshotUuid(dbSession, analysis.getUuid()) .stream() .collect(Collectors.toMap(AnalysisPropertyDto::getKey, AnalysisPropertyDto::getValue)); String projectUuid = StringUtils.defaultString(project.getMainBranchProjectUuid(), project.projectUuid()); ProjectAnalysis projectAnalysis = new ProjectAnalysis( new Project(projectUuid, project.getKey(), project.name()), null, new Analysis(analysis.getUuid(), analysis.getCreatedAt()), new Branch(branch.isMain(), branch.getKey(), Type.valueOf(branch.getBranchType().name())), evaluatedQualityGate, null, analysisProperties); return webhookPayloadFactory.create(projectAnalysis); }
@Test public void long_living_branch_in_queue_analysis() { logInAsSystemAdministrator(); String branch = "ny_branch"; CeQueueDto queue1 = insertQueue("T1", null, IN_PROGRESS); insertCharacteristic(queue1, BRANCH_KEY, branch); insertCharacteristic(queue1, BRANCH_TYPE_KEY, LONG.name()); CeQueueDto queue2 = insertQueue("T2", null, PENDING); insertCharacteristic(queue2, BRANCH_KEY, branch); insertCharacteristic(queue2, BRANCH_TYPE_KEY, LONG.name()); ActivityResponse response = ws.newRequest() .setParam("status", "FAILED,IN_PROGRESS,PENDING") .executeProtobuf(ActivityResponse.class); assertThat(response.getTasksList()) .extracting(Task::getId, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::getStatus) .containsExactlyInAnyOrder( tuple("T1", branch, Common.BranchType.LONG, Ce.TaskStatus.IN_PROGRESS), tuple("T2", branch, Common.BranchType.LONG, Ce.TaskStatus.PENDING)); }
@Test public void long_living_branch_in_queue_analysis() { ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.USER, project); ComponentDto longLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(LONG)); CeQueueDto queue1 = insertQueue("T1", project, IN_PROGRESS); insertCharacteristic(queue1, BRANCH_KEY, longLivingBranch.getBranch()); insertCharacteristic(queue1, BRANCH_TYPE_KEY, LONG.name()); CeQueueDto queue2 = insertQueue("T2", project, PENDING); insertCharacteristic(queue2, BRANCH_KEY, longLivingBranch.getBranch()); insertCharacteristic(queue2, BRANCH_TYPE_KEY, LONG.name()); Ce.ComponentResponse response = ws.newRequest() .setParam(PARAM_COMPONENT, longLivingBranch.getKey()) .executeProtobuf(Ce.ComponentResponse.class); assertThat(response.getQueueList()) .extracting(Ce.Task::getId, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::getStatus, Ce.Task::getComponentKey, Ce.Task::getWarningCount, Ce.Task::getWarningsList) .containsOnly( tuple("T1", longLivingBranch.getBranch(), Common.BranchType.LONG, Ce.TaskStatus.IN_PROGRESS, project.getKey(), 0, emptyList()), tuple("T2", longLivingBranch.getBranch(), Common.BranchType.LONG, Ce.TaskStatus.PENDING, project.getKey(), 0, emptyList())); }
@Test public void long_living_branch_in_queue_analysis() { UserDto user = db.users().insertUser(); userSession.logIn(user).setRoot(); String branch = "my_branch"; CeQueueDto queueDto = createAndPersistQueueTask(null, user); insertCharacteristic(queueDto, BRANCH_KEY, branch); insertCharacteristic(queueDto, BRANCH_TYPE_KEY, LONG.name()); Ce.TaskResponse taskResponse = ws.newRequest() .setParam("id", SOME_TASK_UUID) .executeProtobuf(Ce.TaskResponse.class); assertThat(taskResponse.getTask()) .extracting(Ce.Task::getId, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::hasComponentKey) .containsExactlyInAnyOrder(SOME_TASK_UUID, branch, Common.BranchType.LONG, false); }
@Test public void return_many_tasks_from_same_project() { ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.USER, project); insertQueue("Main", project, IN_PROGRESS); ComponentDto longLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(LONG).setKey("long-branch")); CeQueueDto longLivingBranchQueue = insertQueue("Long", project, IN_PROGRESS); insertCharacteristic(longLivingBranchQueue, BRANCH_KEY, longLivingBranch.getBranch()); insertCharacteristic(longLivingBranchQueue, BRANCH_TYPE_KEY, LONG.name()); ComponentDto shortLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(SHORT).setKey("short-branch")); CeQueueDto shortLivingBranchQueue = insertQueue("Short", project, PENDING); insertCharacteristic(shortLivingBranchQueue, BRANCH_KEY, shortLivingBranch.getBranch()); insertCharacteristic(shortLivingBranchQueue, BRANCH_TYPE_KEY, SHORT.name()); Ce.ComponentResponse response = ws.newRequest() .setParam(PARAM_COMPONENT, longLivingBranch.getKey()) .executeProtobuf(Ce.ComponentResponse.class); assertThat(response.getQueueList()) .extracting(Ce.Task::getId, Ce.Task::getComponentKey, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::getWarningCount, Ce.Task::getWarningsList) .containsOnly( tuple("Main", project.getKey(), "", Common.BranchType.UNKNOWN_BRANCH_TYPE, 0, emptyList()), tuple("Long", longLivingBranch.getKey(), longLivingBranch.getBranch(), Common.BranchType.LONG, 0, emptyList()), tuple("Short", shortLivingBranch.getKey(), shortLivingBranch.getBranch(), Common.BranchType.SHORT, 0, emptyList())); }
@Test public void long_living_branch_in_activity() { ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.USER, project); ComponentDto longLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(LONG)); SnapshotDto analysis = db.components().insertSnapshot(longLivingBranch); CeActivityDto activity = insertActivity("T1", project, SUCCESS, analysis); insertCharacteristic(activity, BRANCH_KEY, longLivingBranch.getBranch()); insertCharacteristic(activity, BRANCH_TYPE_KEY, LONG.name()); Ce.ComponentResponse response = ws.newRequest() .setParam(PARAM_COMPONENT, project.getKey()) .executeProtobuf(Ce.ComponentResponse.class); assertThat(response.getCurrent()) .extracting(Ce.Task::getId, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::getStatus, Ce.Task::getComponentKey, Ce.Task::getWarningCount, Ce.Task::getWarningsList) .containsOnly( "T1", longLivingBranch.getBranch(), Common.BranchType.LONG, Ce.TaskStatus.SUCCESS, project.getKey(), 0, emptyList()); }
@Test public void long_living_branch_in_past_activity() { logInAsRoot(); ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.USER, project); ComponentDto longLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(LONG)); db.components().insertSnapshot(longLivingBranch); CeActivityDto activity = createAndPersistArchivedTask(project); insertCharacteristic(activity, BRANCH_KEY, longLivingBranch.getBranch()); insertCharacteristic(activity, BRANCH_TYPE_KEY, LONG.name()); Ce.TaskResponse taskResponse = ws.newRequest() .setParam("id", SOME_TASK_UUID) .executeProtobuf(Ce.TaskResponse.class); assertThat(taskResponse.getTask()) .extracting(Ce.Task::getId, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::getComponentKey) .containsExactlyInAnyOrder(SOME_TASK_UUID, longLivingBranch.getBranch(), Common.BranchType.LONG, longLivingBranch.getKey()); }
@Test public void long_living_branch_in_past_activity() { logInAsSystemAdministrator(); ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.USER, project); ComponentDto longLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(LONG)); SnapshotDto analysis = db.components().insertSnapshot(longLivingBranch); CeActivityDto activity = insertActivity("T1", project, SUCCESS, analysis); insertCharacteristic(activity, BRANCH_KEY, longLivingBranch.getBranch()); insertCharacteristic(activity, BRANCH_TYPE_KEY, LONG.name()); ActivityResponse response = ws.newRequest().executeProtobuf(ActivityResponse.class); assertThat(response.getTasksList()) .extracting(Task::getId, Ce.Task::getBranch, Ce.Task::getBranchType, Ce.Task::getStatus, Ce.Task::getComponentKey) .containsExactlyInAnyOrder( tuple("T1", longLivingBranch.getBranch(), Common.BranchType.LONG, Ce.TaskStatus.SUCCESS, longLivingBranch.getKey())); }
@CheckForNull private BranchImpl createBranch() { org.sonar.server.computation.task.projectanalysis.analysis.Branch analysisBranch = analysisMetadataHolder.getBranch(); if (!analysisBranch.isLegacyFeature()) { String branchKey = analysisBranch.getType() == PULL_REQUEST ? analysisBranch.getPullRequestKey() : analysisBranch.getName(); return new BranchImpl(analysisBranch.isMain(), branchKey, Branch.Type.valueOf(analysisBranch.getType().name())); } return null; }
private static ProjectBranches.Branch.Builder toBranchBuilder(BranchDto branch, Optional<BranchDto> mergeBranch) { ProjectBranches.Branch.Builder builder = ProjectBranches.Branch.newBuilder(); String branchKey = branch.getKey(); setNullable(branchKey, builder::setName); builder.setIsMain(branch.isMain()); builder.setType(Common.BranchType.valueOf(branch.getBranchType().name())); if (branch.getBranchType() == SHORT) { if (mergeBranch.isPresent()) { String mergeBranchKey = mergeBranch.get().getKey(); builder.setMergeBranch(mergeBranchKey); } else { builder.setIsOrphan(true); } } return builder; }
private WebhookPayload buildWebHookPayload(DbSession dbSession, QGChangeEvent event, @Nullable EvaluatedQualityGate evaluatedQualityGate) { ComponentDto project = event.getProject(); BranchDto branch = event.getBranch(); SnapshotDto analysis = event.getAnalysis(); Map<String, String> analysisProperties = dbClient.analysisPropertiesDao().selectBySnapshotUuid(dbSession, analysis.getUuid()) .stream() .collect(Collectors.toMap(AnalysisPropertyDto::getKey, AnalysisPropertyDto::getValue)); String projectUuid = StringUtils.defaultString(project.getMainBranchProjectUuid(), project.projectUuid()); ProjectAnalysis projectAnalysis = new ProjectAnalysis( new Project(projectUuid, project.getKey(), project.name()), null, new Analysis(analysis.getUuid(), analysis.getCreatedAt()), new Branch(branch.isMain(), branch.getKey(), Type.valueOf(branch.getBranchType().name())), evaluatedQualityGate, null, analysisProperties); return webhookPayloadFactory.create(projectAnalysis); }