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..bf394a9ea 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 { +public class VerdictCategory extends AbstractDescribableImpl implements Cloneable { - private String verdictValue; - private String verdictDescription; + 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..8bc58b1a9 --- /dev/null +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/BuildStatus.java @@ -0,0 +1,11 @@ +package com.sonyericsson.hudson.plugins.gerrit.trigger.config; + +public enum BuildStatus { + STARTED, + SUCCESSFUL, + FAILED, + UNSTABLE, + NOT_BUILT, + ABORTED, + NOT_REGISTERED; +} 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..633a6892b 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; @@ -186,18 +188,6 @@ public class Config implements IGerritHudsonTriggerConfig { private String gerritVerifiedCmdBuildNotBuilt; private String gerritVerifiedCmdBuildAborted; private String gerritFrontEndUrl; - private Integer gerritBuildStartedVerifiedValue = null; - private Integer gerritBuildSuccessfulVerifiedValue = null; - private Integer gerritBuildFailedVerifiedValue = null; - private Integer gerritBuildUnstableVerifiedValue = null; - private Integer gerritBuildNotBuiltVerifiedValue = null; - private Integer gerritBuildAbortedVerifiedValue = null; - private Integer gerritBuildStartedCodeReviewValue = null; - private Integer gerritBuildSuccessfulCodeReviewValue = null; - private Integer gerritBuildFailedCodeReviewValue = null; - private Integer gerritBuildUnstableCodeReviewValue = null; - private Integer gerritBuildNotBuiltCodeReviewValue = null; - private Integer gerritBuildAbortedCodeReviewValue = null; private boolean enableManualTrigger; private boolean enablePluginMessages; private boolean triggerOnAllComments; @@ -249,18 +239,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 +255,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 +308,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 +365,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 +385,41 @@ 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) { + categories = new LinkedList<>(); + + if (formData.isEmpty()) + { + 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")) { + 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 +545,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 +1022,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 @@ -1450,12 +1494,12 @@ Object readResolve() { this.gerritVerifiedCmdBuildAborted = this.gerritVerifiedCmdBuildFailed; /* Only set these values when dealnig with an old configuration */ - if (this.gerritBuildAbortedCodeReviewValue == null) { - this.gerritBuildAbortedCodeReviewValue = this.gerritBuildFailedCodeReviewValue; + if (this.getGerritBuildAbortedCodeReviewValue() == null) { + setLabelVote(CODE_REVIEW_LABEL, BuildStatus.ABORTED, this.getGerritBuildFailedCodeReviewValue()); } - if (this.gerritBuildAbortedVerifiedValue == null) { - this.gerritBuildAbortedVerifiedValue = this.gerritBuildFailedVerifiedValue; + if (this.getGerritBuildAbortedVerifiedValue() == null) { + setLabelVote(VERIFIED_LABEL, BuildStatus.ABORTED, this.getGerritBuildFailedVerifiedValue()); } } 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..632a6478f 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,6 +25,8 @@ 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.IGerritHudsonTriggerConfig; import com.sonyericsson.hudson.plugins.gerrit.trigger.gerritnotifier.model.BuildMemory.MemoryImprint; @@ -111,6 +113,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 = getBuildStatusVote(r, value, BuildStatus.STARTED).toString(); + parameters.put(category.getVerdictValue(), voteValue); + } + StringBuilder startedStats = new StringBuilder(); if (stats.getTotalBuildsToStart() > 1) { startedStats.append(stats.toString()); @@ -197,6 +206,36 @@ public Integer getBuildStartedCodeReviewValue(Run r) { } } + /** + * 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) { + logger.warn("Unable to get trigger config for build {} will use global value."); + return 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("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. 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..7cbaf492d 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,22 @@ 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. + */ + public void setCategories(List categories) { + this.categories = categories; + } + /** * Check if topic association is enabled. * @@ -2270,4 +2340,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/config/ConfigTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/config/ConfigTest.java index 3df68c5d6..ff6b85d70 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,20 +24,17 @@ */ 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 org.junit.Assert.assertEquals; @@ -77,18 +74,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 +82,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 +124,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(1), config.getGerritBuildStartedCodeReviewValue()); + assertEquals(Integer.valueOf(2), config.getGerritBuildSuccessfulCodeReviewValue()); + assertEquals(Integer.valueOf(3), config.getGerritBuildFailedCodeReviewValue()); 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(7), config.getGerritBuildStartedVerifiedValue()); + assertEquals(Integer.valueOf(8), config.getGerritBuildSuccessfulVerifiedValue()); + assertEquals(Integer.valueOf(9), config.getGerritBuildFailedVerifiedValue()); + assertEquals(Integer.valueOf(10), config.getGerritBuildUnstableVerifiedValue()); + assertEquals(Integer.valueOf(11), config.getGerritBuildNotBuiltVerifiedValue()); + assertEquals(Integer.valueOf(12), config.getGerritBuildAbortedVerifiedValue()); + assertEquals("http://gerrit:8088/", config.getGerritFrontEndUrl()); assertEquals("gerrit", config.getGerritHostName()); assertEquals(1337, config.getGerritSshPort()); @@ -181,18 +186,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 +236,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(1), config.getGerritBuildStartedCodeReviewValue()); + assertEquals(Integer.valueOf(2), config.getGerritBuildSuccessfulCodeReviewValue()); + assertEquals(Integer.valueOf(3), config.getGerritBuildFailedCodeReviewValue()); 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(7), config.getGerritBuildStartedVerifiedValue()); + assertEquals(Integer.valueOf(8), config.getGerritBuildSuccessfulVerifiedValue()); + assertEquals(Integer.valueOf(9), config.getGerritBuildFailedVerifiedValue()); + assertEquals(Integer.valueOf(10), config.getGerritBuildUnstableVerifiedValue()); + assertEquals(Integer.valueOf(11), config.getGerritBuildNotBuiltVerifiedValue()); + assertEquals(Integer.valueOf(12), config.getGerritBuildAbortedVerifiedValue()); + 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/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/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/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;