Merge remote-tracking branch 'origin/GP-0_d-millar_test_fixes_for_dbgeng_traceRMI'

This commit is contained in:
Ryan Kurtz 2023-09-15 10:03:17 -04:00
commit 5316f2c419

View file

@ -15,55 +15,30 @@
*/ */
package agent.dbgeng.rmi; package agent.dbgeng.rmi;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.*;
import static org.junit.Assert.assertNotNull; import static org.junit.Assume.*;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream; import java.io.*;
import java.io.IOException; import java.net.*;
import java.io.OutputStream; import java.nio.file.*;
import java.net.InetAddress; import java.util.*;
import java.net.InetSocketAddress; import java.util.concurrent.*;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Function; import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.junit.Before; import org.junit.Before;
import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest;
import ghidra.app.plugin.core.debug.service.rmi.trace.RemoteAsyncResult; import ghidra.app.plugin.core.debug.service.rmi.trace.*;
import ghidra.app.plugin.core.debug.service.rmi.trace.RemoteMethod;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiAcceptor;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiHandler;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiPlugin;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
import ghidra.app.services.TraceRmiService; import ghidra.app.services.TraceRmiService;
import ghidra.dbg.testutil.DummyProc; import ghidra.dbg.testutil.DummyProc;
import ghidra.framework.Application; import ghidra.framework.*;
import ghidra.framework.OperatingSystem;
import ghidra.framework.TestApplicationUtils;
import ghidra.framework.main.ApplicationLevelOnlyPlugin; import ghidra.framework.main.ApplicationLevelOnlyPlugin;
import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainFile;
import ghidra.framework.plugintool.Plugin; import ghidra.framework.plugintool.Plugin;
import ghidra.framework.plugintool.PluginsConfiguration; import ghidra.framework.plugintool.PluginsConfiguration;
import ghidra.framework.plugintool.util.PluginDescription; import ghidra.framework.plugintool.util.*;
import ghidra.framework.plugintool.util.PluginException;
import ghidra.framework.plugintool.util.PluginPackage;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressRangeImpl; import ghidra.program.model.address.AddressRangeImpl;
import ghidra.trace.model.Lifespan; import ghidra.trace.model.Lifespan;
@ -92,6 +67,11 @@ public abstract class AbstractDbgEngTraceRmiTest extends AbstractGhidraHeadedDeb
private Path outFile; private Path outFile;
private Path errFile; private Path errFile;
@Before
public void assertOS() {
assumeTrue(OperatingSystem.CURRENT_OPERATING_SYSTEM == OperatingSystem.WINDOWS);
}
//@BeforeClass //@BeforeClass
public static void setupPython() throws Throwable { public static void setupPython() throws Throwable {
new ProcessBuilder("gradle", "Debugger-agent-dbgeng:assemblePyPackage") new ProcessBuilder("gradle", "Debugger-agent-dbgeng:assemblePyPackage")
@ -174,10 +154,10 @@ public abstract class AbstractDbgEngTraceRmiTest extends AbstractGhidraHeadedDeb
// If commands come from file, Python will quit after EOF. // If commands come from file, Python will quit after EOF.
Msg.info(this, "outFile: " + outFile); Msg.info(this, "outFile: " + outFile);
Msg.info(this, "errFile: " + errFile); Msg.info(this, "errFile: " + errFile);
//pb.inheritIO(); //pb.inheritIO();
pb.redirectInput(ProcessBuilder.Redirect.PIPE); pb.redirectInput(ProcessBuilder.Redirect.PIPE);
pb.redirectOutput(outFile.toFile()); pb.redirectOutput(outFile.toFile());
pb.redirectError(errFile.toFile()); pb.redirectError(errFile.toFile());
Process pyproc = pb.start(); Process pyproc = pb.start();
OutputStream stdin = pyproc.getOutputStream(); OutputStream stdin = pyproc.getOutputStream();
@ -195,7 +175,7 @@ public abstract class AbstractDbgEngTraceRmiTest extends AbstractGhidraHeadedDeb
} }
Msg.info(this, "Python exited with code " + pyproc.exitValue()); Msg.info(this, "Python exited with code " + pyproc.exitValue());
return new PythonResult(false, pyproc.exitValue(), Files.readString(outFile), return new PythonResult(false, pyproc.exitValue(), Files.readString(outFile),
Files.readString(errFile)); Files.readString(errFile));
} }
catch (Exception e) { catch (Exception e) {
return ExceptionUtils.rethrow(e); return ExceptionUtils.rethrow(e);