PageRenderTime 44ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/compute/src/test/java/org/jclouds/compute/util/ComputeServiceUtilsTest.java

https://github.com/andreisavu/jclouds
Java | 146 lines | 103 code | 19 blank | 24 comment | 0 complexity | 5b32bc696494ecf87e2b0be0b04a7a29 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.compute.util;
  20. import static org.easymock.EasyMock.createMock;
  21. import static org.easymock.EasyMock.expect;
  22. import static org.easymock.EasyMock.replay;
  23. import static org.easymock.EasyMock.verify;
  24. import static org.jclouds.compute.util.ComputeServiceUtils.formatStatus;
  25. import static org.jclouds.compute.util.ComputeServiceUtils.metadataAndTagsAsCommaDelimitedValue;
  26. import static org.jclouds.compute.util.ComputeServiceUtils.metadataAndTagsAsValuesOfEmptyString;
  27. import static org.jclouds.compute.util.ComputeServiceUtils.parseVersionOrReturnEmptyString;
  28. import static org.testng.Assert.assertEquals;
  29. import java.util.Map;
  30. import org.jclouds.compute.config.BaseComputeServiceContextModule;
  31. import org.jclouds.compute.domain.ComputeMetadataIncludingStatus;
  32. import org.jclouds.compute.domain.Image;
  33. import org.jclouds.compute.domain.OsFamily;
  34. import org.jclouds.compute.options.TemplateOptions;
  35. import org.jclouds.compute.reference.ComputeServiceConstants;
  36. import org.jclouds.http.HttpRequest;
  37. import org.jclouds.json.Json;
  38. import org.jclouds.json.config.GsonModule;
  39. import org.testng.annotations.Test;
  40. import com.google.common.collect.ImmutableMap;
  41. import com.google.common.collect.ImmutableSet;
  42. import com.google.inject.Guice;
  43. /**
  44. * Test the compute utils.
  45. *
  46. * @author Adrian Cole
  47. *
  48. */
  49. @Test(groups = "unit", testName = "ComputeServiceUtilsTest")
  50. public class ComputeServiceUtilsTest {
  51. @SuppressWarnings("unchecked")
  52. @Test
  53. public void testFormatStatusWithBackendStatus() {
  54. ComputeMetadataIncludingStatus<Image.Status> resource = createMock(ComputeMetadataIncludingStatus.class);
  55. expect(resource.getStatus()).andReturn(Image.Status.PENDING);
  56. expect(resource.getBackendStatus()).andReturn("queued").anyTimes();
  57. replay(resource);
  58. assertEquals(formatStatus(resource), "PENDING[queued]");
  59. verify(resource);
  60. }
  61. @SuppressWarnings("unchecked")
  62. @Test
  63. public void testFormatStatusWithoutBackendStatus() {
  64. ComputeMetadataIncludingStatus<Image.Status> resource = createMock(ComputeMetadataIncludingStatus.class);
  65. expect(resource.getStatus()).andReturn(Image.Status.PENDING);
  66. expect(resource.getBackendStatus()).andReturn(null).anyTimes();
  67. replay(resource);
  68. assertEquals(formatStatus(resource), "PENDING");
  69. verify(resource);
  70. }
  71. Map<OsFamily, Map<String, String>> map = new BaseComputeServiceContextModule() {
  72. }.provideOsVersionMap(new ComputeServiceConstants.ReferenceData(), Guice.createInjector(new GsonModule())
  73. .getInstance(Json.class));
  74. @Test
  75. public void testMetadataAndTagsAsValuesOfEmptyString() {
  76. TemplateOptions options = TemplateOptions.Builder.tags(ImmutableSet.of("tag")).userMetadata(ImmutableMap.<String, String>of("foo", "bar"));
  77. assertEquals(metadataAndTagsAsValuesOfEmptyString(options), ImmutableMap.<String, String>of("foo", "bar", "tag", ""));
  78. }
  79. @Test
  80. public void testMetadataAndTagsAsCommaDelimitedValue() {
  81. TemplateOptions options = TemplateOptions.Builder.tags(ImmutableSet.of("tag")).userMetadata(ImmutableMap.<String, String>of("foo", "bar"));
  82. assertEquals(metadataAndTagsAsCommaDelimitedValue(options), ImmutableMap.<String, String>of("foo", "bar", "jclouds_tags", "tag"));
  83. }
  84. @Test
  85. public void testMetadataAndTagsAsValuesOfEmptyStringNoTags() {
  86. TemplateOptions options = TemplateOptions.Builder.userMetadata(ImmutableMap.<String, String>of("foo", "bar"));
  87. assertEquals(metadataAndTagsAsValuesOfEmptyString(options), ImmutableMap.<String, String>of("foo", "bar"));
  88. }
  89. @Test
  90. public void testMetadataAndTagsAsCommaDelimitedValueNoTags() {
  91. TemplateOptions options = TemplateOptions.Builder.userMetadata(ImmutableMap.<String, String>of("foo", "bar"));
  92. assertEquals(metadataAndTagsAsCommaDelimitedValue(options), ImmutableMap.<String, String>of("foo", "bar"));
  93. }
  94. @Test
  95. public void testParseVersionOrReturnEmptyStringUbuntu1004() {
  96. assertEquals(parseVersionOrReturnEmptyString(OsFamily.UBUNTU, "Ubuntu 10.04", map), "10.04");
  97. }
  98. @Test
  99. public void testParseVersionOrReturnEmptyStringUbuntu1104() {
  100. assertEquals(parseVersionOrReturnEmptyString(OsFamily.UBUNTU, "ubuntu 11.04 server (i386)", map), "11.04");
  101. }
  102. @Test
  103. public void testExecHttpResponse() {
  104. HttpRequest request = HttpRequest.builder()
  105. .method("GET")
  106. .endpoint("https://adriancolehappy.s3.amazonaws.com/java/install")
  107. .addHeader("Host", "adriancolehappy.s3.amazonaws.com")
  108. .addHeader("Date", "Sun, 12 Sep 2010 08:25:19 GMT")
  109. .addHeader("Authorization", "AWS 0ASHDJAS82:JASHFDA=").build();
  110. assertEquals(
  111. ComputeServiceUtils.execHttpResponse(request).render(org.jclouds.scriptbuilder.domain.OsFamily.UNIX),
  112. "curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET -H \"Host: adriancolehappy.s3.amazonaws.com\" -H \"Date: Sun, 12 Sep 2010 08:25:19 GMT\" -H \"Authorization: AWS 0ASHDJAS82:JASHFDA=\" https://adriancolehappy.s3.amazonaws.com/java/install |(bash)\n");
  113. }
  114. @Test
  115. public void testTarxzpHttpResponse() {
  116. HttpRequest request = HttpRequest.builder()
  117. .method("GET")
  118. .endpoint("https://adriancolehappy.s3.amazonaws.com/java/install")
  119. .addHeader("Host", "adriancolehappy.s3.amazonaws.com")
  120. .addHeader("Date", "Sun, 12 Sep 2010 08:25:19 GMT")
  121. .addHeader("Authorization", "AWS 0ASHDJAS82:JASHFDA=").build();
  122. assertEquals(
  123. ComputeServiceUtils.extractTargzIntoDirectory(request, "/stage/").render(
  124. org.jclouds.scriptbuilder.domain.OsFamily.UNIX),
  125. "curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET -H \"Host: adriancolehappy.s3.amazonaws.com\" -H \"Date: Sun, 12 Sep 2010 08:25:19 GMT\" -H \"Authorization: AWS 0ASHDJAS82:JASHFDA=\" https://adriancolehappy.s3.amazonaws.com/java/install |(mkdir -p /stage/ &&cd /stage/ &&tar -xpzf -)\n");
  126. }
  127. }