Skip to content

Commit

Permalink
GP-0: Improve pop-up test reliability. Fix typo in GDB.
Browse files Browse the repository at this point in the history
  • Loading branch information
nsadeveloper789 committed Feb 20, 2024
1 parent f5008f9 commit 0432872
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ def launch_loader(inferior: sch.Schema('Inferior'),
''')


@REGISTRY.method(action='launch', display='Land and Run')
@REGISTRY.method(action='launch', display='Launch and Run')
def launch_run(inferior: sch.Schema('Inferior'),
file: ParamDesc(str, display='File'),
args: ParamDesc(str, display='Arguments')=''):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,16 @@ protected static void pressEscape() throws AWTException {
robot.keyRelease(KeyEvent.VK_ESCAPE);
}

protected static void escapePopupMenu() {
waitForPass(noExc(() -> {
pressEscape();
assertEquals(0, runSwing(() -> {
return MenuSelectionManager.defaultManager().getSelectedPath().length;
}).intValue());
}));
waitForSwing();
}

protected static Point getViewportPosition(Component comp) {
Component parent = comp.getParent();
if (!(parent instanceof JViewport)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -346,51 +346,61 @@ public void testProgramBreakpointPopupMenus() throws Throwable {
waitForPass(
() -> assertEquals(State.ENABLED, lb.computeStateForProgram(program)));

clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
waitForPass(noExc(() -> {
clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS, Set.of(
AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractDisableBreakpointAction.NAME, AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

pressEscape();
lb.disableForProgram();
waitForDomainObject(program);
waitForPass(
() -> assertEquals(State.INCONSISTENT_DISABLED, lb.computeStateForProgram(program)));

clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractDisableBreakpointAction.NAME,
AbstractClearBreakpointAction.NAME));
() -> assertEquals(State.INCONSISTENT_DISABLED,
lb.computeStateForProgram(program)));

waitForPass(noExc(() -> {
clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractDisableBreakpointAction.NAME,
AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

pressEscape();
CompletableFuture<Void> dis = lb.disableForTrace(trace);
handleToggleBreakpointInvocation(Unique.assertOne(lb.getTraceBreakpoints(trace)), false);
waitOn(dis);
waitT(t);
waitForPass(
() -> assertEquals(State.DISABLED, lb.computeStateForProgram(program)));

clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractClearBreakpointAction.NAME));
waitForPass(noExc(() -> {
clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

pressEscape();
lb.enableForProgram();
waitForDomainObject(program);
waitForPass(
() -> assertEquals(State.INCONSISTENT_ENABLED, lb.computeStateForProgram(program)));

clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractDisableBreakpointAction.NAME,
AbstractClearBreakpointAction.NAME));
waitForPass(noExc(() -> {
clickListing(codeBrowserPlugin.getListingPanel(), addr(program, 0x00400123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractDisableBreakpointAction.NAME,
AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

// TODO: Margin, too?
}
Expand All @@ -405,47 +415,60 @@ public void testTraceBreakpointPopupMenus() throws Throwable {
waitForPass(
() -> assertEquals(State.ENABLED, lb.computeStateForTrace(trace)));

clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123), MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
waitForPass(noExc(() -> {
clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS, Set.of(
AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractDisableBreakpointAction.NAME, AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

pressEscape();
lb.disableForProgram(); // Adds "enable", which will only affect bookmark
waitForDomainObject(program);
waitForPass(
() -> assertEquals(State.INCONSISTENT_ENABLED, lb.computeStateForTrace(trace)));

clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123), MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
waitForPass(noExc(() -> {
clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS, Set.of(
AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractDisableBreakpointAction.NAME,
AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

pressEscape();
CompletableFuture<Void> dis = lb.disableForTrace(trace);
handleToggleBreakpointInvocation(Unique.assertOne(lb.getTraceBreakpoints(trace)), false);
waitOn(dis);
waitT(t);
waitForPass(
() -> assertEquals(State.DISABLED, lb.computeStateForTrace(trace)));

clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123), MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
waitForPass(noExc(() -> {
clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS, Set.of(
AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

pressEscape();
lb.enableForProgram(); // This time, adds "disable", which will only affect bookmark
waitForDomainObject(program);
waitForPass(
() -> assertEquals(State.INCONSISTENT_DISABLED, lb.computeStateForTrace(trace)));

clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123), MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS,
Set.of(AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
waitForPass(noExc(() -> {
clickListing(listingPlugin.getListingPanel(), addr(trace, 0x55550123),
MouseEvent.BUTTON3);
assertMenu(POPUP_ACTIONS, Set.of(
AbstractSetBreakpointAction.NAME, AbstractToggleBreakpointAction.NAME,
AbstractEnableBreakpointAction.NAME, AbstractDisableBreakpointAction.NAME,
AbstractClearBreakpointAction.NAME));
}));
escapePopupMenu();

// TODO: Should mixed trace enablement be considered?
// TODO: Margin, too?
Expand Down

0 comments on commit 0432872

Please sign in to comment.