From 39668b20a51a4f4be53677a1004bb12568dd4309 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Thu, 29 Apr 2010 14:21:47 +0000 Subject: [PATCH] Small enhancement to get the containerDmc in the unit tests --- .../cdt/tests/dsf/gdb/framework/SyncUtil.java | 28 +++++++++---------- .../tests/dsf/gdb/tests/GDBProcessesTest.java | 5 ++-- .../tests/dsf/gdb/tests/MIRunControlTest.java | 22 ++++----------- 3 files changed, 22 insertions(+), 33 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java index 53d26830a00..be08d0ff666 100644 --- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java +++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java @@ -21,12 +21,11 @@ import junit.framework.Assert; import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor; import org.eclipse.cdt.dsf.concurrent.Query; import org.eclipse.cdt.dsf.concurrent.ThreadSafeAndProhibitedFromDsfExecutor; -import org.eclipse.cdt.dsf.datamodel.DMContexts; import org.eclipse.cdt.dsf.datamodel.IDMContext; -import org.eclipse.cdt.dsf.debug.service.IExpressions; -import org.eclipse.cdt.dsf.debug.service.IFormattedValues; import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext; +import org.eclipse.cdt.dsf.debug.service.IExpressions; import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext; +import org.eclipse.cdt.dsf.debug.service.IFormattedValues; import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMContext; import org.eclipse.cdt.dsf.debug.service.IFormattedValues.IFormattedDataDMContext; import org.eclipse.cdt.dsf.debug.service.IProcesses; @@ -36,7 +35,6 @@ import org.eclipse.cdt.dsf.debug.service.IRunControl.IExecutionDMContext; import org.eclipse.cdt.dsf.debug.service.IRunControl.StepType; import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext; import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService; -import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl; import org.eclipse.cdt.dsf.mi.service.IMICommandControl; import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext; import org.eclipse.cdt.dsf.mi.service.IMIProcesses; @@ -73,7 +71,6 @@ public class SyncUtil { private static IContainerDMContext fGdbContainerDmc; private static IBreakpointsTargetDMContext fBreakpointsDmc; private static IProcesses fProcessesService; - private static IGDBControl fGDBCtrl; public static final int WAIT_FOREVER = ServiceEventWaitor.WAIT_FOREVER; @@ -96,7 +93,6 @@ public class SyncUtil { fStack = tracker.getService(MIStack.class); fExpressions = tracker.getService(IExpressions.class); fProcessesService = tracker.getService(IProcesses.class); - fGDBCtrl = tracker.getService(IGDBControl.class); fCommandFactory = tracker.getService(IMICommandControl.class).getCommandFactory(); @@ -529,7 +525,7 @@ public class SyncUtil { } /** - * Utility method to return the process DM context. This can be used only by + * Utility method to return the container DM context. This can be used only by * tests that deal with a single heavyweight process. If more than one * process is available, this method will fail. * @@ -540,14 +536,16 @@ public class SyncUtil { * @throws InterruptedException */ @ThreadSafeAndProhibitedFromDsfExecutor("fSession.getExecutor()") - public static IProcessDMContext getProcessContext() throws InterruptedException { + public static IContainerDMContext getContainerContext() throws InterruptedException { assert !fProcessesService.getExecutor().isInExecutorThread(); final AsyncCompletionWaitor waitor = new AsyncCompletionWaitor(); fProcessesService.getExecutor().submit(new Runnable() { public void run() { - fProcessesService.getProcessesBeingDebugged(fGDBCtrl.getContext(), new DataRequestMonitor(fProcessesService.getExecutor(), null) { + fProcessesService.getProcessesBeingDebugged( + fCommandControl.getContext(), + new DataRequestMonitor(fProcessesService.getExecutor(), null) { @Override protected void handleCompleted() { if (isSuccess()) { @@ -555,9 +553,11 @@ public class SyncUtil { Assert.assertNotNull("invalid return value from service", contexts); Assert.assertEquals("unexpected number of processes", contexts.length, 1); IDMContext context = contexts[0]; - IProcessDMContext processContext = DMContexts.getAncestorOfType(context, IProcessDMContext.class); - Assert.assertNotNull("unexpected process context type ", processContext); - waitor.setReturnInfo(processContext); + Assert.assertNotNull("unexpected process context type ", context); + waitor.setReturnInfo(context); + waitor.waitFinished(); + } else { + waitor.waitFinished(getStatus()); } } @@ -565,11 +565,9 @@ public class SyncUtil { } }); - - waitor.waitUntilDone(TestsPlugin.massageTimeout(2000)); Assert.assertTrue(waitor.getMessage(), waitor.isOK()); - return (IProcessDMContext) waitor.getReturnInfo(); + return (IContainerDMContext)waitor.getReturnInfo(); } } diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java index 1dc8ef52ef5..227bfa31f73 100644 --- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java +++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java @@ -20,6 +20,7 @@ import java.util.regex.Pattern; import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor; +import org.eclipse.cdt.dsf.datamodel.DMContexts; import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext; import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext; import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMData; @@ -107,7 +108,7 @@ public class GDBProcessesTest extends BaseTestCase { * Ask the service to get model data for the process. * There is only one process in case of GDB back end. */ - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IProcessDMContext processContext = DMContexts.getAncestorOfType(SyncUtil.getContainerContext(), IProcessDMContext.class); fSession.getExecutor().submit(new Runnable() { public void run() { fProcService.getExecutionData(processContext, rm); @@ -146,7 +147,7 @@ public class GDBProcessesTest extends BaseTestCase { }; - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IProcessDMContext processContext = DMContexts.getAncestorOfType(SyncUtil.getContainerContext(), IProcessDMContext.class); fProcService.getExecutor().submit(new Runnable() { public void run() { IThreadDMContext threadDmc = fProcService.createThreadContext(processContext, THREAD_ID); diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java index 8293c14db6a..f2625a0f03a 100644 --- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java +++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java @@ -36,7 +36,6 @@ import org.eclipse.cdt.dsf.debug.service.IRunControl.StateChangeReason; import org.eclipse.cdt.dsf.debug.service.IRunControl.StepType; import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl; import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext; -import org.eclipse.cdt.dsf.mi.service.IMIProcessDMContext; import org.eclipse.cdt.dsf.mi.service.IMIProcesses; import org.eclipse.cdt.dsf.mi.service.IMIRunControl; import org.eclipse.cdt.dsf.mi.service.MIProcesses; @@ -80,7 +79,6 @@ public class MIRunControlTest extends BaseTestCase { private IGDBControl fGDBCtrl; private IMIRunControl fRunCtrl; - private IMIProcesses fProcService; private IContainerDMContext fContainerDmc; private IExecutionDMContext fThreadExecDmc; @@ -109,7 +107,6 @@ public class MIRunControlTest extends BaseTestCase { fThreadExecDmc = procService.createExecutionContext(fContainerDmc, threadDmc, "1"); fRunCtrl = fServicesTracker.getService(IMIRunControl.class); - fProcService = fServicesTracker.getService(IMIProcesses.class); } @@ -190,14 +187,13 @@ public class MIRunControlTest extends BaseTestCase { } }; - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IContainerDMContext containerDmc = SyncUtil.getContainerContext(); /* * Test getExecutionContexts() when only one thread exist. */ fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); fRunCtrl.getExecutionContexts(containerDmc, rm); } }); @@ -278,14 +274,13 @@ public class MIRunControlTest extends BaseTestCase { Assert.assertEquals("Thread created event is for wrong thread id", sProgramIsCygwin ? 3 : 2, ((IMIExecutionDMContext)startedEvent.getDMContext()).getThreadId()); - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IContainerDMContext containerDmc = SyncUtil.getContainerContext(); /* * Test getExecutionContexts for a valid container DMC */ fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); fRunCtrl.getExecutionContexts(containerDmc, rmExecutionCtxts); } }); @@ -336,14 +331,13 @@ public class MIRunControlTest extends BaseTestCase { } }; - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IContainerDMContext containerDmc = SyncUtil.getContainerContext(); /* * Call getModelData for Execution DMC */ fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); fRunCtrl.getExecutionData(((MIRunControl)fRunCtrl).createMIExecutionContext(containerDmc, 1), rm); } }); @@ -570,11 +564,10 @@ public class MIRunControlTest extends BaseTestCase { getGDBLaunch().getSession(), IResumedDMEvent.class); - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IContainerDMContext containerDmc = SyncUtil.getContainerContext(); fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); fRunCtrl.resume(containerDmc, rm); } }); @@ -593,7 +586,6 @@ public class MIRunControlTest extends BaseTestCase { fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc)); wait.waitFinished(); } @@ -641,11 +633,10 @@ public class MIRunControlTest extends BaseTestCase { wait.waitReset(); - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IContainerDMContext containerDmc = SyncUtil.getContainerContext(); fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc)); wait.waitFinished(); } @@ -687,11 +678,10 @@ public class MIRunControlTest extends BaseTestCase { return; } - final IProcessDMContext processContext = SyncUtil.getProcessContext(); + final IContainerDMContext containerDmc = SyncUtil.getContainerContext(); fRunCtrl.getExecutor().submit(new Runnable() { public void run() { - IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId()); wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc)); wait.waitFinished(); }