diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/BuildComparisonManager.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/BuildComparisonManager.java index 933f642bc..2b954d10b 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/BuildComparisonManager.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/BuildComparisonManager.java @@ -1,9 +1,12 @@ package org.ihtsdo.buildcloud.core.service.build.compare; +import org.ihtsdo.buildcloud.core.dao.BuildDAO; import org.ihtsdo.buildcloud.core.entity.Build; +import org.ihtsdo.buildcloud.core.service.PublishService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; @@ -51,12 +54,22 @@ public enum ComparisonState { @Autowired private List componentComparisonChecks; + @Autowired + private BuildDAO buildDAO; + + @Autowired + private PublishService publishService; + + @Value("${rvf.url}") + private String releaseValidationFrameworkUrl; + public List runBuildComparisons(final Build leftBuild, final Build rightBuild) throws IOException { List reports = new ArrayList<>(); componentComparisonChecks.sort(orderTestComparator); for (ComponentComparison thisCheck : componentComparisonChecks) { - thisCheck.findDiff(leftBuild, rightBuild); - reports.add(thisCheck.getReport()); + ComponentComparison instance = thisCheck.newInstance(buildDAO, publishService, releaseValidationFrameworkUrl); + instance.findDiff(leftBuild, rightBuild); + reports.add(instance.getReport()); } return reports; diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/ComponentComparison.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/ComponentComparison.java index a4a5429d3..add1f5011 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/ComponentComparison.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/ComponentComparison.java @@ -1,6 +1,8 @@ package org.ihtsdo.buildcloud.core.service.build.compare; +import org.ihtsdo.buildcloud.core.dao.BuildDAO; import org.ihtsdo.buildcloud.core.entity.Build; +import org.ihtsdo.buildcloud.core.service.PublishService; import java.io.IOException; @@ -12,6 +14,8 @@ public abstract class ComponentComparison { public abstract void findDiff(Build leftBuild, Build rightBuild) throws IOException; + public abstract ComponentComparison newInstance(BuildDAO buildDAO, PublishService publishService, String releaseValidationFrameworkUrl); + protected void pass() { this.state = HighLevelComparisonReport.State.PASS; } @@ -30,7 +34,7 @@ public HighLevelComparisonReport getReport() { HighLevelComparisonReport report = new HighLevelComparisonReport(); report.setTestName(getTestName()); report.setTestShortName(getTestNameShortname()); - report.setResult(state); + report.setResult(this.state); report.setDetails(this.details); return report; } diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/BuildStatusComparison.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/BuildStatusComparison.java index 991c5e84f..e853b808a 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/BuildStatusComparison.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/BuildStatusComparison.java @@ -1,6 +1,8 @@ package org.ihtsdo.buildcloud.core.service.build.compare.type; +import org.ihtsdo.buildcloud.core.dao.BuildDAO; import org.ihtsdo.buildcloud.core.entity.Build; +import org.ihtsdo.buildcloud.core.service.PublishService; import org.ihtsdo.buildcloud.core.service.build.compare.BuildComparisonManager; import org.ihtsdo.buildcloud.core.service.build.compare.ComponentComparison; import org.ihtsdo.buildcloud.core.service.build.compare.DefaultComponentComparisonReport; @@ -38,4 +40,9 @@ public void findDiff(Build leftBuild, Build rightBuild) throws IOException { fail(dto); } } + + @Override + public ComponentComparison newInstance(BuildDAO buildDAO, PublishService publishService, String releaseValidationFrameworkUrl) { + return new BuildStatusComparison(); + } } diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PostConditionCheckComparison.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PostConditionCheckComparison.java index a2bbf13c3..acf26caed 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PostConditionCheckComparison.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PostConditionCheckComparison.java @@ -24,11 +24,9 @@ public class PostConditionCheckComparison extends ComponentComparison { private static final Logger LOGGER = LoggerFactory.getLogger(PostConditionCheckComparison.class); - @Autowired - private BuildDAO buildDAO; + private final BuildDAO buildDAO; - @Autowired - private PublishService publishService; + private final PublishService publishService; @Override public String getTestName() { @@ -45,6 +43,12 @@ public int getTestOrder() { return BuildComparisonManager.TestType.POST_CONDITION_TEST.getTestOrder(); } + @Autowired + public PostConditionCheckComparison(BuildDAO buildDAO, PublishService publishService) { + this.buildDAO = buildDAO; + this.publishService = publishService; + } + @Override public void findDiff(Build leftBuild, Build rightBuild) throws IOException { List reports = new ArrayList<>(); @@ -116,6 +120,11 @@ public void findDiff(Build leftBuild, Build rightBuild) throws IOException { } } + @Override + public ComponentComparison newInstance(BuildDAO buildDAO, PublishService publishService, String releaseValidationFrameworkUrl) { + return new PostConditionCheckComparison(buildDAO, publishService); + } + private List getPostConditionCheckReport(Build build) throws IOException { List report = new ArrayList<>(); Build found = buildDAO.find(build.getReleaseCenterKey(), build.getProductKey(), build.getId(), false, false, false, null); diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PreConditionCheckComparison.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PreConditionCheckComparison.java index 5668b0a3f..c0590f007 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PreConditionCheckComparison.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/PreConditionCheckComparison.java @@ -24,11 +24,15 @@ public class PreConditionCheckComparison extends ComponentComparison { private static final Logger LOGGER = LoggerFactory.getLogger(PreConditionCheckComparison.class); - @Autowired - private BuildDAO buildDAO; + private final BuildDAO buildDAO; + + private final PublishService publishService; @Autowired - private PublishService publishService; + public PreConditionCheckComparison(BuildDAO buildDAO, PublishService publishService) { + this.buildDAO = buildDAO; + this.publishService = publishService; + } @Override public String getTestName() { @@ -116,6 +120,11 @@ public void findDiff(Build leftBuild, Build rightBuild) { } } + @Override + public ComponentComparison newInstance(BuildDAO buildDAO, PublishService publishService, String releaseValidationFrameworkUrl) { + return new PreConditionCheckComparison(buildDAO, publishService); + } + private List getPreConditionCheckReport(Build build) throws IOException { List report = new ArrayList<>(); Build found = buildDAO.find(build.getReleaseCenterKey(), build.getProductKey(), build.getId(), false, false, false, null); diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/RVFReportComparison.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/RVFReportComparison.java index 29e51dbac..1cd042126 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/RVFReportComparison.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/RVFReportComparison.java @@ -2,7 +2,9 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.ihtsdo.buildcloud.core.dao.BuildDAO; import org.ihtsdo.buildcloud.core.entity.Build; +import org.ihtsdo.buildcloud.core.service.PublishService; import org.ihtsdo.buildcloud.core.service.build.compare.BuildComparisonManager; import org.ihtsdo.buildcloud.core.service.build.compare.ComponentComparison; import org.ihtsdo.buildcloud.core.service.build.compare.DefaultComponentComparisonReport; @@ -24,9 +26,13 @@ public class RVFReportComparison extends ComponentComparison { public static final String REPORTS = "reports"; - @Value("${rvf.url}") + private String releaseValidationFrameworkUrl; + public RVFReportComparison(@Value("${rvf.url}") String releaseValidationFrameworkUrl) { + this.releaseValidationFrameworkUrl = releaseValidationFrameworkUrl; + } + public enum RVFTestName { REPORT_URL("RVF report URL"), STATUS("RVF status"), TOTAL_FAILURES("RVF total failures"), TOTAL_WARNINGS("RVF total warnings"); @@ -86,6 +92,11 @@ public void findDiff(Build leftBuild, Build rightBuild) throws IOException { } } + @Override + public ComponentComparison newInstance(BuildDAO buildDAO, PublishService publishService, String releaseValidationFrameworkUrl) { + return new RVFReportComparison(releaseValidationFrameworkUrl); + } + private String getValidationComparisonReport(String leftUrl, String rightUrl) throws InterruptedException, BusinessServiceException, JsonProcessingException { RestTemplate rvfRestTemplate = new RestTemplate(); URI uri = rvfRestTemplate.postForLocation(releaseValidationFrameworkUrl + "compare?prospectiveReportUrl=" + rightUrl + "&previousReportUrl=" + leftUrl, null); diff --git a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/ReleasePackageComparison.java b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/ReleasePackageComparison.java index b6eb95f20..0d218a976 100644 --- a/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/ReleasePackageComparison.java +++ b/src/main/java/org/ihtsdo/buildcloud/core/service/build/compare/type/ReleasePackageComparison.java @@ -47,11 +47,15 @@ public String getLabel() { } } - @Autowired - private BuildDAO buildDAO; + private final BuildDAO buildDAO; + + private final PublishService publishService; @Autowired - private PublishService publishService; + public ReleasePackageComparison(BuildDAO buildDAO, PublishService publishService) { + this.buildDAO = buildDAO; + this.publishService =publishService; + } @Override public String getTestName() { @@ -118,6 +122,11 @@ public void findDiff(Build leftBuild, Build rightBuild) throws IOException { } } + @Override + public ComponentComparison newInstance(BuildDAO buildDAO, PublishService publishService, String releaseValidationFrameworkUrl) { + return new ReleasePackageComparison(buildDAO, publishService); + } + private void compareFiles(File leftDir, File rightDir, List result) throws IOException { File[] leftFiles = leftDir.listFiles(); File[] rightFiles = rightDir.listFiles();