changeset 891:d1a5fc6c1d6e

Log agent-side checkout progress with blocks
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Fri, 07 Nov 2014 14:55:14 +0100
parents 771ae1b2f0b1
children c28e68e22272
files mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialBuildLogProgress.java mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MercurialCommandLine.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java
diffstat 5 files changed, 37 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialBuildLogProgress.java	Fri Nov 07 14:30:28 2014 +0100
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialBuildLogProgress.java	Fri Nov 07 14:55:14 2014 +0100
@@ -19,9 +19,12 @@
 import jetbrains.buildServer.agent.BuildProgressLogger;
 import org.jetbrains.annotations.NotNull;
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 public class MercurialBuildLogProgress implements MercurialProgress {
 
   private final BuildProgressLogger myLogger;
+  private final AtomicInteger myBlockMessageCount = new AtomicInteger(0);
   private String myPrevMessage;
   private int myPrevPercents;
 
@@ -30,15 +33,19 @@
   }
 
   public void progressStarted(@NotNull String progressMessage) {
+    myBlockMessageCount.set(0);
+    myLogger.activityStarted(progressMessage, "CUSTOM_HG_PROGRESS");
+  }
+
+  public void reportProgress(@NotNull String progressMessage) {
+    myBlockMessageCount.incrementAndGet();
     myLogger.message(progressMessage);
   }
 
   public void progressFinished(@NotNull String progressMessage) {
-    myLogger.message(progressMessage);
-  }
-
-  public void reportProgress(@NotNull String progressMessage) {
-    myLogger.message(progressMessage);
+    if (myBlockMessageCount.get() == 0)
+      myLogger.message("");//add an empty message so that the empty block is shown in UI
+    myLogger.activityFinished(progressMessage, "CUSTOM_HG_PROGRESS");
   }
 
   public void reportProgress(float percentage, @NotNull String stage) {
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java	Fri Nov 07 14:30:28 2014 +0100
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java	Fri Nov 07 14:55:14 2014 +0100
@@ -74,7 +74,7 @@
     myPullTimeout = pluginConfig.getPullTimeout(build);
     myUseTraceback = pluginConfig.runWithTraceback(build);
     myProfile = pluginConfig.runWithProfile(build);
-    myProgress = new MercurialBuildLogProgress(build.getBuildLogger());
+    myProgress = new MercurialBuildLogProgress(build.getBuildLogger().getFlowLogger("-1"));
   }
 
 
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java	Fri Nov 07 14:30:28 2014 +0100
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CloneCommand.java	Fri Nov 07 14:55:14 2014 +0100
@@ -103,6 +103,7 @@
       cli.addParameters("--config", "progress.format=topic number");
       cli.addParameters("--config", "progress.delay=0");
       cli.addParameters("--config", "progress.assume-tty=True");
+      cli.setHasProgress(true);
     }
 
     String repositoryUrl = myAuthSettings.getRepositoryUrlWithCredentials(myRepository);
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MercurialCommandLine.java	Fri Nov 07 14:30:28 2014 +0100
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MercurialCommandLine.java	Fri Nov 07 14:55:14 2014 +0100
@@ -36,6 +36,7 @@
   private final Set<String> myPrivateData;
   private Charset myCharset;
   private String myDescription = "";
+  private boolean myHasProgress = false;
 
   public MercurialCommandLine(@NotNull final Set<String> privateData) {
     myPrivateData = privateData;
@@ -174,13 +175,30 @@
     myDescription = description;
   }
 
+  public void setHasProgress(boolean hasProgress) {
+    myHasProgress = hasProgress;
+  }
+
   public void logCommandStarted(@NotNull MercurialProgress progress) {
-    if (!isEmpty(myDescription))
-      progress.progressStarted(myDescription);
+    if (!isEmpty(myDescription)) {
+      if (myHasProgress) {
+        progress.progressStarted(getProgressMessage());
+      } else {
+        progress.reportProgress(getProgressMessage());
+      }
+    }
+
   }
 
   public void logCommandFinished(@NotNull MercurialProgress progress) {
-    if (!isEmpty(myDescription))
-      progress.progressFinished(myDescription);
+    if (!isEmpty(myDescription) && myHasProgress)
+      progress.progressFinished(getProgressMessage());
+  }
+
+  @NotNull
+  private String getProgressMessage() {
+    String result = myDescription != null ? "[" + myWorkingDirectory + "] " : "";
+    result += myDescription;
+    return result;
   }
 }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java	Fri Nov 07 14:30:28 2014 +0100
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java	Fri Nov 07 14:55:14 2014 +0100
@@ -82,6 +82,7 @@
       cli.addParameters("--config", "progress.format=topic number");
       cli.addParameters("--config", "progress.delay=0");
       cli.addParameters("--config", "progress.assume-tty=True");
+      cli.setHasProgress(true);
     }
 
     String pullUrl = myAuthSettings.getRepositoryUrlWithCredentials(myPullUrl);