PageRenderTime 61ms CodeModel.GetById 33ms RepoModel.GetById 0ms app.codeStats 1ms

/labs/greenqloud-compute/src/test/java/org/jclouds/greenqloud/compute/strategy/GreenQloudComputeReviseParsedImageTest.java

https://github.com/richardcloudsoft/legacy-jclouds
Java | 256 lines | 211 code | 22 blank | 23 comment | 0 complexity | ce7d44acc38cfef6ec2014f5fb4a7068 MD5 | raw file
  1. /**
  2. * Licensed to jclouds, Inc. (jclouds) under one or more
  3. * contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. jclouds licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. package org.jclouds.greenqloud.compute.strategy;
  20. import static org.testng.Assert.assertEquals;
  21. import java.util.Map;
  22. import java.util.Set;
  23. import org.jclouds.compute.config.BaseComputeServiceContextModule;
  24. import org.jclouds.compute.domain.ImageBuilder;
  25. import org.jclouds.compute.domain.OperatingSystem;
  26. import org.jclouds.compute.domain.OsFamily;
  27. import org.jclouds.compute.reference.ComputeServiceConstants;
  28. import org.jclouds.domain.Location;
  29. import org.jclouds.domain.LocationBuilder;
  30. import org.jclouds.domain.LocationScope;
  31. import org.jclouds.domain.LoginCredentials;
  32. import org.jclouds.ec2.compute.config.EC2ComputeServiceDependenciesModule;
  33. import org.jclouds.ec2.compute.functions.EC2ImageParser;
  34. import org.jclouds.ec2.compute.strategy.EC2PopulateDefaultLoginCredentialsForImageStrategy;
  35. import org.jclouds.ec2.domain.Image;
  36. import org.jclouds.ec2.xml.DescribeImagesResponseHandlerTest;
  37. import org.jclouds.greenqloud.compute.strategy.GreenQloudComputeReviseParsedImage;
  38. import org.jclouds.json.Json;
  39. import org.jclouds.json.config.GsonModule;
  40. import org.testng.annotations.Test;
  41. import com.google.common.base.Predicates;
  42. import com.google.common.base.Suppliers;
  43. import com.google.common.collect.ImmutableMap;
  44. import com.google.common.collect.ImmutableSet;
  45. import com.google.common.collect.Iterables;
  46. import com.google.common.collect.Sets;
  47. import com.google.inject.Guice;
  48. /**
  49. * @author Adrian Cole
  50. */
  51. @Test(groups = "unit", testName = "GreenQloudComputeReviseParsedImageTest")
  52. public class GreenQloudComputeReviseParsedImageTest {
  53. public void testParseGreenQloudImage() {
  54. Set<org.jclouds.compute.domain.Image> result = convertImages("/greenqloud_images.xml");
  55. assertEquals(result.size(), 9);
  56. assertEquals(
  57. Iterables.get(result, 0).toString(),
  58. new ImageBuilder()
  59. .operatingSystem(
  60. OperatingSystem.builder().family(OsFamily.UBUNTU).version("10.04")
  61. .description("Ubuntu Server 10.04 (64-bit)").is64Bit(true)
  62. .arch("paravirtual").build())
  63. .description("Ubuntu Server 10.04 (64-bit)")
  64. .name("Ubuntu Server 10.04.3")
  65. .defaultCredentials(LoginCredentials.builder().user("root").build())
  66. .id("us-east-1/qmi-4e5b842f")
  67. .providerId("qmi-4e5b842f")
  68. .location(defaultLocation)
  69. .userMetadata(
  70. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  71. "paravirtual", "hypervisor", "xen"))
  72. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  73. assertEquals(Iterables.get(result, 0).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  74. assertEquals(
  75. Iterables.get(result, 1).toString(),
  76. new ImageBuilder()
  77. .operatingSystem(
  78. OperatingSystem.builder().family(OsFamily.UBUNTU).version("11.10")
  79. .description("Ubuntu Server 11.10 (64-bit)").is64Bit(true)
  80. .arch("paravirtual").build())
  81. .description("Ubuntu Server 11.10 (64-bit)")
  82. .name("Ubuntu Server 11.10")
  83. .defaultCredentials(LoginCredentials.builder().user("root").build())
  84. .id("us-east-1/qmi-9ac92558")
  85. .providerId("qmi-9ac92558")
  86. .location(defaultLocation)
  87. .userMetadata(
  88. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  89. "paravirtual", "hypervisor", "xen"))
  90. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  91. assertEquals(Iterables.get(result, 1).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  92. assertEquals(
  93. Iterables.get(result, 2).toString(),
  94. new ImageBuilder()
  95. .operatingSystem(
  96. OperatingSystem.builder().family(OsFamily.CENTOS).version("5.5")
  97. .description("CentOS 5.5 Server 64-bit").is64Bit(true)
  98. .arch("paravirtual").build())
  99. .description("CentOS 5.5 Server 64-bit")
  100. .name("CentOS 5.5 Server")
  101. .defaultCredentials(LoginCredentials.builder().user("root").build())
  102. .id("us-east-1/qmi-33a467aa")
  103. .providerId("qmi-33a467aa")
  104. .location(defaultLocation)
  105. .userMetadata(
  106. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  107. "paravirtual", "hypervisor", "xen"))
  108. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  109. assertEquals(Iterables.get(result, 2).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  110. assertEquals(
  111. Iterables.get(result, 3).toString(),
  112. new ImageBuilder()
  113. .operatingSystem(
  114. OperatingSystem.builder().family(OsFamily.DEBIAN).version("6.0")
  115. .description("Debian 6.0 (64-bit)").is64Bit(true)
  116. .arch("paravirtual").build())
  117. .description("Debian 6.0 (64-bit)")
  118. .name("Debian 6.0")
  119. .defaultCredentials(LoginCredentials.builder().user("root").build())
  120. .id("us-east-1/qmi-f2a9d2ba")
  121. .providerId("qmi-f2a9d2ba")
  122. .location(defaultLocation)
  123. .userMetadata(
  124. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  125. "paravirtual", "hypervisor", "xen"))
  126. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  127. assertEquals(Iterables.get(result, 3).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  128. assertEquals(
  129. Iterables.get(result, 4).toString(),
  130. new ImageBuilder()
  131. .operatingSystem(
  132. OperatingSystem.builder().family(OsFamily.CENTOS).version("6.0")
  133. .description("CentOS 6.0 (64-bit)").is64Bit(true)
  134. .arch("paravirtual").build())
  135. .description("CentOS 6.0 (64-bit)")
  136. .name("CentOS 6.0")
  137. .defaultCredentials(LoginCredentials.builder().user("root").build())
  138. .id("us-east-1/qmi-96f82145")
  139. .providerId("qmi-96f82145")
  140. .location(defaultLocation)
  141. .userMetadata(
  142. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  143. "paravirtual", "hypervisor", "xen"))
  144. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  145. assertEquals(Iterables.get(result, 4).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  146. assertEquals(
  147. Iterables.get(result, 5).toString(),
  148. new ImageBuilder()
  149. .operatingSystem(
  150. OperatingSystem.builder().family(OsFamily.CENTOS).version("6.0")
  151. .description("CentOS 6.0 GUI (64-bit)").is64Bit(true)
  152. .arch("paravirtual").build())
  153. .description("CentOS 6.0 GUI (64-bit)")
  154. .name("CentOS 6.0 GUI")
  155. .defaultCredentials(LoginCredentials.builder().user("root").build())
  156. .id("us-east-1/qmi-42e877f6")
  157. .providerId("qmi-42e877f6")
  158. .location(defaultLocation)
  159. .userMetadata(
  160. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  161. "paravirtual", "hypervisor", "xen"))
  162. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  163. assertEquals(Iterables.get(result, 5).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  164. assertEquals(
  165. Iterables.get(result, 6).toString(),
  166. new ImageBuilder()
  167. .operatingSystem(
  168. OperatingSystem.builder().family(OsFamily.UBUNTU).version("11.04")
  169. .description("Ubuntu Server 11.04 (64-bit)").is64Bit(true)
  170. .arch("paravirtual").build())
  171. .description("Ubuntu Server 11.04 (64-bit)")
  172. .name("Ubuntu Server 11.04")
  173. .defaultCredentials(LoginCredentials.builder().user("root").build())
  174. .id("us-east-1/qmi-eed8cea7")
  175. .providerId("qmi-eed8cea7")
  176. .location(defaultLocation)
  177. .userMetadata(
  178. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  179. "paravirtual", "hypervisor", "xen"))
  180. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  181. assertEquals(Iterables.get(result, 6).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  182. assertEquals(
  183. Iterables.get(result, 7).toString(),
  184. new ImageBuilder()
  185. .operatingSystem(
  186. // fedora is not in the image version map, yet
  187. OperatingSystem.builder().family(OsFamily.FEDORA).version("")
  188. .description("Fedora 16 Server").is64Bit(false)
  189. .arch("paravirtual").build())
  190. .description("Fedora 16 Server")
  191. .name("Fedora 16 Server")
  192. .defaultCredentials(LoginCredentials.builder().user("root").build())
  193. .id("us-east-1/qmi-fa4bdae0")
  194. .providerId("qmi-fa4bdae0")
  195. .location(defaultLocation)
  196. .userMetadata(
  197. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  198. "paravirtual", "hypervisor", "xen"))
  199. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  200. assertEquals(Iterables.get(result, 7).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  201. assertEquals(
  202. Iterables.get(result, 8).toString(),
  203. new ImageBuilder()
  204. .operatingSystem(
  205. OperatingSystem.builder().family(OsFamily.CENTOS).version("5.6")
  206. .description("CentOS 5.6 Server GUI 64-bit").is64Bit(true)
  207. .arch("paravirtual").build())
  208. .description("CentOS 5.6 Server GUI 64-bit")
  209. .name("CentOS 5.6 GUI")
  210. .defaultCredentials(LoginCredentials.builder().user("root").build())
  211. .id("us-east-1/qmi-93271d32")
  212. .providerId("qmi-93271d32")
  213. .location(defaultLocation)
  214. .userMetadata(
  215. ImmutableMap.of("owner", "admin", "rootDeviceType", "ebs", "virtualizationType",
  216. "paravirtual", "hypervisor", "xen"))
  217. .status(org.jclouds.compute.domain.Image.Status.AVAILABLE).backendStatus("available").build().toString());
  218. assertEquals(Iterables.get(result, 8).getStatus(), org.jclouds.compute.domain.Image.Status.AVAILABLE);
  219. }
  220. static Location defaultLocation = new LocationBuilder().scope(LocationScope.REGION).id("us-east-1").description(
  221. "us-east-1").build();
  222. public static Set<org.jclouds.compute.domain.Image> convertImages(String resource) {
  223. Map<OsFamily, Map<String, String>> map = new BaseComputeServiceContextModule() {
  224. }.provideOsVersionMap(new ComputeServiceConstants.ReferenceData(), Guice.createInjector(new GsonModule())
  225. .getInstance(Json.class));
  226. // note this method is what mandates the location id as us-east-1
  227. Set<Image> result = DescribeImagesResponseHandlerTest.parseImages(resource);
  228. EC2ImageParser parser = new EC2ImageParser(EC2ComputeServiceDependenciesModule.toPortableImageStatus,
  229. new EC2PopulateDefaultLoginCredentialsForImageStrategy(), map, Suppliers
  230. .<Set<? extends Location>> ofInstance(ImmutableSet.<Location> of(defaultLocation)), Suppliers
  231. .ofInstance(defaultLocation), new GreenQloudComputeReviseParsedImage(map));
  232. return Sets.newLinkedHashSet(Iterables.filter(Iterables.transform(result, parser), Predicates.notNull()));
  233. }
  234. }