/******************************************************************************* | |
* Copyright (c) 2009, 2010 Nokia and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* Nokia - Initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.cdt.debug.edc.debugger.tests; | |
import java.util.concurrent.TimeUnit; | |
import junit.framework.Assert; | |
import org.junit.AfterClass; | |
import org.junit.BeforeClass; | |
import org.junit.Test; | |
import org.eclipse.cdt.debug.edc.internal.EDCDebugger; | |
import org.eclipse.cdt.debug.edc.internal.services.dsf.Processes; | |
import org.eclipse.cdt.debug.edc.services.EDCServicesTracker; | |
import org.eclipse.cdt.debug.edc.tests.TestUtils; | |
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor; | |
import org.eclipse.cdt.dsf.concurrent.Query; | |
import org.eclipse.cdt.dsf.datamodel.DMContexts; | |
import org.eclipse.cdt.dsf.datamodel.IDMContext; | |
import org.eclipse.cdt.dsf.debug.service.IProcesses; | |
import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext; | |
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMData; | |
public class ProcessesServiceTest { | |
// private static final String dbg_derived_types_cpp | |
// = "C:\\myprog\\BlackFlagWascana\\src\\dbg_derived_types.cpp"; //$NON-NLS-1$ | |
private static Processes processesService; | |
private static BaseLaunchTest simpleLaunch; | |
@BeforeClass | |
public static void setUpClass() throws Exception { | |
simpleLaunch = new BaseLaunchTest() { | |
@Override | |
protected boolean getStopAtMain() { | |
return true; | |
} | |
}; | |
simpleLaunch.basicLaunch(); | |
EDCServicesTracker edcTracker | |
= new EDCServicesTracker( | |
EDCDebugger.getBundleContext(), simpleLaunch.session.getId()); | |
Assert.assertNotNull(edcTracker); | |
processesService = edcTracker.getService(Processes.class); | |
Assert.assertNotNull(processesService); | |
} | |
@AfterClass | |
public static void shutdown() { | |
TestUtils.shutdownDebugSession(simpleLaunch.launch, simpleLaunch.session); | |
processesService = null; | |
simpleLaunch = null; | |
} | |
@Test | |
public void coverageAttachDebuggerToProcess() throws Exception { | |
Query<IDMContext> query = new Query<IDMContext>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IDMContext> drm) { | |
processesService.attachDebuggerToProcess(null, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
} | |
@Test | |
public void coverageDebugNewProcess() throws Exception { | |
Query<IDMContext> query = new Query<IDMContext>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IDMContext> drm) { | |
processesService.debugNewProcess( | |
simpleLaunch.threadDMC, simpleLaunch.getExeFileName(), null, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
} | |
@Test | |
public void coverageEventReceived() { | |
// nothing expected, nothing set, nothing returned, no side-effects | |
processesService.eventDispatched(null); | |
} | |
@Test | |
public void coverageGetDebuggingContext() throws Exception { | |
Query<IDMContext> query = new Query<IDMContext>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IDMContext> drm) { | |
IProcesses.IThreadDMContext processThreadDMC | |
= DMContexts.getAncestorOfType( | |
simpleLaunch.threadDMC, IProcesses.IThreadDMContext.class); | |
processesService.getDebuggingContext(processThreadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
} | |
@Test | |
public void coverageGetModelData() throws Exception { | |
Query<IDMContext> query = new Query<IDMContext>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IDMContext> drm) { | |
processesService.getModelData(simpleLaunch.threadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
} | |
@Test | |
public void coverageGetRunningProcesses() throws Exception { | |
Query<IProcessDMContext[]> query = new Query<IProcessDMContext[]>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IProcessDMContext[]> drm) { | |
processesService.getRunningProcesses(simpleLaunch.threadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
} | |
@Test | |
public void coverageIsDebugNewProcessSupported() throws Exception { | |
Query<Boolean> query = new Query<Boolean>() { | |
@Override | |
protected void execute(final DataRequestMonitor<Boolean> drm) { | |
processesService.isDebugNewProcessSupported(simpleLaunch.threadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
Boolean bData = query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
Assert.assertNotNull(bData); | |
Assert.assertFalse(bData); | |
} | |
@Test | |
public void coverageIsDebuggerAttachSupported() throws Exception { | |
Query<Boolean> query = new Query<Boolean>() { | |
@Override | |
protected void execute(final DataRequestMonitor<Boolean> drm) { | |
processesService.isDebuggerAttachSupported(simpleLaunch.threadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
Boolean bData = query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
Assert.assertNotNull(bData); | |
Assert.assertFalse(bData); | |
} | |
@Test | |
public void coverageIsRunNewProcessSupported() throws Exception { | |
Query<Boolean> query = new Query<Boolean>() { | |
@Override | |
protected void execute(final DataRequestMonitor<Boolean> drm) { | |
processesService.isRunNewProcessSupported(simpleLaunch.threadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
Boolean bData = query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
Assert.assertNotNull(bData); | |
Assert.assertFalse(bData); | |
} | |
@Test | |
public void coverageRunNewProcess() throws Exception { | |
Query<IProcessDMContext> query = new Query<IProcessDMContext>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IProcessDMContext> drm) { | |
processesService.runNewProcess( | |
simpleLaunch.threadDMC, simpleLaunch.getExeFileName(), null, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
} | |
@Test | |
public void testExecutionDataIsDebuggerAttached() throws Exception { | |
Query<IThreadDMData> query = new Query<IThreadDMData>() { | |
@Override | |
protected void execute(final DataRequestMonitor<IThreadDMData> drm) { | |
IProcesses.IThreadDMContext processThreadDMC | |
= DMContexts.getAncestorOfType( | |
simpleLaunch.threadDMC, IProcesses.IThreadDMContext.class); | |
processesService.getExecutionData(processThreadDMC, drm); | |
} | |
}; | |
simpleLaunch.session.getExecutor().execute(query); | |
IThreadDMData threadData = query.get(1, TimeUnit.SECONDS); | |
Assert.assertTrue(query.isDone()); | |
Assert.assertTrue(threadData.isDebuggerAttached()); | |
} | |
} |