Repository: jclouds Updated Branches: refs/heads/master 2a56db095 -> 09936b57f
http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceExpectTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceExpectTest.java index 5530be5..a7ec4db 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceExpectTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceExpectTest.java @@ -225,7 +225,7 @@ public class NovaComputeServiceExpectTest extends BaseNovaComputeServiceExpectTe .addHeader("X-Auth-Token", authToken) .payload( payloadFromStringWithContentType( - "{\"server\":{\"name\":\"test-1\",\"imageRef\":\"14\",\"flavorRef\":\"1\",\"metadata\":{\"jclouds_tags\":\"jclouds_sg-2769\"},\"key_name\":\"jclouds-test-0\",\"security_groups\":[{\"name\":\"jclouds-test\"}]}}", + "{\"server\":{\"name\":\"test-1\",\"imageRef\":\"2235\",\"flavorRef\":\"1\",\"metadata\":{\"jclouds_tags\":\"jclouds_sg-RegionOne/2769\"},\"key_name\":\"jclouds-test-0\",\"security_groups\":[{\"name\":\"jclouds-test\"}]}}", "application/json")).build(); HttpResponse createdServer = HttpResponse.builder().statusCode(202).message("HTTP/1.1 202 Accepted") @@ -280,7 +280,7 @@ public class NovaComputeServiceExpectTest extends BaseNovaComputeServiceExpectTe .addHeader("X-Auth-Token", authToken) .payload( payloadFromStringWithContentType( - "{\"server\":{\"name\":\"test-0\",\"imageRef\":\"14\",\"flavorRef\":\"1\",\"metadata\":{\"jclouds_tags\":\"jclouds_sg-2769\"},\"key_name\":\"testkeypair\",\"security_groups\":[{\"name\":\"jclouds-test\"}]}}", + "{\"server\":{\"name\":\"test-0\",\"imageRef\":\"2235\",\"flavorRef\":\"1\",\"metadata\":{\"jclouds_tags\":\"jclouds_sg-RegionOne/2769\"},\"key_name\":\"testkeypair\",\"security_groups\":[{\"name\":\"jclouds-test\"}]}}", "application/json")).build(); HttpResponse createdServer = HttpResponse.builder().statusCode(202).message("HTTP/1.1 202 Accepted") @@ -349,7 +349,7 @@ public class NovaComputeServiceExpectTest extends BaseNovaComputeServiceExpectTe .addHeader("X-Auth-Token", authToken) .payload( payloadFromStringWithContentType( - "{\"server\":{\"name\":\"test-0\",\"imageRef\":\"14\",\"flavorRef\":\"1\",\"key_name\":\"testkeypair\",\"security_groups\":[{\"name\":\"name1\"}]}}", + "{\"server\":{\"name\":\"test-0\",\"imageRef\":\"2235\",\"flavorRef\":\"1\",\"key_name\":\"testkeypair\",\"security_groups\":[{\"name\":\"name1\"}]}}", "application/json")).build(); HttpResponse createdServer = HttpResponse.builder().statusCode(202).message("HTTP/1.1 202 Accepted") http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceLiveTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceLiveTest.java index d4aac07..1b6c6ad 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceLiveTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceLiveTest.java @@ -21,12 +21,15 @@ import static java.util.logging.Logger.getAnonymousLogger; import java.util.Properties; import org.jclouds.compute.internal.BaseComputeServiceLiveTest; +import org.jclouds.logging.config.LoggingModule; +import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; import org.jclouds.openstack.keystone.config.KeystoneProperties; import org.jclouds.openstack.nova.v2_0.config.NovaProperties; import org.jclouds.rest.AuthorizationException; import org.jclouds.sshj.config.SshjSshClientModule; import org.testng.annotations.Test; +import com.google.common.collect.ImmutableSet; import com.google.inject.Module; @Test(groups = "live", singleThreaded = true, testName = "NovaComputeServiceLiveTest") @@ -40,7 +43,17 @@ public class NovaComputeServiceLiveTest extends BaseComputeServiceLiveTest { protected Module getSshModule() { return new SshjSshClientModule(); } - + + @Override + protected LoggingModule getLoggingModule() { + return new SLF4JLoggingModule(); + } + + @Override + protected Iterable<Module> setupModules() { + return ImmutableSet.of(getLoggingModule(), credentialStoreModule, getSshModule()); + } + @Override public void testOptionToNotBlock() { // start call is blocking anyway. @@ -49,12 +62,14 @@ public class NovaComputeServiceLiveTest extends BaseComputeServiceLiveTest { @Test(enabled = true, dependsOnMethods = "testReboot") public void testSuspendResume() throws Exception { try { - // may fail because of lack of AdminActions extension or non-admin user, so log and continue + // may fail because of lack of AdminActions extension or non-admin user, so log + // and continue super.testSuspendResume(); } catch (AuthorizationException e) { getAnonymousLogger().info("testSuspendResume() threw, probably due to lack of privileges: " + e.getMessage()); } catch (UnsupportedOperationException e) { - getAnonymousLogger().info("testSuspendResume() threw, probably due to unavailable AdminActions extension: " + e.getMessage()); + getAnonymousLogger().info( + "testSuspendResume() threw, probably due to unavailable AdminActions extension: " + e.getMessage()); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NeutronSecurityGroupExtensionLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NeutronSecurityGroupExtensionLiveTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NeutronSecurityGroupExtensionLiveTest.java new file mode 100644 index 0000000..05ddded --- /dev/null +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NeutronSecurityGroupExtensionLiveTest.java @@ -0,0 +1,117 @@ +/* + * 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 org.jclouds.openstack.nova.v2_0.compute.extensions; + +import java.util.Properties; +import java.util.concurrent.ExecutionException; +import javax.annotation.Resource; +import javax.inject.Named; + +import com.google.common.base.Optional; +import org.jclouds.Context; +import org.jclouds.ContextBuilder; +import org.jclouds.compute.ComputeService; +import org.jclouds.compute.RunNodesException; +import org.jclouds.compute.domain.SecurityGroup; +import org.jclouds.compute.extensions.SecurityGroupExtension; +import org.jclouds.compute.extensions.internal.BaseSecurityGroupExtensionLiveTest; +import org.jclouds.compute.reference.ComputeServiceConstants; +import org.jclouds.config.ContextLinking; +import org.jclouds.logging.Logger; +import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; +import org.jclouds.openstack.neutron.v2.NeutronApi; +import org.jclouds.rest.ApiContext; +import org.jclouds.sshj.config.SshjSshClientModule; +import org.testng.annotations.AfterClass; +import org.testng.annotations.Test; + +import com.google.common.collect.ImmutableSet; +import com.google.common.reflect.TypeToken; +import com.google.inject.Module; + +import static org.testng.Assert.assertTrue; + +/** + * Live test for openstack-neutron {@link SecurityGroupExtension} implementation. + */ +@Test(groups = "live", singleThreaded = true, testName = "NeutronSecurityGroupExtensionLiveTest") +public class NeutronSecurityGroupExtensionLiveTest extends BaseSecurityGroupExtensionLiveTest { + + @Resource + @Named(ComputeServiceConstants.COMPUTE_LOGGER) + protected Logger logger = Logger.CONSOLE; + + private Context neutronApiContext; + + public NeutronSecurityGroupExtensionLiveTest() { + provider = "openstack-nova"; + + Properties overrides = setupProperties(); + neutronApiContext = ContextBuilder.newBuilder("openstack-neutron") + .endpoint(setIfTestSystemPropertyPresent(overrides, + "openstack-nova.endpoint")) + .credentials(setIfTestSystemPropertyPresent(overrides, + "openstack-nova.identity"), + setIfTestSystemPropertyPresent(overrides, "openstack-nova.credential")) + .modules(ImmutableSet.<Module>of( + new SshjSshClientModule(), + new SLF4JLoggingModule()) + ) + .build(new TypeToken<ApiContext<NeutronApi>>() {}); + } + + + @Test(groups = { "integration", "live" }, singleThreaded = true) + public void testListSecurityGroups() throws RunNodesException, InterruptedException, ExecutionException { + skipIfSecurityGroupsNotSupported(); + ComputeService computeService = view.getComputeService(); + + Optional<SecurityGroupExtension> securityGroupExtension = computeService.getSecurityGroupExtension(); + assertTrue(securityGroupExtension.isPresent(), "security extension was not present"); + + for (SecurityGroup securityGroup : securityGroupExtension.get().listSecurityGroups()) { + logger.info(securityGroup.toString()); + } + + } + + @Test(groups = { "integration", "live" }, singleThreaded = true) + public void testListSecurityGroupsForNode() throws RunNodesException, InterruptedException, ExecutionException { + skipIfSecurityGroupsNotSupported(); + ComputeService computeService = view.getComputeService(); + + Optional<SecurityGroupExtension> securityGroupExtension = computeService.getSecurityGroupExtension(); + assertTrue(securityGroupExtension.isPresent(), "security extension was not present"); + + for (SecurityGroup securityGroup : securityGroupExtension.get().listSecurityGroupsForNode("uk-1/97374b9f-c706-4c4a-ae5a-48b6d2e58db9")) { + logger.info(securityGroup.toString()); + } + + } + + @AfterClass + @Override + protected void tearDownContext() { + super.tearDownContext(); + } + + @Override + protected Iterable<Module> setupModules() { + return ImmutableSet.<Module> of(ContextLinking.linkContext(neutronApiContext), getLoggingModule(), credentialStoreModule, getSshModule()); + } + +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionExpectTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionExpectTest.java index 7753dad..f608917 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionExpectTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionExpectTest.java @@ -113,14 +113,13 @@ public class NovaSecurityGroupExtensionExpectTest extends BaseNovaComputeService payloadFromResource("/server_with_security_groups_extension.json")).build(); HttpRequest list = HttpRequest.builder().method("GET").endpoint( - URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/os-security-groups")).headers( + URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/servers/8d0a6ca5-8849-4b3d-b86e-f24c92490ebb/os-security-groups")).headers( ImmutableMultimap.<String, String> builder().put("Accept", "application/json").put("X-Auth-Token", authToken).build()).build(); HttpResponse listResponse = HttpResponse.builder().statusCode(200).payload( payloadFromResource("/securitygroup_list.json")).build(); - Builder<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder(); requestResponseMap.put(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess); requestResponseMap.put(extensionsOfNovaRequest, extensionsOfNovaResponse); http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionLiveTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionLiveTest.java index 02fbfb7..69ae043 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionLiveTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/extensions/NovaSecurityGroupExtensionLiveTest.java @@ -46,7 +46,6 @@ import com.google.common.collect.Iterables; @Test(groups = "live", singleThreaded = true, testName = "NovaSecurityGroupExtensionLiveTest") public class NovaSecurityGroupExtensionLiveTest extends BaseSecurityGroupExtensionLiveTest { - @Resource @Named(ComputeServiceConstants.COMPUTE_LOGGER) protected Logger logger = Logger.CONSOLE; http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupInRegionOrCreateTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupInRegionOrCreateTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupInRegionOrCreateTest.java new file mode 100644 index 0000000..85a9fd8 --- /dev/null +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupInRegionOrCreateTest.java @@ -0,0 +1,131 @@ +/* + * 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 org.jclouds.openstack.nova.v2_0.compute.loaders; + +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.fail; + +import org.jclouds.compute.domain.SecurityGroup; +import org.jclouds.compute.domain.SecurityGroupBuilder; +import org.jclouds.openstack.nova.v2_0.domain.regionscoped.RegionAndName; +import org.jclouds.openstack.nova.v2_0.domain.regionscoped.RegionSecurityGroupNameAndPorts; +import org.jclouds.openstack.nova.v2_0.domain.regionscoped.SecurityGroupInRegion; +import org.testng.annotations.Test; + +import com.google.common.base.Function; +import com.google.common.base.Functions; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; + +@Test(groups = "unit", singleThreaded = true, testName = "FindSecurityGroupInRegionOrCreateTest") +public class FindSecurityGroupInRegionOrCreateTest { + + @Test + public void testWhenNotFoundCreatesANewSecurityGroup() throws Exception { + SecurityGroup securityGroup = createMock(SecurityGroup.class); + + RegionSecurityGroupNameAndPorts input = new RegionSecurityGroupNameAndPorts("region", "groupName", ImmutableSet + .<Integer> of(22, 8080)); + + Function<RegionSecurityGroupNameAndPorts, SecurityGroup> groupCreator = Functions.forMap(ImmutableMap + .of(input, securityGroup)); + + FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate(groupCreator); + + assertEquals(parser.load(input), securityGroup); + + } + + @Test(enabled = false) // TODO does it apply now? + public void testWhenFoundReturnsSecurityGroupFromAtomicReferenceValueUpdatedDuringPredicateCheck() throws Exception { + SecurityGroup expected = new SecurityGroupBuilder().id("region/id").name("name").build(); + final SecurityGroupInRegion securityGroupInRegion = createMock(SecurityGroupInRegion.class); + final org.jclouds.openstack.nova.v2_0.domain.SecurityGroup novaSecurityGroup = createMock(org.jclouds.openstack.nova.v2_0.domain.SecurityGroup.class); + + + expect(novaSecurityGroup.getId()).andReturn("id").anyTimes(); + expect(novaSecurityGroup.getName()).andReturn("name"); + replay(novaSecurityGroup); + + expect(securityGroupInRegion.getRegion()).andReturn("region"); + expect(securityGroupInRegion.getSecurityGroup()).andReturn(novaSecurityGroup).anyTimes(); + replay(securityGroupInRegion); + + RegionAndName input = RegionAndName.fromRegionAndName("region", "groupName"); + + Function<RegionSecurityGroupNameAndPorts, SecurityGroup> groupCreator = new Function<RegionSecurityGroupNameAndPorts, SecurityGroup>() { + + @Override + public SecurityGroup apply(RegionSecurityGroupNameAndPorts input) { + fail(); + return null; + } + + }; + + FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate(groupCreator); + + assertEquals(parser.load(input), expected); + + } + + + @Test(expectedExceptions = IllegalStateException.class, enabled = false) // TODO does it apply now? + public void testWhenFoundPredicateMustUpdateAtomicReference() throws Exception { + + RegionAndName input = RegionAndName.fromRegionAndName("region", "groupName"); + + Function<RegionSecurityGroupNameAndPorts, SecurityGroup> groupCreator = new Function<RegionSecurityGroupNameAndPorts, SecurityGroup>() { + + @Override + public SecurityGroup apply(RegionSecurityGroupNameAndPorts input) { + fail(); + return null; + } + + }; + + FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate(groupCreator); + + parser.load(input); + + } + + @Test(expectedExceptions = IllegalStateException.class) + public void testWhenNotFoundInputMustBeRegionSecurityGroupNameAndPorts() throws Exception { + + RegionAndName input = RegionAndName.fromRegionAndName("region", "groupName"); + + Function<RegionSecurityGroupNameAndPorts, SecurityGroup> groupCreator = new Function<RegionSecurityGroupNameAndPorts, SecurityGroup>() { + + @Override + public SecurityGroup apply(RegionSecurityGroupNameAndPorts input) { + fail(); + return null; + } + + }; + + FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate(groupCreator); + + parser.load(input); + + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupOrCreateTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupOrCreateTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupOrCreateTest.java deleted file mode 100644 index 9e3182f..0000000 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/compute/loaders/FindSecurityGroupOrCreateTest.java +++ /dev/null @@ -1,141 +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 org.jclouds.openstack.nova.v2_0.compute.loaders; - -import static org.easymock.EasyMock.createMock; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.fail; - -import java.util.concurrent.atomic.AtomicReference; - -import org.jclouds.openstack.nova.v2_0.domain.regionscoped.RegionAndName; -import org.jclouds.openstack.nova.v2_0.domain.regionscoped.RegionSecurityGroupNameAndPorts; -import org.jclouds.openstack.nova.v2_0.domain.regionscoped.SecurityGroupInRegion; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.base.Functions; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - -@Test(groups = "unit", singleThreaded = true, testName = "FindSecurityGroupOrCreateTest") -public class FindSecurityGroupOrCreateTest { - - @Test - public void testWhenNotFoundCreatesANewSecurityGroup() throws Exception { - Predicate<AtomicReference<RegionAndName>> returnSecurityGroupExistsInRegion = Predicates.alwaysFalse(); - - SecurityGroupInRegion securityGroupInRegion = createMock(SecurityGroupInRegion.class); - - RegionSecurityGroupNameAndPorts input = new RegionSecurityGroupNameAndPorts("region", "groupName", ImmutableSet - .<Integer> of(22, 8080)); - - Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion> groupCreator = Functions.forMap(ImmutableMap - .<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion> of(input, securityGroupInRegion)); - - FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate( - returnSecurityGroupExistsInRegion, groupCreator); - - assertEquals(parser.load(input), securityGroupInRegion); - - } - - @Test - public void testWhenFoundReturnsSecurityGroupFromAtomicReferenceValueUpdatedDuringPredicateCheck() throws Exception { - final SecurityGroupInRegion securityGroupInRegion = createMock(SecurityGroupInRegion.class); - - Predicate<AtomicReference<RegionAndName>> returnSecurityGroupExistsInRegion = new Predicate<AtomicReference<RegionAndName>>() { - - @Override - public boolean apply(AtomicReference<RegionAndName> input) { - input.set(securityGroupInRegion); - return true; - } - - }; - - RegionAndName input = RegionAndName.fromRegionAndName("region", "groupName"); - - Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion> groupCreator = new Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion>() { - - @Override - public SecurityGroupInRegion apply(RegionSecurityGroupNameAndPorts input) { - fail(); - return null; - } - - }; - - FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate( - returnSecurityGroupExistsInRegion, groupCreator); - - assertEquals(parser.load(input), securityGroupInRegion); - - } - - - @Test(expectedExceptions = IllegalStateException.class) - public void testWhenFoundPredicateMustUpdateAtomicReference() throws Exception { - - Predicate<AtomicReference<RegionAndName>> returnSecurityGroupExistsInRegion = Predicates.alwaysTrue(); - - RegionAndName input = RegionAndName.fromRegionAndName("region", "groupName"); - - Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion> groupCreator = new Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion>() { - - @Override - public SecurityGroupInRegion apply(RegionSecurityGroupNameAndPorts input) { - fail(); - return null; - } - - }; - - FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate( - returnSecurityGroupExistsInRegion, groupCreator); - - parser.load(input); - - } - - - - @Test(expectedExceptions = IllegalStateException.class) - public void testWhenNotFoundInputMustBeRegionSecurityGroupNameAndPorts() throws Exception { - Predicate<AtomicReference<RegionAndName>> returnSecurityGroupExistsInRegion = Predicates.alwaysFalse(); - - RegionAndName input = RegionAndName.fromRegionAndName("region", "groupName"); - - Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion> groupCreator = new Function<RegionSecurityGroupNameAndPorts, SecurityGroupInRegion>() { - - @Override - public SecurityGroupInRegion apply(RegionSecurityGroupNameAndPorts input) { - fail(); - return null; - } - - }; - - FindSecurityGroupOrCreate parser = new FindSecurityGroupOrCreate( - returnSecurityGroupExistsInRegion, groupCreator); - - parser.load(input); - - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java index b030654..14a28a0 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java @@ -19,6 +19,7 @@ package org.jclouds.openstack.nova.v2_0.features; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; +import com.google.common.collect.Iterables; import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; import org.jclouds.openstack.nova.v2_0.NovaApi; @@ -30,6 +31,7 @@ import org.jclouds.openstack.nova.v2_0.options.RebuildServerOptions; import org.jclouds.openstack.nova.v2_0.parse.ParseCreatedServerTest; import org.jclouds.openstack.nova.v2_0.parse.ParseMetadataListTest; import org.jclouds.openstack.nova.v2_0.parse.ParseMetadataUpdateTest; +import org.jclouds.openstack.nova.v2_0.parse.ParseSecurityGroupListTest; import org.jclouds.openstack.nova.v2_0.parse.ParseServerDetailsStatesTest; import org.jclouds.openstack.nova.v2_0.parse.ParseServerDiagnostics; import org.jclouds.openstack.nova.v2_0.parse.ParseServerListTest; @@ -498,4 +500,35 @@ public class ServerApiExpectTest extends BaseNovaApiExpectTest { HttpResponse.builder().statusCode(statusCode).build()).getServerApi("az-1.region-a.geo-1").getDiagnostics(serverId).isPresent()); } } + + public void testListSecurityGroupsForServerWhenResponseIs200() throws Exception { + String serverId = "123"; + HttpRequest getDiagnostics = HttpRequest.builder() + .method("GET") + .addHeader("Accept", "application/json") + .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/servers/" + serverId + "/os-security-groups") + .addHeader("X-Auth-Token", authToken) + .build(); + + HttpResponse serverDiagnosticsResponse = HttpResponse.builder().statusCode(202).message("HTTP/1.1 202 Accepted") + .payload(payloadFromResourceWithContentType("/securitygroup_list.json", "application/json; charset=UTF-8")).build(); + + NovaApi apiWithNewServer = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, + responseWithKeystoneAccess, getDiagnostics, serverDiagnosticsResponse); + assertEquals(Iterables.toString(apiWithNewServer.getServerApi("az-1.region-a.geo-1").listSecurityGroupForServer(serverId)), + Iterables.toString(new ParseSecurityGroupListTest().expected())); + } + + public void testListSecurityGroupsForServerWhenResponseIs404() throws Exception { + String serverId = "123"; + HttpRequest getSecurityGroups = HttpRequest.builder() + .method("GET") + .addHeader("Accept", "application/json") + .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/servers/" + serverId + "/os-security-groups") + .addHeader("X-Auth-Token", authToken) + .build(); + + assertTrue(requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, getSecurityGroups, + HttpResponse.builder().statusCode(404).build()).getServerApi("az-1.region-a.geo-1").listSecurityGroupForServer(serverId).isEmpty()); + } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiLiveTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiLiveTest.java index 638ad3d..5903b1a 100755 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiLiveTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiLiveTest.java @@ -24,6 +24,7 @@ import static org.testng.Assert.assertTrue; import org.jclouds.http.HttpResponseException; import org.jclouds.openstack.nova.v2_0.domain.BlockDeviceMapping; import org.jclouds.openstack.nova.v2_0.domain.Network; +import org.jclouds.openstack.nova.v2_0.domain.SecurityGroup; import org.jclouds.openstack.nova.v2_0.domain.Server; import org.jclouds.openstack.nova.v2_0.domain.ServerCreated; import org.jclouds.openstack.nova.v2_0.extensions.AvailabilityZoneApi; @@ -88,7 +89,7 @@ public class ServerApiLiveTest extends BaseNovaApiLiveTest { for (String regionId : regions) { ServerApi serverApi = api.getServerApi(regionId); Optional<? extends AvailabilityZoneApi> availabilityZoneApi = api.getAvailabilityZoneApi(regionId); - availabilityZone = availabilityZoneApi.isPresent() ? Iterables.getLast(availabilityZoneApi.get().list()).getName() : "nova"; + availabilityZone = availabilityZoneApi.isPresent() ? Iterables.get(availabilityZoneApi.get().list(), 0).getName() : "nova"; try { serverId = createServer(regionId, availabilityZone).getId(); Server server = serverApi.get(serverId); @@ -226,6 +227,18 @@ public class ServerApiLiveTest extends BaseNovaApiLiveTest { } } + @Test(description = "GET /v${apiVersion}/servers/{id}/os-security-groups") + public void testListSecurityGroupForServer() throws Exception { + for (String regionId : regions) { + ServerApi serverApi = api.getServerApi(regionId); + for (Resource server : serverApi.list().concat()) { + for (SecurityGroup securityGroup : serverApi.listSecurityGroupForServer(server.getId())) { + checkSecurityGroup(securityGroup); + } + } + } + } + private Server createServer(String regionId, String availabilityZoneId) { ServerApi serverApi = api.getServerApi(regionId); @@ -250,4 +263,10 @@ public class ServerApiLiveTest extends BaseNovaApiLiveTest { checkResource(server); assertNotNull(server.getFlavor()); } + + private void checkSecurityGroup(SecurityGroup securityGroup) { + assertNotNull(securityGroup.getId()); + assertNotNull(securityGroup.getName()); + assertNotNull(securityGroup.getRules()); + } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/CreateSecurityGroupIfNeededTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/CreateSecurityGroupIfNeededTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/CreateSecurityGroupIfNeededTest.java index 248fad8..30fc7a5 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/CreateSecurityGroupIfNeededTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/CreateSecurityGroupIfNeededTest.java @@ -19,16 +19,28 @@ package org.jclouds.openstack.nova.v2_0.functions; import static org.testng.Assert.assertEquals; import java.net.URI; - +import java.util.Map; + +import com.google.common.base.Function; +import com.google.common.base.Functions; +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import com.google.inject.Injector; +import org.jclouds.compute.domain.SecurityGroupBuilder; +import org.jclouds.domain.Location; +import org.jclouds.domain.LocationBuilder; +import org.jclouds.domain.LocationScope; import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; +import org.jclouds.net.domain.IpPermission; +import org.jclouds.net.domain.IpProtocol; import org.jclouds.openstack.nova.v2_0.NovaApi; import org.jclouds.openstack.nova.v2_0.compute.functions.CreateSecurityGroupIfNeeded; -import org.jclouds.openstack.nova.v2_0.domain.SecurityGroup; +import org.jclouds.openstack.nova.v2_0.compute.functions.NeutronSecurityGroupToSecurityGroup; +import org.jclouds.openstack.nova.v2_0.compute.functions.NovaSecurityGroupInRegionToSecurityGroup; import org.jclouds.openstack.nova.v2_0.domain.regionscoped.RegionSecurityGroupNameAndPorts; import org.jclouds.openstack.nova.v2_0.domain.regionscoped.SecurityGroupInRegion; import org.jclouds.openstack.nova.v2_0.internal.BaseNovaApiExpectTest; -import org.jclouds.openstack.nova.v2_0.parse.ParseComputeServiceTypicalSecurityGroupTest; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; @@ -48,6 +60,18 @@ public class CreateSecurityGroupIfNeededTest extends BaseNovaApiExpectTest { "{\"security_group\":{\"name\":\"jclouds_mygroup\",\"description\":\"jclouds_mygroup\"}}", "application/json")).build(); + Location provider = new LocationBuilder().scope(LocationScope.PROVIDER).id("openstack-nova").description( + "openstack-nova").build(); + Location region = new LocationBuilder().id("az-1.region-a.geo-1").description("az-1.region-a.geo-1").scope( + LocationScope.REGION).parent(provider).build(); + Supplier<Map<String, Location>> locationIndex = Suppliers.<Map<String, Location>> ofInstance(ImmutableMap + .<String, Location> of("az-1.region-a.geo-1", region)); + + Function<SecurityGroupInRegion, org.jclouds.compute.domain.SecurityGroup> securityGroupInRegionSecurityGroupFunction = new NovaSecurityGroupInRegionToSecurityGroup(locationIndex); + + Injector injector = createInjector(Functions.forMap(ImmutableMap.<HttpRequest, HttpResponse>of()), createModule(), setupProperties()); + NeutronSecurityGroupToSecurityGroup.Factory factory = injector.getInstance(NeutronSecurityGroupToSecurityGroup.Factory.class); + private final int groupId = 2769; public void testCreateNewGroup() throws Exception { @@ -126,13 +150,46 @@ public class CreateSecurityGroupIfNeededTest extends BaseNovaApiExpectTest { NovaApi apiCanCreateSecurityGroup = requestsSendResponses(builder.build()); - CreateSecurityGroupIfNeeded fn = new CreateSecurityGroupIfNeeded(apiCanCreateSecurityGroup); + CreateSecurityGroupIfNeeded fn = new CreateSecurityGroupIfNeeded(apiCanCreateSecurityGroup, locationIndex, securityGroupInRegionSecurityGroupFunction, factory); // we can find it - final SecurityGroup expected = new ParseComputeServiceTypicalSecurityGroupTest().expected(); + org.jclouds.compute.domain.SecurityGroup expected = new SecurityGroupBuilder() + .id("az-1.region-a.geo-1/2769") + .providerId("2769") + .name("jclouds_mygroup") + .location(locationIndex.get().get("az-1.region-a.geo-1")) + .ipPermissions(ImmutableList.of( + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(22) + .toPort(22) + .cidrBlock("0.0.0.0/0") + .build(), + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(22) + .toPort(22) + .groupIds(ImmutableList.of("az-1.region-a.geo-1/2769")) + .build(), + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(8080) + .toPort(8080) + .cidrBlock("0.0.0.0/0") + .build(), + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(8080) + .toPort(8080) + .groupIds(ImmutableList.of("az-1.region-a.geo-1/2769")) + .build() + ) + ) + .build(); + assertEquals( - fn.apply(new RegionSecurityGroupNameAndPorts("az-1.region-a.geo-1", "jclouds_mygroup", ImmutableSet.of(22, 8080))).toString(), - new SecurityGroupInRegion(expected, "az-1.region-a.geo-1", ImmutableList.of(expected)).toString()); + fn.apply(new RegionSecurityGroupNameAndPorts("az-1.region-a.geo-1", "jclouds_mygroup", ImmutableSet.of(22, 8080))).toString(), + expected.toString().trim()); } @@ -163,12 +220,45 @@ public class CreateSecurityGroupIfNeededTest extends BaseNovaApiExpectTest { NovaApi apiWhenSecurityGroupsExist = requestsSendResponses(builder.build()); - CreateSecurityGroupIfNeeded fn = new CreateSecurityGroupIfNeeded(apiWhenSecurityGroupsExist); + CreateSecurityGroupIfNeeded fn = new CreateSecurityGroupIfNeeded(apiWhenSecurityGroupsExist, locationIndex, securityGroupInRegionSecurityGroupFunction, factory); // we can find it - final SecurityGroup expected = new ParseComputeServiceTypicalSecurityGroupTest().expected(); + org.jclouds.compute.domain.SecurityGroup expected = new SecurityGroupBuilder() + .id("az-1.region-a.geo-1/2769") + .providerId("2769") + .name("jclouds_mygroup") + .location(locationIndex.get().get("az-1.region-a.geo-1")) + .ipPermissions(ImmutableList.of( + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(22) + .toPort(22) + .cidrBlock("0.0.0.0/0") + .build(), + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(22) + .toPort(22) + .groupIds(ImmutableList.of("az-1.region-a.geo-1/2769")) + .build(), + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(8080) + .toPort(8080) + .cidrBlock("0.0.0.0/0") + .build(), + IpPermission.builder() + .ipProtocol(IpProtocol.TCP) + .fromPort(8080) + .toPort(8080) + .groupIds(ImmutableList.of("az-1.region-a.geo-1/2769")) + .build() + ) + ) + .build(); assertEquals( - fn.apply(new RegionSecurityGroupNameAndPorts("az-1.region-a.geo-1", "jclouds_mygroup", ImmutableSet.of(22, 8080))).toString(), - new SecurityGroupInRegion(expected, "az-1.region-a.geo-1", ImmutableList.of(expected)).toString()); + fn.apply(new RegionSecurityGroupNameAndPorts("az-1.region-a.geo-1", "jclouds_mygroup", ImmutableSet.of(22, 8080))).toString(), + expected.toString().trim() + ); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseComputeServiceTypicalSecurityGroupTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseComputeServiceTypicalSecurityGroupTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseComputeServiceTypicalSecurityGroupTest.java index a142b1e..16843ae 100644 --- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseComputeServiceTypicalSecurityGroupTest.java +++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseComputeServiceTypicalSecurityGroupTest.java @@ -49,23 +49,21 @@ public class ParseComputeServiceTypicalSecurityGroupTest extends BaseItemParserT public SecurityGroup expected() { Set<SecurityGroupRule> securityGroupRules = ImmutableSet.of( - SecurityGroupRule.builder().fromPort(22) - .ipProtocol(IpProtocol.TCP).toPort(22).parentGroupId("2769") + SecurityGroupRule.builder().fromPort(22).ipProtocol(IpProtocol.TCP).toPort(22).parentGroupId("2769") .ipRange("0.0.0.0/0").id("10331").build(), - SecurityGroupRule.builder().fromPort(22).group(TenantIdAndName.builder().tenantId("37936628937291").name("jclouds_mygroup").build()) - .ipProtocol(IpProtocol.TCP).toPort(22).parentGroupId("2769") - .id("10332").build(), - SecurityGroupRule.builder().fromPort(8080) - .ipProtocol(IpProtocol.TCP).toPort(8080).parentGroupId("2769") + SecurityGroupRule.builder().fromPort(22) + .group(TenantIdAndName.builder().tenantId("37936628937291").name("jclouds_mygroup").build()) + .ipProtocol(IpProtocol.TCP).toPort(22).parentGroupId("2769").id("10332").build(), + SecurityGroupRule.builder().fromPort(8080).ipProtocol(IpProtocol.TCP).toPort(8080).parentGroupId("2769") .ipRange("0.0.0.0/0").id("10333").build(), - SecurityGroupRule.builder().fromPort(8080).group(TenantIdAndName.builder().tenantId("37936628937291").name("jclouds_mygroup").build()) - .ipProtocol(IpProtocol.TCP).toPort(8080).parentGroupId("2769") - .id("10334").build() - ); + SecurityGroupRule.builder().fromPort(8080) + .group(TenantIdAndName.builder().tenantId("37936628937291").name("jclouds_mygroup").build()) + .ipProtocol(IpProtocol.TCP).toPort(8080).parentGroupId("2769").id("10334").build()); - return SecurityGroup.builder().description("jclouds_mygroup").id("2769").tenantId("37936628937291").rules(securityGroupRules) - .name("jclouds_mygroup").build(); + return SecurityGroup.builder().description("jclouds_mygroup").id("2769").tenantId("37936628937291") + .rules(securityGroupRules).name("jclouds_mygroup").build(); } + protected Injector injector() { return Guice.createInjector(new NovaParserModule(), new GsonModule()); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/resources/image_list_detail.json ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/resources/image_list_detail.json b/apis/openstack-nova/src/test/resources/image_list_detail.json index 0aa48bc..041938b 100644 --- a/apis/openstack-nova/src/test/resources/image_list_detail.json +++ b/apis/openstack-nova/src/test/resources/image_list_detail.json @@ -418,6 +418,33 @@ }, { "status": "ACTIVE", + "updated": "2012-03-12T07:49:23Z", + "name": "Ubuntu Lucid 16.04 LTS Server 64-bit (Kernel)", + "links": [ + { + "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/37936628937291/images/1235", + "rel": "self" + }, + { + "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/37936628937291/images/1235", + "rel": "bookmark" + } + ], + "created": "2011-12-21T11:39:58Z", + "progress": 100, + "id": "2235", + "metadata": { + "image_location": "local", + "image_state": "available", + "min_ram": 0, + "min_disk": 0, + "architecture": "amd64", + "owner": null, + "project_id": "None" + } + }, + { + "status": "ACTIVE", "updated": "2012-03-12T07:49:05Z", "name": "CentOS 5.6 Server 64-bit 20111207", "links": [ http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/resources/image_list_detail_openstack.json ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/resources/image_list_detail_openstack.json b/apis/openstack-nova/src/test/resources/image_list_detail_openstack.json index 467522f..2a284a3 100644 --- a/apis/openstack-nova/src/test/resources/image_list_detail_openstack.json +++ b/apis/openstack-nova/src/test/resources/image_list_detail_openstack.json @@ -73,6 +73,33 @@ }, { "status": "ACTIVE", + "updated": "2012-03-12T07:49:23Z", + "name": "Ubuntu Lucid 16.04 LTS Server 64-bit (Kernel)", + "links": [ + { + "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/37936628937291/images/1235", + "rel": "self" + }, + { + "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/37936628937291/images/1235", + "rel": "bookmark" + } + ], + "created": "2011-12-21T11:39:58Z", + "progress": 100, + "id": "2235", + "metadata": { + "image_location": "local", + "image_state": "available", + "min_ram": 0, + "min_disk": 0, + "architecture": "amd64", + "owner": null, + "project_id": "None" + } + }, + { + "status": "ACTIVE", "updated": "2012-02-02T19:10:33Z", "name": "natty-server-cloudimg-amd64-kernel", "links": [ http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/apis/openstack-nova/src/test/resources/logback-test.xml ---------------------------------------------------------------------- diff --git a/apis/openstack-nova/src/test/resources/logback-test.xml b/apis/openstack-nova/src/test/resources/logback-test.xml index 4cac342..e689909 100644 --- a/apis/openstack-nova/src/test/resources/logback-test.xml +++ b/apis/openstack-nova/src/test/resources/logback-test.xml @@ -13,7 +13,7 @@ </encoder> </appender> <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender"> - <file>target/jclouds-compute.log</file> + <file>target/test-data/jclouds-compute.log</file> <encoder> <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> </encoder> http://git-wip-us.apache.org/repos/asf/jclouds/blob/09936b57/compute/src/test/java/org/jclouds/compute/extensions/internal/BaseSecurityGroupExtensionLiveTest.java ---------------------------------------------------------------------- diff --git a/compute/src/test/java/org/jclouds/compute/extensions/internal/BaseSecurityGroupExtensionLiveTest.java b/compute/src/test/java/org/jclouds/compute/extensions/internal/BaseSecurityGroupExtensionLiveTest.java index 2aa7e66..5c39bcb 100644 --- a/compute/src/test/java/org/jclouds/compute/extensions/internal/BaseSecurityGroupExtensionLiveTest.java +++ b/compute/src/test/java/org/jclouds/compute/extensions/internal/BaseSecurityGroupExtensionLiveTest.java @@ -406,17 +406,18 @@ public abstract class BaseSecurityGroupExtensionLiveTest extends BaseComputeServ @Test(groups = {"integration", "live"}, singleThreaded = true) public void testSecurityGroupCacheInvalidatedWhenDeletedExternally() throws Exception { + String testSecurityGroupName = secGroupNameToDelete + "-externally"; ComputeService computeService = view.getComputeService(); Optional<SecurityGroupExtension> securityGroupExtension = computeService.getSecurityGroupExtension(); assertTrue(securityGroupExtension.isPresent(), "security extension was not present"); final SecurityGroupExtension security = securityGroupExtension.get(); - final SecurityGroup seedGroup = security.createSecurityGroup(secGroupNameToDelete, getNodeTemplate().getLocation()); + final SecurityGroup seedGroup = security.createSecurityGroup(testSecurityGroupName, getNodeTemplate().getLocation()); deleteSecurityGroupFromAnotherView(seedGroup); boolean deleted = security.removeSecurityGroup(seedGroup.getId()); assertFalse(deleted, "SG deleted externally so should've failed deletion"); - final SecurityGroup recreatedGroup = security.createSecurityGroup(secGroupNameToDelete, getNodeTemplate().getLocation()); + final SecurityGroup recreatedGroup = security.createSecurityGroup(testSecurityGroupName, getNodeTemplate().getLocation()); // Makes sure the security group exists and is re-created and is not just returned from cache security.addIpPermission(IpPermission.builder()