blob: b8ae2676a14541b282aee70b042a2dd52767d2ae [file] [log] [blame]
/*******************************************************************************
* 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.Before;
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.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.service.DsfSession;
public class ProcessesDetachDebuggerFromSession {
private Processes processesService;
private DsfSession session;
private BaseLaunchTest subLaunch0 = new BaseLaunchTest() {
@Override
protected boolean getStopAtMain() {
return true;
}
};
private BaseLaunchTest subLaunch1 = new BaseLaunchTest() {
@Override
protected String getExeFileName() {
return "BlackFlagMinGW_NoHardcodedBreak.exe"; //$NON-NLS-1$
}
@Override
protected boolean getStopAtMain() {
return true;
}
};
private BaseLaunchTest subLaunch2 = new BaseLaunchTest() {
@Override
protected String getExeFileName() {
return "SimpleCpp_gcc_x86.exe"; //$NON-NLS-1$
}
@Override
protected boolean getStopAtMain() {
return true;
}
};
@Before
public void launchSessions() throws Exception {
subLaunch0.basicLaunch();
subLaunch1.basicLaunch();
subLaunch2.basicLaunch();
session = subLaunch0.session;
Assert.assertEquals(session, subLaunch1.session);
Assert.assertEquals(session, subLaunch2.session);
EDCServicesTracker edcTracker
= new EDCServicesTracker(EDCDebugger.getBundleContext(), session.getId());
Assert.assertNotNull(edcTracker);
processesService = edcTracker.getService(Processes.class);
Assert.assertNotNull(processesService);
}
@Test
public void testDetachDebuggerFromSession() throws Exception {
Query<Integer> query = new Query<Integer>() {
@Override
protected void execute(final DataRequestMonitor<Integer> drm) {
processesService.detachDebuggerFromSession(drm);
}
};
session.getExecutor().execute(query);
query.get(10, TimeUnit.SECONDS);
Assert.assertTrue(query.isDone());
}
}