diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/VerdictCategory.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/VerdictCategory.java index 16686c9a4..b85fd2bd7 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/VerdictCategory.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/VerdictCategory.java @@ -23,32 +23,97 @@ */ package com.sonyericsson.hudson.plugins.gerrit.trigger; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import hudson.Extension; import hudson.model.AbstractDescribableImpl; import hudson.model.Descriptor; import net.sf.json.JSONObject; import org.kohsuke.stapler.DataBoundConstructor; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.utils.StringUtil.*; + /** * A verdict category for setting comments in Gerrit, i.e. code-review, verify * @author Tomas Westling <tomas.westling@sonymobile.com> */ -public class VerdictCategory extends AbstractDescribableImpl { - - private String verdictValue; - private String verdictDescription; +public class VerdictCategory extends AbstractDescribableImpl implements Cloneable { + private final String verdictValue; + private final String verdictDescription; + private Integer buildStartedVote; + private Integer buildSuccessfulVote; + private Integer buildFailedVote; + private Integer buildUnstableVote; + private Integer buildNotBuiltVote; + private Integer buildAbortedVote; + /** * Standard constructor. * @param verdictValue the value in Gerrit for the verdict category. * @param verdictDescription the text describing the verdict category. + * @param buildStartedVote the vote value for when the build has started. + * @param buildSuccessfulVote the vote value for when the build has been successful. + * @param buildFailedVote the vote value for when the build has failed. + * @param buildUnstableVote the vote value for when the build has been unstable. + * @param buildNotBuiltVote the vote value for when the build has not been built. + * @param buildAbortedVote the vote value for when the build has been aborted. */ @DataBoundConstructor - public VerdictCategory(String verdictValue, String verdictDescription) { + public VerdictCategory(String verdictValue, + String verdictDescription, + Integer buildStartedVote, + Integer buildSuccessfulVote, + Integer buildFailedVote, + Integer buildUnstableVote, + Integer buildNotBuiltVote, + Integer buildAbortedVote) { + this(verdictValue, verdictDescription); + + this.buildStartedVote = buildStartedVote; + this.buildSuccessfulVote = buildSuccessfulVote; + this.buildFailedVote = buildFailedVote; + this.buildUnstableVote = buildUnstableVote; + this.buildNotBuiltVote = buildNotBuiltVote; + this.buildAbortedVote = buildAbortedVote; + } + + /** + * Standard constructor + * @param verdictValue the value in Gerrit for the verdict category. + * @param verdictDescription the text describing the verdict category. + */ + public VerdictCategory(String verdictValue, + String verdictDescription) { this.verdictValue = verdictValue; this.verdictDescription = verdictDescription; } + /** + * Creates a VerdictCategory from a JSONObject. + * @param obj the JSONObject. + * @return a VerdictCategory. + */ + public static VerdictCategory fromJSON(JSONObject obj) { + String value = obj.getString("verdictValue"); + String description = obj.getString("verdictDescription"); + + Integer buildStartedVote = getValueFromFormData(obj, "buildStartedVote"); + Integer buildSuccessfulVote = getValueFromFormData(obj, "buildSuccessfulVote"); + Integer buildFailedVote = getValueFromFormData(obj, "buildFailedVote"); + Integer buildUnstableVote = getValueFromFormData(obj, "buildUnstableVote"); + Integer buildNotBuiltVote = getValueFromFormData(obj, "buildNotBuiltVote"); + Integer buildAbortedVote = getValueFromFormData(obj, "buildAbortedVote"); + + return new VerdictCategory(value, + description, + buildStartedVote, + buildSuccessfulVote, + buildFailedVote, + buildUnstableVote, + buildNotBuiltVote, + buildAbortedVote); + } + /** * Standard getter for the value. * @return the value. @@ -65,17 +130,111 @@ public String getVerdictDescription() { return verdictDescription; } - /** - * Creates a VerdictCategory from a JSONObject. - * @param obj the JSONObject. - * @return a VerdictCategory. - */ - public static VerdictCategory createVerdictCategoryFromJSON(JSONObject obj) { - String value = obj.getString("verdictValue"); - String description = obj.getString("verdictDescription"); - return new VerdictCategory(value, description); + public Integer getBuildStartedVote() { + return buildStartedVote; + } + + public void setBuildStartedVote(Integer buildStartedVote) { + this.buildStartedVote = buildStartedVote; } + public Integer getBuildSuccessfulVote() { + return buildSuccessfulVote; + } + + public void setBuildSuccessfulVote(Integer buildSuccessfulVote) { + this.buildSuccessfulVote = buildSuccessfulVote; + } + + public Integer getBuildFailedVote() { + return buildFailedVote; + } + + public void setBuildFailedVote(Integer buildFailedVote) { + this.buildFailedVote = buildFailedVote; + } + + public Integer getBuildUnstableVote() { + return buildUnstableVote; + } + + public void setBuildUnstableVote(Integer buildUnstableVote) { + this.buildUnstableVote = buildUnstableVote; + } + + public Integer getBuildNotBuiltVote() { + return buildNotBuiltVote; + } + + public void setBuildNotBuiltVote(Integer buildNotBuiltVote) { + this.buildNotBuiltVote = buildNotBuiltVote; + } + + public Integer getBuildAbortedVote() { + return buildAbortedVote; + } + + public void setBuildAbortedVote(Integer buildAbortedVote) { + this.buildAbortedVote = buildAbortedVote; + } + + @Override + public VerdictCategory clone() { + return new VerdictCategory(verdictValue, + verdictDescription, + buildStartedVote, + buildSuccessfulVote, + buildFailedVote, + buildUnstableVote, + buildNotBuiltVote, + buildAbortedVote); + } + + public Integer getVerdictVote(BuildStatus status) { + switch (status) { + case STARTED: + return buildStartedVote; + case SUCCESSFUL: + return buildSuccessfulVote; + case FAILED: + return buildFailedVote; + case UNSTABLE: + return buildUnstableVote; + case NOT_BUILT: + return buildNotBuiltVote; + case ABORTED: + return buildAbortedVote; + default: + return null; + } + } + + public void setVerdictVote(BuildStatus status, Integer vote) { + switch (status) { + case STARTED: + buildStartedVote = vote; + break; + case SUCCESSFUL: + buildSuccessfulVote = vote; + break; + case FAILED: + buildFailedVote = vote; + break; + case UNSTABLE: + buildUnstableVote = vote; + break; + case NOT_BUILT: + buildNotBuiltVote = vote; + break; + case ABORTED: + buildAbortedVote = vote; + break; + default: + break; + } + } + + /** * The Descriptor for a VerdictCategory. */ diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/BuildStatus.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/BuildStatus.java new file mode 100644 index 000000000..ab71ff5b3 --- /dev/null +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/BuildStatus.java @@ -0,0 +1,28 @@ +package com.sonyericsson.hudson.plugins.gerrit.trigger.config; + +import hudson.model.Result; + +public enum BuildStatus { + STARTED, + SUCCESSFUL, + FAILED, + UNSTABLE, + NOT_BUILT, + ABORTED, + NOT_REGISTERED; + + public static BuildStatus fromResult(Result result) { + if (result == Result.SUCCESS) + return BuildStatus.SUCCESSFUL; + if (result == Result.FAILURE) + return BuildStatus.FAILED; + if (result == Result.UNSTABLE) + return BuildStatus.UNSTABLE; + if (result == Result.NOT_BUILT) + return BuildStatus.NOT_BUILT; + if (result == Result.ABORTED) + return BuildStatus.ABORTED; + + return BuildStatus.FAILED; + } +} diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/Config.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/Config.java index 11e77adbf..47369e795 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/Config.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/Config.java @@ -51,6 +51,8 @@ import java.util.concurrent.TimeUnit; //CS IGNORE LineLength FOR NEXT 11 LINES. REASON: static import. +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static com.sonymobile.tools.gerrit.gerritevents.GerritDefaultValues.DEFAULT_BUILD_SCHEDULE_DELAY; import static com.sonymobile.tools.gerrit.gerritevents.GerritDefaultValues.DEFAULT_GERRIT_AUTH_KEY_FILE; import static com.sonymobile.tools.gerrit.gerritevents.GerritDefaultValues.DEFAULT_GERRIT_AUTH_KEY_FILE_PASSWORD; @@ -249,18 +251,6 @@ public Config(IGerritHudsonTriggerConfig config) { gerritBuildCurrentPatchesOnly = config.isGerritBuildCurrentPatchesOnly(); numberOfWorkerThreads = config.getNumberOfReceivingWorkerThreads(); numberOfSendingWorkerThreads = config.getNumberOfSendingWorkerThreads(); - gerritBuildStartedVerifiedValue = config.getGerritBuildStartedVerifiedValue(); - gerritBuildStartedCodeReviewValue = config.getGerritBuildStartedCodeReviewValue(); - gerritBuildSuccessfulVerifiedValue = config.getGerritBuildSuccessfulVerifiedValue(); - gerritBuildSuccessfulCodeReviewValue = config.getGerritBuildSuccessfulCodeReviewValue(); - gerritBuildFailedVerifiedValue = config.getGerritBuildFailedVerifiedValue(); - gerritBuildFailedCodeReviewValue = config.getGerritBuildFailedCodeReviewValue(); - gerritBuildUnstableVerifiedValue = config.getGerritBuildUnstableVerifiedValue(); - gerritBuildUnstableCodeReviewValue = config.getGerritBuildUnstableCodeReviewValue(); - gerritBuildNotBuiltVerifiedValue = config.getGerritBuildNotBuiltVerifiedValue(); - gerritBuildNotBuiltCodeReviewValue = config.getGerritBuildNotBuiltCodeReviewValue(); - gerritBuildAbortedVerifiedValue = config.getGerritBuildAbortedVerifiedValue(); - gerritBuildAbortedCodeReviewValue = config.getGerritBuildAbortedCodeReviewValue(); gerritVerifiedCmdBuildStarted = config.getGerritCmdBuildStarted(); gerritVerifiedCmdBuildFailed = config.getGerritCmdBuildFailed(); gerritVerifiedCmdBuildSuccessful = config.getGerritCmdBuildSuccessful(); @@ -277,9 +267,9 @@ public Config(IGerritHudsonTriggerConfig config) { projectListFetchDelay = config.getProjectListFetchDelay(); projectListRefreshInterval = config.getProjectListRefreshInterval(); if (config.getCategories() != null) { - categories = new LinkedList(); + categories = new LinkedList<>(); for (VerdictCategory cat : config.getCategories()) { - categories.add(new VerdictCategory(cat.getVerdictValue(), cat.getVerdictDescription())); + categories.add(cat.clone()); } } if (config.getReplicationConfig() != null) { @@ -330,8 +320,6 @@ public void setValues(JSONObject formData) { numberOfSendingWorkerThreads = DEFAULT_NR_OF_SENDING_WORKER_THREADS; } - setVoteValues(formData); - gerritVerifiedCmdBuildStarted = formData.optString( "gerritVerifiedCmdBuildStarted", "gerrit review , --message 'Build Started ' " @@ -389,17 +377,8 @@ public void setValues(JSONObject formData) { "enableProjectAutoCompletion", DEFAULT_ENABLE_PROJECT_AUTO_COMPLETION); - categories = new LinkedList(); - if (formData.has("verdictCategories")) { - Object cat = formData.get("verdictCategories"); - if (cat instanceof JSONArray) { - for (Object jsonObject : (JSONArray)cat) { - categories.add(VerdictCategory.createVerdictCategoryFromJSON((JSONObject)jsonObject)); - } - } else if (cat instanceof JSONObject) { - categories.add(VerdictCategory.createVerdictCategoryFromJSON((JSONObject)cat)); - } - } + addCategories(formData); + watchdogTimeoutMinutes = formData.optInt("watchdogTimeoutMinutes", DEFAULT_GERRIT_WATCHDOG_TIMEOUT_MINUTES); watchTimeExceptionData = addWatchTimeExceptionData(formData); @@ -418,60 +397,42 @@ public void setValues(JSONObject formData) { } /** - * Sets all config vote values from the provided JSONObject. - * @param formData the JSON object with form data. - */ - private void setVoteValues(JSONObject formData) { - if (formData.isEmpty()) { - gerritBuildStartedVerifiedValue = DEFAULT_GERRIT_BUILD_STARTED_VERIFIED_VALUE; - gerritBuildSuccessfulVerifiedValue = DEFAULT_GERRIT_BUILD_SUCCESSFUL_VERIFIED_VALUE; - gerritBuildFailedVerifiedValue = DEFAULT_GERRIT_BUILD_FAILURE_VERIFIED_VALUE; - gerritBuildUnstableVerifiedValue = DEFAULT_GERRIT_BUILD_UNSTABLE_VERIFIED_VALUE; - gerritBuildNotBuiltVerifiedValue = DEFAULT_GERRIT_BUILD_NOT_BUILT_VERIFIED_VALUE; - gerritBuildAbortedVerifiedValue = DEFAULT_GERRIT_BUILD_ABORTED_VERIFIED_VALUE; - gerritBuildStartedCodeReviewValue = DEFAULT_GERRIT_BUILD_STARTED_CODE_REVIEW_VALUE; - gerritBuildSuccessfulCodeReviewValue = DEFAULT_GERRIT_BUILD_SUCCESSFUL_CODE_REVIEW_VALUE; - gerritBuildFailedCodeReviewValue = DEFAULT_GERRIT_BUILD_FAILURE_CODE_REVIEW_VALUE; - gerritBuildUnstableCodeReviewValue = DEFAULT_GERRIT_BUILD_UNSTABLE_CODE_REVIEW_VALUE; - gerritBuildNotBuiltCodeReviewValue = DEFAULT_GERRIT_BUILD_NOT_BUILT_CODE_REVIEW_VALUE; - gerritBuildAbortedCodeReviewValue = DEFAULT_GERRIT_BUILD_ABORTED_CODE_REVIEW_VALUE; - } else { - gerritBuildStartedVerifiedValue = getValueFromFormData(formData, "gerritBuildStartedVerifiedValue"); - gerritBuildSuccessfulVerifiedValue = getValueFromFormData(formData, "gerritBuildSuccessfulVerifiedValue"); - gerritBuildFailedVerifiedValue = getValueFromFormData(formData, "gerritBuildFailedVerifiedValue"); - gerritBuildUnstableVerifiedValue = getValueFromFormData(formData, "gerritBuildUnstableVerifiedValue"); - gerritBuildNotBuiltVerifiedValue = getValueFromFormData(formData, "gerritBuildNotBuiltVerifiedValue"); - gerritBuildAbortedVerifiedValue = getValueFromFormData(formData, "gerritBuildAbortedVerifiedValue"); - gerritBuildStartedCodeReviewValue = getValueFromFormData(formData, "gerritBuildStartedCodeReviewValue"); - gerritBuildSuccessfulCodeReviewValue = getValueFromFormData(formData, - "gerritBuildSuccessfulCodeReviewValue"); - gerritBuildFailedCodeReviewValue = getValueFromFormData(formData, "gerritBuildFailedCodeReviewValue"); - gerritBuildUnstableCodeReviewValue = getValueFromFormData(formData, "gerritBuildUnstableCodeReviewValue"); - gerritBuildNotBuiltCodeReviewValue = getValueFromFormData(formData, "gerritBuildNotBuiltCodeReviewValue"); - gerritBuildAbortedCodeReviewValue = getValueFromFormData(formData, "gerritBuildAbortedCodeReviewValue"); + * Adds {@link VerdictCategory}s to the categories based on the formData. + * @param formData the formData as a JSONObject. + */ + private void addCategories(JSONObject formData) { + if (formData.isEmpty()) + { + categories = new LinkedList<>(); + categories.add(new VerdictCategory(CODE_REVIEW_LABEL, + CODE_REVIEW_LABEL, + DEFAULT_GERRIT_BUILD_STARTED_CODE_REVIEW_VALUE, + DEFAULT_GERRIT_BUILD_SUCCESSFUL_CODE_REVIEW_VALUE, + DEFAULT_GERRIT_BUILD_FAILURE_CODE_REVIEW_VALUE, + DEFAULT_GERRIT_BUILD_UNSTABLE_CODE_REVIEW_VALUE, + DEFAULT_GERRIT_BUILD_NOT_BUILT_CODE_REVIEW_VALUE, + DEFAULT_GERRIT_BUILD_ABORTED_CODE_REVIEW_VALUE)); + categories.add(new VerdictCategory(VERIFIED_LABEL, VERIFIED_LABEL, + DEFAULT_GERRIT_BUILD_STARTED_VERIFIED_VALUE, + DEFAULT_GERRIT_BUILD_SUCCESSFUL_VERIFIED_VALUE, + DEFAULT_GERRIT_BUILD_FAILURE_VERIFIED_VALUE, + DEFAULT_GERRIT_BUILD_UNSTABLE_VERIFIED_VALUE, + DEFAULT_GERRIT_BUILD_NOT_BUILT_VERIFIED_VALUE, + DEFAULT_GERRIT_BUILD_ABORTED_VERIFIED_VALUE)); } - } - /** - * Obtain value from a key in formdata. - * @param formData JSONObject. - * @param key key to extract value for. - * @return value. - */ - private Integer getValueFromFormData(JSONObject formData, String key) { - if (formData.has(key)) { - String testData = formData.optString(key); - if (testData == null || testData.equals("")) { - return null; - } else { - try { - return Integer.parseInt(testData); - } catch (NumberFormatException nfe) { - return null; + if (formData.has("verdictCategories")) { + categories = new LinkedList<>(); + + Object cat = formData.get("verdictCategories"); + if (cat instanceof JSONArray) { + for (Object jsonObject : (JSONArray)cat) { + categories.add(VerdictCategory.fromJSON((JSONObject) jsonObject)); } + } else if (cat instanceof JSONObject) { + categories.add(VerdictCategory.fromJSON((JSONObject) cat)); } } - return null; } /** @@ -597,6 +558,36 @@ public Secret getGerritAuthKeyFileSecretPassword() { return gerritAuthKeyFilePassword; } + /** + * Retrieves a configured gerrit label's vote value for a build status. + * @param label gerrit label + * @param status build status + * @return vote value + */ + @Override + public Integer getLabelVote(String label, BuildStatus status) { + for (VerdictCategory cat : categories) { + if (cat.getVerdictValue().equals(label)) { + return cat.getVerdictVote(status); + } + } + return null; + } + + /** + * Sets a configured gerrit label's vote value for a build status. + * @param label gerrit label + * @param status build status + * @param vote vote value + */ + public void setLabelVote(String label, BuildStatus status, Integer vote) { + for (VerdictCategory cat : categories) { + if (cat.getVerdictValue().equals(label)) { + cat.setVerdictVote(status, vote); + } + } + } + @Override public String getGerritFrontEndUrl() { String url = gerritFrontEndUrl; @@ -1044,160 +1035,226 @@ public void setGerritCmdBuildAborted(String cmd) { gerritVerifiedCmdBuildAborted = cmd; } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override - public Integer getGerritBuildStartedVerifiedValue() { - return gerritBuildStartedVerifiedValue; - } + public Integer getGerritBuildStartedVerifiedValue() { return getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override - public Integer getGerritBuildStartedCodeReviewValue() { - return gerritBuildStartedCodeReviewValue; - } + public Integer getGerritBuildStartedCodeReviewValue() { return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override - public Integer getGerritBuildSuccessfulVerifiedValue() { - return gerritBuildSuccessfulVerifiedValue; - } + public Integer getGerritBuildSuccessfulVerifiedValue() { return getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildSuccessfulCodeReviewValue() { - return gerritBuildSuccessfulCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildFailedVerifiedValue() { - return gerritBuildFailedVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildFailedCodeReviewValue() { - return gerritBuildFailedCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildUnstableVerifiedValue() { - return gerritBuildUnstableVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildUnstableCodeReviewValue() { - return gerritBuildUnstableCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildNotBuiltVerifiedValue() { - return gerritBuildNotBuiltVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildNotBuiltCodeReviewValue() { - return gerritBuildNotBuiltCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildAbortedVerifiedValue() { - return gerritBuildAbortedVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED); } + /** + * @deprecated use {@link Config#getLabelVote(String, BuildStatus)} instead. + */ + @Deprecated @Override public Integer getGerritBuildAbortedCodeReviewValue() { - return gerritBuildAbortedCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED); } /** * Set Gerrit Build Started Verified Value. * @param gerritBuildStartedVerifiedValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildStartedVerifiedValue(Integer gerritBuildStartedVerifiedValue) { - this.gerritBuildStartedVerifiedValue = gerritBuildStartedVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.STARTED, gerritBuildStartedVerifiedValue); } /** * Set Gerrit Build Sucessful Verified Value. * @param gerritBuildSuccessfulVerifiedValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildSuccessfulVerifiedValue(Integer gerritBuildSuccessfulVerifiedValue) { - this.gerritBuildSuccessfulVerifiedValue = gerritBuildSuccessfulVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL, gerritBuildSuccessfulVerifiedValue); } /** * Set Gerrit Build Failed Verified Value. * @param gerritBuildFailedVerifiedValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildFailedVerifiedValue(Integer gerritBuildFailedVerifiedValue) { - this.gerritBuildFailedVerifiedValue = gerritBuildFailedVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.FAILED, gerritBuildFailedVerifiedValue); } /** * Set Gerrit Build Unstable Verified Value. * @param gerritBuildUnstableVerifiedValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildUnstableVerifiedValue(Integer gerritBuildUnstableVerifiedValue) { - this.gerritBuildUnstableVerifiedValue = gerritBuildUnstableVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE, gerritBuildUnstableVerifiedValue); } /** * Set Gerrit Build Not Build Verified Value. * @param gerritBuildNotBuiltVerifiedValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildNotBuiltVerifiedValue(Integer gerritBuildNotBuiltVerifiedValue) { - this.gerritBuildNotBuiltVerifiedValue = gerritBuildNotBuiltVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT, gerritBuildNotBuiltVerifiedValue); } /** * Set Gerrit Build Aborted Verified Value. * @param gerritBuildAbortedVerifiedValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildAbortedVerifiedValue(Integer gerritBuildAbortedVerifiedValue) { - this.gerritBuildAbortedVerifiedValue = gerritBuildAbortedVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED, gerritBuildAbortedVerifiedValue); } /** * Set Gerrit Build Started Code Review Value. * @param gerritBuildStartedCodeReviewValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildStartedCodeReviewValue(Integer gerritBuildStartedCodeReviewValue) { - this.gerritBuildStartedCodeReviewValue = gerritBuildStartedCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED, gerritBuildStartedCodeReviewValue); } /** * Set Gerrit Build Successful Code Review Value. * @param gerritBuildSuccessfulCodeReviewValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildSuccessfulCodeReviewValue(Integer gerritBuildSuccessfulCodeReviewValue) { - this.gerritBuildSuccessfulCodeReviewValue = gerritBuildSuccessfulCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL, gerritBuildSuccessfulCodeReviewValue); } /** * Set Gerrit Build Failed Code Review Value. * @param gerritBuildFailedCodeReviewValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildFailedCodeReviewValue(Integer gerritBuildFailedCodeReviewValue) { - this.gerritBuildFailedCodeReviewValue = gerritBuildFailedCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED, gerritBuildFailedCodeReviewValue); } /** * Set Gerrit Build Unstable Code Review Value. * @param gerritBuildUnstableCodeReviewValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildUnstableCodeReviewValue(Integer gerritBuildUnstableCodeReviewValue) { - this.gerritBuildUnstableCodeReviewValue = gerritBuildUnstableCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE, gerritBuildUnstableCodeReviewValue); } /** * Set Gerrit Build Not Build Code Review Value. * @param gerritBuildNotBuiltCodeReviewValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildNotBuiltCodeReviewValue(Integer gerritBuildNotBuiltCodeReviewValue) { - this.gerritBuildNotBuiltCodeReviewValue = gerritBuildNotBuiltCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT, gerritBuildNotBuiltCodeReviewValue); } /** * Set Gerrit Build Aborted Code Review Value. * @param gerritBuildAbortedCodeReviewValue value + * @deprecated use {@link Config#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated public void setGerritBuildAbortedCodeReviewValue(Integer gerritBuildAbortedCodeReviewValue) { - this.gerritBuildAbortedCodeReviewValue = gerritBuildAbortedCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED, gerritBuildAbortedCodeReviewValue); } @Override @@ -1446,19 +1503,67 @@ Object readResolve() { this.buildCurrentPatchesOnly.setAbortNewPatchsets(false); } + /* Only set these values when dealing with an old configuration*/ if (this.gerritVerifiedCmdBuildAborted == null) { this.gerritVerifiedCmdBuildAborted = this.gerritVerifiedCmdBuildFailed; - /* Only set these values when dealnig with an old configuration */ if (this.gerritBuildAbortedCodeReviewValue == null) { - this.gerritBuildAbortedCodeReviewValue = this.gerritBuildFailedCodeReviewValue; + gerritBuildAbortedCodeReviewValue = gerritBuildFailedCodeReviewValue; } if (this.gerritBuildAbortedVerifiedValue == null) { - this.gerritBuildAbortedVerifiedValue = this.gerritBuildFailedVerifiedValue; + gerritBuildAbortedVerifiedValue = gerritBuildFailedVerifiedValue; } } + /* Backwards compatibility with the version in which all versions are stored in standalone fields */ + if (categories != null) + { + for (VerdictCategory category : categories) + { + if (category.getVerdictValue().equals(CODE_REVIEW_LABEL)) { + if (category.getBuildStartedVote() == null && gerritBuildStartedCodeReviewValue != null) { + category.setBuildStartedVote(gerritBuildStartedCodeReviewValue); + } + if (category.getBuildSuccessfulVote() == null && gerritBuildSuccessfulCodeReviewValue != null) { + category.setBuildSuccessfulVote(gerritBuildSuccessfulCodeReviewValue); + } + if (category.getBuildFailedVote() == null && gerritBuildFailedCodeReviewValue != null) { + category.setBuildFailedVote(gerritBuildFailedCodeReviewValue); + } + if (category.getBuildUnstableVote() == null && gerritBuildUnstableCodeReviewValue != null) { + category.setBuildUnstableVote(gerritBuildUnstableCodeReviewValue); + } + if (category.getBuildNotBuiltVote() == null && gerritBuildNotBuiltCodeReviewValue != null) { + category.setBuildNotBuiltVote(gerritBuildNotBuiltCodeReviewValue); + } + if (category.getBuildAbortedVote() == null && gerritBuildAbortedCodeReviewValue != null) { + category.setBuildAbortedVote(gerritBuildAbortedCodeReviewValue); + } + } + + if (category.getVerdictValue().equals(VERIFIED_LABEL)) { + if (category.getBuildStartedVote() == null && gerritBuildStartedVerifiedValue != null) { + category.setBuildStartedVote(gerritBuildStartedVerifiedValue); + } + if (category.getBuildSuccessfulVote() == null && gerritBuildSuccessfulVerifiedValue != null) { + category.setBuildSuccessfulVote(gerritBuildSuccessfulVerifiedValue); + } + if (category.getBuildFailedVote() == null && gerritBuildFailedVerifiedValue != null) { + category.setBuildFailedVote(gerritBuildFailedVerifiedValue); + } + if (category.getBuildUnstableVote() == null && gerritBuildUnstableVerifiedValue != null) { + category.setBuildUnstableVote(gerritBuildUnstableVerifiedValue); + } + if (category.getBuildNotBuiltVote() == null && gerritBuildNotBuiltVerifiedValue != null) { + category.setBuildNotBuiltVote(gerritBuildNotBuiltVerifiedValue); + } + if (category.getBuildAbortedVote() == null && gerritBuildAbortedVerifiedValue != null) { + category.setBuildAbortedVote(gerritBuildAbortedVerifiedValue); + } + } + } + } return this; } } diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/IGerritHudsonTriggerConfig.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/IGerritHudsonTriggerConfig.java index b5c7407ed..4b812a999 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/IGerritHudsonTriggerConfig.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/IGerritHudsonTriggerConfig.java @@ -110,72 +110,84 @@ public interface IGerritHudsonTriggerConfig extends GerritConnectionConfig2 { * The default verified value for build started. * @return the value. */ + @Deprecated Integer getGerritBuildStartedVerifiedValue(); /** * The default code review value for build started. * @return the value. */ + @Deprecated Integer getGerritBuildStartedCodeReviewValue(); /** * The default verified value for build successful. * @return the falue. */ + @Deprecated Integer getGerritBuildSuccessfulVerifiedValue(); /** * The default code review value for build successful. * @return the value. */ + @Deprecated Integer getGerritBuildSuccessfulCodeReviewValue(); /** * The default verified value for build failed. * @return the value. */ + @Deprecated Integer getGerritBuildFailedVerifiedValue(); /** * The default code review value for build failed. * @return the value. */ + @Deprecated Integer getGerritBuildFailedCodeReviewValue(); /** * The default verified value for build unstable. * @return the value. */ + @Deprecated Integer getGerritBuildUnstableVerifiedValue(); /** * The default code review value for build unstable. * @return the value. */ + @Deprecated Integer getGerritBuildUnstableCodeReviewValue(); /** * The default verified value for build not built. * @return the value. */ + @Deprecated Integer getGerritBuildNotBuiltVerifiedValue(); /** * The default code review value for build not built. * @return the value. */ + @Deprecated Integer getGerritBuildNotBuiltCodeReviewValue(); /** * The default verified value for build aborted. * @return the value. */ + @Deprecated Integer getGerritBuildAbortedVerifiedValue(); /** * The default code review value for build aborted. * @return the value. */ + @Deprecated Integer getGerritBuildAbortedCodeReviewValue(); /** @@ -351,4 +363,12 @@ public interface IGerritHudsonTriggerConfig extends GerritConnectionConfig2 { * @return the instance of {@link Secret}. */ Secret getGerritAuthKeyFileSecretPassword(); + + /** + * Retrieves a configured gerrit label's vote value for a build status. + * @param label gerrit label + * @param status build status + * @return vote value + */ + Integer getLabelVote(String label, BuildStatus status); } diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpander.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpander.java index 45e36bc0e..876869c26 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpander.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpander.java @@ -25,7 +25,10 @@ package com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier; +import com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier.model.BuildMemory.MemoryImprint; import com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier.model.BuildMemory.MemoryImprint.Entry; @@ -51,6 +54,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static com.sonyericsson.hudson.plugins.gerrit.trigger.utils.Logic.shouldSkip; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -111,6 +116,13 @@ public String getBuildStartedCommand(Run r, TaskListener taskListener, getBuildStartedCodeReviewValue(r), getBuildStartedVerifiedValue(r), Notify.ALL.name()); + + for (VerdictCategory category : config.getCategories()) { + String value = category.getVerdictValue(); + String voteValue = String.valueOf(getBuildStatusVote(r, value, BuildStatus.STARTED)); + parameters.put(category.getVerdictValue(), voteValue); + } + StringBuilder startedStats = new StringBuilder(); if (stats.getTotalBuildsToStart() > 1) { startedStats.append(stats.toString()); @@ -151,9 +163,9 @@ private static Iterable emptyIfNull(Iterable iterable) { /** * Finds the verified vote for build started of the specified build. - * If there is a {@link GerritTrigger} and it has a {@link GerritTrigger#getGerritBuildStartedVerifiedValue()} + * If there is a {@link GerritTrigger} and it has a {@link Constants#VERIFIED_LABEL} vote for {@link BuildStatus#STARTED} * specified, that value will be used, otherwise the global config value in - * {@link IGerritHudsonTriggerConfig#getGerritBuildStartedVerifiedValue()} will be used. + * {@link IGerritHudsonTriggerConfig#getLabelVote(String, BuildStatus)} will be used. * @param r the build. * @return the value. */ @@ -161,13 +173,13 @@ public Integer getBuildStartedVerifiedValue(Run r) { GerritTrigger trigger = GerritTrigger.getTrigger(r.getParent()); if (trigger == null) { logger.warn("Unable to get trigger config for build {} will use global value."); - return config.getGerritBuildStartedVerifiedValue(); - } else if (trigger.getGerritBuildStartedVerifiedValue() != null) { - final Integer value = trigger.getGerritBuildStartedVerifiedValue(); + return config.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED); + } else if (trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED) != null) { + final Integer value = trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED); logger.trace("BuildStartedVerified overridden in project config. returning {}", value); return value; } else { - final Integer value = config.getGerritBuildStartedVerifiedValue(); + final Integer value = config.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED); logger.trace("BuildStartedVerified standard value used {}", value); return value; } @@ -175,9 +187,9 @@ public Integer getBuildStartedVerifiedValue(Run r) { /** * Finds the code review vote for build started of the specified build. - * If there is a {@link GerritTrigger} and it has a {@link GerritTrigger#getGerritBuildStartedCodeReviewValue()} + * If there is a {@link GerritTrigger} and it has a {@link Constants#CODE_REVIEW_LABEL} vote for {@link BuildStatus#STARTED} * specified, that value will be used, otherwise the global config value in - * {@link IGerritHudsonTriggerConfig#getGerritBuildStartedCodeReviewValue()} will be used. + * {@link IGerritHudsonTriggerConfig#getLabelVote(String, BuildStatus)} ()} will be used. * @param r the build. * @return the value. */ @@ -185,18 +197,45 @@ public Integer getBuildStartedCodeReviewValue(Run r) { GerritTrigger trigger = GerritTrigger.getTrigger(r.getParent()); if (trigger == null) { logger.warn("Unable to get trigger config for build {} will use global value."); - return config.getGerritBuildStartedCodeReviewValue(); - } else if (trigger.getGerritBuildStartedCodeReviewValue() != null) { - final Integer value = trigger.getGerritBuildStartedCodeReviewValue(); + return config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED); + } else if (trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED) != null) { + final Integer value = trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED); logger.trace("BuildStartedCodeReview overridden in project config. returning {}", value); return value; } else { - final Integer value = config.getGerritBuildStartedCodeReviewValue(); + final Integer value = config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED); logger.trace("BuildStartedCodeReview standard value used {}", value); return value; } } + /** + * Finds the vote for a given gerrit label and build status. + * If there is a {@link GerritTrigger} and it has the configured gerrit label vote value + * specified, that value will be used, otherwise the global config value in + * {@link IGerritHudsonTriggerConfig#getLabelVote(String, BuildStatus)}} will be used. + * @param r the build. + * @param gerritLabel the gerrit label. + * @param buildStatus the build status. + * @return the value. + */ + public Integer getBuildStatusVote(Run r, String gerritLabel, BuildStatus buildStatus) { + GerritTrigger trigger = GerritTrigger.getTrigger(r.getParent()); + if (trigger != null) { + Integer projectVote = trigger.getLabelVote(gerritLabel, buildStatus); + if (projectVote != null) { + logger.trace("Using project config for Label: '{}', Build status: '{}', Vote: '{}'", + gerritLabel, buildStatus, projectVote); + return projectVote; + } + } + + Integer globalVote = config.getLabelVote(gerritLabel, buildStatus); + logger.trace("Unable to use gerrit trigger config for the build. Using global config for Label: '{}', Build status: '{}', Vote: '{}'", + gerritLabel, buildStatus, globalVote); + return globalVote; + } + /** * Creates a list of the "standard" trigger parameters. * They are present both for build started and completed. @@ -285,96 +324,22 @@ private String expandParameters(String gerritCommand, Run r, TaskListener taskLi } /** - * Finds the code review value for the specified build result on the configured trigger. - * @param res the build result. + * Finds the vote value for the specified label and build result on the configured trigger. + * @param result the build result. * @param trigger the trigger that might have overridden values. + * @param label the label to get the value for. * @return the value. */ - protected Integer getCodeReviewValue(Result res, GerritTrigger trigger) { - if (res == Result.SUCCESS) { - if (trigger.getGerritBuildSuccessfulCodeReviewValue() != null) { - return trigger.getGerritBuildSuccessfulCodeReviewValue(); - } else { - return config.getGerritBuildSuccessfulCodeReviewValue(); - } - } else if (res == Result.FAILURE) { - if (trigger.getGerritBuildFailedCodeReviewValue() != null) { - return trigger.getGerritBuildFailedCodeReviewValue(); - } else { - return config.getGerritBuildFailedCodeReviewValue(); - } - } else if (res == Result.UNSTABLE) { - if (trigger.getGerritBuildUnstableCodeReviewValue() != null) { - return trigger.getGerritBuildUnstableCodeReviewValue(); - } else { - return config.getGerritBuildUnstableCodeReviewValue(); - } - } else if (res == Result.NOT_BUILT) { - if (trigger.getGerritBuildNotBuiltCodeReviewValue() != null) { - return trigger.getGerritBuildNotBuiltCodeReviewValue(); - } else { - return config.getGerritBuildNotBuiltCodeReviewValue(); - } - } else if (res == Result.ABORTED) { - if (trigger.getGerritBuildAbortedCodeReviewValue() != null) { - return trigger.getGerritBuildAbortedCodeReviewValue(); - } else { - return config.getGerritBuildAbortedCodeReviewValue(); - } - } else { - //As bad as failue, for now - if (trigger.getGerritBuildFailedCodeReviewValue() != null) { - return trigger.getGerritBuildFailedCodeReviewValue(); - } else { - return config.getGerritBuildFailedCodeReviewValue(); - } - } - } + protected Integer getLabelVoteValue(Result result, + GerritTrigger trigger, + String label) { - /** - * Finds the verified value for the specified build result on the configured trigger. - * @param res the build result. - * @param trigger the trigger that might have overridden values. - * @return the value. - */ - protected Integer getVerifiedValue(Result res, GerritTrigger trigger) { - if (res == Result.SUCCESS) { - if (trigger.getGerritBuildSuccessfulVerifiedValue() != null) { - return trigger.getGerritBuildSuccessfulVerifiedValue(); - } else { - return config.getGerritBuildSuccessfulVerifiedValue(); - } - } else if (res == Result.FAILURE) { - if (trigger.getGerritBuildFailedVerifiedValue() != null) { - return trigger.getGerritBuildFailedVerifiedValue(); - } else { - return config.getGerritBuildFailedVerifiedValue(); - } - } else if (res == Result.UNSTABLE) { - if (trigger.getGerritBuildUnstableVerifiedValue() != null) { - return trigger.getGerritBuildUnstableVerifiedValue(); - } else { - return config.getGerritBuildUnstableVerifiedValue(); - } - } else if (res == Result.NOT_BUILT) { - if (trigger.getGerritBuildNotBuiltVerifiedValue() != null) { - return trigger.getGerritBuildNotBuiltVerifiedValue(); - } else { - return config.getGerritBuildNotBuiltVerifiedValue(); - } - } else if (res == Result.ABORTED) { - if (trigger.getGerritBuildAbortedVerifiedValue() != null) { - return trigger.getGerritBuildAbortedVerifiedValue(); - } else { - return config.getGerritBuildAbortedVerifiedValue(); - } - } else { - //As bad as failure, for now - if (trigger.getGerritBuildFailedVerifiedValue() != null) { - return trigger.getGerritBuildFailedVerifiedValue(); - } else { - return config.getGerritBuildFailedVerifiedValue(); - } + Integer triggerLabelVote = trigger.getLabelVote(label, BuildStatus.fromResult(result)); + if (triggerLabelVote != null) { + return triggerLabelVote; + } + else { + return config.getLabelVote(label, BuildStatus.fromResult(result)); } } @@ -408,7 +373,7 @@ public Integer getMinimumVerifiedValue(MemoryImprint memoryImprint, boolean only if (shouldSkip(trigger.getSkipVote(), result)) { continue; } - Integer verifiedObj = getVerifiedValue(result, trigger); + Integer verifiedObj = getLabelVoteValue(result, trigger, VERIFIED_LABEL); if (verifiedObj != null) { verified = Math.min(verified, verifiedObj); } @@ -445,7 +410,7 @@ public Integer getMinimumCodeReviewValue(MemoryImprint memoryImprint, boolean on if (shouldSkip(trigger.getSkipVote(), result)) { continue; } - Integer codeReviewObj = getCodeReviewValue(result, trigger); + Integer codeReviewObj = getLabelVoteValue(result, trigger, CODE_REVIEW_LABEL); if (codeReviewObj != null) { codeReview = Math.min(codeReview, codeReviewObj); } @@ -552,7 +517,7 @@ public String getBuildCompletedCommand(MemoryImprint memoryImprint, TaskListener // Some builds could have failed, but are already deleted and not // available for score calculation. // Set pessimistic upper boundary on verified value. - maxAllowedVerifiedValue = config.getGerritBuildFailedVerifiedValue(); + maxAllowedVerifiedValue = config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED); } Integer verified = null; diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java index ef4947c3e..076475195 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java @@ -27,9 +27,7 @@ import com.sonyericsson.hudson.plugins.gerrit.trigger.GerritServer; import com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl; import com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory; -import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; -import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; -import com.sonyericsson.hudson.plugins.gerrit.trigger.config.ReplicationConfig; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.*; import com.sonyericsson.hudson.plugins.gerrit.trigger.dependency.DependencyQueueTaskDispatcher; import com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier.ToGerritRunListener; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.actions.GerritTriggerInformationAction; @@ -97,6 +95,8 @@ import static com.sonyericsson.hudson.plugins.gerrit.trigger.GerritServer.ANY_SERVER; import static com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl.getServerConfig; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static com.sonymobile.tools.gerrit.gerritevents.GerritDefaultValues.DEFAULT_BUILD_SCHEDULE_DELAY; /** @@ -124,19 +124,10 @@ public class GerritTrigger extends Trigger { private transient CountDownLatch projectListIsReady = new CountDownLatch(0); private List gerritProjects; private List dynamicGerritProjects; + + private List categories; + private SkipVote skipVote; - private Integer gerritBuildStartedVerifiedValue; - private Integer gerritBuildStartedCodeReviewValue; - private Integer gerritBuildSuccessfulVerifiedValue; - private Integer gerritBuildSuccessfulCodeReviewValue; - private Integer gerritBuildFailedVerifiedValue; - private Integer gerritBuildFailedCodeReviewValue; - private Integer gerritBuildUnstableVerifiedValue; - private Integer gerritBuildUnstableCodeReviewValue; - private Integer gerritBuildNotBuiltVerifiedValue; - private Integer gerritBuildNotBuiltCodeReviewValue; - private Integer gerritBuildAbortedVerifiedValue; - private Integer gerritBuildAbortedCodeReviewValue; private boolean silentMode; @Deprecated private transient boolean enableTopicAssociation = Config.DEFAULT_ENABLE_TOPIC_ASSOCIATION; @@ -193,6 +184,8 @@ public GerritTrigger(List gerritProjects) { this.notificationLevel = ""; } + this.categories = new LinkedList<>(getVerdictCategoriesList()); + this.commitMessageParameterMode = GerritTriggerParameters.ParameterMode.BASE64; this.nameAndEmailParameterMode = GerritTriggerParameters.ParameterMode.PLAIN; this.changeSubjectParameterMode = GerritTriggerParameters.ParameterMode.PLAIN; @@ -279,16 +272,20 @@ public GerritTrigger(List gerritProjects, SkipVote skipVote, Inte boolean dynamicTriggerConfiguration, String triggerConfigURL, String notificationLevel) { this.gerritProjects = gerritProjects; this.skipVote = skipVote; - this.gerritBuildStartedVerifiedValue = gerritBuildStartedVerifiedValue; - this.gerritBuildStartedCodeReviewValue = gerritBuildStartedCodeReviewValue; - this.gerritBuildSuccessfulVerifiedValue = gerritBuildSuccessfulVerifiedValue; - this.gerritBuildSuccessfulCodeReviewValue = gerritBuildSuccessfulCodeReviewValue; - this.gerritBuildFailedVerifiedValue = gerritBuildFailedVerifiedValue; - this.gerritBuildFailedCodeReviewValue = gerritBuildFailedCodeReviewValue; - this.gerritBuildUnstableVerifiedValue = gerritBuildUnstableVerifiedValue; - this.gerritBuildUnstableCodeReviewValue = gerritBuildUnstableCodeReviewValue; - this.gerritBuildNotBuiltVerifiedValue = gerritBuildNotBuiltVerifiedValue; - this.gerritBuildNotBuiltCodeReviewValue = gerritBuildNotBuiltCodeReviewValue; + this.categories = new LinkedList<>(getVerdictCategoriesList()); + + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED, gerritBuildStartedCodeReviewValue); + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL, gerritBuildSuccessfulCodeReviewValue); + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED, gerritBuildFailedCodeReviewValue); + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE, gerritBuildUnstableCodeReviewValue); + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT, gerritBuildNotBuiltCodeReviewValue); + + setLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL, gerritBuildSuccessfulVerifiedValue); + setLabelVote(VERIFIED_LABEL, BuildStatus.FAILED, gerritBuildFailedVerifiedValue); + setLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE, gerritBuildUnstableVerifiedValue); + setLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT, gerritBuildNotBuiltVerifiedValue); + setLabelVote(VERIFIED_LABEL, BuildStatus.STARTED, gerritBuildStartedVerifiedValue); + this.silentMode = silentMode; this.silentStartMode = silentStartMode; this.escapeQuotes = escapeQuotes; @@ -747,13 +744,29 @@ protected ParametersAction createParameters(GerritTriggeredEvent event, Job proj * @return the list of verdict categories, or an empty linkedlist if server not found. */ private List getVerdictCategoriesList() { - GerritServer server = PluginImpl.getServer_(serverName); - if (server != null) { - return server.getConfig().getCategories(); - } else { - logger.error("Could not find server {}", serverName); - return new LinkedList(); - } + if (isAnyServer()) { + List labels = new ArrayList<>(); + List servers = PluginImpl.getServers_(); + for (GerritServer server : servers) { + if (server.getConfig() != null) { + List categories = server.getConfig().getCategories(); + if (categories != null) { + logger.info("Retrieving categories from server {}", server.getName()); + labels.addAll(categories); + } + } + } + return labels; + } else { + GerritServer server = PluginImpl.getServer_(serverName); + if (server != null) { + return server.getConfig().getCategories(); + } else { + logger.error("Could not find server {}", serverName); + return new LinkedList(); + } + + } } /** @@ -1291,30 +1304,35 @@ public void setGerritProjects(List gerritProjects) { * Job specific Gerrit code review vote when a build is failed, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildFailedCodeReviewValue() { - return gerritBuildFailedCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED); } /** * Job specific Gerrit code review vote when a build is failed, providing null means that the global value should be * used. * - * @param gerritBuildFailedCodeReviewValue - * the vote value. + * @param gerritBuildFailedCodeReviewValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildFailedCodeReviewValue(Integer gerritBuildFailedCodeReviewValue) { - this.gerritBuildFailedCodeReviewValue = gerritBuildFailedCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED, gerritBuildFailedCodeReviewValue); } /** * Job specific Gerrit verified vote when a build is failed, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildFailedVerifiedValue() { - return gerritBuildFailedVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED); } /** @@ -1322,52 +1340,60 @@ public Integer getGerritBuildFailedVerifiedValue() { * used. * * @param gerritBuildFailedVerifiedValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildFailedVerifiedValue(Integer gerritBuildFailedVerifiedValue) { - this.gerritBuildFailedVerifiedValue = gerritBuildFailedVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.FAILED, gerritBuildFailedVerifiedValue); } /** * Job specific Gerrit code review vote when a build is started, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildStartedCodeReviewValue() { - return gerritBuildStartedCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED); } /** * Job specific Gerrit code review vote when a build is started, providing null means that the global value should * be used. * - * @param gerritBuildStartedCodeReviewValue - * the vote value. + * @param gerritBuildStartedCodeReviewValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildStartedCodeReviewValue(Integer gerritBuildStartedCodeReviewValue) { - this.gerritBuildStartedCodeReviewValue = gerritBuildStartedCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED, gerritBuildStartedCodeReviewValue); } /** * Job specific Gerrit verified vote when a build is started, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildStartedVerifiedValue() { - return gerritBuildStartedVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED); } /** * Job specific Gerrit verified vote when a build is started, providing null means that the global value should be * used. * - * @param gerritBuildStartedVerifiedValue - * the vote value. + * @param gerritBuildStartedVerifiedValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildStartedVerifiedValue(Integer gerritBuildStartedVerifiedValue) { - this.gerritBuildStartedVerifiedValue = gerritBuildStartedVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.STARTED, gerritBuildStartedVerifiedValue); } /** @@ -1375,135 +1401,155 @@ public void setGerritBuildStartedVerifiedValue(Integer gerritBuildStartedVerifie * used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildSuccessfulCodeReviewValue() { - return gerritBuildSuccessfulCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL); } /** * Job specific Gerrit code review vote when a build is successful, providing null means that the global value * should be used. * - * @param gerritBuildSuccessfulCodeReviewValue - * the vote value. + * @param gerritBuildSuccessfulCodeReviewValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildSuccessfulCodeReviewValue(Integer gerritBuildSuccessfulCodeReviewValue) { - this.gerritBuildSuccessfulCodeReviewValue = gerritBuildSuccessfulCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL, gerritBuildSuccessfulCodeReviewValue); } /** * Job specific Gerrit verified vote when a build is successful, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildSuccessfulVerifiedValue() { - return gerritBuildSuccessfulVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL); } /** * Job specific Gerrit verified vote when a build is successful, providing null means that the global value should * be used. * - * @param gerritBuildSuccessfulVerifiedValue - * the vote value. + * @param gerritBuildSuccessfulVerifiedValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildSuccessfulVerifiedValue(Integer gerritBuildSuccessfulVerifiedValue) { - this.gerritBuildSuccessfulVerifiedValue = gerritBuildSuccessfulVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL, gerritBuildSuccessfulVerifiedValue); } /** * Job specific Gerrit code review vote when a build is unstable, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildUnstableCodeReviewValue() { - return gerritBuildUnstableCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE); } /** * Job specific Gerrit code review vote when a build is unstable, providing null means that the global value should * be used. * - * @param gerritBuildUnstableCodeReviewValue - * the vote value. + * @param gerritBuildUnstableCodeReviewValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildUnstableCodeReviewValue(Integer gerritBuildUnstableCodeReviewValue) { - this.gerritBuildUnstableCodeReviewValue = gerritBuildUnstableCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE, gerritBuildUnstableCodeReviewValue); } /** * Job specific Gerrit verified vote when a build is unstable, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildUnstableVerifiedValue() { - return gerritBuildUnstableVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE); } /** * Job specific Gerrit verified vote when a build is unstable, providing null means that the global value should be * used. * - * @param gerritBuildUnstableVerifiedValue - * the vote value. + * @param gerritBuildUnstableVerifiedValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildUnstableVerifiedValue(Integer gerritBuildUnstableVerifiedValue) { - this.gerritBuildUnstableVerifiedValue = gerritBuildUnstableVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE, gerritBuildUnstableVerifiedValue); } /** * Job specific Gerrit code review vote when a build is not built, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildNotBuiltCodeReviewValue() { - return gerritBuildNotBuiltCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT); } /** * Job specific Gerrit code review vote when a build is not built, providing null means that the global value should * be used. * - * @param gerritBuildNotBuiltCodeReviewValue - * the vote value. + * @param gerritBuildNotBuiltCodeReviewValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildNotBuiltCodeReviewValue(Integer gerritBuildNotBuiltCodeReviewValue) { - this.gerritBuildNotBuiltCodeReviewValue = gerritBuildNotBuiltCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT, gerritBuildNotBuiltCodeReviewValue); } /** * Job specific Gerrit verified vote when a build is not built, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildNotBuiltVerifiedValue() { - return gerritBuildNotBuiltVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT); } /** * Job specific Gerrit verified vote when a build is not built, providing null means that the global value should be * used. * - * @param gerritBuildNotBuiltVerifiedValue - * the vote value. + * @param gerritBuildNotBuiltVerifiedValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildNotBuiltVerifiedValue(Integer gerritBuildNotBuiltVerifiedValue) { - this.gerritBuildNotBuiltVerifiedValue = gerritBuildNotBuiltVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT, gerritBuildNotBuiltVerifiedValue); } /** * Job specific Gerrit code review vote when a build is aborted, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildAbortedCodeReviewValue() { - return gerritBuildAbortedCodeReviewValue; + return getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED); } /** @@ -1511,19 +1557,23 @@ public Integer getGerritBuildAbortedCodeReviewValue() { * used. * * @param gerritBuildAbortedCodeReviewValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildAbortedCodeReviewValue(Integer gerritBuildAbortedCodeReviewValue) { - this.gerritBuildAbortedCodeReviewValue = gerritBuildAbortedCodeReviewValue; + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED, gerritBuildAbortedCodeReviewValue); } /** * Job specific Gerrit verified vote when a build is aborted, null means that the global value should be used. * * @return the vote value. + * @deprecated use {@link GerritTrigger#getLabelVote(String, BuildStatus)} instead. */ + @Deprecated public Integer getGerritBuildAbortedVerifiedValue() { - return gerritBuildAbortedVerifiedValue; + return getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED); } /** @@ -1531,10 +1581,12 @@ public Integer getGerritBuildAbortedVerifiedValue() { * used. * * @param gerritBuildAbortedVerifiedValue the vote value. + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setGerritBuildAbortedVerifiedValue(Integer gerritBuildAbortedVerifiedValue) { - this.gerritBuildAbortedVerifiedValue = gerritBuildAbortedVerifiedValue; + setLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED, gerritBuildAbortedVerifiedValue); } /** @@ -1542,7 +1594,9 @@ public void setGerritBuildAbortedVerifiedValue(Integer gerritBuildAbortedVerifie * Filename to retrieve Gerrit comment message from, in the case of an unsuccessful build. * * @param buildUnsuccessfulFilepath The unsuccessful message comment file path + * @deprecated use {@link GerritTrigger#setLabelVote(String, BuildStatus, Integer)} instead. */ + @Deprecated @DataBoundSetter public void setBuildUnsuccessfulFilepath(String buildUnsuccessfulFilepath) { this.buildUnsuccessfulFilepath = buildUnsuccessfulFilepath; @@ -1609,7 +1663,7 @@ private void initializeTriggerOnEvents() { */ private void initializeServerName() { if (serverName == null) { - serverName = ANY_SERVER; + serverName = GerritServer.ANY_SERVER; } } @@ -1962,6 +2016,23 @@ public void setEnableTopicAssociation(boolean enable) { } } + /** + * Returns the list of categories. + * @return the list of categories. + */ + public List getCategories() { + return categories; + } + + /** + * Sets the list of categories. + * @param categories the list of categories. + */ + @DataBoundSetter + public void setCategories(List categories) { + this.categories = categories; + } + /** * Check if topic association is enabled. * @@ -2270,4 +2341,21 @@ protected boolean abortBecauseOfTopic(ChangeBasedEvent event, && !topicName.isEmpty() && topicName.equals(runningChange.getChange().getTopic()); } + + public void setLabelVote(String label, BuildStatus status, Integer vote) { + for (VerdictCategory cat : categories) { + if (cat.getVerdictValue().equals(label)) { + cat.setVerdictVote(status, vote); + } + } + } + + public Integer getLabelVote(String label, BuildStatus status) { + for (VerdictCategory cat : categories) { + if (cat.getVerdictValue().equals(label)) { + return cat.getVerdictVote(status); + } + } + return null; + } } diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/StringUtil.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/StringUtil.java index 946d2b64e..93274cc49 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/StringUtil.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/StringUtil.java @@ -28,6 +28,8 @@ import com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl; import com.sonymobile.tools.gerrit.gerritevents.GerritEventListener; import com.sonymobile.tools.gerrit.gerritevents.dto.events.ChangeBasedEvent; +import net.sf.json.JSONObject; + import java.util.regex.Pattern; /** @@ -156,4 +158,26 @@ public static String getDefaultDisplayNameForSpecificServer(GerritEventListener name.append(listener.getClass().getSimpleName()); return name.toString(); } + + /** + * Obtain value from a key in formdata. + * @param formData JSONObject. + * @param key key to extract value for. + * @return value. + */ + public static Integer getValueFromFormData(JSONObject formData, String key) { + if (formData.has(key)) { + String testData = formData.optString(key); + if (testData == null || testData.equals("")) { + return null; + } else { + try { + return Integer.parseInt(testData); + } catch (NumberFormatException nfe) { + return null; + } + } + } + return null; + } } diff --git a/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/GerritServer/index.jelly b/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/GerritServer/index.jelly index d7886fef1..1ec9897f8 100644 --- a/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/GerritServer/index.jelly +++ b/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/GerritServer/index.jelly @@ -121,96 +121,6 @@ method="testConnection" with="gerritHostName,gerritSshPort,gerritProxy,gerritUserName,gerritAuthKeyFile,gerritAuthKeyFilePassword"/> - - - - -
- ${%Verify} -
-
-
- - - - - - - - - - - - - - - - - - - - - -
- ${%Code Review} -
-
-
- - - - - - - - - - - - - - - - - - -
- + @@ -341,6 +252,54 @@ + + + ${%Started} + + + + + + + + ${%Successful} + + + + + + + + ${%Failed} + + + + + + + + ${%Unstable} + + + + + + + + ${%Not built} + + + + + + + + ${%Aborted} + + + + + diff --git a/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger/config.jelly b/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger/config.jelly index ce23de7b1..45fad845a 100644 --- a/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger/config.jelly +++ b/src/main/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger/config.jelly @@ -80,113 +80,52 @@ - - - -
${%Verify}
-
-
- - - - - - - - - - - - - - - - - - - - - -
${%Code Review}
-
-
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ${instance.verdictValue} + + +
${%Started} + +
${%Successful} + +
${%Failed} + +
${%Unstable} + +
${%Not Built} + +
+
diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/JcascTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/JcascTest.java index 4198d65e1..1fe5affc2 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/JcascTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/JcascTest.java @@ -25,9 +25,7 @@ */ package com.sonyericsson.hudson.plugins.gerrit.trigger; -import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; -import com.sonyericsson.hudson.plugins.gerrit.trigger.config.PluginConfig; -import com.sonyericsson.hudson.plugins.gerrit.trigger.config.ReplicationConfig; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.*; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.BuildCancellationPolicy; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritSlave; import com.sonymobile.tools.gerrit.gerritevents.watchdog.WatchTimeExceptionData; @@ -116,19 +114,19 @@ private void verifyDefaultSetup(boolean checkPasswords) { assertTrue(bcp.isAbortNewPatchsets()); assertTrue(bcp.isAbortSameTopic()); - assertEquals(4, c.getGerritBuildStartedVerifiedValue().intValue()); - assertEquals(4, c.getGerritBuildSuccessfulVerifiedValue().intValue()); - assertEquals(4, c.getGerritBuildFailedVerifiedValue().intValue()); - assertEquals(4, c.getGerritBuildUnstableVerifiedValue().intValue()); - assertEquals(4, c.getGerritBuildNotBuiltVerifiedValue().intValue()); - assertEquals(4, c.getGerritBuildAbortedVerifiedValue().intValue()); + assertEquals(4, c.getLabelVote(Constants.VERIFIED_LABEL, BuildStatus.STARTED).intValue()); + assertEquals(4, c.getLabelVote(Constants.VERIFIED_LABEL, BuildStatus.SUCCESSFUL).intValue()); + assertEquals(4, c.getLabelVote(Constants.VERIFIED_LABEL, BuildStatus.FAILED).intValue()); + assertEquals(4, c.getLabelVote(Constants.VERIFIED_LABEL, BuildStatus.UNSTABLE).intValue()); + assertEquals(4, c.getLabelVote(Constants.VERIFIED_LABEL, BuildStatus.NOT_BUILT).intValue()); + assertEquals(4, c.getLabelVote(Constants.VERIFIED_LABEL, BuildStatus.ABORTED).intValue()); - assertEquals(4, c.getGerritBuildStartedCodeReviewValue().intValue()); - assertEquals(4, c.getGerritBuildSuccessfulCodeReviewValue().intValue()); - assertEquals(4, c.getGerritBuildFailedCodeReviewValue().intValue()); - assertEquals(4, c.getGerritBuildUnstableCodeReviewValue().intValue()); - assertEquals(4, c.getGerritBuildNotBuiltCodeReviewValue().intValue()); - assertEquals(4, c.getGerritBuildAbortedCodeReviewValue().intValue()); + assertEquals(4, c.getLabelVote(Constants.CODE_REVIEW_LABEL, BuildStatus.STARTED).intValue()); + assertEquals(4, c.getLabelVote(Constants.CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL).intValue()); + assertEquals(4, c.getLabelVote(Constants.CODE_REVIEW_LABEL, BuildStatus.FAILED).intValue()); + assertEquals(4, c.getLabelVote(Constants.CODE_REVIEW_LABEL, BuildStatus.UNSTABLE).intValue()); + assertEquals(4, c.getLabelVote(Constants.CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT).intValue()); + assertEquals(4, c.getLabelVote(Constants.CODE_REVIEW_LABEL, BuildStatus.ABORTED).intValue()); assertThat(c.getGerritCmdBuildStarted(), containsString("Build Started CMD")); assertThat(c.getGerritCmdBuildSuccessful(), containsString("Build Successful CMD")); @@ -146,9 +144,9 @@ private void verifyDefaultSetup(boolean checkPasswords) { assertEquals(3636, c.getProjectListRefreshInterval()); assertEquals(OWNER_REVIEWERS, c.getNotificationLevel()); List cats = c.getCategories(); - assertThat(cats, iterableWithSize(2)); - VerdictCategory c1 = cats.get(0); - VerdictCategory c2 = cats.get(1); + assertThat(cats, iterableWithSize(4)); + VerdictCategory c1 = cats.get(2); + VerdictCategory c2 = cats.get(3); assertEquals("foo", c1.getVerdictValue()); assertEquals("bar", c1.getVerdictDescription()); assertEquals("baz", c2.getVerdictValue()); diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/ConfigTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/ConfigTest.java index 3df68c5d6..930ecbff2 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/ConfigTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/ConfigTest.java @@ -24,22 +24,21 @@ */ package com.sonyericsson.hudson.plugins.gerrit.trigger.config; +import com.sonyericsson.hudson.plugins.gerrit.trigger.mock.Setup; +import com.sonymobile.tools.gerrit.gerritevents.GerritDefaultValues; import com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated; import com.sonymobile.tools.gerrit.gerritevents.dto.rest.Notify; -import com.sonymobile.tools.gerrit.gerritevents.GerritDefaultValues; -import com.sonyericsson.hudson.plugins.gerrit.trigger.mock.Setup; - +import hudson.util.Secret; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; - import org.junit.Rule; import org.junit.Test; import org.jvnet.hudson.test.JenkinsRule; -import hudson.util.Secret; - import java.io.File; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -77,18 +76,6 @@ public void testSetValues() { + "--message 'Aborted oupsy ' --verified --code-review \"," + "\"gerritAuthKeyFile\":\"/home/local/gerrit/.ssh/id_rsa\"," + "\"gerritAuthKeyFilePassword\":\"passis\"," - + "\"gerritBuildFailedCodeReviewValue\":\"1\"," - + "\"gerritBuildFailedVerifiedValue\":\"-1\"," - + "\"gerritBuildStartedCodeReviewValue\":\"2\"," - + "\"gerritBuildStartedVerifiedValue\":\"-2\"," - + "\"gerritBuildSuccessfulCodeReviewValue\":\"3\"," - + "\"gerritBuildSuccessfulVerifiedValue\":\"-3\"," - + "\"gerritBuildUnstableCodeReviewValue\":\"4\"," - + "\"gerritBuildUnstableVerifiedValue\":\"-4\"," - + "\"gerritBuildNotBuiltCodeReviewValue\":\"5\"," - + "\"gerritBuildNotBuiltVerifiedValue\":\"-5\"," - + "\"gerritBuildAbortedCodeReviewValue\":\"6\"," - + "\"gerritBuildAbortedVerifiedValue\":\"-6\"," + "\"gerritFrontEndUrl\":\"http://gerrit:8088\"," + "\"gerritHostName\":\"gerrit\"," + "\"gerritSshPort\":\"1337\"," @@ -97,7 +84,25 @@ public void testSetValues() { + "\"useRestApi\":{\"gerritHttpUserName\":\"httpgerrit\",\"gerritHttpPassword\":\"httppass\"}," + "\"numberOfSendingWorkerThreads\":\"4\"," + "\"numberOfReceivingWorkerThreads\":\"6\"," - + "\"notificationLevel\":\"OWNER\"}"; + + "\"notificationLevel\":\"OWNER\"," + + "\"verdictCategories\":[" + + "{\"verdictValue\":\"Code-Review\"," + + "\"verdictDescription\":\"Code-Review\"," + + "\"buildStartedVote\":\"1\"," + + "\"buildSuccessfulVote\":\"2\"," + + "\"buildFailedVote\":\"3\"," + + "\"buildUnstableVote\":\"4\"," + + "\"buildNotBuiltVote\":\"5\"," + + "\"buildAbortedVote\":\"6\"}," + + "{\"verdictValue\":\"Verified\"," + + "\"verdictDescription\":\"Verified\"," + + "\"buildStartedVote\":\"7\"," + + "\"buildSuccessfulVote\":\"8\"," + + "\"buildFailedVote\":\"9\"," + + "\"buildUnstableVote\":\"10\"," + + "\"buildNotBuiltVote\":\"11\"," + + "\"buildAbortedVote\":\"12\"}]" + + "}"; JSONObject form = (JSONObject)JSONSerializer.toJSON(formString); Config config = new Config(form); assertEquals("gerrit review , " @@ -121,18 +126,20 @@ public void testSetValues() { assertEquals(new File("/home/local/gerrit/.ssh/id_rsa").getPath(), config.getGerritAuthKeyFile().getPath()); assertEquals("passis", config.getGerritAuthKeyFilePassword()); - assertEquals(Integer.valueOf(1), config.getGerritBuildFailedCodeReviewValue()); - assertEquals(Integer.valueOf(-1), config.getGerritBuildFailedVerifiedValue()); - assertEquals(Integer.valueOf(2), config.getGerritBuildStartedCodeReviewValue()); - assertEquals(Integer.valueOf(-2), config.getGerritBuildStartedVerifiedValue()); - assertEquals(Integer.valueOf(3), config.getGerritBuildSuccessfulCodeReviewValue()); - assertEquals(Integer.valueOf(-3), config.getGerritBuildSuccessfulVerifiedValue()); - assertEquals(Integer.valueOf(4), config.getGerritBuildUnstableCodeReviewValue()); - assertEquals(Integer.valueOf(-4), config.getGerritBuildUnstableVerifiedValue()); - assertEquals(Integer.valueOf(5), config.getGerritBuildNotBuiltCodeReviewValue()); - assertEquals(Integer.valueOf(-5), config.getGerritBuildNotBuiltVerifiedValue()); - assertEquals(Integer.valueOf(6), config.getGerritBuildAbortedCodeReviewValue()); - assertEquals(Integer.valueOf(-6), config.getGerritBuildAbortedVerifiedValue()); + assertEquals(Integer.valueOf(1), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED)); + assertEquals(Integer.valueOf(2), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)); + assertEquals(Integer.valueOf(3), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)); + assertEquals(Integer.valueOf(4), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)); + assertEquals(Integer.valueOf(5), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT)); + assertEquals(Integer.valueOf(6), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED)); + + assertEquals(Integer.valueOf(7), config.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED)); + assertEquals(Integer.valueOf(8), config.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)); + assertEquals(Integer.valueOf(9), config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)); + assertEquals(Integer.valueOf(10), config.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)); + assertEquals(Integer.valueOf(11), config.getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT)); + assertEquals(Integer.valueOf(12), config.getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED)); + assertEquals("http://gerrit:8088/", config.getGerritFrontEndUrl()); assertEquals("gerrit", config.getGerritHostName()); assertEquals(1337, config.getGerritSshPort()); @@ -181,18 +188,23 @@ public void testCopyConfig() { + "--message 'Aborted oupsy ' --verified --code-review \"," + "\"gerritAuthKeyFile\":\"/home/local/gerrit/.ssh/id_rsa\"," + "\"gerritAuthKeyFilePassword\":\"passis\"," - + "\"gerritBuildFailedCodeReviewValue\":\"1\"," - + "\"gerritBuildFailedVerifiedValue\":\"-1\"," - + "\"gerritBuildStartedCodeReviewValue\":\"2\"," - + "\"gerritBuildStartedVerifiedValue\":\"-2\"," - + "\"gerritBuildSuccessfulCodeReviewValue\":\"3\"," - + "\"gerritBuildSuccessfulVerifiedValue\":\"-3\"," - + "\"gerritBuildUnstableCodeReviewValue\":\"4\"," - + "\"gerritBuildUnstableVerifiedValue\":\"-4\"," - + "\"gerritBuildNotBuiltCodeReviewValue\":\"5\"," - + "\"gerritBuildNotBuiltVerifiedValue\":\"-5\"," - + "\"gerritBuildAbortedCodeReviewValue\":\"6\"," - + "\"gerritBuildAbortedVerifiedValue\":\"-6\"," + + "\"verdictCategories\":[" + + "{\"verdictValue\":\"Code-Review\"," + + "\"verdictDescription\":\"Code-Review\"," + + "\"buildStartedVote\":\"1\"," + + "\"buildSuccessfulVote\":\"2\"," + + "\"buildFailedVote\":\"3\"," + + "\"buildUnstableVote\":\"4\"," + + "\"buildNotBuiltVote\":\"5\"," + + "\"buildAbortedVote\":\"6\"}," + + "{\"verdictValue\":\"Verified\"," + + "\"verdictDescription\":\"Verified\"," + + "\"buildStartedVote\":\"7\"," + + "\"buildSuccessfulVote\":\"8\"," + + "\"buildFailedVote\":\"9\"," + + "\"buildUnstableVote\":\"10\"," + + "\"buildNotBuiltVote\":\"11\"," + + "\"buildAbortedVote\":\"12\"}]," + "\"gerritFrontEndUrl\":\"http://gerrit:8088\"," + "\"gerritHostName\":\"gerrit\"," + "\"gerritSshPort\":\"1337\"," @@ -226,18 +238,20 @@ public void testCopyConfig() { assertEquals(new File("/home/local/gerrit/.ssh/id_rsa").getPath(), config.getGerritAuthKeyFile().getPath()); assertEquals("passis", config.getGerritAuthKeyFilePassword()); - assertEquals(Integer.valueOf(1), config.getGerritBuildFailedCodeReviewValue()); - assertEquals(Integer.valueOf(-1), config.getGerritBuildFailedVerifiedValue()); - assertEquals(Integer.valueOf(2), config.getGerritBuildStartedCodeReviewValue()); - assertEquals(Integer.valueOf(-2), config.getGerritBuildStartedVerifiedValue()); - assertEquals(Integer.valueOf(3), config.getGerritBuildSuccessfulCodeReviewValue()); - assertEquals(Integer.valueOf(-3), config.getGerritBuildSuccessfulVerifiedValue()); - assertEquals(Integer.valueOf(4), config.getGerritBuildUnstableCodeReviewValue()); - assertEquals(Integer.valueOf(-4), config.getGerritBuildUnstableVerifiedValue()); - assertEquals(Integer.valueOf(5), config.getGerritBuildNotBuiltCodeReviewValue()); - assertEquals(Integer.valueOf(-5), config.getGerritBuildNotBuiltVerifiedValue()); - assertEquals(Integer.valueOf(6), config.getGerritBuildAbortedCodeReviewValue()); - assertEquals(Integer.valueOf(-6), config.getGerritBuildAbortedVerifiedValue()); + assertEquals(Integer.valueOf(1), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED)); + assertEquals(Integer.valueOf(2), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)); + assertEquals(Integer.valueOf(3), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)); + assertEquals(Integer.valueOf(4), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)); + assertEquals(Integer.valueOf(5), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT)); + assertEquals(Integer.valueOf(6), config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED)); + + assertEquals(Integer.valueOf(7), config.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED)); + assertEquals(Integer.valueOf(8), config.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)); + assertEquals(Integer.valueOf(9), config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)); + assertEquals(Integer.valueOf(10), config.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)); + assertEquals(Integer.valueOf(11), config.getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT)); + assertEquals(Integer.valueOf(12), config.getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED)); + assertEquals("http://gerrit:8088/", config.getGerritFrontEndUrl()); assertEquals("gerrit", config.getGerritHostName()); assertEquals(1337, config.getGerritSshPort()); diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderParameterizedTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderParameterizedTest.java index b806f367f..2eef25a0a 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderParameterizedTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderParameterizedTest.java @@ -24,12 +24,11 @@ package com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger; import com.sonyericsson.hudson.plugins.gerrit.trigger.mock.Setup; - import hudson.model.Result; - import jenkins.model.Jenkins; import org.junit.After; import org.junit.Before; @@ -43,17 +42,16 @@ import java.util.LinkedList; import java.util.List; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; //CS IGNORE MagicNumber FOR NEXT 200 LINES. REASON: Mocks tests. /** * Tests a bunch of different scenarios. - * For {@link ParameterExpander#getCodeReviewValue(hudson.model.Result, GerritTrigger)} - * and {@link ParameterExpander#getVerifiedValue(hudson.model.Result, GerritTrigger)} + * For {@link ParameterExpander#getLabelVoteValue(Result, GerritTrigger, String)} with various labels * @author Robert Sandell <robert.sandell@sonyericsson.com> */ @RunWith(Parameterized.class) @@ -92,7 +90,7 @@ public void tearDown() { public void testGetVerifiedValue() { ParameterExpander instance = new ParameterExpander(parameters.config); assertEquals(Integer.valueOf(parameters.expectedVerified), - instance.getVerifiedValue(parameters.result, parameters.trigger)); + instance.getLabelVoteValue(parameters.result, parameters.trigger, VERIFIED_LABEL)); } /** @@ -102,7 +100,7 @@ public void testGetVerifiedValue() { public void testGetCodeReviewValue() { ParameterExpander instance = new ParameterExpander(parameters.config); assertEquals(Integer.valueOf(parameters.expectedCodeReview), - instance.getCodeReviewValue(parameters.result, parameters.trigger)); + instance.getLabelVoteValue(parameters.result, parameters.trigger, CODE_REVIEW_LABEL)); } /** @@ -113,60 +111,60 @@ public void testGetCodeReviewValue() { public static Collection getParameters() { List list = new LinkedList(); - IGerritHudsonTriggerConfig config = Setup.createConfig(); + IGerritHudsonTriggerConfig config = Setup.createMockableConfig(); //SUCCESS, FAILURE, ABORTED, UNSTABLE, other //not overridden, overridden //SUCCESS Not overridden GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); list.add(new TestParameters[]{new TestParameters(config, Result.SUCCESS, trigger, 4, 3)}); //SUCCESS overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(21); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(22); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(21); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(22); list.add(new TestParameters[]{new TestParameters(config, Result.SUCCESS, trigger, 21, 22)}); //FAILURE Not overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildFailedVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(null); list.add(new TestParameters[]{new TestParameters(config, Result.FAILURE, trigger, -2, -1)}); //FAILURE overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(31); - when(trigger.getGerritBuildFailedVerifiedValue()).thenReturn(32); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(31); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(32); list.add(new TestParameters[]{new TestParameters(config, Result.FAILURE, trigger, 31, 32)}); //UNSTABLE overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableCodeReviewValue()).thenReturn(-21); - when(trigger.getGerritBuildUnstableVerifiedValue()).thenReturn(-22); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(-21); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)).thenReturn(-22); list.add(new TestParameters[]{new TestParameters(config, Result.UNSTABLE, trigger, -21, -22)}); //OTHER Not overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildNotBuiltCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildNotBuiltVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT)).thenReturn(null); list.add(new TestParameters[]{new TestParameters(config, Result.NOT_BUILT, trigger, -6, -5)}); //OTHER overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildNotBuiltCodeReviewValue()).thenReturn(-51); - when(trigger.getGerritBuildNotBuiltVerifiedValue()).thenReturn(-52); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT)).thenReturn(-51); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT)).thenReturn(-52); list.add(new TestParameters[]{new TestParameters(config, Result.NOT_BUILT, trigger, -51, -52)}); //ABORTED Not overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildAbortedCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildAbortedVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED)).thenReturn(null); list.add(new TestParameters[]{new TestParameters(config, Result.ABORTED, trigger, 3, -2)}); //ABORTED overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildAbortedCodeReviewValue()).thenReturn(41); - when(trigger.getGerritBuildAbortedVerifiedValue()).thenReturn(42); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED)).thenReturn(41); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED)).thenReturn(42); list.add(new TestParameters[]{new TestParameters(config, Result.ABORTED, trigger, 41, 42)}); //UNSTABLE Not overridden trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildUnstableVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)).thenReturn(null); list.add(new TestParameters[]{new TestParameters(config, Result.UNSTABLE, trigger, -4, -3)}); return list; diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderSkipVoteParameterTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderSkipVoteParameterTest.java index d710a4bc1..7dcd842a3 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderSkipVoteParameterTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderSkipVoteParameterTest.java @@ -92,7 +92,7 @@ public void tearDown() throws Exception { */ @Test public void testCodeReview() { - IGerritHudsonTriggerConfig config = Setup.createConfig(); + IGerritHudsonTriggerConfig config = Setup.createMockableConfig(); ParameterExpander instance = new ParameterExpander(config); Integer result = instance.getMinimumCodeReviewValue(parameter.memoryImprint, true); if (parameter.expectedCodeReview == null) { @@ -108,7 +108,7 @@ public void testCodeReview() { */ @Test public void testVerified() { - IGerritHudsonTriggerConfig config = Setup.createConfig(); + IGerritHudsonTriggerConfig config = Setup.createMockableConfig(); ParameterExpander instance = new ParameterExpander(config); Integer result = instance.getMinimumVerifiedValue(parameter.memoryImprint, true, Integer.MAX_VALUE); if (parameter.expectedVerified == null) { diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderTest.java index 43ea014a4..70b628983 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/ParameterExpanderTest.java @@ -24,6 +24,7 @@ */ package com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier.model.BuildMemory.MemoryImprint; @@ -57,6 +58,8 @@ import org.junit.Test; import org.mockito.MockedStatic; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.core.IsInstanceOf.instanceOf; import static org.junit.Assert.assertEquals; @@ -104,8 +107,8 @@ public void testGetBuildStartedCommand() throws Exception { TaskListener taskListener = mock(TaskListener.class); GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildStartedVerifiedValue()).thenReturn(null); - when(trigger.getGerritBuildStartedCodeReviewValue()).thenReturn(32); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED)).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED)).thenReturn(32); when(trigger.getBuildStartMessage()).thenReturn("${START_MESSAGE_VAR}"); AbstractProject project = mock(AbstractProject.class); @@ -115,8 +118,7 @@ public void testGetBuildStartedCommand() throws Exception { PatchsetCreated event = Setup.createPatchsetCreated(); BuildsStartedStats stats = Setup.createBuildStartedStats(event); - IGerritHudsonTriggerConfig config = Setup.createConfig(); - + IGerritHudsonTriggerConfig config = Setup.createMockableConfig(); try (MockedStatic messageProviderMockedStatic = mockStatic(GerritMessageProvider.class)) { List messageProviderExtensionList = new LinkedList(); @@ -159,19 +161,19 @@ public void testGetMinimumVerifiedValue() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[4]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(3); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(3); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableVerifiedValue()).thenReturn(1); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)).thenReturn(1); entries[1] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.UNSTABLE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableVerifiedValue()).thenReturn(-1); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)).thenReturn(-1); entries[2] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.UNSTABLE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildNotBuiltVerifiedValue()).thenReturn(-4); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT)).thenReturn(-4); entries[3] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.NOT_BUILT); when(memoryImprint.getEntries()).thenReturn(entries); @@ -199,19 +201,19 @@ public void testGetMinimumCodeReviewValue() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[4]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(3); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(3); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableCodeReviewValue()).thenReturn(1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(1); entries[1] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.UNSTABLE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableCodeReviewValue()).thenReturn(-1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(-1); entries[2] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.UNSTABLE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildNotBuiltCodeReviewValue()).thenReturn(-4); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT)).thenReturn(-4); entries[3] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.NOT_BUILT); when(memoryImprint.getEntries()).thenReturn(entries); @@ -240,17 +242,17 @@ public void testGetMinimumCodeReviewValueOneUnstableSkipped() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[3]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildUnstableCodeReviewValue()).thenReturn(-1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(-1); SkipVote skipVote = new SkipVote(false, false, true, false, false); when(trigger.getSkipVote()).thenReturn(skipVote); entries[1] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.UNSTABLE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(2); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(2); entries[2] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); @@ -275,7 +277,7 @@ public void testGetMinimumCodeReviewValueOneSuccessfulSkipped() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[1]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); SkipVote skipVote = new SkipVote(true, false, false, false, false); when(trigger.getSkipVote()).thenReturn(skipVote); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); @@ -301,11 +303,11 @@ public void testGetMinimumCodeReviewValueForOneJobOverridenBuildSuccessful() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[2]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(Integer.valueOf(2)); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(Integer.valueOf(2)); entries[1] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); when(memoryImprint.getEntries()).thenReturn(entries); @@ -331,11 +333,11 @@ public void testGetMinimumCodeReviewValueForOneJobOverridenBuildFailed() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[2]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(null); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.FAILURE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(Integer.valueOf(-2)); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(Integer.valueOf(-2)); entries[1] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.FAILURE); when(memoryImprint.getEntries()).thenReturn(entries); @@ -361,11 +363,11 @@ public void testGetMinimumCodeReviewValueForOneJobOverridenMixed() { MemoryImprint.Entry[] entries = new MemoryImprint.Entry[2]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(null); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.FAILURE); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(Integer.valueOf(2)); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(Integer.valueOf(2)); entries[1] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); when(memoryImprint.getEntries()).thenReturn(entries); @@ -383,14 +385,14 @@ public void testGetMinimumCodeReviewValueForOneJobOverridenMixed() { */ @Test public void testGetVerifiedValueOneSuccessJobAndMissingFailedJob() { - IGerritHudsonTriggerConfig config = Setup.createConfigWithCodeReviewsNull(); + IGerritHudsonTriggerConfig config = Setup.createMockableConfig(); ParameterExpander instance = new ParameterExpander(config, jenkins); MemoryImprint memoryImprint = mock(MemoryImprint.class); MemoryImprint.Entry[] entries = new MemoryImprint.Entry[2]; GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedVerifiedValue()).thenReturn(Integer.valueOf(2)); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(Integer.valueOf(2)); entries[0] = Setup.createAndSetupMemoryImprintEntry(trigger, Result.SUCCESS); trigger = mock(GerritTrigger.class); @@ -401,8 +403,8 @@ public void testGetVerifiedValueOneSuccessJobAndMissingFailedJob() { // The only verified value available is of successful build, // but score should be saturated to Failed verified value from config. Integer result = instance.getMinimumVerifiedValue(memoryImprint, false, - config.getGerritBuildFailedVerifiedValue()); - assertEquals(Integer.valueOf(config.getGerritBuildFailedVerifiedValue()), result); + config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)); + assertEquals(config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED), result); } /** @@ -503,8 +505,8 @@ public void testGetBuildCompletedCommandMulipleBuildsMessageOrder() throws IOExc @Test public void testGetBuildCompletedMissingFailedBuild() throws IOException, InterruptedException { int buildResults = 2; - IGerritHudsonTriggerConfig config = Setup.createConfig(); - Integer expectedVerifiedVote = config.getGerritBuildFailedVerifiedValue(); + IGerritHudsonTriggerConfig config = Setup.createMockableConfig(); + Integer expectedVerifiedVote = config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED); PatchsetCreated event = Setup.createPatchsetCreated(); TaskListener taskListener = mock(TaskListener.class); @@ -656,8 +658,8 @@ public void tryGetBuildCompletedCommandEventWithResults(String customUrl, String TaskListener taskListener = mock(TaskListener.class); GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(null); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(32); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(32); when(trigger.getCustomUrl()).thenReturn(customUrl); AbstractProject project = mock(AbstractProject.class); Setup.setTrigger(trigger, project); @@ -749,8 +751,8 @@ public void tryBuildStatsFailureCommand(String unsuccessfulMessage, String expec TaskListener taskListener = mock(TaskListener.class); GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(null); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(32); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(32); AbstractProject project = mock(AbstractProject.class); Setup.setTrigger(trigger, project); @@ -811,7 +813,7 @@ public void getBuildStatsFailureCommandWithNullsForCodeReviewValues() throws Exc GerritTrigger trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(null); AbstractProject project = mock(AbstractProject.class); Setup.setTrigger(trigger, project); diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/job/rest/BuildCompletedRestCommandJobHudsonTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/job/rest/BuildCompletedRestCommandJobHudsonTest.java index b39fa8db6..8add4d1f9 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/job/rest/BuildCompletedRestCommandJobHudsonTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/job/rest/BuildCompletedRestCommandJobHudsonTest.java @@ -26,6 +26,7 @@ import com.sonyericsson.hudson.plugins.gerrit.trigger.GerritServer; import com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger; @@ -54,6 +55,8 @@ import java.io.PrintWriter; import java.util.Collections; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -108,8 +111,8 @@ private void runTest() throws Exception { null, null, null, false) )); trigger.setSilentMode(false); - trigger.setGerritBuildSuccessfulCodeReviewValue(1); - trigger.setGerritBuildSuccessfulVerifiedValue(1); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL, 1); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL, 1); PluginImpl.getInstance().getHandler().post(event); @@ -130,7 +133,7 @@ private void runTest() throws Exception { j.assertStringContains(json.getString("message"), "Build Successful"); JSONObject labels = json.getJSONObject("labels"); - assertEquals(1, labels.getInt(Constants.CODE_REVIEW_LABEL)); + assertEquals(1, labels.getInt(CODE_REVIEW_LABEL)); assertEquals(1, labels.getInt(Constants.VERIFIED_LABEL)); } /** diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/WorkflowTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/WorkflowTest.java index f11070181..03e8a27c0 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/WorkflowTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/WorkflowTest.java @@ -25,6 +25,7 @@ import com.sonyericsson.hudson.plugins.gerrit.trigger.GerritServer; import com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch; @@ -53,6 +54,8 @@ import java.io.PrintWriter; import java.util.Collections; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.beans.HasPropertyWithValue.hasProperty; import static org.hamcrest.core.AllOf.allOf; @@ -235,31 +238,6 @@ public void testWorkflowStepSetsUnsuccessfulMessageWithSuccessfulBuild() throws } } - /** - * Tests a {@link JenkinsRule#configRoundtrip(hudson.model.Job)} on the workflow job. - * - * @throws Exception if so. - */ - @Test - public void testConfigRoundTrip() throws Exception { - PatchsetCreated event = Setup.createPatchsetCreated(PluginImpl.DEFAULT_SERVER_NAME); - WorkflowJob job = createWorkflowJob(event); - jenkinsRule.configRoundtrip(job); - job = (WorkflowJob)jenkinsRule.jenkins.getItem("WFJob"); - GerritTrigger trigger = GerritTrigger.getTrigger(job); - assertFalse(trigger.isSilentMode()); - assertEquals(1, trigger.getGerritBuildSuccessfulCodeReviewValue().intValue()); - assertEquals(1, trigger.getGerritBuildSuccessfulVerifiedValue().intValue()); - assertEquals(0, trigger.getGerritBuildFailedCodeReviewValue().intValue()); - assertThat(trigger.getGerritProjects(), hasItem( - allOf( - instanceOf(GerritProject.class), - hasProperty("compareType", is(CompareType.PLAIN)), - hasProperty("pattern", equalTo(event.getChange().getProject())) - ) - )); - } - /** * Creates a {@link WorkflowJob} with a configured {@link GerritTrigger}. * @@ -275,6 +253,39 @@ private WorkflowJob createWorkflowJob(PatchsetCreated event) throws IOException + "}}\n"); } + /** + * Tests a {@link JenkinsRule#configRoundtrip(hudson.model.Job)} on the workflow job. + * + * @throws Exception if so. + */ + @Test + public void testConfigRoundTrip() throws Exception { + MockGerritServer gerritServer = MockGerritServer.get(jenkinsRule); + + gerritServer.start(); + try { + PatchsetCreated event = Setup.createPatchsetCreated(gerritServer.getName()); + WorkflowJob job = createWorkflowJob(event); + jenkinsRule.configRoundtrip(job); + job = (WorkflowJob)jenkinsRule.jenkins.getItem("WFJob"); + GerritTrigger trigger = GerritTrigger.getTrigger(job); + assertFalse(trigger.isSilentMode()); + assertEquals(1, trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL).intValue()); + assertEquals(1, trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL).intValue()); + assertEquals(0, trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED).intValue()); + assertThat(trigger.getGerritProjects(), hasItem( + allOf( + instanceOf(GerritProject.class), + hasProperty("compareType", is(CompareType.PLAIN)), + hasProperty("pattern", equalTo(event.getChange().getProject())) + ) + )); + } + finally { + gerritServer.stop(); + } + } + /** * Creates a {@link WorkflowJob} with a configured {@link GerritTrigger} and given workflow DSL script. * @@ -294,8 +305,8 @@ private WorkflowJob createWorkflowJob(PatchsetCreated event, String script) thro null, null, null, false) )); trigger.setSilentMode(false); - trigger.setGerritBuildSuccessfulCodeReviewValue(1); - trigger.setGerritBuildSuccessfulVerifiedValue(1); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL, 1); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL, 1); return job; } diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/MockGerritHudsonTriggerConfig.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/MockGerritHudsonTriggerConfig.java index f36bf1d8b..473d1f046 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/MockGerritHudsonTriggerConfig.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/MockGerritHudsonTriggerConfig.java @@ -24,6 +24,7 @@ package com.sonyericsson.hudson.plugins.gerrit.trigger.mock; import com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.ReplicationConfig; @@ -57,6 +58,7 @@ public String getGerritCmdBuildStarted() { + " PATCHSET=" + " VERIFIED=" + " CODEREVIEW=" + + " CUSTOMLABEL=" + " NOTIFICATION_LEVEL=" + " REFSPEC= MSG=I started a build." + " BUILDURL=" @@ -76,6 +78,7 @@ public String getGerritCmdBuildSuccessful() { + " PATCHSET=" + " VERIFIED=" + " CODEREVIEW=" + + " CUSTOMLABEL=" + " NOTIFICATION_LEVEL=" + " REFSPEC= MSG='Build Successful '" + " BUILDURL=" @@ -94,6 +97,7 @@ public String getGerritCmdBuildFailed() { + " PATCHSET=" + " VERIFIED=-1" + " CODEREVIEW=" + + " CUSTOMLABEL=" + " NOTIFICATION_LEVEL=" + " REFSPEC= MSG='Build Failed '" + " BUILDURL=" @@ -112,6 +116,7 @@ public String getGerritCmdBuildUnstable() { + " PATCHSET=" + " VERIFIED=" + " CODEREVIEW=" + + " CUSTOMLABEL=" + " NOTIFICATION_LEVEL=" + " REFSPEC= MSG='The build is Unstable. BS='" + " BUILDURL=" @@ -131,6 +136,7 @@ public String getGerritCmdBuildNotBuilt() { + " PATCHSET=" + " VERIFIED=" + " CODEREVIEW=" + + " CUSTOMLABEL=" + " NOTIFICATION_LEVEL=" + " REFSPEC=" + " MSG='No Builds Executed '"; @@ -143,6 +149,7 @@ public String getGerritCmdBuildAborted() { + " PATCHSET=" + " VERIFIED=-1" + " CODEREVIEW=" + + " CUSTOMLABEL=" + " NOTIFICATION_LEVEL=" + " REFSPEC= MSG='The build was Aborted. BS='" + " BUILDURL=" @@ -169,6 +176,11 @@ public Secret getGerritAuthKeyFileSecretPassword() { return Secret.decrypt("{Secret}"); } + @Override + public Integer getLabelVote(String label, BuildStatus status) { + return null; + } + @Override public String getGerritFrontEndUrl() { return "http://gerrit/"; @@ -402,7 +414,13 @@ public String getGerritFrontEndUrlFor(GerritTriggeredEvent event) { @Override public List getCategories() { - return new LinkedList(); + VerdictCategory verdictCategory = new VerdictCategory("Custom-Label", + "Custom-Label", -1,-2,-3,-4,-5,-6); + return new LinkedList<>() { + { + add(verdictCategory); + } + }; } @Override diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/Setup.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/Setup.java index 774de959d..4ab3ef316 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/Setup.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/mock/Setup.java @@ -23,7 +23,9 @@ */ package com.sonyericsson.hudson.plugins.gerrit.trigger.mock; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTriggerDescriptor; import com.sonymobile.tools.gerrit.gerritevents.dto.attr.Account; import com.sonymobile.tools.gerrit.gerritevents.dto.attr.Approval; @@ -64,6 +66,7 @@ import hudson.model.Job; import hudson.model.Result; import hudson.model.TaskListener; +import hudson.os.SU; import hudson.security.SecurityRealm; import hudson.triggers.Trigger; import hudson.triggers.TriggerDescriptor; @@ -82,6 +85,8 @@ import java.util.LinkedList; import java.util.List; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.mockito.ArgumentMatchers.same; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; @@ -123,6 +128,63 @@ public static MockGerritHudsonTriggerConfig createConfig() { return new MockGerritHudsonTriggerConfig(); } + /** + * Gives you a mocked Config that can be furthered configured + * @return IGerritHudsonTriggerConfig mock + */ + public static IGerritHudsonTriggerConfig createMockableConfig() { + IGerritHudsonTriggerConfig config = mock(IGerritHudsonTriggerConfig.class); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED)).thenReturn(2); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(4); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(-2); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(-4); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT)).thenReturn(-6); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED)).thenReturn(3); + + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.STARTED)).thenReturn(1); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(3); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(-1); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)).thenReturn(-3); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT)).thenReturn(-5); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED)).thenReturn(-2); + + when(config.getGerritCmdBuildFailed()).thenReturn("CHANGE=" + + " CHANGE_ID=" + + " PATCHSET=" + + " VERIFIED=-1" + + " CODEREVIEW=" + + " CUSTOMLABEL=" + + " NOTIFICATION_LEVEL=" + + " REFSPEC= MSG='Build Failed '" + + " BUILDURL=" + + " STARTED_STATS=" + + " ENV_BRANCH=$BRANCH" + + " ENV_CHANGE=$CHANGE" + + " ENV_PATCHSET=$PATCHSET" + + " ENV_REFSPEC=$REFSPEC" + + " ENV_CHANGEURL=$CHANGE_URL"); + when(config.getGerritCmdBuildStarted()).thenReturn("CHANGE=" + + " CHANGE_ID=" + + " PATCHSET=" + + " VERIFIED=" + + " CODEREVIEW=" + + " CUSTOMLABEL=" + + " NOTIFICATION_LEVEL=" + + " REFSPEC= MSG=I started a build." + + " BUILDURL=" + + " STARTED_STATS=" + + " ENV_BRANCH=$BRANCH" + + " ENV_CHANGE=$CHANGE" + + " ENV_PATCHSET=$PATCHSET" + + " ENV_REFSPEC=$REFSPEC" + + " ENV_CHANGEURL=$CHANGE_URL" + + " Message\nwith newline"); + + when(config.isEnablePluginMessages()).thenReturn(true); + + return config; + } + /** * Gives you a Config mock with nulled code review values. * @return MockGerritHudsonTriggerConfig mock. @@ -625,18 +687,18 @@ public static GerritTrigger createDefaultTrigger(Job job) { trigger.setTriggerOnEvents(triggerOnEvents); trigger.setSilentMode(silentMode); trigger.setSilentStartMode(silentStart); - trigger.setGerritBuildStartedVerifiedValue(0); - trigger.setGerritBuildStartedCodeReviewValue(0); - trigger.setGerritBuildSuccessfulVerifiedValue(0); - trigger.setGerritBuildSuccessfulCodeReviewValue(0); - trigger.setGerritBuildFailedVerifiedValue(0); - trigger.setGerritBuildFailedCodeReviewValue(0); - trigger.setGerritBuildUnstableVerifiedValue(0); - trigger.setGerritBuildUnstableCodeReviewValue(0); - trigger.setGerritBuildNotBuiltVerifiedValue(0); - trigger.setGerritBuildNotBuiltCodeReviewValue(0); - trigger.setGerritBuildAbortedVerifiedValue(0); - trigger.setGerritBuildAbortedCodeReviewValue(0); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.STARTED, 0); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL, 0); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED, 0); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE, 0); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.NOT_BUILT, 0); + trigger.setLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED, 0); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.STARTED, 0); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL, 0); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.FAILED, 0); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE, 0); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.NOT_BUILT, 0); + trigger.setLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED, 0); trigger.setServerName(PluginImpl.DEFAULT_SERVER_NAME); if (job != null) { @@ -802,32 +864,32 @@ public static MemoryImprint.Entry createAndSetupMemoryImprintEntry(Result result GerritTrigger trigger = mock(GerritTrigger.class); SkipVote skipVote = null; if (result == Result.SUCCESS) { - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(resultsCodeReviewVote); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(resultsVerifiedVote); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(resultsCodeReviewVote); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(resultsVerifiedVote); if (shouldSkip) { skipVote = new SkipVote(true, false, false, false, false); } } else if (result == Result.FAILURE) { - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(resultsCodeReviewVote); - when(trigger.getGerritBuildFailedVerifiedValue()).thenReturn(resultsVerifiedVote); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(resultsCodeReviewVote); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(resultsVerifiedVote); if (shouldSkip) { skipVote = new SkipVote(false, true, false, false, false); } } else if (result == Result.UNSTABLE) { - when(trigger.getGerritBuildUnstableCodeReviewValue()).thenReturn(resultsCodeReviewVote); - when(trigger.getGerritBuildUnstableVerifiedValue()).thenReturn(resultsVerifiedVote); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.UNSTABLE)).thenReturn(resultsCodeReviewVote); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.UNSTABLE)).thenReturn(resultsVerifiedVote); if (shouldSkip) { skipVote = new SkipVote(false, false, true, false, false); } } else if (result == Result.NOT_BUILT) { - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(1); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); if (shouldSkip) { skipVote = new SkipVote(false, false, false, true, false); } } else if (result == Result.ABORTED) { - when(trigger.getGerritBuildAbortedCodeReviewValue()).thenReturn(resultsCodeReviewVote); - when(trigger.getGerritBuildAbortedVerifiedValue()).thenReturn(resultsVerifiedVote); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED)).thenReturn(resultsCodeReviewVote); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED)).thenReturn(resultsVerifiedVote); if (shouldSkip) { skipVote = new SkipVote(false, false, false, false, true); } diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/BackCompat2173JenkinsTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/BackCompat2173JenkinsTest.java index d060518e9..4dc528836 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/BackCompat2173JenkinsTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/BackCompat2173JenkinsTest.java @@ -90,9 +90,6 @@ private void verifyAllOff(GerritTrigger trigger) { assertNotNull(trigger); assertNotNull(trigger.getSkipVote()); assertFalse("Skip not built", trigger.getSkipVote().isOnNotBuilt()); - assertNotNull(trigger.getGerritBuildFailedCodeReviewValue()); - assertEquals("Build Failed Code Review value", Integer.valueOf(0), - trigger.getGerritBuildFailedCodeReviewValue()); assertFalse("Silent Mode", trigger.isSilentMode()); assertEquals("Notification level", "ALL", trigger.getNotificationLevel()); assertFalse("Silent start", trigger.isSilentStartMode()); @@ -164,9 +161,6 @@ private void verifyAllOn(GerritTrigger trigger) { assertNotNull(trigger); assertNotNull(trigger.getSkipVote()); assertTrue("Skip not built", trigger.getSkipVote().isOnNotBuilt()); - assertNotNull(trigger.getGerritBuildNotBuiltCodeReviewValue()); - assertEquals("Build Failed Code Review value", Integer.valueOf(0), - trigger.getGerritBuildNotBuiltCodeReviewValue()); assertFalse("Silent Mode", trigger.isSilentMode()); assertEquals("Notification level", "OWNER", trigger.getNotificationLevel()); assertTrue("Silent start", trigger.isSilentStartMode()); diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/gerritnotifier/SpecGerritVerifiedSetterTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/gerritnotifier/SpecGerritVerifiedSetterTest.java index 18477780a..840c0264a 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/gerritnotifier/SpecGerritVerifiedSetterTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/gerritnotifier/SpecGerritVerifiedSetterTest.java @@ -24,6 +24,7 @@ */ package com.sonyericsson.hudson.plugins.gerrit.trigger.spec.gerritnotifier; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.extensions.GerritTriggeredBuildListener; import com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier.GerritMessageProvider; @@ -48,6 +49,8 @@ import java.io.IOException; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.CODE_REVIEW_LABEL; +import static com.sonyericsson.hudson.plugins.gerrit.trigger.config.Constants.VERIFIED_LABEL; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.same; @@ -101,10 +104,10 @@ public void setUp() throws Exception { doReturn(build).when(project).getBuild(anyString()); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildSuccessfulVerifiedValue()).thenReturn(null); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildFailedVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(null); Setup.setTrigger(trigger, project); jenkinsMockedStatic = mockStatic(Jenkins.class); @@ -147,8 +150,8 @@ public void shouldCallGerritWithVerifiedOkFlagWhenBuildWasSuccessful() String parameterString = "gerrit review MSG=OK VERIFIED= CODEREVIEW="; when(config.getGerritCmdBuildSuccessful()).thenReturn(parameterString); - when(config.getGerritBuildSuccessfulVerifiedValue()).thenReturn(1); - when(config.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(1); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); GerritNotifier notifier = new GerritNotifier(config, mockGerritCmdRunner, jenkins); notifier.buildCompleted(memory.getMemoryImprint(event), taskListener); @@ -177,8 +180,8 @@ public void shouldCallGerritWithVerifiedRejectFlagWhenBuildWasNotSuccessful() String parameterString = "gerrit review MSG=Failed VERIFIED= CODEREVIEW="; when(config.getGerritCmdBuildFailed()).thenReturn(parameterString); - when(config.getGerritBuildFailedVerifiedValue()).thenReturn(-1); - when(config.getGerritBuildFailedCodeReviewValue()).thenReturn(-1); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(-1); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(-1); GerritNotifier notifier = new GerritNotifier(config, mockGerritCmdRunner, jenkins); notifier.buildCompleted(memory.getMemoryImprint(event), taskListener); @@ -218,8 +221,8 @@ public void shouldCallGerritWithVerifiedFailedFlagWhenBuildOneBuildFailedAndAnot when(jenkins.getItemByFullName(eq("MockProject2"), same(Job.class))).thenReturn(project); trigger = mock(GerritTrigger.class); - when(trigger.getGerritBuildFailedCodeReviewValue()).thenReturn(null); - when(trigger.getGerritBuildFailedVerifiedValue()).thenReturn(null); + when(trigger.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(null); + when(trigger.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(null); Setup.setTrigger(trigger, project); memory.completed(event, build); @@ -228,10 +231,10 @@ public void shouldCallGerritWithVerifiedFailedFlagWhenBuildOneBuildFailedAndAnot String parameterString = "gerrit review MSG=FAILED VERIFIED= CODEREVIEW="; when(config.getGerritCmdBuildFailed()).thenReturn(parameterString); - when(config.getGerritBuildSuccessfulVerifiedValue()).thenReturn(1); - when(config.getGerritBuildSuccessfulCodeReviewValue()).thenReturn(1); - when(config.getGerritBuildFailedCodeReviewValue()).thenReturn(-1); - when(config.getGerritBuildFailedVerifiedValue()).thenReturn(-1); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.SUCCESSFUL)).thenReturn(1); + when(config.getLabelVote(CODE_REVIEW_LABEL, BuildStatus.FAILED)).thenReturn(-1); + when(config.getLabelVote(VERIFIED_LABEL, BuildStatus.FAILED)).thenReturn(-1); GerritNotifier notifier = new GerritNotifier(config, mockGerritCmdRunner, jenkins); notifier.buildCompleted(memory.getMemoryImprint(event), taskListener); diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/MockPluginCheckerConfig.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/MockPluginCheckerConfig.java index af579f3c8..b77d6b8bf 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/MockPluginCheckerConfig.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/utils/MockPluginCheckerConfig.java @@ -1,6 +1,7 @@ package com.sonyericsson.hudson.plugins.gerrit.trigger.utils; import com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory; +import com.sonyericsson.hudson.plugins.gerrit.trigger.config.BuildStatus; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.config.ReplicationConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.BuildCancellationPolicy; @@ -283,6 +284,11 @@ public Secret getGerritAuthKeyFileSecretPassword() { return null; } + @Override + public Integer getLabelVote(String label, BuildStatus status) { + return null; + } + @Override public int getWatchdogTimeoutMinutes() { return 0; diff --git a/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/casc.yaml b/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/casc.yaml index c1ecc0ce1..0d1996826 100644 --- a/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/casc.yaml +++ b/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/casc.yaml @@ -24,20 +24,6 @@ unclassified: abortManualPatchsets: true abortSameTopic: true - gerritBuildStartedVerifiedValue: 4 - gerritBuildSuccessfulVerifiedValue: 4 - gerritBuildFailedVerifiedValue: 4 - gerritBuildUnstableVerifiedValue: 4 - gerritBuildNotBuiltVerifiedValue: 4 - gerritBuildAbortedVerifiedValue: 4 - - gerritBuildStartedCodeReviewValue: 4 - gerritBuildSuccessfulCodeReviewValue: 4 - gerritBuildFailedCodeReviewValue: 4 - gerritBuildUnstableCodeReviewValue: 4 - gerritBuildNotBuiltCodeReviewValue: 4 - gerritBuildAbortedCodeReviewValue: 4 - gerritCmdBuildStarted: "gerrit review , --message 'Build Started CMD ' --verified --code-review --tag autogenerated:jenkins-gerrit-trigger" gerritCmdBuildSuccessful: "gerrit review , --message 'Build Successful CMD ' --verified --code-review --tag autogenerated:jenkins-gerrit-trigger" gerritCmdBuildFailed: "gerrit review , --message 'Build Failed CMD ' --verified --code-review --tag autogenerated:jenkins-gerrit-trigger" @@ -54,6 +40,22 @@ unclassified: projectListRefreshInterval: 3636 notificationLevel: OWNER_REVIEWERS categories: + - verdictValue: Code-Review + verdictDescription: Code-Review + buildStartedVote: 4 + buildSuccessfulVote: 4 + buildFailedVote: 4 + buildUnstableVote: 4 + buildNotBuiltVote: 4 + buildAbortedVote: 4 + - verdictValue: Verified + verdictDescription: Verified + buildStartedVote: 4 + buildSuccessfulVote: 4 + buildFailedVote: 4 + buildUnstableVote: 4 + buildNotBuiltVote: 4 + buildAbortedVote: 4 - verdictValue: foo verdictDescription: bar - verdictValue: baz diff --git a/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/extensions/GerritTriggeredBuildListenerTest/gerrit-trigger.xml b/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/extensions/GerritTriggeredBuildListenerTest/gerrit-trigger.xml index f18080d03..6dc5c9396 100644 --- a/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/extensions/GerritTriggeredBuildListenerTest/gerrit-trigger.xml +++ b/src/test/resources/com/sonyericsson/hudson/plugins/gerrit/trigger/extensions/GerritTriggeredBuildListenerTest/gerrit-trigger.xml @@ -12,14 +12,24 @@ gerrit review --message 'Build Failed <BUILDS_STATS>' --label Verified=<VERIFIED> --label Code-Review=<CODE_REVIEW> <CHANGE>,<PATCHSET> gerrit review --message 'Build Started <BUILDURL> <STARTED_STATS>' --label Verified=<VERIFIED> --label Code-Review=<CODE_REVIEW> <CHANGE>,<PATCHSET> http://localhost/ - 0 - 0 - 1 - 0 - 0 - -1 - 0 - -1 + + + Code-Review + Code-Review + 0 + 0 + -1 + -1 + + + Verified + Verified + 0 + 1 + 0 + 0 + + true 1 1