private void callWebhook(DbSession dbSession, QGChangeEvent event, @Nullable EvaluatedQualityGate evaluatedQualityGate) { webhooks.sendProjectAnalysisUpdate( new WebHooks.Analysis(event.getBranch().getUuid(), event.getAnalysis().getUuid(), null), () -> buildWebHookPayload(dbSession, event, evaluatedQualityGate)); }
@Override public void sendProjectAnalysisUpdate(Analysis analysis, Supplier<WebhookPayload> payloadSupplier) { List<Webhook> webhooks = readWebHooksFrom(analysis.getProjectUuid()) .map(dto -> new Webhook(dto.getUuid(), analysis.getProjectUuid(), analysis.getCeTaskUuid(), analysis.getAnalysisUuid(), dto.getName(), dto.getUrl())) .collect(MoreCollectors.toList()); if (webhooks.isEmpty()) { return; } WebhookPayload payload = payloadSupplier.get(); webhooks.forEach(webhook -> asyncExecution.addToQueue(() -> { WebhookDelivery delivery = caller.call(webhook, payload); log(delivery); deliveryStorage.persist(delivery); })); asyncExecution.addToQueue(() -> deliveryStorage.purge(analysis.getProjectUuid())); }
@Override public void sendProjectAnalysisUpdate(Analysis analysis, Supplier<WebhookPayload> payloadSupplier) { List<Webhook> webhooks = readWebHooksFrom(analysis.getProjectUuid()) .map(dto -> new Webhook(dto.getUuid(), analysis.getProjectUuid(), analysis.getCeTaskUuid(), analysis.getAnalysisUuid(), dto.getName(), dto.getUrl())) .collect(MoreCollectors.toList()); if (webhooks.isEmpty()) { return; } WebhookPayload payload = payloadSupplier.get(); webhooks.forEach(webhook -> asyncExecution.addToQueue(() -> { WebhookDelivery delivery = caller.call(webhook, payload); log(delivery); deliveryStorage.persist(delivery); })); asyncExecution.addToQueue(() -> deliveryStorage.purge(analysis.getProjectUuid())); }
@Override public void finished(ProjectAnalysis analysis) { webHooks.sendProjectAnalysisUpdate( new WebHooks.Analysis( analysis.getProject().getUuid(), analysis.getAnalysis().map(org.sonar.api.ce.posttask.Analysis::getAnalysisUuid).orElse(null), analysis.getCeTask().getId()), () -> payloadFactory.create(convert(analysis))); }
private void callWebhook(DbSession dbSession, QGChangeEvent event, @Nullable EvaluatedQualityGate evaluatedQualityGate) { webhooks.sendProjectAnalysisUpdate( new WebHooks.Analysis(event.getBranch().getUuid(), event.getAnalysis().getUuid(), null), () -> buildWebHookPayload(dbSession, event, evaluatedQualityGate)); }
verify(webHooks) .sendProjectAnalysisUpdate( eq(new WebHooks.Analysis(project.getUuid(), analysisUUid, ceTask.getId())),
private void verifyWebhookCalled(ComponentAndBranch componentAndBranch, SnapshotDto analysis, ComponentDto project) { verify(webHooks).isEnabled(project); verify(webHooks).sendProjectAnalysisUpdate( eq(new WebHooks.Analysis(componentAndBranch.uuid(), analysis.getUuid(), null)), any()); }
@Test public void do_nothing_if_no_webhooks() { ComponentDto componentDto = componentDbTester.insertPrivateProject().setOrganizationUuid(defaultOrganizationProvider.get().getUuid()); underTest.sendProjectAnalysisUpdate(new WebHooks.Analysis(componentDto.uuid(), "1", "#1"), () -> mock); assertThat(caller.countSent()).isEqualTo(0); assertThat(logTester.logs(DEBUG)).isEmpty(); verifyZeroInteractions(deliveryStorage); }
@Override public void finished(ProjectAnalysis analysis) { webHooks.sendProjectAnalysisUpdate( new WebHooks.Analysis( analysis.getProject().getUuid(), analysis.getAnalysis().map(org.sonar.api.ce.posttask.Analysis::getAnalysisUuid).orElse(null), analysis.getCeTask().getId()), () -> payloadFactory.create(convert(analysis))); }