Make tags appears on all automerger created changes.

Previously, tags were failing to appear on the lowest change in the
chain, because tags were being applied when downstream merges were being
created. Instead, apply a tag on downstream change creation.

Change-Id: I395a9627e63211bd12de898b8125d7f64143faa2
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 f3def07..0a1287f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -529,7 +529,9 @@
             sdsMergeInput.downstreamBranch);
       }
 
-      gApi.changes().create(downstreamChangeInput);
+      ChangeApi downstreamChange = gApi.changes().create(downstreamChangeInput);
+      tagChange(downstreamChange.get(), "Automerger change created!");
+      
     }
   }
 
@@ -676,6 +678,18 @@
       log.error("Automerger could not set label, but still continuing.", e);
     }
   }
+  
+  private void tagChange(ChangeInfo change, String message) throws RestApiException {
+    ReviewInput reviewInput = new ReviewInput();
+    reviewInput.message(message);
+    reviewInput.notify = NotifyHandling.NONE;
+    reviewInput.tag = AUTOMERGER_TAG;
+    try {
+      gApi.changes().id(change.id).revision(CURRENT).review(reviewInput);
+    } catch (AuthException e) {
+      log.error("Automerger could not set label, but still continuing.", e);
+    }
+  }
 
   private void updateDownstreamMerge(
       String newParentRevision, String upstreamSubject, Integer sourceNum, boolean doMerge)
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
index 89bbad0..90be9ab 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
@@ -83,25 +83,24 @@
             .withOption(ListChangesOption.CURRENT_REVISION)
             .get();
     assertThat(changesInTopic).hasSize(3);
-    // +2 and submit
-    merge(result);
+    
     List<ChangeInfo> sortedChanges = sortedChanges(changesInTopic);
 
     ChangeInfo dsOneChangeInfo = sortedChanges.get(0);
     assertThat(dsOneChangeInfo.branch).isEqualTo("ds_one");
     ChangeApi dsOneChange = gApi.changes().id(dsOneChangeInfo._number);
-    assertThat(getVote(dsOneChange, "Code-Review").value).isEqualTo(2);
+    assertThat(getVote(dsOneChange, "Code-Review").value).isEqualTo(0);
     assertThat(getVote(dsOneChange, "Code-Review").tag).isEqualTo("autogenerated:Automerger");
 
     ChangeInfo dsTwoChangeInfo = sortedChanges.get(1);
     assertThat(dsTwoChangeInfo.branch).isEqualTo("ds_two");
     ChangeApi dsTwoChange = gApi.changes().id(dsTwoChangeInfo._number);
-    assertThat(getVote(dsTwoChange, "Code-Review").value).isEqualTo(2);
+    assertThat(getVote(dsTwoChange, "Code-Review").value).isEqualTo(0);
     assertThat(getVote(dsTwoChange, "Code-Review").tag).isEqualTo("autogenerated:Automerger");
 
     ChangeInfo masterChangeInfo = sortedChanges.get(2);
     ChangeApi masterChange = gApi.changes().id(masterChangeInfo._number);
-    assertThat(getVote(masterChange, "Code-Review").value).isEqualTo(2);
+    assertThat(getVote(masterChange, "Code-Review").value).isEqualTo(0);
     assertThat(getVote(masterChange, "Code-Review").tag).isEqualTo(null);
     assertThat(masterChangeInfo.branch).isEqualTo("master");
 
@@ -113,6 +112,12 @@
         .isEqualTo("[automerger] " + masterSubject + " am: " + shortMasterSha);
     assertThat(dsTwoChangeInfo.subject)
         .isEqualTo("[automerger] " + masterSubject + " am: " + shortMasterSha);
+    
+    // +2 and submit
+    merge(result);
+    assertThat(getVote(masterChange, "Code-Review").value).isEqualTo(2);
+    assertThat(getVote(dsOneChange, "Code-Review").value).isEqualTo(2);
+    assertThat(getVote(dsTwoChange, "Code-Review").value).isEqualTo(2);
   }
 
   @Test