From 15163910330ade510c2278442b40e38b17df78ff Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Mon, 18 Aug 2008 17:37:18 +0000 Subject: [PATCH] Bug 244385 Fixes all the tests except the Memory tests. The problem was actually that the tests were not using the proper context when querying the services. --- .../dd/mi/service/ExpressionService.java | 1 - .../dd/tests/gdb/ExpressionServiceTest.java | 8 +- .../dd/tests/gdb/MIBreakpointsTest.java | 51 +++++--- .../dd/tests/gdb/MIDisassemblyTest.java | 7 +- .../eclipse/dd/tests/gdb/MIMemoryTest.java | 117 +++++++++++------- .../eclipse/dd/tests/gdb/MIRegistersTest.java | 77 ++++++------ .../dd/tests/gdb/framework/BaseTestCase.java | 6 +- 7 files changed, 160 insertions(+), 107 deletions(-) diff --git a/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/ExpressionService.java b/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/ExpressionService.java index bc1d800a9ef..1081b6c1a54 100644 --- a/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/ExpressionService.java +++ b/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/ExpressionService.java @@ -400,7 +400,6 @@ public class ExpressionService extends AbstractDsfService implements IExpression } } - // This field holds a reference to to the data model context for this service. private CommandCache fExpressionCache; private MIVariableManager varManager; diff --git a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/ExpressionServiceTest.java b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/ExpressionServiceTest.java index a54ec26992e..d1d75ab67b0 100644 --- a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/ExpressionServiceTest.java +++ b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/ExpressionServiceTest.java @@ -126,6 +126,8 @@ public class ExpressionServiceTest extends BaseTestCase { */ @Test public void testLiteralIntegerExpressions() throws Throwable { + MIStoppedEvent stoppedEvent = SyncUtil.SyncRunToLocation("testLocals"); + // Create a map of expressions and their expected values. Map tests = new HashMap(); @@ -139,7 +141,7 @@ public class ExpressionServiceTest extends BaseTestCase { tests.put("10 + -15", new String[] { "0xFFFFFFFB", "037777777773", "11111111111111111111111111111011", "-5", "-5" }); - executeExpressionSubTests(tests, fGdbControl.getControlDMContext()); + executeExpressionSubTests(tests, SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0)); } /** @@ -147,6 +149,8 @@ public class ExpressionServiceTest extends BaseTestCase { */ @Test public void testLiteralFloatingPointExpressions() throws Throwable { + MIStoppedEvent stoppedEvent = SyncUtil.SyncRunToLocation("testLocals"); + // Create a map of expressions and their expected values. Map tests = new HashMap(); @@ -157,7 +161,7 @@ public class ExpressionServiceTest extends BaseTestCase { tests.put("-100.0 / -3.0", new String[] { "0x21", "041", "100001", "33", "33.333333333333336" }); tests.put("100.0 / 0.5", new String[] { "0xc8", "0310", "11001000", "200", "200" }); - executeExpressionSubTests(tests, fGdbControl.getControlDMContext()); + executeExpressionSubTests(tests, SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0)); } /** diff --git a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIBreakpointsTest.java b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIBreakpointsTest.java index c88dacfdc97..dcddeb94754 100644 --- a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIBreakpointsTest.java +++ b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIBreakpointsTest.java @@ -34,6 +34,7 @@ import org.eclipse.dd.dsf.debug.service.IBreakpoints.IBreakpointsUpdatedEvent; import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionDMContext; import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext; import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData; +import org.eclipse.dd.dsf.debug.service.IStack.IFrameDMContext; import org.eclipse.dd.dsf.service.DsfServiceEventHandler; import org.eclipse.dd.dsf.service.DsfServicesTracker; import org.eclipse.dd.dsf.service.DsfSession; @@ -44,6 +45,7 @@ import org.eclipse.dd.mi.service.MIBreakpoints; import org.eclipse.dd.mi.service.MIRunControl; import org.eclipse.dd.mi.service.MIBreakpoints.MIBreakpointDMContext; import org.eclipse.dd.mi.service.command.events.MIBreakpointHitEvent; +import org.eclipse.dd.mi.service.command.events.MIStoppedEvent; import org.eclipse.dd.mi.service.command.events.MIWatchpointScopeEvent; import org.eclipse.dd.mi.service.command.events.MIWatchpointTriggerEvent; import org.eclipse.dd.tests.gdb.framework.AsyncCompletionWaitor; @@ -333,13 +335,13 @@ public class MIBreakpointsTest extends BaseTestCase { * @throws InterruptedException * ------------------------------------------------------------------------ */ - private BigInteger evaluateExpression(String expression) throws Throwable { + private BigInteger evaluateExpression(IDMContext ctx, String expression) throws Throwable { final IExpressions fExpressionService = fServicesTracker.getService(IExpressions.class); assert (fExpressionService != null); // Get a stack context (temporary - should be an MIcontainerDMC) - final IExpressionDMContext expressionDMC = SyncUtil.SyncCreateExpression(fGdbControlDmc, expression); + final IExpressionDMContext expressionDMC = SyncUtil.SyncCreateExpression(ctx, expression); final FormattedValueDMContext formattedValueDMC = SyncUtil.SyncGetFormattedValue(fExpressionService, expressionDMC, IFormattedValues.DECIMAL_FORMAT); @@ -2302,7 +2304,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2316,7 +2319,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == 128); } @@ -2362,7 +2365,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2376,7 +2380,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == 128); } @@ -2409,7 +2413,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2423,7 +2428,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == IGNORE_COUNT_2); } @@ -2469,7 +2474,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2483,7 +2489,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == IGNORE_COUNT_2); } @@ -2514,7 +2520,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2528,7 +2535,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == IGNORE_COUNT_2); } @@ -2559,7 +2566,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2573,7 +2581,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == IGNORE_COUNT_2); } @@ -2605,7 +2613,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2619,7 +2628,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int i = evaluateExpression("i").intValue(); + int i = evaluateExpression(frameDmc, "i").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", i == IGNORE_COUNT_2); } @@ -2670,7 +2679,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2684,7 +2694,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int j = evaluateExpression("j").intValue(); + int j = evaluateExpression(frameDmc, "j").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", j == IGNORE_COUNT_2); } @@ -2736,7 +2746,8 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Run until the breakpoint is hit and the event generated - SyncUtil.SyncResumeUntilStopped(); + MIStoppedEvent stoppedEvent = SyncUtil.SyncResumeUntilStopped(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Ensure the correct BreakpointEvent was received waitForBreakpointEvent(); @@ -2750,7 +2761,7 @@ public class MIBreakpointsTest extends BaseTestCase { clearEventCounters(); // Verify that the condition is met - int j = evaluateExpression("j").intValue(); + int j = evaluateExpression(frameDmc, "j").intValue(); assertTrue("BreakpointEvent problem: breakpoint mismatch (wrong condition)", j == IGNORE_COUNT_2); } diff --git a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIDisassemblyTest.java b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIDisassemblyTest.java index 4bc12239b2f..13a2f258081 100644 --- a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIDisassemblyTest.java +++ b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIDisassemblyTest.java @@ -28,11 +28,13 @@ import org.eclipse.dd.dsf.debug.service.IDisassembly.IDisassemblyDMContext; import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionDMContext; import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext; import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData; +import org.eclipse.dd.dsf.debug.service.IStack.IFrameDMContext; import org.eclipse.dd.dsf.service.DsfServicesTracker; import org.eclipse.dd.dsf.service.DsfSession; import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl; import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControlDMContext; import org.eclipse.dd.mi.service.MIDisassembly; +import org.eclipse.dd.mi.service.command.events.MIStoppedEvent; import org.eclipse.dd.tests.gdb.framework.AsyncCompletionWaitor; import org.eclipse.dd.tests.gdb.framework.BackgroundRunner; import org.eclipse.dd.tests.gdb.framework.BaseTestCase; @@ -136,8 +138,11 @@ public class MIDisassemblyTest extends BaseTestCase { */ private IAddress evaluateExpression(String expression) throws Throwable { + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); + // Create the expression and format contexts - final IExpressionDMContext expressionDMC = SyncUtil.SyncCreateExpression(fGdbControlDmc, expression); + final IExpressionDMContext expressionDMC = SyncUtil.SyncCreateExpression(frameDmc, expression); final FormattedValueDMContext formattedValueDMC = SyncUtil.SyncGetFormattedValue(fExpressionService, expressionDMC, IFormattedValues.HEX_FORMAT); // Create the DataRequestMonitor which will store the operation result in the wait object diff --git a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIMemoryTest.java b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIMemoryTest.java index 8019f049da2..8f6bc180a63 100644 --- a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIMemoryTest.java +++ b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIMemoryTest.java @@ -18,6 +18,7 @@ import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; import org.eclipse.cdt.utils.Addr64; import org.eclipse.dd.dsf.concurrent.DataRequestMonitor; import org.eclipse.dd.dsf.concurrent.RequestMonitor; +import org.eclipse.dd.dsf.datamodel.IDMContext; import org.eclipse.dd.dsf.debug.service.IExpressions; import org.eclipse.dd.dsf.debug.service.IFormattedValues; import org.eclipse.dd.dsf.debug.service.IMemory; @@ -27,12 +28,14 @@ import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData; import org.eclipse.dd.dsf.debug.service.IMemory.IMemoryChangedEvent; import org.eclipse.dd.dsf.debug.service.IMemory.IMemoryDMContext; import org.eclipse.dd.dsf.debug.service.IRunControl.StepType; +import org.eclipse.dd.dsf.debug.service.IStack.IFrameDMContext; import org.eclipse.dd.dsf.service.DsfServiceEventHandler; import org.eclipse.dd.dsf.service.DsfServicesTracker; import org.eclipse.dd.dsf.service.DsfSession; import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl; import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControlDMContext; import org.eclipse.dd.mi.service.MIRunControl; +import org.eclipse.dd.mi.service.command.events.MIStoppedEvent; import org.eclipse.dd.tests.gdb.framework.AsyncCompletionWaitor; import org.eclipse.dd.tests.gdb.framework.BackgroundRunner; import org.eclipse.dd.tests.gdb.framework.BaseTestCase; @@ -202,10 +205,10 @@ public class MIMemoryTest extends BaseTestCase { * @throws InterruptedException * ------------------------------------------------------------------------ */ - private IAddress evaluateExpression(String expression) throws Throwable + private IAddress evaluateExpression(IDMContext ctx, String expression) throws Throwable { // Create the expression and format contexts - final IExpressionDMContext expressionDMC = SyncUtil.SyncCreateExpression(fGdbControlDmc, expression); + final IExpressionDMContext expressionDMC = SyncUtil.SyncCreateExpression(ctx, expression); final FormattedValueDMContext formattedValueDMC = SyncUtil.SyncGetFormattedValue(fExpressionService, expressionDMC, IFormattedValues.HEX_FORMAT); // Create the DataRequestMonitor which will store the operation result in the wait object @@ -438,14 +441,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters IMemoryDMContext dmc = null; long offset = 0; int word_size = 1; int count = 1; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Unknown context type"; @@ -503,12 +507,13 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int count = -1; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Word size not supported (!= 1)"; @@ -540,13 +545,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = -1; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Invalid word count (< 0)"; @@ -571,13 +577,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = 1; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Verify that all bytes are '0' for (int i = 0; i < BLOCK_SIZE; i++) { @@ -622,12 +629,13 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the array is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters int word_size = 1; int count = 1; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Verify that all bytes are '0' for (int offset = 0; offset < BLOCK_SIZE; offset++) { @@ -670,13 +678,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = BLOCK_SIZE; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Get the memory block fWait.waitReset(); @@ -727,14 +736,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = 1; byte[] buffer = new byte[count]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Unknown context type"; @@ -791,13 +801,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int count = -1; byte[] buffer = new byte[1]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Word size not supported (!= 1)"; @@ -829,14 +840,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = -1; byte[] buffer = new byte[1]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Invalid word count (< 0)"; @@ -861,14 +873,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = 10; byte[] buffer = new byte[count - 1]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Buffer too short"; @@ -893,14 +906,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = BLOCK_SIZE; byte[] buffer = new byte[count]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test for (int i = 0; i < count; i++) { @@ -956,12 +970,13 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); int word_size = 1; int count = BLOCK_SIZE; byte[] buffer = new byte[count]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test for (int offset = 0; offset < count; offset++) { @@ -1015,13 +1030,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = BLOCK_SIZE; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Make sure that the memory block is zeroed fWait.waitReset(); @@ -1076,14 +1092,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = 1; byte[] pattern = new byte[count]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Unknown context type"; @@ -1140,13 +1157,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int count = 1; byte[] pattern = new byte[1]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Word size not supported (!= 1)"; @@ -1178,14 +1196,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = -1; byte[] pattern = new byte[1]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Invalid repeat count (< 0)"; @@ -1210,14 +1229,15 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = 1; byte[] pattern = new byte[0]; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Perform the test String expected = "Empty pattern"; @@ -1242,7 +1262,8 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; @@ -1251,7 +1272,7 @@ public class MIMemoryTest extends BaseTestCase { int length = 4; byte[] pattern = new byte[length]; for (int i = 0; i < length; i++) pattern[i] = (byte) i; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Ensure that the memory is zeroed fWait.waitReset(); @@ -1302,7 +1323,8 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; @@ -1311,7 +1333,7 @@ public class MIMemoryTest extends BaseTestCase { int length = 4; byte[] pattern = new byte[length]; for (int i = 0; i < length; i++) pattern[i] = (byte) i; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Ensure that the memory is zeroed fWait.waitReset(); @@ -1362,7 +1384,8 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; @@ -1371,7 +1394,7 @@ public class MIMemoryTest extends BaseTestCase { int length = 4; byte[] pattern = new byte[length]; for (int i = 0; i < length; i++) pattern[i] = (byte) i; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Ensure that the memory is zeroed fWait.waitReset(); @@ -1419,12 +1442,13 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the array is zeroed SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:zeroBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters int word_size = 1; int count = 1; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Verify asynchronously that all bytes are '0' fWait.waitReset(); @@ -1481,13 +1505,14 @@ public class MIMemoryTest extends BaseTestCase { // Run to the point where the variable is initialized SyncUtil.SyncAddBreakpoint("MemoryTestApp.cc:setBlocks", true); SyncUtil.SyncResumeUntilStopped(); - SyncUtil.SyncStep(StepType.STEP_RETURN); + MIStoppedEvent stoppedEvent = SyncUtil.SyncStep(StepType.STEP_RETURN); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); // Setup call parameters long offset = 0; int word_size = 1; int count = BLOCK_SIZE; - fBaseAddress = evaluateExpression("&charBlock"); + fBaseAddress = evaluateExpression(frameDmc, "&charBlock"); // Get the 'reference' memory block fWait.waitReset(); diff --git a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIRegistersTest.java b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIRegistersTest.java index d6dad0fb17f..f57a9c44599 100644 --- a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIRegistersTest.java +++ b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/MIRegistersTest.java @@ -13,6 +13,7 @@ import org.eclipse.dd.dsf.concurrent.ImmediateExecutor; import org.eclipse.dd.dsf.concurrent.Query; import org.eclipse.dd.dsf.concurrent.RequestMonitor; import org.eclipse.dd.dsf.datamodel.CompositeDMContext; +import org.eclipse.dd.dsf.datamodel.DMContexts; import org.eclipse.dd.dsf.datamodel.IDMContext; import org.eclipse.dd.dsf.debug.service.IFormattedValues; import org.eclipse.dd.dsf.debug.service.IRegisters; @@ -22,12 +23,14 @@ import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMContext; import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMData; import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMContext; import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData; +import org.eclipse.dd.dsf.debug.service.IRunControl.IContainerDMContext; +import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext; import org.eclipse.dd.dsf.debug.service.IStack.IFrameDMContext; import org.eclipse.dd.dsf.service.DsfServicesTracker; import org.eclipse.dd.dsf.service.DsfSession; import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl; import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControlDMContext; -import org.eclipse.dd.mi.service.IMIExecutionDMContext; +import org.eclipse.dd.mi.service.command.events.MIStoppedEvent; import org.eclipse.dd.tests.gdb.framework.AsyncCompletionWaitor; import org.eclipse.dd.tests.gdb.framework.BackgroundRunner; import org.eclipse.dd.tests.gdb.framework.BaseTestCase; @@ -191,8 +194,8 @@ public class MIRegistersTest extends BaseTestCase { @Test public void getRegistersLength() throws Throwable { - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); final IRegisterDMContext[] regDMCs = getRegisters(frameDmc); assertTrue("The number of registers should have been " + NUMBER_OF_REGISTERS + " instead of " + regDMCs.length, @@ -202,8 +205,8 @@ public class MIRegistersTest extends BaseTestCase { @Test public void getRegisters() throws Throwable { - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); final IRegisterDMContext[] regDMCs = getRegisters(frameDmc); List regNames = Arrays.asList("eax","ecx","edx","ebx","esp","ebp","esi","edi","eip","eflags","cs","ss","ds","es","fs","gs","st0","st1","st2","st3","st4","st5","st6","st7","fctrl","fstat","ftag","fiseg","fioff","foseg","fooff","fop","xmm0","xmm1","xmm2","xmm3","xmm4","xmm5","xmm6","xmm7","mxcsr","orig_eax","mm0","mm1","mm2","mm3","mm4","mm5","mm6","mm7"); @@ -276,8 +279,8 @@ public class MIRegistersTest extends BaseTestCase { private static String REGISTER_VALUE = ""; @Test public void getModelDataForRegisterDataValueInDifferentNumberFormats() throws Throwable { - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); String val = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 0); REGISTER_VALUE = val; assertTrue("Register Value is not in NATURAL format " , Integer.parseInt(val)== Integer.parseInt(REGISTER_VALUE)); @@ -298,30 +301,32 @@ public class MIRegistersTest extends BaseTestCase { @Test public void compareRegisterForMultipleExecutionContexts() throws Throwable { - SyncUtil.SyncRunToLine(SRC_NAME, "22"); - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 2); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); - String thread2RegVal0 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 0); - String thread2RegVal1 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 1); - String thread2RegVal2 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 2); - String thread2RegVal3 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 3); - String thread2RegVal4 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 4); - String thread2RegVal5 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 5); + MIStoppedEvent stoppedEvent = SyncUtil.SyncRunToLine(SRC_NAME, "22"); + IContainerDMContext containerDmc = DMContexts.getAncestorOfType(stoppedEvent.getDMContext(), IContainerDMContext.class); - // Set execution context to 1 - execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); - getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 0); + // Get execution context to thread 2 + IExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(containerDmc, 2); + IFrameDMContext frameDmc2 = SyncUtil.SyncGetStackFrame(execDmc, 0); + + String thread2RegVal0 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 0); + String thread2RegVal1 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 1); + String thread2RegVal2 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 2); + String thread2RegVal3 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 3); + String thread2RegVal4 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 4); + String thread2RegVal5 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 5); + + // Get execution context to thread 1 + execDmc = SyncUtil.SyncCreateExecutionContext(containerDmc, 2); + IFrameDMContext frameDmc1 = SyncUtil.SyncGetStackFrame(execDmc, 0); + getModelDataForRegisterDataValue(frameDmc1, IFormattedValues.NATURAL_FORMAT, 0); // Re-set the execution context to 2 and Fetch from the Cache - execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 2); - frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); - String dupliThread2RegVal0 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 0); - String dupliThread2RegVal1 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 1); - String dupliThread2RegVal2 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 2); - String dupliThread2RegVal3 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 3); - String dupliThread2RegVal4 = getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 4); - String dupliThread2RegVal5= getModelDataForRegisterDataValue(frameDmc, IFormattedValues.NATURAL_FORMAT, 5); + String dupliThread2RegVal0 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 0); + String dupliThread2RegVal1 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 1); + String dupliThread2RegVal2 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 2); + String dupliThread2RegVal3 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 3); + String dupliThread2RegVal4 = getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 4); + String dupliThread2RegVal5= getModelDataForRegisterDataValue(frameDmc2, IFormattedValues.NATURAL_FORMAT, 5); // If Values not equal , then context haven't been re-set properly assertTrue("Multiple context not working. Execution Context is not reset to 2", thread2RegVal0.equals(dupliThread2RegVal0)); @@ -360,8 +365,8 @@ public class MIRegistersTest extends BaseTestCase { @Test public void writeRegisterNaturalFormat() throws Throwable{ - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); String regValue = "10"; int regIndex = 3; writeRegister(frameDmc, 3, regValue, IFormattedValues.NATURAL_FORMAT); @@ -371,8 +376,8 @@ public class MIRegistersTest extends BaseTestCase { @Test public void writeRegisterHEXFormat() throws Throwable{ - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); String regValue = "0x10"; int regIndex = 3; writeRegister(frameDmc, 3, regValue, IFormattedValues.HEX_FORMAT); @@ -383,8 +388,8 @@ public class MIRegistersTest extends BaseTestCase { @Test @Ignore public void writeRegisterBinaryFormat() throws Throwable{ - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); //String regValue = "0100101001"; String regValue = "10"; int regIndex = 3; @@ -395,8 +400,8 @@ public class MIRegistersTest extends BaseTestCase { @Test public void writeRegisterOctalFormat() throws Throwable{ - IMIExecutionDMContext execDmc = SyncUtil.SyncCreateExecutionContext(fGdbControlDmc, 1); - IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(execDmc, 0); + MIStoppedEvent stoppedEvent = getInitialStoppedEvent(); + IFrameDMContext frameDmc = SyncUtil.SyncGetStackFrame(stoppedEvent.getDMContext(), 0); //String regValue = "10"; String regValue = "012"; int regIndex = 3; diff --git a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/framework/BaseTestCase.java b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/framework/BaseTestCase.java index 34417531712..f8adcf98f80 100644 --- a/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/framework/BaseTestCase.java +++ b/plugins/org.eclipse.dd.tests.gdb/src/org/eclipse/dd/tests/gdb/framework/BaseTestCase.java @@ -43,12 +43,16 @@ public class BaseTestCase { private static GdbLaunch fLaunch; private static Map attrs = new HashMap(); + private MIStoppedEvent fInitialStoppedEvent = null; + public GdbLaunch getGDBLaunch() { return fLaunch; } public static void setLaunchAttribute(String key, Object value) { attrs.put(key, value); } + public MIStoppedEvent getInitialStoppedEvent() { return fInitialStoppedEvent; } + @BeforeClass public static void baseBeforeClassMethod() { // Setup information for the launcher @@ -93,7 +97,7 @@ public class BaseTestCase { new ServiceEventWaitor( fLaunch.getSession(), MIStoppedEvent.class); - eventWaitor.waitForEvent(10000); + fInitialStoppedEvent = eventWaitor.waitForEvent(10000); } catch (Exception e) {} }