debugging unresponsive p4 server in tests

This commit is contained in:
peter
2013-10-02 14:04:25 +02:00
parent cfdc1c3b74
commit f928f11305
2 changed files with 16 additions and 11 deletions
@@ -19,10 +19,9 @@ import com.intellij.execution.process.CapturingProcessHandler;
import com.intellij.execution.process.ProcessOutput;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.StreamUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.util.ExceptionUtil;
import com.intellij.util.EnvironmentUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -108,15 +107,7 @@ public class TestClientRunner {
}
if (result.isTimeout()) {
String diagnostics = "none";
try {
Process p = Runtime.getRuntime().exec(SystemInfo.isWindows ? System.getenv("windir") +"\\system32\\tasklist.exe /v" : "ps a");
diagnostics = StreamUtil.readText(p.getInputStream());
}
catch (IOException e) {
diagnostics = ExceptionUtil.getThrowableText(e);
}
throw new RuntimeException("Timeout waiting for VCS client to finish execution:\n" + diagnostics);
throw new RuntimeException("Timeout waiting for VCS client to finish execution:\n" + EnvironmentUtil.getProcessList());
}
return result;
}
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.AtomicNotNullLazyValue;
import com.intellij.openapi.util.NotNullLazyValue;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.StreamUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.concurrency.FixedFuture;
@@ -33,6 +34,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
@@ -203,6 +205,18 @@ public class EnvironmentUtil {
return Collections.unmodifiableMap(newEnv);
}
public static String getProcessList() {
String diagnostics;
try {
Process p = Runtime.getRuntime().exec(SystemInfo.isWindows ? System.getenv("windir") +"\\system32\\tasklist.exe /v" : "ps a");
diagnostics = StreamUtil.readText(p.getInputStream());
}
catch (IOException e) {
diagnostics = ExceptionUtil.getThrowableText(e);
}
return diagnostics;
}
private static class ProcessKiller {
private final Process myProcess;
private final Object myWaiter = new Object();