Trace FileWatcher tests execution
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Sat, 9 Jun 2012 15:36:21 +0000 (19:36 +0400)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Sat, 9 Jun 2012 15:37:59 +0000 (19:37 +0400)
platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/FileWatcher.java
platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/FileWatcherTest.java
test-log.xml

index 5b9eda3ce0bfe84d4830c9a922ef422686bcd9b8..139541d85171e175b9d85c2b4b7716c3b141c733 100644 (file)
@@ -57,6 +57,9 @@ public class FileWatcher {
   @NonNls private static final String EXIT_COMMAND = "EXIT";
   @NonNls private static final String MESSAGE_COMMAND = "MESSAGE";
 
+  private static final int MAX_PROCESS_LAUNCH_ATTEMPT_COUNT = 10;
+  private static final int MAGIC_PROCESS_LAUNCH_ATTEMPT_COUNT = 88 * MAX_PROCESS_LAUNCH_ATTEMPT_COUNT;
+
   private final Object LOCK = new Object();
 
   private List<String> myDirtyPaths = new ArrayList<String>();
@@ -78,7 +81,6 @@ public class FileWatcher {
   private volatile BufferedWriter notifierWriter;
   private boolean myFailureShownToTheUser = false;
   private int attemptCount = 0;
-  private static final int MAX_PROCESS_LAUNCH_ATTEMPT_COUNT = 10;
   private boolean isShuttingDown = false;
 
   private final ManagingFS myManagingFS;
@@ -323,7 +325,7 @@ public class FileWatcher {
     myFailureShownToTheUser = true;
     attemptCount = 0;
     startupProcess(false);
-    attemptCount = 2 * MAX_PROCESS_LAUNCH_ATTEMPT_COUNT;
+    attemptCount = MAGIC_PROCESS_LAUNCH_ATTEMPT_COUNT;
     if (notifierProcess != null) {
       new WatchForChangesThread().start();
     }
@@ -368,6 +370,11 @@ public class FileWatcher {
 
           final String command = readLine();
           if (command == null) {
+            if (attemptCount == MAGIC_PROCESS_LAUNCH_ATTEMPT_COUNT) {
+              LOG.debug("Leaving watcher thread");
+              return;
+            }
+
             // Unexpected process exit, relaunch attempt
             startupProcess(true);
             continue;
@@ -466,7 +473,7 @@ public class FileWatcher {
 
   private void writeLine(String line) throws IOException {
     if (LOG.isDebugEnabled()) {
-      LOG.debug("to fsnotifier: " + line);
+      LOG.debug("<< " + line);
     }
 
     final Process process = notifierProcess;
@@ -502,7 +509,7 @@ public class FileWatcher {
 
     final String line = reader.readLine();
     if (LOG.isDebugEnabled()) {
-      LOG.debug("fsnotifier says: " + line);
+      LOG.debug(">> " + line);
     }
     return line;
   }
index b0aed3874df4d89fbe0558f2f934455faea0fabc..91f46cc63d01d132ba0d8c3928e764e218e81c8d 100644 (file)
@@ -18,6 +18,7 @@ package com.intellij.openapi.vfs.local;
 import com.intellij.execution.configurations.GeneralCommandLine;
 import com.intellij.openapi.application.AccessToken;
 import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.util.Disposer;
 import com.intellij.openapi.util.SystemInfo;
 import com.intellij.openapi.util.io.FileUtil;
@@ -43,6 +44,8 @@ import java.util.*;
 public class FileWatcherTest extends PlatformLangTestCase {
   private static final int NATIVE_PROCESS_DELAY = 750;  // time to event to be caught by native watcher and passed to watcher thread
 
+  private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vfs.impl.local.FileWatcher");
+
   private FileWatcher myWatcher;
   private LocalFileSystem myFileSystem;
   private MessageBusConnection myConnection;
@@ -68,6 +71,8 @@ public class FileWatcherTest extends PlatformLangTestCase {
 
   @Override
   protected void setUp() throws Exception {
+    LOG.debug("================== setting up " + getName() + " ==================");
+
     super.setUp();
 
     Disposer.register(getProject(), myAlarm);
@@ -92,10 +97,14 @@ public class FileWatcherTest extends PlatformLangTestCase {
         myEvents.addAll(events);
       }
     });
+
+    LOG.debug("================== setting up " + getName() + " ==================");
   }
 
   @Override
   protected void tearDown() throws Exception {
+    LOG.debug("================== tearing down " + getName() + " ==================");
+
     try {
       myConnection.disconnect();
       myWatcher.shutdown();
@@ -105,6 +114,8 @@ public class FileWatcherTest extends PlatformLangTestCase {
       myWatcher = null;
       super.tearDown();
     }
+
+    LOG.debug("================== tearing down " + getName() + " ==================");
   }
 
 
index d01850b67dc81a11dfc0572bd0dff277deb43c6a..3028abeab2612897f1e4375f14cbbd5b595da0eb 100644 (file)
@@ -14,7 +14,7 @@
 
   <appender name="CONSOLE-ALL" class="org.apache.log4j.ConsoleAppender">
     <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="[%7r] %6p - %30.30c - %m \n"/>
+      <param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] %6p - %30.30c - %m \n"/>
     </layout>
   </appender>
 
     </layout>
   </appender>
 
+  <category name="#com.intellij.openapi.vfs.impl.local.FileWatcher">
+    <priority value="DEBUG"/>
+    <appender-ref ref="CONSOLE-ALL"/>
+  </category>
+
   <root>
     <priority value="INFO"/>
     <appender-ref ref="CONSOLE-WARN"/>