mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Small enhancement to get the containerDmc in the unit tests
This commit is contained in:
parent
b231775082
commit
39668b20a5
3 changed files with 22 additions and 33 deletions
|
@ -21,12 +21,11 @@ import junit.framework.Assert;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.Query;
|
import org.eclipse.cdt.dsf.concurrent.Query;
|
||||||
import org.eclipse.cdt.dsf.concurrent.ThreadSafeAndProhibitedFromDsfExecutor;
|
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.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.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.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.FormattedValueDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.IFormattedDataDMContext;
|
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.IFormattedDataDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IProcesses;
|
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.IRunControl.StepType;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
|
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService;
|
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.IMICommandControl;
|
||||||
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
|
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
|
||||||
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
|
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
|
||||||
|
@ -73,7 +71,6 @@ public class SyncUtil {
|
||||||
private static IContainerDMContext fGdbContainerDmc;
|
private static IContainerDMContext fGdbContainerDmc;
|
||||||
private static IBreakpointsTargetDMContext fBreakpointsDmc;
|
private static IBreakpointsTargetDMContext fBreakpointsDmc;
|
||||||
private static IProcesses fProcessesService;
|
private static IProcesses fProcessesService;
|
||||||
private static IGDBControl fGDBCtrl;
|
|
||||||
|
|
||||||
public static final int WAIT_FOREVER = ServiceEventWaitor.WAIT_FOREVER;
|
public static final int WAIT_FOREVER = ServiceEventWaitor.WAIT_FOREVER;
|
||||||
|
|
||||||
|
@ -96,7 +93,6 @@ public class SyncUtil {
|
||||||
fStack = tracker.getService(MIStack.class);
|
fStack = tracker.getService(MIStack.class);
|
||||||
fExpressions = tracker.getService(IExpressions.class);
|
fExpressions = tracker.getService(IExpressions.class);
|
||||||
fProcessesService = tracker.getService(IProcesses.class);
|
fProcessesService = tracker.getService(IProcesses.class);
|
||||||
fGDBCtrl = tracker.getService(IGDBControl.class);
|
|
||||||
|
|
||||||
fCommandFactory = tracker.getService(IMICommandControl.class).getCommandFactory();
|
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
|
* tests that deal with a single heavyweight process. If more than one
|
||||||
* process is available, this method will fail.
|
* process is available, this method will fail.
|
||||||
*
|
*
|
||||||
|
@ -540,14 +536,16 @@ public class SyncUtil {
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
@ThreadSafeAndProhibitedFromDsfExecutor("fSession.getExecutor()")
|
@ThreadSafeAndProhibitedFromDsfExecutor("fSession.getExecutor()")
|
||||||
public static IProcessDMContext getProcessContext() throws InterruptedException {
|
public static IContainerDMContext getContainerContext() throws InterruptedException {
|
||||||
assert !fProcessesService.getExecutor().isInExecutorThread();
|
assert !fProcessesService.getExecutor().isInExecutorThread();
|
||||||
|
|
||||||
final AsyncCompletionWaitor waitor = new AsyncCompletionWaitor();
|
final AsyncCompletionWaitor waitor = new AsyncCompletionWaitor();
|
||||||
|
|
||||||
fProcessesService.getExecutor().submit(new Runnable() {
|
fProcessesService.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
fProcessesService.getProcessesBeingDebugged(fGDBCtrl.getContext(), new DataRequestMonitor<IDMContext[]>(fProcessesService.getExecutor(), null) {
|
fProcessesService.getProcessesBeingDebugged(
|
||||||
|
fCommandControl.getContext(),
|
||||||
|
new DataRequestMonitor<IDMContext[]>(fProcessesService.getExecutor(), null) {
|
||||||
@Override
|
@Override
|
||||||
protected void handleCompleted() {
|
protected void handleCompleted() {
|
||||||
if (isSuccess()) {
|
if (isSuccess()) {
|
||||||
|
@ -555,9 +553,11 @@ public class SyncUtil {
|
||||||
Assert.assertNotNull("invalid return value from service", contexts);
|
Assert.assertNotNull("invalid return value from service", contexts);
|
||||||
Assert.assertEquals("unexpected number of processes", contexts.length, 1);
|
Assert.assertEquals("unexpected number of processes", contexts.length, 1);
|
||||||
IDMContext context = contexts[0];
|
IDMContext context = contexts[0];
|
||||||
IProcessDMContext processContext = DMContexts.getAncestorOfType(context, IProcessDMContext.class);
|
Assert.assertNotNull("unexpected process context type ", context);
|
||||||
Assert.assertNotNull("unexpected process context type ", processContext);
|
waitor.setReturnInfo(context);
|
||||||
waitor.setReturnInfo(processContext);
|
waitor.waitFinished();
|
||||||
|
} else {
|
||||||
|
waitor.waitFinished(getStatus());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,11 +565,9 @@ public class SyncUtil {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
waitor.waitUntilDone(TestsPlugin.massageTimeout(2000));
|
waitor.waitUntilDone(TestsPlugin.massageTimeout(2000));
|
||||||
Assert.assertTrue(waitor.getMessage(), waitor.isOK());
|
Assert.assertTrue(waitor.getMessage(), waitor.isOK());
|
||||||
return (IProcessDMContext) waitor.getReturnInfo();
|
return (IContainerDMContext)waitor.getReturnInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
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.IProcessDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext;
|
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMData;
|
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.
|
* Ask the service to get model data for the process.
|
||||||
* There is only one process in case of GDB back end.
|
* 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() {
|
fSession.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
fProcService.getExecutionData(processContext, rm);
|
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() {
|
fProcService.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IThreadDMContext threadDmc = fProcService.createThreadContext(processContext, THREAD_ID);
|
IThreadDMContext threadDmc = fProcService.createThreadContext(processContext, THREAD_ID);
|
||||||
|
|
|
@ -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.debug.service.IRunControl.StepType;
|
||||||
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
|
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
|
||||||
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
|
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.IMIProcesses;
|
||||||
import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
|
import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
|
||||||
import org.eclipse.cdt.dsf.mi.service.MIProcesses;
|
import org.eclipse.cdt.dsf.mi.service.MIProcesses;
|
||||||
|
@ -80,7 +79,6 @@ public class MIRunControlTest extends BaseTestCase {
|
||||||
|
|
||||||
private IGDBControl fGDBCtrl;
|
private IGDBControl fGDBCtrl;
|
||||||
private IMIRunControl fRunCtrl;
|
private IMIRunControl fRunCtrl;
|
||||||
private IMIProcesses fProcService;
|
|
||||||
|
|
||||||
private IContainerDMContext fContainerDmc;
|
private IContainerDMContext fContainerDmc;
|
||||||
private IExecutionDMContext fThreadExecDmc;
|
private IExecutionDMContext fThreadExecDmc;
|
||||||
|
@ -109,7 +107,6 @@ public class MIRunControlTest extends BaseTestCase {
|
||||||
fThreadExecDmc = procService.createExecutionContext(fContainerDmc, threadDmc, "1");
|
fThreadExecDmc = procService.createExecutionContext(fContainerDmc, threadDmc, "1");
|
||||||
|
|
||||||
fRunCtrl = fServicesTracker.getService(IMIRunControl.class);
|
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.
|
* Test getExecutionContexts() when only one thread exist.
|
||||||
*/
|
*/
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
fRunCtrl.getExecutionContexts(containerDmc, rm);
|
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());
|
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
|
* Test getExecutionContexts for a valid container DMC
|
||||||
*/
|
*/
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
fRunCtrl.getExecutionContexts(containerDmc, rmExecutionCtxts);
|
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
|
* Call getModelData for Execution DMC
|
||||||
*/
|
*/
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
fRunCtrl.getExecutionData(((MIRunControl)fRunCtrl).createMIExecutionContext(containerDmc, 1), rm);
|
fRunCtrl.getExecutionData(((MIRunControl)fRunCtrl).createMIExecutionContext(containerDmc, 1), rm);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -570,11 +564,10 @@ public class MIRunControlTest extends BaseTestCase {
|
||||||
getGDBLaunch().getSession(),
|
getGDBLaunch().getSession(),
|
||||||
IResumedDMEvent.class);
|
IResumedDMEvent.class);
|
||||||
|
|
||||||
final IProcessDMContext processContext = SyncUtil.getProcessContext();
|
final IContainerDMContext containerDmc = SyncUtil.getContainerContext();
|
||||||
|
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
fRunCtrl.resume(containerDmc, rm);
|
fRunCtrl.resume(containerDmc, rm);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -593,7 +586,6 @@ public class MIRunControlTest extends BaseTestCase {
|
||||||
|
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc));
|
wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc));
|
||||||
wait.waitFinished();
|
wait.waitFinished();
|
||||||
}
|
}
|
||||||
|
@ -641,11 +633,10 @@ public class MIRunControlTest extends BaseTestCase {
|
||||||
|
|
||||||
wait.waitReset();
|
wait.waitReset();
|
||||||
|
|
||||||
final IProcessDMContext processContext = SyncUtil.getProcessContext();
|
final IContainerDMContext containerDmc = SyncUtil.getContainerContext();
|
||||||
|
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc));
|
wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc));
|
||||||
wait.waitFinished();
|
wait.waitFinished();
|
||||||
}
|
}
|
||||||
|
@ -687,11 +678,10 @@ public class MIRunControlTest extends BaseTestCase {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final IProcessDMContext processContext = SyncUtil.getProcessContext();
|
final IContainerDMContext containerDmc = SyncUtil.getContainerContext();
|
||||||
|
|
||||||
fRunCtrl.getExecutor().submit(new Runnable() {
|
fRunCtrl.getExecutor().submit(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
IContainerDMContext containerDmc = fProcService.createContainerContext(processContext, ((IMIProcessDMContext)processContext).getProcId());
|
|
||||||
wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc));
|
wait.setReturnInfo(fRunCtrl.isSuspended(containerDmc));
|
||||||
wait.waitFinished();
|
wait.waitFinished();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue