package com.sixsq.slipstream.connector; /* * +=================================================================+ * SlipStream Server (WAR) * ===== * Copyright (C) 2013 SixSq Sarl (sixsq.com) * ===== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * -=================================================================- */ import com.sixsq.slipstream.util.CommonTestUtil; import org.junit.Test; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; public class ConnectorFactoryTest extends ConnectorTestBase { @Test public void splitConnectorClassNames() { assertThat(ConnectorFactory.splitConnectorClassNames(null), is(new String[0])); assertThat(ConnectorFactory.splitConnectorClassNames(""), is(new String[0])); assertThat(ConnectorFactory.splitConnectorClassNames("\t\f "), is(new String[0])); assertThat(ConnectorFactory.splitConnectorClassNames("a,b,c"), is(new String[]{"a", "b", "c"})); assertThat(ConnectorFactory.splitConnectorClassNames("a,b,c "), is(new String[]{"a", "b", "c "})); assertThat(ConnectorFactory.splitConnectorClassNames("a,b, ,c,"), is(new String[]{"a", "b", " ", "c"})); assertThat(ConnectorFactory.splitConnectorClassNames("a:one,b:two,c"), is(new String[]{"a:one", "b:two", "c"})); } @Test public void checkClassNameConversions() { assertThat(ConnectorFactory.convertClassNameToServiceName("stratuslab"), equalTo("stratuslab")); assertThat(ConnectorFactory .convertClassNameToServiceName("com.sixsq.slipstream.connector.stratuslab.StratusLabConnector"), equalTo("stratuslab")); assertThat(ConnectorFactory.convertClassNameToServiceName("stratuslab.alpha"), equalTo("stratuslab")); assertThat(ConnectorFactory.convertClassNameToServiceName("com.sixsq.slipstream.connector.aws.Ec2Connector"), equalTo("ec2")); assertThat(ConnectorFactory.convertClassNameToServiceName("aws.Ec2Connector"), equalTo("ec2")); } @Test public void checkConnectorNames() throws Exception { CommonTestUtil.setCloudConnector("Local"); List<String> names = ConnectorFactory.getCloudServiceNamesList(); assertTrue(names.contains("local")); } @Test public void checkCaseInsensitivityOfConnectorNames() throws Exception { CommonTestUtil.setCloudConnector("LOCAL"); List<String> names = ConnectorFactory.getCloudServiceNamesList(); assertTrue(names.contains("local")); } @Test public void checkConnectorClassNames() throws Exception { CommonTestUtil.setCloudConnector("com.sixsq.slipstream.connector.local.LocalConnector"); List<String> names = ConnectorFactory.getCloudServiceNamesList(); assertTrue(names.contains("local")); } @Test public void checkConnectorNamesWithAliases() throws Exception { CommonTestUtil.setCloudConnector( "SL:com.sixsq.slipstream.connector.local.LocalConnector," + "SL2:local, " + "local"); List<String> names = ConnectorFactory.getCloudServiceNamesList(); assertTrue(names.contains("SL")); assertTrue(names.contains("SL2")); assertTrue(names.contains("local")); } @Test public void checkConnectorNamesWithAliasesAndSpaces() throws Exception { CommonTestUtil.setCloudConnector( " SL : com.sixsq.slipstream.connector.local.LocalConnector , " + " SL2:local , " + " local "); List<String> names = ConnectorFactory.getCloudServiceNamesList(); assertTrue(names.contains("SL")); assertTrue(names.contains("SL2")); assertTrue(names.contains("local")); } @Test public void checkConnectorsWithAliasesAndSpaces() throws Exception { CommonTestUtil.setCloudConnector( " SL : com.sixsq.slipstream.connector.local.LocalConnector , " + " SL2:local , " + " local "); assertThat(ConnectorFactory.getConnector("SL"), notNullValue()); assertThat(ConnectorFactory.getConnector("SL2"), notNullValue()); assertThat(ConnectorFactory.getConnector("local"), notNullValue()); Map<String, Connector> connectors = ConnectorFactory.getConnectors(); assertEquals(connectors.get("openstack"), null); } @Test public void checkConnectorInstanceAndCloudServiceNames() throws Exception { CommonTestUtil.setCloudConnector( " SL : com.sixsq.slipstream.connector.local.LocalConnector , " + " SL2:local , " + " local "); String[] instanceNames = new String[]{"SL", "SL2","local"}; for (String name : instanceNames) { Connector connector = ConnectorFactory.getConnector(name); assertThat(connector, notNullValue()); String instanceName = connector.getConnectorInstanceName(); assertEquals(name, instanceName); } Map<String, String> cloudServiceNames = new HashMap<String, String>(); cloudServiceNames.put("SL", "local"); cloudServiceNames.put("SL2", "local"); cloudServiceNames.put("local", "local"); for (String name : cloudServiceNames.keySet()) { Connector connector = ConnectorFactory.getConnector(name); assertThat(connector, notNullValue()); String cloudServiceName = connector.getCloudServiceName(); assertEquals(cloudServiceNames.get(name), cloudServiceName); } } @Test public void checkListAndArrayAreIdentical() throws Exception { CommonTestUtil.setCloudConnector("local"); List<String> names = ConnectorFactory.getCloudServiceNamesList(); String[] namesArray = ConnectorFactory.getCloudServiceNames(); Set<String> namesSet = new HashSet<String>(names); Set<String> namesArraySet = new HashSet<String>(); for (String name : namesArray) { namesArraySet.add(name); } assertTrue(namesSet.equals(namesArraySet)); } }