/*******************************************************************************
* 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.remote.proxy.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.linuxtools.profiling.launch.IRemoteEnvProxyManager;
import org.eclipse.linuxtools.profiling.launch.RemoteEnvProxyManager;
import org.eclipse.remote.core.IRemoteConnection;
import org.junit.Test;
/**
* @author wainersm
*
*/
public class RemoteProxyEnvManagerTest extends AbstractProxyTest {
@Test
public void testGetEnv() {
Map<String, String> actualEnv = new HashMap<>();
Map<String, String> expectedEnv = new HashMap<>();
IRemoteEnvProxyManager proxy = new RemoteEnvProxyManager();
/*
* Get local environment to compare with returned by the proxy
*/
expectedEnv= System.getenv();
try {
actualEnv = proxy.getEnv(localProject.getProject());
} catch (CoreException e) {
fail("Failed to get environment variables: " + e.getMessage());
}
assertEquals(expectedEnv.size(), actualEnv.size());
assertEquals(expectedEnv.keySet(), actualEnv.keySet());
assertEquals(expectedEnv.values(), actualEnv.values());
/*
* Get remote environment to compare with returned by the proxy
*/
try {
actualEnv = proxy.getEnv(syncProject.getProject());
} catch (CoreException e) {
fail("Failed to get remote environment variables: " + e.getMessage());
}
assertTrue(!actualEnv.isEmpty());
// Bug 469184 - it should be able to filter out some variables
for(Entry<String, String> entry: actualEnv.entrySet()) {
assertTrue("It should not hold exported functions: " + entry.getKey(), !entry.getKey().matches("BASH_FUNC_.*"));
assertTrue("It should not hold exported functions: " + entry.getKey(), !entry.getValue().matches("^\\("));
}
/*
* Test it opens connection to get the env
*/
IRemoteConnection conn = getConnection();
assertNotNull(conn);
conn.close();
assertFalse(conn.isOpen());
proxy = new RemoteEnvProxyManager();
try {
actualEnv = proxy.getEnv(syncProject.getProject());
assertTrue(actualEnv.size() > 0);
} catch (CoreException e) {
fail("Failed to get env when connection is closed: " + e.getMessage());
}
}
}