GP-0: A second round of Debugger test fixes.

This commit is contained in:
Dan 2021-05-21 11:35:37 -04:00
parent 5808049c83
commit 0405b0562f
3 changed files with 35 additions and 21 deletions

View file

@ -111,6 +111,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI
waitForPass(() -> {
runSwing(() -> listingProvider.goTo(location.getProgram(), location));
ProgramLocation confirm = listingProvider.getLocation();
assertNotNull(confirm);
assertEquals(location.getAddress(), confirm.getAddress());
});
}

View file

@ -139,15 +139,20 @@ public class DebuggerTargetsProviderTest extends AbstractGhidraHeadedDebuggerGUI
modelService.addModel(secondModel);
waitForSwing();
clickTreeNode(targetsProvider.tree,
targetsProvider.rootNode.findNodeForObject(mb.testModel), MouseEvent.BUTTON1);
waitForSwing();
assertEquals(mb.testModel, modelService.getCurrentModel());
// NB. Expansion is run in background task
waitForPass(noExc(() -> {
clickTreeNode(targetsProvider.tree,
targetsProvider.rootNode.findNodeForObject(mb.testModel), MouseEvent.BUTTON1);
waitForSwing();
assertEquals(mb.testModel, modelService.getCurrentModel());
}));
clickTreeNode(targetsProvider.tree,
targetsProvider.rootNode.findNodeForObject(secondModel), MouseEvent.BUTTON1);
waitForSwing();
assertEquals(secondModel, modelService.getCurrentModel());
waitForPass(noExc(() -> {
clickTreeNode(targetsProvider.tree,
targetsProvider.rootNode.findNodeForObject(secondModel), MouseEvent.BUTTON1);
waitForSwing();
assertEquals(secondModel, modelService.getCurrentModel());
}));
}
@Test

View file

@ -60,19 +60,23 @@ public class TraceRecorderAsyncPcodeExecTest extends AbstractGhidraHeadedDebugge
SleighExpression expr = SleighProgramCompiler
.compileExpression((SleighLanguage) language, "r0 + r1");
AsyncPcodeExecutor<byte[]> executor =
new AsyncPcodeExecutor<>(language, AsyncWrappedPcodeArithmetic.forLanguage(language),
new TraceRecorderAsyncPcodeExecutorState(recorder, recorder.getSnap(), thread, 0));
Register r0 = language.getRegister("r0");
Register r1 = language.getRegister("r1");
waitForPass(() -> {
// TODO: A little brittle: Depends on a specific snap advancement strategy
assertEquals(3, trace.getTimeManager().getSnapshotCount());
DebuggerRegisterMapper rm = recorder.getRegisterMapper(thread);
assertNotNull(rm);
assertNotNull(rm.getTargetRegister("r0"));
assertNotNull(rm.getTargetRegister("r1"));
assertTrue(rm.getRegistersOnTarget().contains(r0));
assertTrue(rm.getRegistersOnTarget().contains(r1));
});
AsyncPcodeExecutor<byte[]> executor =
new AsyncPcodeExecutor<>(language, AsyncWrappedPcodeArithmetic.forLanguage(language),
new TraceRecorderAsyncPcodeExecutorState(recorder, recorder.getSnap(), thread, 0));
byte[] result = waitOn(expr.evaluate(executor));
assertEquals(11, Utils.bytesToLong(result, result.length, language.isBigEndian()));
}
@ -99,20 +103,24 @@ public class TraceRecorderAsyncPcodeExecTest extends AbstractGhidraHeadedDebugge
PcodeProgram prog = SleighProgramCompiler.compileProgram((SleighLanguage) language, "test",
List.of("r2 = r0 + r1;"), SleighUseropLibrary.NIL);
Register r0 = language.getRegister("r0");
Register r1 = language.getRegister("r1");
waitForPass(() -> {
// TODO: A little brittle: Depends on a specific snap advancement strategy
assertEquals(3, trace.getTimeManager().getSnapshotCount());
DebuggerRegisterMapper rm = recorder.getRegisterMapper(thread);
assertNotNull(rm);
assertNotNull(rm.getTargetRegister("r0"));
assertNotNull(rm.getTargetRegister("r1"));
assertTrue(rm.getRegistersOnTarget().contains(r0));
assertTrue(rm.getRegistersOnTarget().contains(r1));
});
TraceRecorderAsyncPcodeExecutorState asyncState =
new TraceRecorderAsyncPcodeExecutorState(recorder, recorder.getSnap(), thread, 0);
AsyncPcodeExecutor<byte[]> executor = new AsyncPcodeExecutor<>(
language, AsyncWrappedPcodeArithmetic.forLanguage(language), asyncState);
Register r0 = language.getRegister("r0");
Register r1 = language.getRegister("r1");
waitForPass(() -> {
DebuggerRegisterMapper rm = recorder.getRegisterMapper(thread);
assertNotNull(rm);
assertTrue(rm.getRegistersOnTarget().contains(r0));
assertTrue(rm.getRegistersOnTarget().contains(r1));
});
waitOn(executor.executeAsync(prog, SleighUseropLibrary.nil()));
waitOn(asyncState.getVar(language.getRegister("r2")));