diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/AbstractGdbTraceRmiTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/AbstractGdbTraceRmiTest.java index d7fcd24d93..72fbf68a46 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/AbstractGdbTraceRmiTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/AbstractGdbTraceRmiTest.java @@ -388,6 +388,12 @@ public abstract class AbstractGdbTraceRmiTest extends AbstractGhidraHeadedDebugg return new MemDump(address, buf.toByteArray()); } + protected void waitDomainObjectClosed(String path) { + DomainFile df = env.getProject().getProjectData().getFile(path); + assertNotNull(df); + waitForPass(() -> assertFalse(df.isOpen())); + } + protected ManagedDomainObject openDomainObject(String path) throws Exception { DomainFile df = env.getProject().getProjectData().getFile(path); assertNotNull(df); diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java index a4a78e0520..6c11a8d000 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java @@ -160,7 +160,6 @@ public class GdbCommandsTest extends AbstractGdbTraceRmiTest { @Test public void testStopTrace() throws Exception { - // TODO: This test assumes gdb and the target file bash are x86-64 runThrowError(addr -> """ %s ghidra trace connect %s @@ -169,10 +168,8 @@ public class GdbCommandsTest extends AbstractGdbTraceRmiTest { ghidra trace stop quit """.formatted(PREAMBLE, addr)); - DomainFile dfBash = env.getProject().getProjectData().getFile("/New Traces/gdb/bash"); - assertNotNull(dfBash); - // TODO: Given the 'quit' command, I'm not sure this assertion is checking anything. - assertFalse(dfBash.isOpen()); + // NOTE: Given the 'quit' command, I'm not sure this assertion is checking anything. + waitDomainObjectClosed("/New Traces/gdb/bash"); } @Test @@ -278,6 +275,7 @@ public class GdbCommandsTest extends AbstractGdbTraceRmiTest { ghidra trace tx-commit quit """.formatted(PREAMBLE, addr)); + waitDomainObjectClosed("/New Traces/no-save"); try (ManagedDomainObject mdo = openDomainObject("/New Traces/no-save")) { tb = new ToyDBTraceBuilder((Trace) mdo.get()); assertEquals(0, tb.trace.getTimeManager().getAllSnapshots().size()); @@ -294,6 +292,7 @@ public class GdbCommandsTest extends AbstractGdbTraceRmiTest { ghidra trace save quit """.formatted(PREAMBLE, addr)); + waitDomainObjectClosed("/New Traces/save"); try (ManagedDomainObject mdo = openDomainObject("/New Traces/save")) { tb = new ToyDBTraceBuilder((Trace) mdo.get()); assertEquals(1, tb.trace.getTimeManager().getAllSnapshots().size()); diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/AbstractLldbTraceRmiTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/AbstractLldbTraceRmiTest.java index 3789c29a4c..0406f53b9f 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/AbstractLldbTraceRmiTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/AbstractLldbTraceRmiTest.java @@ -418,6 +418,12 @@ public abstract class AbstractLldbTraceRmiTest extends AbstractGhidraHeadedDebug return new MemDump(address, buf.toByteArray()); } + protected void waitDomainObjectClosed(String path) { + DomainFile df = env.getProject().getProjectData().getFile(path); + assertNotNull(df); + waitForPass(() -> assertFalse(df.isOpen())); + } + protected ManagedDomainObject openDomainObject(String path) throws Exception { DomainFile df = env.getProject().getProjectData().getFile(path); assertNotNull(df); diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java index df9eaad041..03fab6613a 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java @@ -167,10 +167,8 @@ public class LldbCommandsTest extends AbstractLldbTraceRmiTest { ghidra trace stop quit """.formatted(PREAMBLE, addr, getSpecimenPrint())); - DomainFile df = env.getProject().getProjectData().getFile("/New Traces/lldb/expPrint"); - assertNotNull(df); - // TODO: Given the 'quit' command, I'm not sure this assertion is checking anything. - assertFalse(df.isOpen()); + // NOTE: Given the 'quit' command, I'm not sure this assertion is checking anything. + waitDomainObjectClosed("/New Traces/lldb/expPrint"); } @Test @@ -270,6 +268,7 @@ public class LldbCommandsTest extends AbstractLldbTraceRmiTest { ghidra trace tx-commit quit """.formatted(PREAMBLE, addr, getSpecimenPrint())); + waitDomainObjectClosed("/New Traces/no-save"); try (ManagedDomainObject mdo = openDomainObject("/New Traces/no-save")) { tb = new ToyDBTraceBuilder((Trace) mdo.get()); assertEquals(0, tb.trace.getTimeManager().getAllSnapshots().size()); @@ -286,6 +285,7 @@ public class LldbCommandsTest extends AbstractLldbTraceRmiTest { ghidra trace save quit """.formatted(PREAMBLE, addr, getSpecimenPrint())); + waitDomainObjectClosed("/New Traces/save"); try (ManagedDomainObject mdo = openDomainObject("/New Traces/save")) { tb = new ToyDBTraceBuilder((Trace) mdo.get()); assertEquals(1, tb.trace.getTimeManager().getAllSnapshots().size());