Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTestBase.java')
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTestBase.java128
1 files changed, 128 insertions, 0 deletions
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTestBase.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTestBase.java
new file mode 100644
index 00000000000..8bb546446fc
--- /dev/null
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTestBase.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Ericsson 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:
+ * Ericsson - Initial Implementation
+ *******************************************************************************/
+package org.eclipse.cdt.tests.dsf.debug.vm.launch;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.cdt.dsf.debug.service.IRunControl.IStartedDMEvent;
+import org.eclipse.cdt.dsf.service.DsfSession;
+import org.eclipse.cdt.dsf.service.DsfSession.SessionStartedListener;
+import org.eclipse.cdt.examples.dsf.pda.PDAPlugin;
+import org.eclipse.cdt.examples.dsf.pda.launch.PDALaunch;
+import org.eclipse.cdt.tests.dsf.ServiceEventWaitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+
+/**
+ * This is the base class for the GDB/MI Unit tests.
+ * It provides the @Before and @After methods which setup
+ * and teardown the launch, for each test.
+ * If these methods are overwridden by a subclass, the new method
+ * must call super.baseSetup or super.baseTeardown itself, if this
+ * code is to be run.
+ */
+public class VMTestBase {
+
+ private PDALaunch fLaunch;
+ public PDALaunch getPDALaunch() { return fLaunch; }
+
+ @BeforeClass
+ public static void baseBeforeClassMethod() {
+ DebugUIPlugin.getDefault().getPreferenceStore().setValue(
+ IInternalDebugUIConstants.PREF_SWITCH_TO_PERSPECTIVE, MessageDialogWithToggle.NEVER);
+ DebugUIPlugin.getDefault().getPreferenceStore().setValue(
+ IInternalDebugUIConstants.PREF_SWITCH_PERSPECTIVE_ON_SUSPEND, MessageDialogWithToggle.NEVER);
+ }
+
+ @Before
+ public void baseBeforeMethod() throws Exception {
+ Map<String, Object> attrs = new HashMap<String, Object>();
+
+ initLaunchAttributes(attrs);
+
+ System.out.println("====================================================================");
+ System.out.println("Launching test application: " + attrs.get(PDAPlugin.ATTR_PDA_PROGRAM));
+ System.out.println("====================================================================");
+
+ ILaunchManager launchMgr = DebugPlugin.getDefault().getLaunchManager();
+ ILaunchConfigurationType lcType = launchMgr.getLaunchConfigurationType("org.eclipse.cdt.examples.dsf.pda.launchType");
+ assert lcType != null;
+
+ ILaunchConfigurationWorkingCopy lcWorkingCopy = lcType.newInstance(
+ null,
+ launchMgr.generateUniqueLaunchConfigurationNameFrom("Test Launch")); //$NON-NLS-1$
+ assert lcWorkingCopy != null;
+ lcWorkingCopy.setAttributes(attrs);
+
+ final ILaunchConfiguration lc = lcWorkingCopy.doSave();
+ assert lc != null;
+
+ final ServiceEventWaitor<?> eventWaitor[] = new ServiceEventWaitor<?>[1];
+
+ SessionStartedListener newSessionListener = new SessionStartedListener() {
+ public void sessionStarted(DsfSession session) {
+ eventWaitor[0] = new ServiceEventWaitor<IStartedDMEvent>(session, IStartedDMEvent.class);
+ }
+ };
+
+ DsfSession.addSessionStartedListener(newSessionListener);
+ try {
+ fLaunch = (PDALaunch)lc.launch(ILaunchManager.DEBUG_MODE, new NullProgressMonitor());
+ Assert.assertNotNull(fLaunch);
+ Assert.assertNotNull(eventWaitor[0]);
+ Assert.assertSame(fLaunch.getSession(), eventWaitor[0].getSession());
+ eventWaitor[0].waitForEvent(60000);
+ } finally {
+ DsfSession.removeSessionStartedListener(newSessionListener);
+ if (eventWaitor[0] != null) {
+ eventWaitor[0].dispose();
+ }
+ }
+ }
+
+ protected void initLaunchAttributes(Map<String, Object> attrs) {
+ attrs.put(PDAPlugin.ATTR_PDA_PROGRAM, getProgramPath());
+ }
+
+ protected String getProgramPath() {
+ File programFile = PDAPlugin.getFileInPlugin(new Path("samples/example.pda"));
+ return programFile.getPath();
+ }
+
+ protected ILaunch getLaunch() {
+ return fLaunch;
+ }
+
+ @After
+ public void baseAfterMethod() throws Exception {
+ if (fLaunch != null) {
+ fLaunch.terminate();
+ fLaunch = null;
+ }
+
+ }
+
+}

Back to the top