/******************************************************************************* * Copyright (c) 2015 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: * Wainer dos Santos Moschetta (IBM Corporation) - initial implementation *******************************************************************************/ package org.eclipse.linuxtools.rdt.proxy.tests; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.net.URI; import org.eclipse.core.runtime.CoreException; import org.eclipse.linuxtools.internal.profiling.launch.LocalFileProxy; import org.eclipse.linuxtools.internal.profiling.launch.LocalLauncher; import org.eclipse.linuxtools.internal.rdt.proxy.RDTCommandLauncher; import org.eclipse.linuxtools.internal.rdt.proxy.RDTFileProxy; import org.eclipse.linuxtools.internal.ssh.proxy.SSHCommandLauncher; import org.eclipse.linuxtools.internal.ssh.proxy.SSHFileProxy; import org.eclipse.linuxtools.profiling.launch.IRemoteCommandLauncher; import org.eclipse.linuxtools.profiling.launch.IRemoteFileProxy; import org.eclipse.linuxtools.remote.proxy.tests.AbstractProxyTest; import org.eclipse.ptp.rdt.sync.core.SyncConfig; @SuppressWarnings("restriction") public class RemoteProxyManagerTest extends AbstractProxyTest { @Test public void testGetFileProxy() { IRemoteFileProxy fp; try { /* * Test the proxy for local URIs and project */ fp = proxyManager.getFileProxy(URI.create("/path/to/file")); assertTrue("Should return a local file proxy", fp instanceof LocalFileProxy); fp = proxyManager.getFileProxy(URI.create("file:/path/to/file")); assertTrue("Should return a local file proxy", fp instanceof LocalFileProxy); fp = proxyManager.getFileProxy(localProject.getLocationURI()); assertTrue("Should return a local file proxy", fp instanceof LocalFileProxy); fp = proxyManager.getFileProxy(localProject.getProject()); assertTrue("Should return a local file proxy", fp instanceof LocalFileProxy); /* * Test the proxy for remote URIs and project */ fp = proxyManager.getFileProxy(URI.create("ssh://" + CONNECTION_NAME + "/path/to/file")); assertTrue("Should have returned a remote file proxy", fp instanceof RDTFileProxy); fp = proxyManager.getFileProxy(syncProject.getProject()); assertTrue("Should have returned a remote file proxy", fp instanceof RDTFileProxy); /* * Test the proxy for jsch connection scheme */ fp = proxyManager.getFileProxy(URI.create("jsch://" + USERNAME + "@" + HOST + ":22/path/to/file")); assertTrue("Should have returned a remote file proxy", fp instanceof SSHFileProxy); } catch (CoreException e) { fail("Should have returned a file proxy: " + e.getCause()); } /* * Test the proxy for unsupported URIs */ try { // As of org.eclipse.remote 2.0, remotetools scheme is no longer // support fp = proxyManager.getFileProxy(URI.create("remotetools://MyConnection/path/to/file")); fail("remotetools scheme should not be recognized"); } catch (CoreException e) { assertTrue(e.getMessage(), true); } } @Test public void testGetLauncher() { IRemoteCommandLauncher cl; try { /* * Test launcher got for local URIs and project */ cl = proxyManager.getLauncher(localProject.getLocationURI()); assertTrue("Should have returned a local launcher", cl instanceof LocalLauncher); cl = proxyManager.getLauncher(localProject.getProject()); assertTrue("Should have returned a local launcher", cl instanceof LocalLauncher); /* * Test launcher got for remote project and URI */ cl = proxyManager.getLauncher(URI.create("ssh://" + CONNECTION_NAME + "/path/to/file")); assertTrue("Should have returned a remote file proxy", cl instanceof RDTCommandLauncher); cl = proxyManager.getLauncher(syncProject.getProject()); assertTrue("Should have returned a remote launcher", cl instanceof RDTCommandLauncher); /* * Test launcher got for jsch scheme */ cl = proxyManager.getLauncher(URI.create("jsch://" + USERNAME + "@" + HOST + ":22/path/to/file")); assertTrue("Should have returned a remote file proxy", cl instanceof SSHCommandLauncher); } catch (CoreException e) { fail("Should have returned a launcher: " + e.getCause()); } /* * Test the proxy for unsupported URIs */ try { // As of org.eclipse.remote 2.0, remotetools scheme is no longer // support cl = proxyManager.getLauncher(URI.create("remotetools://MyConnection/path/to/file")); fail("remotetools scheme should not be recognized"); } catch (CoreException e) { assertTrue(e.getMessage(),true); } } @Test public void testGetOS() { String actualOS = null; try { /* * Test got OS for local URIs and project */ actualOS = proxyManager.getOS(URI.create("/path/to/file")); assertNotNull(actualOS); assertTrue("Should have returned the OS name", !actualOS.isEmpty()); actualOS = proxyManager.getOS(URI.create("file:/path/to/file")); assertNotNull(actualOS); assertTrue("Should have returned the OS name", !actualOS.isEmpty()); actualOS = proxyManager.getOS(localProject.getLocationURI()); assertNotNull(actualOS); assertTrue("Should have returned the OS name", !actualOS.isEmpty()); actualOS = proxyManager.getOS(localProject.getProject()); assertNotNull(actualOS); assertTrue("Should have returned the OS name", !actualOS.isEmpty()); /* * Test got OS for remote URIs and project */ actualOS = proxyManager.getOS(syncProject.getProject()); assertNotNull(actualOS); assertTrue("Should have returned the OS name", !actualOS.isEmpty()); } catch (CoreException e) { fail("Unabled to get OS name: " + e.getMessage()); } /* * Test the proxy for unsupported URIs */ try { // As of org.eclipse.remote 2.0, remotetools scheme is no longer // support actualOS = proxyManager.getOS(URI.create("remotetools://MyConnection/path/to/file")); fail("remotetools scheme should not be recognized"); } catch (CoreException e) { assertTrue(e.getMessage(),true); } } @Test public void testGetRemoteProjectLocationOnSyncProj() { try { String actualLocation = proxyManager.getRemoteProjectLocation(syncProject.getProject()); SyncConfig config = getSyncConfig(syncProject.getProject()); assertNotNull(config); assertEquals(connection.getConnectionType().getScheme(), URI.create(actualLocation).getScheme()); assertEquals(config.getConnectionName(), URI.create(actualLocation).getAuthority()); assertEquals(config.getLocation(),URI.create(actualLocation).getPath()); } catch (CoreException e) { fail("Should have returned the remote project location: " + e.getMessage()); } } }