/******************************************************************************* | |
* 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()); | |
} | |
} |