You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/14 05:42:39 UTC
[10/54] incubator-brooklyn git commit: [BROOKLYN-162] Renaming
package brooklyn.location
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/SingleMachineProvisioningLocationJcloudsLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/SingleMachineProvisioningLocationJcloudsLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/SingleMachineProvisioningLocationJcloudsLiveTest.java
deleted file mode 100644
index a40660a..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/SingleMachineProvisioningLocationJcloudsLiveTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertSame;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-import brooklyn.entity.basic.ConfigKeys;
-import brooklyn.location.MachineLocation;
-import brooklyn.location.basic.SingleMachineProvisioningLocation;
-
-public class SingleMachineProvisioningLocationJcloudsLiveTest extends AbstractJcloudsLiveTest {
-private static final Logger log = LoggerFactory.getLogger(SingleMachineProvisioningLocation.class);
-
- private SingleMachineProvisioningLocation<JcloudsSshMachineLocation> location;
-
- private static final String JCLOUDS_LOCATION_SPEC = "jclouds:" + AWS_EC2_PROVIDER + ":" + AWS_EC2_USEAST_REGION_NAME;
-
- @Test(groups="Live")
- public void testJcloudsSingle() throws Exception {
- location = resolve("single:(target='"+JCLOUDS_LOCATION_SPEC+"')");
-
- MachineLocation m1 = obtainMachine();
- assertNotNull(m1);
-
- log.info("GOT "+m1);
- }
-
- @Test(groups="Live")
- public void testJcloudsSingleRelease() throws Exception {
- location = resolve("single:(target='"+JCLOUDS_LOCATION_SPEC+"')");
-
- JcloudsSshMachineLocation m1 = obtainMachine();
- log.info("GOT " + m1);
- JcloudsSshMachineLocation m2 = obtainMachine();
- log.info("GOT " + m2);
- assertSame(m1, m2);
-
- location.release(m1);
- assertTrue(m2.isSshable());
-
- location.release(m2);
- assertFalse(m2.isSshable());
- }
-
- @Test(groups="Live")
- public void testJcloudsSingleObtainReleaseObtain() throws Exception {
- location = resolve("single:(target='"+JCLOUDS_LOCATION_SPEC+"')");
-
- JcloudsSshMachineLocation m1 = obtainMachine();
- log.info("GOT " + m1);
-
- location.release(m1);
- assertFalse(m1.isSshable());
-
- JcloudsSshMachineLocation m2 = obtainMachine();
- assertTrue(m2.isSshable());
- assertNotEquals(m1, m2);
-
- location.release(m2);
- assertFalse(m2.isSshable());
- }
-
- @Test(groups="Live")
- public void testJCloudsNamedSingle() throws Exception {
- brooklynProperties.put(ConfigKeys.newStringConfigKey("brooklyn.location.named.FooServers"), JCLOUDS_LOCATION_SPEC);
- location = resolve("single:(target='named:FooServers')");
-
- JcloudsSshMachineLocation m1 = obtainMachine();
- assertTrue(m1.isSshable());
-
- location.release(m1);
- assertFalse(m1.isSshable());
- }
-
- @Override
- protected JcloudsSshMachineLocation obtainMachine(Map<?, ?> conf) throws Exception {
- JcloudsSshMachineLocation result = location.obtain(conf);
- machines.add(result);
- return result;
- }
-
- @Override
- protected void releaseMachine(JcloudsSshMachineLocation machine) {
- if (location.getChildren().contains(machine)) {
- machines.remove(machine);
- location.release(machine);
- }
- }
-
- @SuppressWarnings("unchecked")
- private SingleMachineProvisioningLocation<JcloudsSshMachineLocation> resolve(String spec) {
- SingleMachineProvisioningLocation<JcloudsSshMachineLocation> result = (SingleMachineProvisioningLocation<JcloudsSshMachineLocation>)
- managementContext.getLocationRegistry().resolve(spec);
- // FIXME Do we really need to setManagementContext?!
- //result.setManagementContext(managementContext);
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/StandaloneJcloudsLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/StandaloneJcloudsLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/StandaloneJcloudsLiveTest.java
deleted file mode 100644
index d8b3915..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/StandaloneJcloudsLiveTest.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds;
-
-import static org.testng.Assert.assertNotNull;
-
-import java.io.File;
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.Properties;
-import java.util.Set;
-import java.util.UUID;
-
-import org.jclouds.Constants;
-import org.jclouds.ContextBuilder;
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.ExecResponse;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.options.RunScriptOptions;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.domain.Credentials;
-import org.jclouds.domain.LoginCredentials;
-import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
-import org.jclouds.scriptbuilder.domain.Statement;
-import org.jclouds.scriptbuilder.domain.Statements;
-import org.jclouds.scriptbuilder.statements.login.AdminAccess;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.util.text.Identifiers;
-
-import com.google.common.base.Throwables;
-import com.google.common.collect.Iterables;
-import com.google.common.io.Files;
-
-public class StandaloneJcloudsLiveTest {
-
- // FIXME Why do this?
- // Were we seeing bugs in jclouds for which this was easier to debug and report
- // Is it because testProvisioningVmWithCustomUsername is disabled and not working?
-
- public static final Logger LOG = LoggerFactory.getLogger(StandaloneJcloudsLiveTest.class);
-
- private static final String PROVIDER = AbstractJcloudsLiveTest.AWS_EC2_PROVIDER;
- private static final String REGION = AbstractJcloudsLiveTest.AWS_EC2_USEAST_REGION_NAME;
- private static final String PRIVATE_IMAGE_ID = "us-east-1/ami-f95cf390";
-
- static BrooklynProperties globals = BrooklynProperties.Factory.newDefault();
-
- String identity = globals.getFirst("brooklyn.location.jclouds.aws-ec2.identity");
- String credential = globals.getFirst("brooklyn.location.jclouds.aws-ec2.credential");
-
- @Test(enabled=false, groups={"WIP","Live"})
- public void createVm() {
- String groupId = "mygroup-"+System.getProperty("user.name")+"-"+UUID.randomUUID().toString();
-
- Properties properties = new Properties();
- properties.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, Boolean.toString(true));
- properties.setProperty(Constants.PROPERTY_RELAX_HOSTNAME, Boolean.toString(true));
- // handy to list all images... but very slow!
-// properties.setProperty(AWSEC2Constants.PROPERTY_EC2_AMI_QUERY, "state=available;image-type=machine");
-
- ComputeServiceContext computeServiceContext = ContextBuilder.newBuilder(PROVIDER).
- modules(Arrays.asList(new SshjSshClientModule(), new SLF4JLoggingModule())).
- credentials(identity, credential).
- overrides(properties).
- build(ComputeServiceContext.class);
-
- final ComputeService computeService = computeServiceContext.getComputeService();
-
- NodeMetadata node = null;
- try {
- LOG.info("Creating VM for "+identity);
-
- TemplateBuilder templateBuilder = computeService.templateBuilder();
- templateBuilder.locationId(REGION);
-
- Template template = templateBuilder.build();
- Set<? extends NodeMetadata> nodes = computeService.createNodesInGroup(groupId, 1, template);
- node = Iterables.getOnlyElement(nodes, null);
- if (node == null) throw new IllegalStateException("No nodes returned");
-
- assertNotNull(node.getOperatingSystem());
-
- Credentials nodeCredentials = node.getCredentials();
- final LoginCredentials expectedCredentials = LoginCredentials.fromCredentials(nodeCredentials);
-
- LOG.info("Started VM, waiting for it to be sshable");
- boolean reachable = false;
- for (int i=0; i<120; i++) {
- try {
- Statement statement = Statements.newStatementList(Statements.exec("date"));
- ExecResponse response = computeService.runScriptOnNode(node.getId(), statement,
- RunScriptOptions.Builder.overrideLoginCredentials(expectedCredentials));
- if (response.getExitStatus() == 0) {
- LOG.info("ssh 'date' succeeded");
- reachable = true;
- break;
- }
- LOG.info("ssh 'date' failed, exit "+response.getExitStatus()+", but still in retry loop");
- } catch (Exception e) {
- if (i<120)
- LOG.info("ssh 'date' failed, but still in retry loop: "+e);
- else {
- LOG.error("ssh 'date' failed after timeout: "+e, e);
- Throwables.propagate(e);
- }
- }
- Thread.sleep(1000);
- }
-
- if (!reachable) {
- throw new IllegalStateException("SSH failed, never reachable");
- }
-
- } catch (RunNodesException e) {
- if (e.getNodeErrors().size() > 0) {
- node = Iterables.get(e.getNodeErrors().keySet(), 0);
- }
- LOG.error("Failed to start VM: "+e, e);
- throw Throwables.propagate(e);
- } catch (Exception e) {
- LOG.error("Failed to start VM: "+e, e);
- throw Throwables.propagate(e);
- } finally {
- LOG.info("Now destroying VM: "+node);
- computeService.destroyNode( node.getId() );
-
- computeService.getContext().close();
- }
-
- }
-
- @Test(enabled=false, groups={"WIP","Live"})
- public void createVmWithAdminUser() {
- String groupId = "mygroup-"+System.getProperty("user.name")+"-"+UUID.randomUUID().toString();
-
- Properties properties = new Properties();
- properties.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, Boolean.toString(true));
- properties.setProperty(Constants.PROPERTY_RELAX_HOSTNAME, Boolean.toString(true));
-
- ComputeServiceContext computeServiceContext = ContextBuilder.newBuilder(PROVIDER).
- modules(Arrays.asList(new SshjSshClientModule(), new SLF4JLoggingModule())).
- credentials(identity, credential).
- overrides(properties).
- build(ComputeServiceContext.class);
-
- final ComputeService computeService = computeServiceContext.getComputeService();
-
- NodeMetadata node = null;
- try {
- LOG.info("Creating VM for "+identity);
- String myPubKey = Files.toString(new File(System.getProperty("user.home")+"/.ssh/aws-id_rsa.pub"), Charset.defaultCharset());
- String myPrivKey = Files.toString(new File(System.getProperty("user.home")+"/.ssh/aws-id_rsa"), Charset.defaultCharset());
-
- TemplateBuilder templateBuilder = computeService.templateBuilder();
- templateBuilder.locationId(REGION);
- TemplateOptions opts = new TemplateOptions();
-
-// templateBuilder.imageId("us-east-1/ami-2342a94a"); //rightscale
- // either use above, or below
- templateBuilder.imageId(PRIVATE_IMAGE_ID); //private one (to test when user isn't autodetected)
- opts.overrideLoginUser("ec2-user");
-
- AdminAccess.Builder adminBuilder = AdminAccess.builder().
- adminUsername("bob").
- grantSudoToAdminUser(true).
- authorizeAdminPublicKey(true).adminPublicKey(myPubKey).
- // items below aren't wanted but values for some are required otherwise AdminAccess uses all defaults
- lockSsh(true).adminPassword(Identifiers.makeRandomId(12)).
- resetLoginPassword(false).loginPassword(Identifiers.makeRandomId(12)).
- installAdminPrivateKey(false).adminPrivateKey("ignored");
- opts.runScript(adminBuilder.build());
-
- templateBuilder.options(opts);
-
- Template template = templateBuilder.build();
- Set<? extends NodeMetadata> nodes = computeService.createNodesInGroup(groupId, 1, template);
- node = Iterables.getOnlyElement(nodes, null);
- if (node == null) throw new IllegalStateException("No nodes returned");
-
- LOG.info("Started VM, waiting for it to be sshable on "+node.getPublicAddresses());
- final LoginCredentials crds =
-// node.getCredentials();
- LoginCredentials.builder().user("bob").privateKey(myPrivKey).build();
- boolean reachable = false;
- for (int i=0; i<120; i++) {
- try {
- Statement statement = Statements.newStatementList(Statements.exec("date"));
- ExecResponse response = computeService.runScriptOnNode(node.getId(), statement,
- RunScriptOptions.Builder.overrideLoginCredentials(crds));
- if (response.getExitStatus() == 0) {
- LOG.info("ssh 'date' succeeded");
- reachable = true;
- break;
- }
- LOG.info("ssh 'date' failed, exit "+response.getExitStatus()+", but still in retry loop");
- } catch (Exception e) {
- if (i<120)
- LOG.info("ssh 'date' failed, but still in retry loop: "+e);
- else {
- LOG.error("ssh 'date' failed after timeout: "+e, e);
- Throwables.propagate(e);
- }
- }
- Thread.sleep(1000);
- }
-
- if (!reachable) {
- throw new IllegalStateException("SSH failed, never reachable");
- }
-
- } catch (RunNodesException e) {
- if (e.getNodeErrors().size() > 0) {
- node = Iterables.get(e.getNodeErrors().keySet(), 0);
- }
- LOG.error("Failed to start VM: "+e, e);
- throw Throwables.propagate(e);
- } catch (Exception e) {
- LOG.error("Failed to start VM: "+e, e);
- throw Throwables.propagate(e);
- } finally {
- LOG.info("Now destroying VM: "+node);
- computeService.destroyNode( node.getId() );
-
- computeService.getContext().close();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsLocationSecurityGroupCustomizerTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsLocationSecurityGroupCustomizerTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsLocationSecurityGroupCustomizerTest.java
deleted file mode 100644
index 69d962f..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsLocationSecurityGroupCustomizerTest.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.networking;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.net.URI;
-import java.util.Collections;
-
-import org.jclouds.aws.AWSResponseException;
-import org.jclouds.aws.domain.AWSError;
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.domain.SecurityGroup;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.extensions.SecurityGroupExtension;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.domain.Location;
-import org.jclouds.net.domain.IpPermission;
-import org.jclouds.net.domain.IpProtocol;
-import org.mockito.Answers;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-import brooklyn.location.jclouds.JcloudsLocation;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.net.Cidr;
-
-public class JcloudsLocationSecurityGroupCustomizerTest {
-
- JcloudsLocationSecurityGroupCustomizer customizer;
- ComputeService computeService;
- Location location;
- SecurityGroupExtension securityApi;
-
- /** Used to skip external checks in unit tests. */
- private static class TestCidrSupplier implements Supplier<Cidr> {
- @Override public Cidr get() {
- return new Cidr("192.168.10.10/32");
- }
- }
-
- @BeforeMethod
- public void setUp() {
- customizer = new JcloudsLocationSecurityGroupCustomizer("testapp", new TestCidrSupplier());
- location = mock(Location.class);
- securityApi = mock(SecurityGroupExtension.class);
- computeService = mock(ComputeService.class, Answers.RETURNS_DEEP_STUBS.get());
- when(computeService.getSecurityGroupExtension()).thenReturn(Optional.of(securityApi));
- }
-
- @Test
- public void testSameInstanceReturnedForSameApplication() {
- assertEquals(JcloudsLocationSecurityGroupCustomizer.getInstance("a"),
- JcloudsLocationSecurityGroupCustomizer.getInstance("a"));
- assertNotEquals(JcloudsLocationSecurityGroupCustomizer.getInstance("a"),
- JcloudsLocationSecurityGroupCustomizer.getInstance("b"));
- }
-
- @Test
- public void testSecurityGroupAddedWhenJcloudsLocationCustomised() {
- Template template = mock(Template.class);
- TemplateOptions templateOptions = mock(TemplateOptions.class);
- when(template.getLocation()).thenReturn(location);
- when(template.getOptions()).thenReturn(templateOptions);
- SecurityGroup group = newGroup("id");
- when(securityApi.createSecurityGroup(anyString(), eq(location))).thenReturn(group);
-
- // Two Brooklyn.JcloudsLocations added to same Jclouds.Location
- JcloudsLocation jcloudsLocationA = new JcloudsLocation(MutableMap.of("deferConstruction", true));
- JcloudsLocation jcloudsLocationB = new JcloudsLocation(MutableMap.of("deferConstruction", true));
- customizer.customize(jcloudsLocationA, computeService, template);
- customizer.customize(jcloudsLocationB, computeService, template);
-
- // One group with three permissions shared by both locations.
- // Expect TCP, UDP and ICMP between members of group and SSH to Brooklyn
- verify(securityApi).createSecurityGroup(anyString(), eq(location));
- verify(securityApi, times(4)).addIpPermission(any(IpPermission.class), eq(group));
- // New groups set on options
- verify(templateOptions, times(2)).securityGroups(anyString());
- }
-
- @Test
- public void testSharedGroupLoadedWhenItExistsButIsNotCached() {
- Template template = mock(Template.class);
- TemplateOptions templateOptions = mock(TemplateOptions.class);
- when(template.getLocation()).thenReturn(location);
- when(template.getOptions()).thenReturn(templateOptions);
- JcloudsLocation jcloudsLocation = new JcloudsLocation(MutableMap.of("deferConstruction", true));
- SecurityGroup shared = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup irrelevant = newGroup("irrelevant");
- when(securityApi.listSecurityGroupsInLocation(location)).thenReturn(ImmutableSet.of(irrelevant, shared));
-
- customizer.customize(jcloudsLocation, computeService, template);
-
- verify(securityApi).listSecurityGroupsInLocation(location);
- verify(securityApi, never()).createSecurityGroup(anyString(), any(Location.class));
- }
-
- @Test
- public void testAddPermissionsToNode() {
- IpPermission ssh = newPermission(22);
- IpPermission jmx = newPermission(31001);
- String nodeId = "node";
- SecurityGroup sharedGroup = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup group = newGroup("id");
- when(securityApi.listSecurityGroupsForNode(nodeId)).thenReturn(ImmutableSet.of(sharedGroup, group));
- when(computeService.getContext().unwrap().getId()).thenReturn("aws-ec2");
-
- customizer.addPermissionsToLocation(ImmutableList.of(ssh, jmx), nodeId, computeService);
-
- verify(securityApi, never()).createSecurityGroup(anyString(), any(Location.class));
- verify(securityApi, times(1)).addIpPermission(ssh, group);
- verify(securityApi, times(1)).addIpPermission(jmx, group);
- }
-
- @Test
- public void testAddPermissionsToNodeUsesUncachedSecurityGroup() {
- JcloudsLocation jcloudsLocation = new JcloudsLocation(MutableMap.of("deferConstruction", true));
- IpPermission ssh = newPermission(22);
- String nodeId = "nodeId";
- SecurityGroup sharedGroup = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup uniqueGroup = newGroup("unique");
-
- Template template = mock(Template.class);
- TemplateOptions templateOptions = mock(TemplateOptions.class);
- when(template.getLocation()).thenReturn(location);
- when(template.getOptions()).thenReturn(templateOptions);
- when(securityApi.createSecurityGroup(anyString(), eq(location))).thenReturn(sharedGroup);
- when(computeService.getContext().unwrap().getId()).thenReturn("aws-ec2");
-
- // Call customize to cache the shared group
- customizer.customize(jcloudsLocation, computeService, template);
- reset(securityApi);
- when(securityApi.listSecurityGroupsForNode(nodeId)).thenReturn(ImmutableSet.of(uniqueGroup, sharedGroup));
- customizer.addPermissionsToLocation(ImmutableSet.of(ssh), nodeId, computeService);
-
- // Expect the per-machine group to have been altered, not the shared group
- verify(securityApi).addIpPermission(ssh, uniqueGroup);
- verify(securityApi, never()).addIpPermission(any(IpPermission.class), eq(sharedGroup));
- }
-
- @Test
- public void testSecurityGroupsLoadedWhenAddingPermissionsToUncachedNode() {
- IpPermission ssh = newPermission(22);
- String nodeId = "nodeId";
- SecurityGroup sharedGroup = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup uniqueGroup = newGroup("unique");
-
- when(securityApi.listSecurityGroupsForNode(nodeId)).thenReturn(ImmutableSet.of(sharedGroup, uniqueGroup));
- when(computeService.getContext().unwrap().getId()).thenReturn("aws-ec2");
-
- // Expect first call to list security groups on nodeId, second to use cached version
- customizer.addPermissionsToLocation(ImmutableSet.of(ssh), nodeId, computeService);
- customizer.addPermissionsToLocation(ImmutableSet.of(ssh), nodeId, computeService);
-
- verify(securityApi, times(1)).listSecurityGroupsForNode(nodeId);
- verify(securityApi, times(2)).addIpPermission(ssh, uniqueGroup);
- verify(securityApi, never()).addIpPermission(any(IpPermission.class), eq(sharedGroup));
- }
-
- @Test
- public void testAddRuleNotRetriedByDefault() {
- IpPermission ssh = newPermission(22);
- String nodeId = "node";
- SecurityGroup sharedGroup = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup uniqueGroup = newGroup("unique");
- when(securityApi.listSecurityGroupsForNode(nodeId)).thenReturn(ImmutableSet.of(sharedGroup, uniqueGroup));
- when(securityApi.addIpPermission(eq(ssh), eq(uniqueGroup)))
- .thenThrow(new RuntimeException("exception creating " + ssh));
- when(computeService.getContext().unwrap().getId()).thenReturn("aws-ec2");
-
- try {
- customizer.addPermissionsToLocation(ImmutableList.of(ssh), nodeId, computeService);
- } catch (Exception e) {
- assertTrue(e.getMessage().contains("repeated errors from provider"), "message=" + e.getMessage());
- }
- verify(securityApi, never()).createSecurityGroup(anyString(), any(Location.class));
- verify(securityApi, times(1)).addIpPermission(ssh, uniqueGroup);
- }
-
- @Test
- public void testCustomExceptionRetryablePredicate() {
- final String message = "testCustomExceptionRetryablePredicate";
- Predicate<Exception> messageChecker = new Predicate<Exception>() {
- @Override
- public boolean apply(Exception input) {
- Throwable t = input;
- while (t != null) {
- if (t.getMessage().contains(message)) {
- return true;
- } else {
- t = t.getCause();
- }
- }
- return false;
- }
- };
- customizer.setRetryExceptionPredicate(messageChecker);
- when(computeService.getContext().unwrap().getId()).thenReturn("aws-ec2");
-
- IpPermission ssh = newPermission(22);
- String nodeId = "node";
- SecurityGroup sharedGroup = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup uniqueGroup = newGroup("unique");
- when(securityApi.listSecurityGroupsForNode(nodeId)).thenReturn(ImmutableSet.of(sharedGroup, uniqueGroup));
- when(securityApi.addIpPermission(eq(ssh), eq(uniqueGroup)))
- .thenThrow(new RuntimeException(new Exception(message)))
- .thenThrow(new RuntimeException(new Exception(message)))
- .thenReturn(sharedGroup);
-
- customizer.addPermissionsToLocation(ImmutableList.of(ssh), nodeId, computeService);
-
- verify(securityApi, never()).createSecurityGroup(anyString(), any(Location.class));
- verify(securityApi, times(3)).addIpPermission(ssh, uniqueGroup);
- }
-
- @Test
- public void testAddRuleRetriedOnAwsFailure() {
- IpPermission ssh = newPermission(22);
- String nodeId = "nodeId";
- SecurityGroup sharedGroup = newGroup(customizer.getNameForSharedSecurityGroup());
- SecurityGroup uniqueGroup = newGroup("unique");
- customizer.setRetryExceptionPredicate(JcloudsLocationSecurityGroupCustomizer.newAwsExceptionRetryPredicate());
- when(securityApi.listSecurityGroupsForNode(nodeId)).thenReturn(ImmutableSet.of(sharedGroup, uniqueGroup));
- when(securityApi.addIpPermission(any(IpPermission.class), eq(uniqueGroup)))
- .thenThrow(newAwsResponseExceptionWithCode("InvalidGroup.InUse"))
- .thenThrow(newAwsResponseExceptionWithCode("DependencyViolation"))
- .thenThrow(newAwsResponseExceptionWithCode("RequestLimitExceeded"))
- .thenThrow(newAwsResponseExceptionWithCode("Blocked"))
- .thenReturn(sharedGroup);
- when(computeService.getContext().unwrap().getId()).thenReturn("aws-ec2");
-
- try {
- customizer.addPermissionsToLocation(ImmutableList.of(ssh), nodeId, computeService);
- } catch (Exception e) {
- String expected = "repeated errors from provider";
- assertTrue(e.getMessage().contains(expected), "expected exception message to contain " + expected + ", was: " + e.getMessage());
- }
-
- verify(securityApi, never()).createSecurityGroup(anyString(), any(Location.class));
- verify(securityApi, times(4)).addIpPermission(ssh, uniqueGroup);
- }
-
- private SecurityGroup newGroup(String id) {
- URI uri = null;
- String ownerId = null;
- return new SecurityGroup(
- "providerId",
- id,
- id,
- location,
- uri,
- Collections.<String, String>emptyMap(),
- ImmutableSet.<String>of(),
- ImmutableSet.<IpPermission>of(),
- ownerId);
- }
-
- private IpPermission newPermission(int port) {
- return IpPermission.builder()
- .ipProtocol(IpProtocol.TCP)
- .fromPort(port)
- .toPort(port)
- .cidrBlock("0.0.0.0/0")
- .build();
- }
-
- private AWSError newAwsErrorWithCode(String code) {
- AWSError e = new AWSError();
- e.setCode(code);
- return e;
- }
-
- private Exception newAwsResponseExceptionWithCode(String code) {
- AWSResponseException e = new AWSResponseException("irrelevant message", null, null, newAwsErrorWithCode(code));
- return new RuntimeException(e);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedLiveTest.java
deleted file mode 100644
index fa1cb90..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedLiveTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.networking;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-
-import java.util.List;
-
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadata.Status;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.domain.LoginCredentials;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.config.ConfigKey;
-import brooklyn.location.access.PortForwardManager;
-import brooklyn.location.access.PortForwardManagerImpl;
-import brooklyn.location.jclouds.AbstractJcloudsStubbedLiveTest;
-import brooklyn.location.jclouds.JcloudsLocation;
-import brooklyn.location.jclouds.JcloudsSshMachineLocation;
-import brooklyn.util.net.Cidr;
-import brooklyn.util.net.Protocol;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.net.HostAndPort;
-
-/**
- * The VM creation is stubbed out, but it still requires live access (i.e. real account credentials)
- * to generate the template etc.
- *
- * We supply a ComputeServiceRegistry that delegates to the real instance for everything except
- * VM creation and deletion. For those operations, it delegates to a NodeCreator that
- * returns a dummy NodeMetadata, recording all calls made to it.
- */
-public class JcloudsPortForwardingStubbedLiveTest extends AbstractJcloudsStubbedLiveTest {
-
- @SuppressWarnings("unused")
- private static final Logger LOG = LoggerFactory.getLogger(JcloudsPortForwardingStubbedLiveTest.class);
-
- static class RecordingJcloudsPortForwarderExtension implements JcloudsPortForwarderExtension {
- final PortForwardManager pfm;
- final List<List<Object>> opens = Lists.newCopyOnWriteArrayList();
- final List<List<Object>> closes = Lists.newCopyOnWriteArrayList();
- int nextPublicPort = 12345;
-
- RecordingJcloudsPortForwarderExtension(PortForwardManager pfm) {
- this.pfm = pfm;
- }
- @Override public HostAndPort openPortForwarding(NodeMetadata node, int targetPort, Optional<Integer> optionalPublicPort, Protocol protocol, Cidr accessingCidr) {
- opens.add(ImmutableList.of(node, targetPort, optionalPublicPort, protocol, accessingCidr));
- HostAndPort result = HostAndPort.fromParts("1.2.3.4", nextPublicPort++);
- pfm.associate(node.getId(), result, targetPort);
- return result;
- }
- @Override public void closePortForwarding(NodeMetadata node, int targetPort, HostAndPort publicHostAndPort, Protocol protocol) {
- closes.add(ImmutableList.of(node, targetPort, publicHostAndPort, protocol));
- pfm.forgetPortMapping(node.getId(), publicHostAndPort.getPort());
- }
- }
-
- @Override
- protected NodeCreator newNodeCreator() {
- return new NodeCreator() {
- int nextIpSuffix = 2;
- @Override
- protected NodeMetadata newNode(String group, Template template) {
- int ipSuffix = nextIpSuffix++;
- NodeMetadata result = new NodeMetadataBuilder()
- .id("myid-"+ipSuffix)
- .credentials(LoginCredentials.builder().identity("myuser").credential("mypassword").build())
- .loginPort(22)
- .status(Status.RUNNING)
- .publicAddresses(ImmutableList.of("173.194.32."+ipSuffix))
- .privateAddresses(ImmutableList.of("172.168.10."+ipSuffix))
- .build();
- return result;
- }
- };
- }
-
- @Test(groups = {"Live", "Live-sanity"})
- protected void testPortForwardingCallsForwarder() throws Exception {
- PortForwardManager pfm = new PortForwardManagerImpl();
- RecordingJcloudsPortForwarderExtension portForwarder = new RecordingJcloudsPortForwarderExtension(pfm);
-
- JcloudsSshMachineLocation machine = obtainMachine(ImmutableMap.<ConfigKey<?>,Object>of(
- JcloudsLocation.USE_PORT_FORWARDING, true,
- JcloudsLocation.PORT_FORWARDER, portForwarder));
-
- NodeMetadata created = nodeCreator.created.get(0);
- assertEquals(nodeCreator.created.size(), 1, "created="+nodeCreator.created+"; machine="+machine);
- assertEquals(machine.getNode(), created);
- assertEquals(portForwarder.opens.size(), 1, "opens="+portForwarder.opens+"; machine="+machine);
- assertEquals(portForwarder.opens.get(0).get(0), created);
- assertEquals(portForwarder.opens.get(0).get(1), 22);
- assertEquals(portForwarder.opens.get(0).get(3), Protocol.TCP);
- assertEquals(portForwarder.opens.get(0).get(4), Cidr.UNIVERSAL);
- assertEquals(machine.getSshHostAndPort(), HostAndPort.fromParts("1.2.3.4", 12345));
-
- releaseMachine(machine);
- String destroyed = nodeCreator.destroyed.get(0);
- assertEquals(nodeCreator.destroyed.size(), 1, "destroyed="+nodeCreator.destroyed+"; machine="+machine);
- assertEquals(destroyed, created.getId());
- assertEquals(portForwarder.closes.size(), 1, "closes="+portForwarder.closes+"; machine="+machine);
- assertEquals(portForwarder.closes.get(0).get(0), created);
- assertEquals(portForwarder.closes.get(0).get(1), 22);
- assertEquals(portForwarder.closes.get(0).get(2), HostAndPort.fromParts("1.2.3.4", 12345));
- assertEquals(portForwarder.closes.get(0).get(3), Protocol.TCP);
- }
-
- @Test(groups = {"Live", "Live-sanity"})
- protected void testDeregistersWithPortForwardManagerOnRelease() throws Exception {
- PortForwardManager pfm = new PortForwardManagerImpl();
- RecordingJcloudsPortForwarderExtension portForwarder = new RecordingJcloudsPortForwarderExtension(pfm);
-
- JcloudsSshMachineLocation machine = obtainMachine(ImmutableMap.<ConfigKey<?>,Object>of(
- JcloudsLocation.PORT_FORWARDER, portForwarder,
- JcloudsLocation.PORT_FORWARDING_MANAGER, pfm));
-
- // Add an association for this machine - expect that to be deleted when the machine is released.
- HostAndPort publicHostAndPort = HostAndPort.fromParts("1.2.3.4", 1234);
- pfm.associate("mypublicip", publicHostAndPort, machine, 80);
- assertEquals(pfm.lookup(machine, 80), publicHostAndPort);
- assertEquals(pfm.lookup("mypublicip", 80), publicHostAndPort);
-
- // Release
- releaseMachine(machine);
-
- // Expect to have been cleared from PortForwardManager's records
- assertNull(pfm.lookup(machine, 80));
- assertNull(pfm.lookup("mypublicip", 80));
-
- // And for port-forwarding to have been closed
- assertEquals(portForwarder.closes.size(), 1, "closes="+portForwarder.closes+"; machine="+machine);
- assertEquals(portForwarder.closes.get(0).get(1), 80);
- assertEquals(portForwarder.closes.get(0).get(2), HostAndPort.fromParts("1.2.3.4", 1234));
- assertEquals(portForwarder.closes.get(0).get(3), Protocol.TCP);
- }
-
- @Test(groups = {"Live", "Live-sanity"})
- protected void testReleaseVmDoesNotImpactOtherVms() throws Exception {
- PortForwardManager pfm = new PortForwardManagerImpl();
- RecordingJcloudsPortForwarderExtension portForwarder = new RecordingJcloudsPortForwarderExtension(pfm);
-
- JcloudsSshMachineLocation machine1 = obtainMachine(ImmutableMap.<ConfigKey<?>,Object>of(
- JcloudsLocation.USE_PORT_FORWARDING, true,
- JcloudsLocation.PORT_FORWARDER, portForwarder,
- JcloudsLocation.PORT_FORWARDING_MANAGER, pfm));
-
- JcloudsSshMachineLocation machine2 = obtainMachine(ImmutableMap.<ConfigKey<?>,Object>of(
- JcloudsLocation.USE_PORT_FORWARDING, true,
- JcloudsLocation.PORT_FORWARDER, portForwarder,
- JcloudsLocation.PORT_FORWARDING_MANAGER, pfm));
-
- NodeMetadata node1 = nodeCreator.created.get(0);
-
- // Add an association for machine2 - expect that not to be touched when machine1 is released.
- HostAndPort publicHostAndPort = HostAndPort.fromParts("1.2.3.4", 1234);
- pfm.associate("mypublicip", publicHostAndPort, machine2, 80);
-
- // Release machine1
- releaseMachine(machine1);
-
- // Expect machine2 to still be registered
- assertEquals(pfm.lookup(machine2, 80), publicHostAndPort);
- assertEquals(pfm.lookup("mypublicip", 80), publicHostAndPort);
-
- // And no calls to "close" for machine2; just for machine1's port 22
- assertEquals(portForwarder.closes.size(), 1, "closes="+portForwarder.closes+"; machine1="+machine1);
- assertEquals(portForwarder.closes.get(0).get(0), node1);
- assertEquals(portForwarder.closes.get(0).get(1), 22);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/SecurityGroupLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/SecurityGroupLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/SecurityGroupLiveTest.java
deleted file mode 100644
index f0d5d7c..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/networking/SecurityGroupLiveTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.networking;
-
-import org.testng.annotations.Test;
-
-@Test(groups = {"Live", "WIP"})
-public class SecurityGroupLiveTest {
-
- public void testCreateEc2WithSecurityGroup() {
- SecurityGroupDefinition sgDef = new SecurityGroupDefinition()
- .allowingInternalPorts(8097, 8098).allowingInternalPortRange(6000, 7999)
- .allowingPublicPort(8099);
- // TODO create machine and test
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java
deleted file mode 100644
index 4a08217..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.pool;
-
-import java.util.Arrays;
-
-import org.jclouds.ContextBuilder;
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.location.jclouds.AbstractJcloudsLiveTest;
-import brooklyn.location.jclouds.JcloudsLocation;
-
-public class JcloudsMachinePoolLiveTest extends AbstractJcloudsLiveTest {
-
- public static final Logger log = LoggerFactory.getLogger(JcloudsMachinePoolLiveTest.class);
-
- private static final String PROVIDER = AWS_EC2_PROVIDER;
- private static final String LOCATION_SPEC = PROVIDER + ":" + AWS_EC2_EUWEST_REGION_NAME;
-
- public static class SamplePool extends MachinePool {
- public SamplePool(ComputeService svc) {
- super(svc);
- }
-
- public final static ReusableMachineTemplate
- USUAL_VM =
- new ReusableMachineTemplate("usual").templateOwnedByMe().
- tagOptional("tagForUsualVm").
- metadataOptional("metadataForUsualVm", "12345").
- minRam(1024).minCores(2);
-
- public final static ReusableMachineTemplate
- ANYONE_NOT_TINY_VM =
- new ReusableMachineTemplate("anyone").
- minRam(512).minCores(1).strict(false);
-
- public static final ReusableMachineTemplate
- VM_LARGE1 =
- new ReusableMachineTemplate("vm.large1").templateOwnedByMe().
- minRam(16384).minCores(4),
- VM_SMALL1 =
- new ReusableMachineTemplate("vm.small1").templateOwnedByMe().smallest();
-
- { registerTemplates(USUAL_VM, ANYONE_NOT_TINY_VM, VM_LARGE1, VM_SMALL1); }
- }
-
- private ComputeServiceContext context;
-
- @BeforeMethod(alwaysRun=true)
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(LOCATION_SPEC);
-
- context = ContextBuilder.newBuilder(PROVIDER)
- .modules(Arrays.asList(new SshjSshClientModule(), new SLF4JLoggingModule()))
- .credentials(jcloudsLocation.getIdentity(), jcloudsLocation.getCredential())
- .build(ComputeServiceContext.class);
- }
-
- @AfterMethod(alwaysRun=true)
- @Override
- public void tearDown() throws Exception {
- try {
- super.tearDown();
- } finally {
- if (context != null) context.close();
- }
- }
-
- @Test(groups={"Live","WIP"})
- public void buildClaimAndDestroy() {
- ComputeService svc = context.getComputeService();
- SamplePool p = new SamplePool(svc);
- log.info("buildClaimAndDestroy: created pool");
- p.refresh();
- log.info("buildClaimAndDestroy: refreshed pool");
- p.ensureExists(2, SamplePool.USUAL_VM);
- log.info("buildClaimAndDestroy: ensure have 2");
- MachineSet l = p.claim(1, SamplePool.USUAL_VM);
- Assert.assertEquals(l.size(), 1);
- log.info("buildClaimAndDestroy: claimed 1");
- MachineSet unclaimedUsual = p.unclaimed(MachinePoolPredicates.matching(SamplePool.USUAL_VM));
- log.info("buildClaimAndDestroy: unclaimed now "+unclaimedUsual);
- Assert.assertTrue(!unclaimedUsual.isEmpty());
- p.destroy(unclaimedUsual);
- unclaimedUsual = p.unclaimed(MachinePoolPredicates.matching(SamplePool.USUAL_VM));
- log.info("buildClaimAndDestroy: destroyed, unclaimed now "+unclaimedUsual);
- log.info("end");
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
deleted file mode 100644
index 703b2f9..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.provider;
-
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.brooklyn.api.management.ManagementContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.entity.basic.Entities;
-import brooklyn.location.NoMachinesAvailableException;
-import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.location.jclouds.JcloudsLocation;
-import brooklyn.util.collections.MutableList;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.exceptions.Exceptions;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-
-public abstract class AbstractJcloudsLocationTest {
- private static final Logger LOG = LoggerFactory.getLogger(AbstractJcloudsLocationTest.class);
-
- private final String provider;
-
- protected JcloudsLocation loc;
- protected List<SshMachineLocation> machines = MutableList.of();
- protected ManagementContext ctx;
-
- protected AbstractJcloudsLocationTest(String provider) {
- this.provider = provider;
- }
-
- /**
- * The location and image id tuplets to test.
- */
- @DataProvider(name = "fromImageId")
- public abstract Object[][] cloudAndImageIds();
-
- /**
- * A single location and image id tuplet to test.
- */
- @DataProvider(name = "fromFirstImageId")
- public Object[][] cloudAndImageFirstId() {
- Object[][] all = cloudAndImageIds();
- return (all != null) ? new Object[][] { all[0] } : new Object[][] { };
- }
-
- /**
- * The location and image name pattern tuplets to test.
- */
- @DataProvider(name = "fromImageNamePattern")
- public abstract Object[][] cloudAndImageNamePatterns();
-
- /**
- * The location, image pattern and image owner tuplets to test.
- */
- @DataProvider(name = "fromImageDescriptionPattern")
- public abstract Object[][] cloudAndImageDescriptionPatterns();
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() {
- BrooklynProperties props = BrooklynProperties.Factory.newDefault().addFromMap(ImmutableMap.of("provider", provider));
- ctx = Entities.newManagementContext(props.asMapWithStringKeys());
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() {
- List<Exception> exceptions = Lists.newArrayList();
- for (SshMachineLocation machine : machines) {
- try {
- loc.release(machine);
- } catch (Exception e) {
- LOG.warn("Error releasing {}: {}; continuing...", machine, e.getMessage());
- exceptions.add(e);
- }
- }
- if (!exceptions.isEmpty()) {
- LOG.info("Exception during tearDown: {}", Exceptions.collapseText(exceptions.get(0)));
- }
- machines.clear();
-
- if (ctx != null) Entities.destroyAllCatching(ctx);
- }
-
- @Test(dataProvider="fromImageId")
- public void testTagMapping(String regionName, String imageId, String imageOwner) {
- Map<String, Object> dummy = ImmutableMap.<String, Object>of("identity", "DUMMY", "credential", "DUMMY");
- loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName), dummy);
- ImmutableMap.Builder<String, Object> builder = ImmutableMap.<String, Object>builder().put("imageId", imageId);
- if (imageOwner != null) builder.put("imageOwner", imageOwner);
- Map<String, Object> tagMapping = builder.build();
- loc.setTagMapping(ImmutableMap.<String, Map<String, ? extends Object>>of("MyEntityType", tagMapping));
-
- Map<String, Object> flags = loc.getProvisioningFlags(ImmutableList.of("MyEntityType"));
- assertTrue(Maps.<String, Object>difference(flags, tagMapping).entriesOnlyOnRight().isEmpty(), "flags="+flags);
- }
-
- @Test(groups = "Live", dataProvider="fromImageId")
- public void testProvisionVmUsingImageId(String regionName, String imageId, String imageOwner) {
- loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
- SshMachineLocation machine = obtainMachine(MutableMap.of("imageId", imageId, "imageOwner", imageOwner, JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
-
- LOG.info("Provisioned {} vm {}; checking if ssh'able", provider, machine);
- assertTrue(machine.isSshable());
- }
-
- @Test(groups = "Live", dataProvider="fromImageNamePattern")
- public void testProvisionVmUsingImageNamePattern(String regionName, String imageNamePattern, String imageOwner) {
- loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
- SshMachineLocation machine = obtainMachine(MutableMap.of("imageNameRegex", imageNamePattern, "imageOwner", imageOwner, JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
-
- LOG.info("Provisioned {} vm {}; checking if ssh'able", provider, machine);
- assertTrue(machine.isSshable());
- }
-
- @Test(groups = "Live", dataProvider="fromImageDescriptionPattern")
- public void testProvisionVmUsingImageDescriptionPattern(String regionName, String imageDescriptionPattern, String imageOwner) {
- loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
- SshMachineLocation machine = obtainMachine(MutableMap.of("imageDescriptionRegex", imageDescriptionPattern, "imageOwner", imageOwner, JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
-
- LOG.info("Provisioned {} vm {}; checking if ssh'able", provider, machine);
- assertTrue(machine.isSshable());
- }
-
- // Use this utility method to ensure machines are released on tearDown
- protected SshMachineLocation obtainMachine(Map flags) {
- try {
- SshMachineLocation result = (SshMachineLocation)loc.obtain(flags);
- machines.add(result);
- return result;
- } catch (NoMachinesAvailableException nmae) {
- LOG.warn("No machines available", nmae);
- throw Exceptions.propagate(nmae);
- }
- }
-
- protected SshMachineLocation release(SshMachineLocation machine) {
- machines.remove(machine);
- loc.release(machine);
- return machine;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationLiveTest.java
deleted file mode 100644
index 141f32b..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationLiveTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.provider;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class AwsEc2LocationLiveTest extends AbstractJcloudsLocationTest {
-
- private static final String PROVIDER = "aws-ec2";
- private static final String EUWEST_REGION_NAME = "eu-west-1";
- private static final String USEAST_REGION_NAME = "us-east-1";
- private static final String EUWEST_IMAGE_ID = EUWEST_REGION_NAME+"/"+"ami-89def4fd"; // RightImage_CentOS_5.4_i386_v5.5.9_EBS
- private static final String USEAST_IMAGE_ID = USEAST_REGION_NAME+"/"+"ami-2342a94a"; // RightImage_CentOS_5.4_i386_v5.5.9_EBS
- private static final String IMAGE_OWNER = "411009282317";
- private static final String IMAGE_PATTERN = "RightImage_CentOS_5.4_i386_v5.5.9_EBS";
-
- public AwsEc2LocationLiveTest() {
- super(PROVIDER);
- }
-
- @Override
- @DataProvider(name = "fromImageId")
- public Object[][] cloudAndImageIds() {
- return new Object[][] {
- new Object[] { EUWEST_REGION_NAME, EUWEST_IMAGE_ID, IMAGE_OWNER },
- new Object[] { USEAST_REGION_NAME, USEAST_IMAGE_ID, IMAGE_OWNER }
- };
- }
-
- @Override
- @DataProvider(name = "fromImageDescriptionPattern")
- public Object[][] cloudAndImageDescriptionPatterns() {
- return new Object[][] {
- new Object[] { EUWEST_REGION_NAME, IMAGE_PATTERN, IMAGE_OWNER },
- new Object[] { USEAST_REGION_NAME, IMAGE_PATTERN, IMAGE_OWNER }
- };
- }
-
- @Override
- @DataProvider(name = "fromImageNamePattern")
- public Object[][] cloudAndImageNamePatterns() {
- return new Object[][] {
- new Object[] { USEAST_REGION_NAME, IMAGE_PATTERN, IMAGE_OWNER }
- };
- }
-
- @Test(enabled = false)
- public void noop() { } /* just exists to let testNG IDE run the test */
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationWindowsLiveTest.groovy
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationWindowsLiveTest.groovy b/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationWindowsLiveTest.groovy
deleted file mode 100644
index f19b61b..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/AwsEc2LocationWindowsLiveTest.groovy
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.provider;
-
-import static org.testng.Assert.*
-
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import org.testng.annotations.AfterMethod
-import org.testng.annotations.BeforeMethod
-import org.testng.annotations.Test
-
-import brooklyn.entity.basic.Entities
-import brooklyn.location.basic.SshMachineLocation
-import brooklyn.location.jclouds.JcloudsLocation
-import brooklyn.location.jclouds.JcloudsSshMachineLocation
-import org.apache.brooklyn.api.management.ManagementContext
-
-import com.google.common.collect.ImmutableMap
-
-public class AwsEc2LocationWindowsLiveTest {
- private static final Logger LOG = LoggerFactory.getLogger(AwsEc2LocationWindowsLiveTest.class)
-
- private static final String PROVIDER = "aws-ec2"
- private static final String EUWEST_REGION_NAME = "eu-west-1"
- private static final String EUWEST_IMAGE_ID = EUWEST_REGION_NAME+"/"+"ami-7f0c260b";//"ami-41d3d635"
- private static final String LOCATION_ID = "jclouds:"+PROVIDER+":"+EUWEST_REGION_NAME;
-
- protected JcloudsLocation loc;
- protected Collection<SshMachineLocation> machines = []
- protected ManagementContext ctx;
-
- @BeforeMethod(groups = "Live")
- public void setUp() {
- ctx = Entities.newManagementContext(ImmutableMap.of("provider", PROVIDER));
-
- loc = ctx.locationRegistry.resolve LOCATION_ID
- }
-
- @AfterMethod(groups = "Live")
- public void tearDown() {
- List<Exception> exceptions = []
- machines.each {
- try {
- loc?.release(it)
- } catch (Exception e) {
- LOG.warn("Error releasing machine $it; continuing...", e)
- exceptions.add(e)
- }
- }
- if (exceptions) {
- throw exceptions.get(0)
- }
- machines.clear()
- }
-
- // TODO Note careful choice of image due to jclouds 1.4 issue 886
- // TODO Blocks for long time, waiting for IP:22 to be reachable, before falling back to using public IP
- // 10*2 minutes per attempt in jclouds 1.4 because done sequentially, and done twice by us so test takes 40 minutes!
- @Test(enabled=true, groups = [ "Live" ])
- public void testProvisionWindowsVm() {
- JcloudsSshMachineLocation machine = obtainMachine([ imageId:EUWEST_IMAGE_ID ]);
-
- LOG.info("Provisioned Windows VM {}; checking if has password", machine)
- assertNotNull(machine.waitForPassword())
- }
-
- // Use this utility method to ensure machines are released on tearDown
- protected SshMachineLocation obtainMachine(Map flags) {
- SshMachineLocation result = loc.obtain(flags)
- machines.add(result)
- return result
- }
-
- protected SshMachineLocation release(SshMachineLocation machine) {
- machines.remove(machine)
- loc.release(machine)
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/CarrenzaLocationLiveTest.groovy
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/CarrenzaLocationLiveTest.groovy b/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/CarrenzaLocationLiveTest.groovy
deleted file mode 100644
index 3a06a66..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/CarrenzaLocationLiveTest.groovy
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.provider;
-
-import static org.testng.Assert.*
-
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import org.testng.annotations.AfterMethod
-import org.testng.annotations.BeforeMethod
-import org.testng.annotations.Test
-
-import brooklyn.config.BrooklynProperties
-import brooklyn.location.basic.SshMachineLocation
-import brooklyn.location.jclouds.JcloudsLocation
-import brooklyn.location.jclouds.JcloudsSshMachineLocation
-import brooklyn.management.internal.LocalManagementContext
-import brooklyn.util.collections.MutableMap
-
-import com.google.common.collect.ImmutableList
-
-/**
- * Tests vcloud, with Carrenza. Uses the cloudsoft test account (hard-coding its NAT Mapping,
- * and one of its private vApp templates). Note that the template is for a Windows 2008
- * machine with winsshd installed.
- *
- * TODO Will only work with >= jclouds 1.5, due to jclouds issues 994 and 995. Therefore it
- * will not work in brooklyn 0.4.0-M2 etc.
- */
-class CarrenzaLocationLiveTest {
- private static final Logger LOG = LoggerFactory.getLogger(CarrenzaLocationLiveTest.class)
-
- private static final String PROVIDER = "vcloud"
- private static final String ENDPOINT = "https://myvdc.carrenza.net/api"
- private static final String LOCATION_ID = "jclouds:"+PROVIDER+":"+ENDPOINT;
- private static final String WINDOWS_IMAGE_ID = "https://myvdc.carrenza.net/api/v1.0/vAppTemplate/vappTemplate-2bd5b0ff-ecd9-405e-8306-2f4f6c092a1b"
-
- private BrooklynProperties brooklynProperties;
- private LocalManagementContext managementContext;
- private JcloudsLocation loc;
- private Collection<SshMachineLocation> machines = []
-
- // TODO Has not been tested since updating ot remove use of deleted LocationRegistry!
- @BeforeMethod(groups = "Live")
- public void setUp() {
- System.out.println("classpath="+System.getProperty("java.class.path"));
-
- brooklynProperties = BrooklynProperties.Factory.newDefault();
- brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+".image-description-regex");
- brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+".image-name-regex");
- brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+".image-id");
- brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+".inboundPorts");
- brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+".hardware-id");
-
- // Also removes scriptHeader (e.g. if doing `. ~/.bashrc` and `. ~/.profile`, then that can cause "stdin: is not a tty")
- brooklynProperties.remove("brooklyn.ssh.config.scriptHeader");
-
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".jclouds.endpoint", ENDPOINT)
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".imageId", WINDOWS_IMAGE_ID)
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".noDefaultSshKeys", true)
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".userName", "Administrator")
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".dontCreateUser", true)
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".overrideLoginUser", "Administrator")
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".waitForSshable", false)
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".runAsRoot", false)
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".inboundPorts", [22, 3389])
- brooklynProperties.put("brooklyn.jclouds."+PROVIDER+".natMapping", [("192.168.0.100"):"195.3.186.200", ("192.168.0.101"):"195.3.186.42"])
-
- managementContext = new LocalManagementContext(brooklynProperties);
- loc = (JcloudsLocation) managementContext.getLocationRegistry().resolve(LOCATION_ID);
- }
-
- @AfterMethod(groups = "Live")
- public void tearDown() {
- List<Exception> exceptions = []
- machines.each {
- try {
- loc?.release(it)
- } catch (Exception e) {
- LOG.warn("Error releasing machine $it; continuing...", e)
- exceptions.add(e)
- }
- }
- if (exceptions) {
- throw exceptions.get(0)
- }
- machines.clear()
- }
-
- // FIXME Disabled because of jclouds issues #994 and #995 (fixed in jclouds 1.5, so not in brooklyn 0.4.0-M2 etc)
- // Note the careful settings in setUp (e.g. so don't try to install ssh-keys etc
- // Also, the windows image used has winsshd installed
- @Test(enabled=false, groups = [ "Live" ])
- public void testProvisionWindowsVm() {
- JcloudsSshMachineLocation machine = obtainMachine(MutableMap.of(
- "imageId", WINDOWS_IMAGE_ID));
-
- LOG.info("Provisioned Windows VM {}; checking if has password", machine)
- String password = machine.waitForPassword();
- assertNotNull(password);
-
- LOG.info("Checking can ssh to windows machine {} using password {}", machine, password);
- assertEquals(machine.execCommands(MutableMap.of("password", password), "check-reachable", ImmutableList.of("hostname")), 0);
- }
-
- // Use this utility method to ensure machines are released on tearDown
- protected SshMachineLocation obtainMachine(Map flags) {
- SshMachineLocation result = loc.obtain(flags)
- machines.add(result)
- return result
- }
-
- protected SshMachineLocation release(SshMachineLocation machine) {
- machines.remove(machine)
- loc.release(machine)
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/GoGridLocationLiveTest.groovy
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/GoGridLocationLiveTest.groovy b/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/GoGridLocationLiveTest.groovy
deleted file mode 100644
index 6e718c8..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/GoGridLocationLiveTest.groovy
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.provider;
-
-import static org.testng.Assert.*
-
-import org.testng.annotations.DataProvider
-
-public class GoGridLocationLiveTest extends AbstractJcloudsLocationTest {
-
- private static final String PROVIDER = "gogrid"
- private static final String USWEST_REGION_NAME = "1"//"us-west-1"
- private static final String USWEST_IMAGE_ID = "1532"
- private static final String IMAGE_NAME_PATTERN = "CentOS 5.3 (64-bit) w/ None"
- private static final String IMAGE_OWNER = null
-
- public GoGridLocationLiveTest() {
- super(PROVIDER)
- }
-
- @Override
- @DataProvider(name = "fromImageId")
- public Object[][] cloudAndImageIds() {
- return [ [USWEST_REGION_NAME, USWEST_IMAGE_ID, IMAGE_OWNER] ]
- }
-
- @Override
- @DataProvider(name = "fromImageNamePattern")
- public Object[][] cloudAndImageNamePatterns() {
- return [ [USWEST_REGION_NAME, IMAGE_NAME_PATTERN, IMAGE_OWNER] ]
- }
-
- @Override
- @DataProvider(name = "fromImageDescriptionPattern")
- public Object[][] cloudAndImageDescriptionPatterns() {
- return []
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
deleted file mode 100644
index 129b4f5..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.provider;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.location.jclouds.JcloudsLocation;
-import brooklyn.location.jclouds.JcloudsSshMachineLocation;
-import brooklyn.util.collections.MutableMap;
-
-public class RackspaceLocationLiveTest extends AbstractJcloudsLocationTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RackspaceLocationLiveTest.class);
-
- private static final String PROVIDER = "rackspace-cloudservers-uk";
- private static final String REGION_NAME = null;
- private static final String IMAGE_ID = "LON/f70ed7c7-b42e-4d77-83d8-40fa29825b85"; // CentOS 6.4
- private static final String IMAGE_NAME_PATTERN = "CentOS 6.4";
- private static final String IMAGE_OWNER = null;
-
- public RackspaceLocationLiveTest() {
- super(PROVIDER);
- }
-
- @Override
- @DataProvider(name = "fromImageId")
- public Object[][] cloudAndImageIds() {
- return new Object[][] {
- new Object[] { REGION_NAME, IMAGE_ID, IMAGE_OWNER }
- };
- }
-
- @Override
- @DataProvider(name = "fromImageNamePattern")
- public Object[][] cloudAndImageNamePatterns() {
- return new Object[][] {
- new Object[] { REGION_NAME, IMAGE_NAME_PATTERN, IMAGE_OWNER }
- };
- }
-
- @Override
- @DataProvider(name = "fromImageDescriptionPattern")
- public Object[][] cloudAndImageDescriptionPatterns() {
- return new Object[0][0];
- }
-
- @Test(groups = "Live")
- public void testVmMetadata() {
- loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(PROVIDER + (REGION_NAME == null ? "" : ":" + REGION_NAME));
- SshMachineLocation machine = obtainMachine(MutableMap.of("imageId", IMAGE_ID, "userMetadata", MutableMap.of("mykey", "myval"), JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
-
- LOG.info("Provisioned {} vm {}; checking metadata and if ssh'able", PROVIDER, machine);
-
- Map<String,String> userMetadata = ((JcloudsSshMachineLocation)machine).getNode().getUserMetadata();
- assertEquals(userMetadata.get("mykey"), "myval", "metadata="+userMetadata);
- assertTrue(machine.isSshable());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/zone/AwsAvailabilityZoneExtensionTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/zone/AwsAvailabilityZoneExtensionTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/zone/AwsAvailabilityZoneExtensionTest.java
deleted file mode 100644
index cf5bece..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/zone/AwsAvailabilityZoneExtensionTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package brooklyn.location.jclouds.zone;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-
-import org.jclouds.domain.LocationScope;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.entity.basic.Entities;
-import brooklyn.location.Location;
-import brooklyn.location.jclouds.AbstractJcloudsLiveTest;
-import brooklyn.location.jclouds.JcloudsLocation;
-import brooklyn.location.jclouds.JcloudsSshMachineLocation;
-import brooklyn.management.internal.LocalManagementContext;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-public class AwsAvailabilityZoneExtensionTest {
-
- public static final String PROVIDER = AbstractJcloudsLiveTest.AWS_EC2_PROVIDER;
- public static final String REGION_NAME = AbstractJcloudsLiveTest.AWS_EC2_USEAST_REGION_NAME;
- public static final String LOCATION_SPEC = PROVIDER + (REGION_NAME == null ? "" : ":" + REGION_NAME);
- public static final String SMALL_HARDWARE_ID = AbstractJcloudsLiveTest.AWS_EC2_SMALL_HARDWARE_ID;
-
- public static final String US_EAST_IMAGE_ID = "us-east-1/ami-7d7bfc14"; // centos 6.3
-
- private LocalManagementContext mgmt;
- private JcloudsLocation loc;
- private AwsAvailabilityZoneExtension zoneExtension;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- mgmt = new LocalManagementContext();
- loc = (JcloudsLocation) mgmt.getLocationRegistry().resolve(LOCATION_SPEC);
- zoneExtension = new AwsAvailabilityZoneExtension(mgmt, loc);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (mgmt != null) Entities.destroyAll(mgmt);
- }
-
- @Test(groups={"Live", "Sanity"})
- public void testFindsZones() throws Exception {
- List<Location> subLocations = zoneExtension.getSubLocations(Integer.MAX_VALUE);
- List<String> zoneNames = getRegionsOf(subLocations);
- assertTrue(subLocations.size() >= 3, "zones="+subLocations);
- assertTrue(zoneNames.containsAll(ImmutableList.of(REGION_NAME+"a", REGION_NAME+"b", REGION_NAME+"c")), "zoneNames="+zoneNames);
- }
-
- @Test(groups={"Live", "Sanity"})
- public void testFiltersZones() throws Exception {
- List<Location> subLocations = zoneExtension.getSubLocationsByName(Predicates.containsPattern(REGION_NAME+"[ab]"), Integer.MAX_VALUE);
- List<String> zoneNames = getRegionsOf(subLocations);
- assertTrue(subLocations.size() == 2, "zones="+subLocations);
- assertTrue(zoneNames.containsAll(ImmutableList.of(REGION_NAME+"a", REGION_NAME+"b")), "zoneNames="+zoneNames);
- }
-
- // TODO choosing a specific availability zone looks dangerous!
- // TODO report this on brooklyn issues
- // org.jclouds.aws.AWSResponseException: request POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400,
- // error: AWSError{requestId='5d360cc7-9c43-4683-8093-de3b081de87d', requestToken='null', code='Unsupported',
- // message='The requested Availability Zone is currently constrained and we are no longer accepting new customer requests for t1/m1/c1/m2/m3 instance types.
- // Please retry your request by not specifying an Availability Zone or choosing us-east-1e, us-east-1b, us-east-1c.', context='{Response=, Errors=}'}
- @Test(groups={"Live"})
- public void testSubLocationIsUsable() throws Exception {
- String zoneName = REGION_NAME+"b";
- List<Location> subLocations = zoneExtension.getSubLocationsByName(Predicates.equalTo(zoneName), Integer.MAX_VALUE);
- JcloudsLocation subLocation = (JcloudsLocation) Iterables.getOnlyElement(subLocations);
- JcloudsSshMachineLocation machine = null;
- try {
- machine = (JcloudsSshMachineLocation)subLocation.obtain(ImmutableMap.builder()
- .put(JcloudsLocation.IMAGE_ID, US_EAST_IMAGE_ID)
- .put(JcloudsLocation.HARDWARE_ID, SMALL_HARDWARE_ID)
- .put(JcloudsLocation.INBOUND_PORTS, ImmutableList.of(22))
- .build());
-
- org.jclouds.domain.Location machineLoc = machine.getNode().getLocation();
- assertEquals(machineLoc.getScope(), LocationScope.ZONE, "machineLoc="+machineLoc);
- assertEquals(machineLoc.getId(), zoneName, "machineLoc="+machineLoc);
- } finally {
- if (machine != null) {
- subLocation.release(machine);
- }
- }
- }
-
- protected List<String> getRegionsOf(List<Location> locs) {
- List<String> result = Lists.newArrayList();
- for (Location loc : locs) {
- result.add(((JcloudsLocation)loc).getRegion());
- }
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java b/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
index ef38050..3973ade 100644
--- a/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
@@ -25,8 +25,8 @@ import org.apache.brooklyn.test.entity.TestEntity;
import org.testng.annotations.Test;
import brooklyn.entity.BrooklynAppUnitTestSupport;
-import brooklyn.location.LocationSpec;
-import brooklyn.location.basic.WinRmMachineLocation;
+import org.apache.brooklyn.location.LocationSpec;
+import org.apache.brooklyn.location.basic.WinRmMachineLocation;
import com.google.common.collect.ImmutableList;