Add option to not auto-vote on merge success and/or failure.

Change-Id: Ie8e7d9051679d9958a946c0e07a700db5589e3c3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
index 7f0f6d5..1a31d16 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
@@ -242,6 +242,14 @@
     return (short) getConfig().getInt("global", "minAutomergeVote", -2);
   }
 
+  public boolean maxAutomergeVoteDisabled() throws ConfigInvalidException {
+    return getConfig().getBoolean("global", "disableMaxAutomergeVote", false);
+  }
+
+  public boolean minAutomergeVoteDisabled() throws ConfigInvalidException {
+    return getConfig().getBoolean("global", "disableMinAutomergeVote", false);
+  }
+
   // Returns overriden manifest config if specified, default if not
   private String getManifestFile() throws ConfigInvalidException {
     String manifestFile = getConfig().getString("global", null, "manifestFile");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index 40cb02a..766529d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -259,7 +259,9 @@
       reviewInput.notify = NotifyHandling.ALL;
       reviewInput.tag = MERGE_CONFLICT_TAG;
       // Vote minAutomergeVote if we hit a conflict.
-      labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
+      if (!config.minAutomergeVoteDisabled()) {
+        labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
+      }
     }
     reviewInput.labels = labels;
     gApi.changes()
@@ -426,7 +428,9 @@
     ChangeApi downstreamChange = gApi.changes().create(downstreamChangeInput);
 
     // Vote maxAutomergeVote on the change so we know it was successful.
-    updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    if (!config.maxAutomergeVoteDisabled()) {
+      updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    }
   }
 
   public String getOrSetTopic(int sourceId, String topic) throws RestApiException {
@@ -538,7 +542,9 @@
     }
 
     ChangeInfo downstreamChange = originalChange.createMergePatchSet(mergePatchSetInput);
-    updateVote(downstreamChange, config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    if (!config.maxAutomergeVoteDisabled()) {
+      updateVote(downstreamChange, config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    }
   }
 
   private String getPreviousRevision(ChangeApi change, int currentPatchSetNumber)
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 0b46f5c..9410e04 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -39,12 +39,28 @@
   the user will have a vote of 0, so that it can be easily programatically
   distinguished from the otheres.
 
+  Will not vote if disableMaxAutomergeVote is true.
+
 global.minAutomergeVote
 : Value to vote on a failed automerge.
 
   When the automerger detects a merge conflict from one branch to another, it
   will vote minAutomergeVote for the configured automergeLabel.
 
+  Will not vote if disableMinAutomergeVote is true.
+
+global.disableMaxAutomergeVote
+: Whether to vote on a successful automerge.
+
+  If true, will not vote maxAutomergeVote on a successful downstream merge.
+  Defaults to false.
+
+global.disableMinAutomergeVote
+: Whether to vote on a failed automerge.
+
+  If true, will not vote minAutomergeVote on a failed downstream merge.
+  Defaults to false.
+
 global.hostName
 : Hostname to use in a custom conflict message.
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
index 5b35c08..5c5466f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
@@ -210,6 +210,24 @@
     assertThat(configLoader.getMinAutomergeVote()).isEqualTo(-3);
   }
 
+  @Test
+  public void maxAutomergeVoteDisabledTest() throws Exception {
+    defaultSetup("automerger.config");
+    assertThat(configLoader.maxAutomergeVoteDisabled()).isEqualTo(false);
+  }
+
+  @Test
+  public void maxAutomergeVoteDisabledTest_isDisabled() throws Exception {
+    defaultSetup("alternate.config");
+    assertThat(configLoader.maxAutomergeVoteDisabled()).isEqualTo(true);
+  }
+
+  @Test
+  public void minAutomergeVoteDisabledTest() throws Exception {
+    defaultSetup("automerger.config");
+    assertThat(configLoader.minAutomergeVoteDisabled()).isEqualTo(false);
+  }
+
   private void setupTestRepo(
       String resourceName, Project.NameKey projectNameKey, String branchName, String filename)
       throws Exception {
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
index 3f0ed7d..ed3c829 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
+++ b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
@@ -14,6 +14,7 @@
   manifestProject = platform/manifest
   maxAutomergeVote = 5
   minAutomergeVote = -3
+  disableMaxAutomergeVote = true
   ignoreProjects = platform/ignore/me
   conflictMessage = line1\n\
 line2\n\