/******************************************************************************* * Copyright (c) 2013 IBM Corporation. * 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: * IBM Corporation - Rodrigo Fraxino De Araujo <rfaraujo@br.ibm.com> *******************************************************************************/ package org.eclipse.linuxtools.profiling.tests; import static org.junit.Assert.*; import static org.junit.Assume.assumeTrue; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteConnectionType; import org.eclipse.remote.core.IRemoteConnectionWorkingCopy; import org.eclipse.remote.core.IRemoteFileService; import org.eclipse.remote.core.IRemoteServicesManager; import org.eclipse.remote.core.exception.RemoteConnectionException; import org.eclipse.remote.internal.jsch.core.JSchConnection; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; @SuppressWarnings("restriction") public abstract class AbstractRemoteTest extends AbstractTest { private static final String PLUGIN_ID="org.eclipse.linuxtools.profiling.tests"; public static final String REMOTE_NATURE_ID = "org.eclipse.ptp.rdt.core.remoteNature"; //$NON-NLS-1$ public static final String REMOTE_SERVICES = "org.eclipse.ptp.remote.RemoteTools"; //$NON-NLS-1$ public static final String REMOTE_MAKE_NATURE = "org.eclipse.ptp.rdt.core.remoteMakeNature"; //$NON-NLS-1$ public static final String REMOTE_MAKE_BUILDER = "org.eclipse.ptp.rdt.core.remoteMakeBuilder"; //$NON-NLS-1$ public static final String BUILD_SERVICE = "org.eclipse.ptp.rdt.core.BuildService"; //$NON-NLS-1$ public static final String CINDEX_SERVICE = "org.eclipse.ptp.rdt.core.CIndexingService"; //$NON-NLS-1$ public static final String RDT_CINDEX_SERVICE = "org.eclipse.ptp.rdt.server.dstore.RemoteToolsCIndexServiceProvider"; //$NON-NLS-1$ public static final String TOOLCHAIN_ID = "org.eclipse.ptp.rdt.managedbuild.toolchain.gnu.base"; //$NON-NLS-1$ public static final String PTP_EXE = "org.eclipse.ptp.rdt.managedbuild.target.gnu.exe"; //$NON-NLS-1$ public static final String DEBUG = "Debug"; //$NON-NLS-1$ public static String USERNAME = ""; //$NON-NLS-1$ private static String PASSWORD = ""; //$NON-NLS-1$ public static final String CONNECTION_TYPE_JSCH = "org.eclipse.remote.JSch"; public static final String SYNC_SERVICE_GIT = "org.eclipse.ptp.rdt.sync.git.core.synchronizeService"; // Sets localhost as default connection if no remote host is given protected static String HOST = ""; //$NON-NLS-1$ public static String CONNECTION_NAME = "localhost"; //$NON-NLS-1$ public static final String RESOURCES_DIR = "resources/"; //$NON-NLS-1$ // Skip tests if there is not suitable connection details public static void checkConnectionInfo() { String host = System.getenv("TEST_HOST"); if (host != null) { HOST = host; } assumeTrue("Skip remote tests due lack of host information", !HOST.isEmpty()); String username = System.getenv("TEST_USERNAME"); if (username != null) { USERNAME = username; } assumeTrue("Skip remote tests due lack of an username for connection", !USERNAME.isEmpty()); String password = System.getenv("TEST_PASSWORD"); if (password != null) { PASSWORD = password; } assumeTrue("Skip remote tests due lack of an password for connection", !PASSWORD.isEmpty()); } protected void deleteResource (String directory) { IRemoteServicesManager sm = getServicesManager(); IRemoteConnection conn = sm.getConnectionType("ssh").getConnection(CONNECTION_NAME); assertNotNull(conn); IRemoteFileService fileManager = conn.getService(IRemoteFileService.class); assertNotNull(fileManager); final IFileStore dstFileStore = fileManager.getResource(directory); try { dstFileStore.delete(EFS.NONE, null); } catch (CoreException e) { } } /** * Create a new connection. Save the connection working copy before return. * * @param connName Connection Name * @param connTypeId The connection type identifier * @return The created remote connection * @throws RemoteConnectionException */ protected static IRemoteConnection createJSchConnection(String connName, String connTypeId) throws RemoteConnectionException { checkConnectionInfo(); IRemoteServicesManager manager = getServicesManager(); IRemoteConnectionType ct = manager.getConnectionType(connTypeId); assertNotNull(ct); IRemoteConnectionWorkingCopy wc = ct.newConnection(connName); wc.setAttribute(JSchConnection.ADDRESS_ATTR, HOST); wc.setAttribute(JSchConnection.USERNAME_ATTR, USERNAME); wc.setSecureAttribute(JSchConnection.PASSWORD_ATTR, PASSWORD); IRemoteConnection conn = wc.save(); assertNotNull(conn); conn.open(new NullProgressMonitor()); assertTrue(conn.isOpen()); return conn; } /** * Delete connection * * @param conn The connection * @throws RemoteConnectionException */ protected static void deleteConnection(IRemoteConnection conn) throws RemoteConnectionException { IRemoteConnectionType ct = conn.getConnectionType(); ct.removeConnection(conn); } private static IRemoteServicesManager getServicesManager() { BundleContext context = Platform.getBundle(PLUGIN_ID).getBundleContext(); ServiceReference<IRemoteServicesManager> ref = context.getServiceReference(IRemoteServicesManager.class); assertNotNull(ref); return context.getService(ref); } }