diff agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java @ 5:f7602ee7e8b1

implemented symbols index data publishing
author Evgeniy.Koshkin
date Wed, 24 Jul 2013 19:16:16 +0400
parents 53028ba390e0
children 74f725356087
line wrap: on
line diff
--- a/agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java	Wed Jul 24 19:15:35 2013 +0400
+++ b/agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java	Wed Jul 24 19:16:16 2013 +0400
@@ -29,7 +29,7 @@
   public static final String EXE_FILE_EXTENSION = "exe";
   public static final String DLL_FILE_EXTENSION = "dll";
 
-  public static final String SYMBOLS_EXE = "symbols.exe";
+  public static final String SYMBOLS_EXE = "JetBrains.CommandLine.Symbols.exe";
   public static final String DUMP_SYMBOL_SIGN_CMD = "dumpSymbolSign";
   public static final String DUMP_BIN_SIGN_CMD = "dumpBinSign";
 
@@ -51,8 +51,8 @@
       }
 
       @Override
-      public void beforeBuildFinish(@NotNull AgentRunningBuild build, @NotNull BuildFinishedStatus buildStatus) {
-        super.beforeBuildFinish(build, buildStatus);
+      public void afterAtrifactsPublished(@NotNull AgentRunningBuild build, @NotNull BuildFinishedStatus buildStatus) {
+        super.afterAtrifactsPublished(build, buildStatus);
         if (myBuild == null || mySymbolsToProcess == null || myBinariesToProcess == null) return;
         if(myBuild.getBuildFeaturesOfType(SymbolsConstants.BUILD_FEATURE_TYPE).isEmpty()) return;
 
@@ -60,14 +60,21 @@
           myBuild.getBuildLogger().warning("Symbols weren't found in artifacts to be published.");
           LOG.debug("Symbols weren't found in artifacts to be published.");
         } else {
+          myBuild.getBuildLogger().message("Symbols are found in build artifacts.");
           final File targetDir = myBuild.getBuildTempDirectory();
           try {
             final File symbolSignaturesFile = dumpSymbolSignatures(mySymbolsToProcess, targetDir, myBuild.getBuildLogger());
-            myArtifactsWatcher.addNewArtifactsPath(symbolSignaturesFile + "=>" + ".teamcity/symbols/symbol-signatures.xml");
+            if(symbolSignaturesFile.exists()){
+              myArtifactsWatcher.addNewArtifactsPath(symbolSignaturesFile + "=>" + ".teamcity/symbols");
+            }
             final File binariesSignaturesFile = dumpBinarySignatures(myBinariesToProcess, targetDir, myBuild.getBuildLogger());
-            myArtifactsWatcher.addNewArtifactsPath(binariesSignaturesFile + "=>" + ".teamcity/symbols/binary-signatures.xml");
+            if(binariesSignaturesFile.exists()){
+              myArtifactsWatcher.addNewArtifactsPath(binariesSignaturesFile + "=>" + ".teamcity/symbols");
+            }
           } catch (IOException e) {
             LOG.error("Error while dumping symbols/binaries signatures.", e);
+            myBuild.getBuildLogger().error("Error while dumping symbols/binaries signatures.");
+            myBuild.getBuildLogger().exception(e);
           }
         }
         mySymbolsToProcess = null;
@@ -86,8 +93,8 @@
       LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature disabled. No indexing performed.");
       return;
     }
-    LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for symbol files.");
-    myBuild.getBuildLogger().message(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for symbol files.");
+    myBuild.getBuildLogger().message(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for suitable files.");
+    LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for suitable files.");
     mySymbolsToProcess.addAll(getArtifactPathsByFileExtension(artifacts, PDB_FILE_EXTENSION));
     myBinariesToProcess.addAll(getArtifactPathsByFileExtension(artifacts, EXE_FILE_EXTENSION));
     myBinariesToProcess.addAll(getArtifactPathsByFileExtension(artifacts, DLL_FILE_EXTENSION));
@@ -125,10 +132,11 @@
     for(File file : files){
       commandLine.addParameter(file.getPath());
     }
+    buildLogger.message(String.format("Running command %s", commandLine.getCommandLineString()));
     final ExecResult execResult = SimpleCommandLineProcessRunner.runCommand(commandLine, null);
+    buildLogger.message(execResult.getStdout());
     if (execResult.getExitCode() == 0) return;
-    String message = String.format("%s ends with non-zero exit code.", SYMBOLS_EXE);
-    buildLogger.warning(message);
-    LOG.warn(message);
+    buildLogger.warning(String.format("%s ends with non-zero exit code.", SYMBOLS_EXE));
+    buildLogger.warning(execResult.getStderr());
   }
 }