You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2013/11/18 16:32:08 UTC

git commit: applies tidies for imageChooser (JCLOUDS-331) as suggested in pull #202

Updated Branches:
  refs/heads/master 029e71843 -> 9a7336bb0


applies tidies for imageChooser (JCLOUDS-331) as suggested in pull #202


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9a7336bb
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9a7336bb
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9a7336bb

Branch: refs/heads/master
Commit: 9a7336bb0e0aed1e62de2725ffe97703dc3b2791
Parents: 029e718
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Nov 15 09:19:21 2013 +0000
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Nov 18 10:31:34 2013 -0500

----------------------------------------------------------------------
 .../internal/EC2TemplateBuilderImplTest.java    |   1 -
 .../jclouds/compute/domain/TemplateBuilder.java |   2 +-
 .../domain/internal/TemplateBuilderImpl.java    |   2 +-
 .../internal/TemplateBuilderImplTest.java       | 140 +++++++++++--------
 4 files changed, 81 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/9a7336bb/apis/ec2/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java b/apis/ec2/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java
index 7e9cb8f..0b12bb0 100644
--- a/apis/ec2/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java
+++ b/apis/ec2/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java
@@ -96,7 +96,6 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
        return "us-east-1/"+uniqueLabel;
    }
    
-   
    @Override
    @Test
    public void testHardwareWithImageIdPredicateOnlyAcceptsImageWhenLocationNull() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/9a7336bb/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilder.java
----------------------------------------------------------------------
diff --git a/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilder.java b/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilder.java
index c4fdb46..155dbdc 100644
--- a/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilder.java
+++ b/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilder.java
@@ -177,7 +177,7 @@ public interface TemplateBuilder {
     * If no function is supplied, jclouds will select one according to an internal strategy.
     * This strategy may change from version to version.
     */
-   TemplateBuilder imageChooser(Function<Iterable<? extends Image>,Image> imageChooser);
+   TemplateBuilder imageChooser(Function<Iterable<? extends Image>, Image> imageChooser);
        
    /**
     * Configure this template to require the minimum cores below

http://git-wip-us.apache.org/repos/asf/jclouds/blob/9a7336bb/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java
----------------------------------------------------------------------
diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java
index 8b60aec..426511f 100644
--- a/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java
+++ b/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java
@@ -975,7 +975,7 @@ public class TemplateBuilderImpl implements TemplateBuilder {
     * {@inheritDoc}
     */
    @Override
-   public TemplateBuilderImpl imageChooser(Function<Iterable<? extends Image>,Image> imageChooser) {
+   public TemplateBuilderImpl imageChooser(Function<Iterable<? extends Image>, Image> imageChooser) {
       this.imageChooser = imageChooser;
       return this;
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/9a7336bb/compute/src/test/java/org/jclouds/compute/domain/internal/TemplateBuilderImplTest.java
----------------------------------------------------------------------
diff --git a/compute/src/test/java/org/jclouds/compute/domain/internal/TemplateBuilderImplTest.java b/compute/src/test/java/org/jclouds/compute/domain/internal/TemplateBuilderImplTest.java
index 4661c4b..8419a85 100644
--- a/compute/src/test/java/org/jclouds/compute/domain/internal/TemplateBuilderImplTest.java
+++ b/compute/src/test/java/org/jclouds/compute/domain/internal/TemplateBuilderImplTest.java
@@ -146,9 +146,16 @@ public class TemplateBuilderImplTest {
       verify(defaultTemplate, optionsProvider, templateBuilderProvider);
    }
    
+   /**
+    * Resolves images using a default TemplateBuilder, optionally applying a customizer to that
+    * TemplateBuilder where the customizer may e.g. apply an imageChooser
+    */
    @SuppressWarnings("unchecked")
-   protected void doTestResolveImages(Supplier<Set<? extends Image>> images, Image expectedBest, 
-           Function<TemplateBuilderImpl, TemplateBuilderImpl> builderCustomisation) {
+   protected void doTestResolveImagesWithTemplateBuilderCustomizer(
+         Supplier<Set<? extends Image>> inputImages,
+         Function<TemplateBuilderImpl, TemplateBuilderImpl> templateBuilderPerTestCustomizer,
+         Image expectedBest) {
+
       Hardware hardware = new HardwareBuilder().id("hardwareId").build();
 
       Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
@@ -161,30 +168,40 @@ public class TemplateBuilderImplTest {
 
       replay(defaultTemplate, optionsProvider, templateBuilderProvider);
 
-      TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
+      TemplateBuilderImpl template = createTemplateBuilder(null, locations, inputImages, hardwares, region,
                optionsProvider, templateBuilderProvider);
-      template = builderCustomisation.apply(template);
+      template = templateBuilderPerTestCustomizer.apply(template);
 
-      assertEquals(template.resolveImage(hardware, images.get()), expectedBest);
+      assertEquals(template.resolveImage(hardware, inputImages.get()), expectedBest);
 
       verify(defaultTemplate, optionsProvider, templateBuilderProvider);
    }
 
+   protected void doTestResolveImages(Supplier<Set<? extends Image>> inputImages, Image expectedBest) {
+       doTestResolveImagesWithTemplateBuilderCustomizer(
+             inputImages,
+             Functions.<TemplateBuilderImpl>identity(),
+             expectedBest);
+   }
+
    public void testResolveImagesSimple() {
-      doTestResolveImages(Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(
-                   image, image64bit)),
-               image64bit, Functions.<TemplateBuilderImpl>identity());
+      doTestResolveImages(
+            Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(image, image64bit)),
+            image64bit);
    }
    
    public void testResolveImagesPrefersNull() {
       // preferring null has been the default behaviour; not sure if this is ideal
       // (would make more sense to prefer nonNull) but don't change behaviour by default
-      doTestResolveImages(Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(
-                   image, imageArchNull, image64bit)), 
-               imageArchNull, Functions.<TemplateBuilderImpl>identity());
+      doTestResolveImages(
+            Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(image, imageArchNull, image64bit)),
+            imageArchNull);
    }
 
    public void testResolveImagesCustomSorterPreferringNonNull() {
+      // preferring null has been the default behaviour;
+      // see comments in TemplateBuilderImpl.DEFAULT_IMAGE_ORDERING
+
       final Ordering<Image> sorterPreferringNonNullArch = new Ordering<Image>() {
          @Override
          public int compare(Image left, Image right) {
@@ -198,67 +215,68 @@ public class TemplateBuilderImplTest {
       assertTrue(TemplateBuilderImpl.DEFAULT_IMAGE_ORDERING.compare(image64bit, imageArchNull) < 0, "wrong default image ordering");
       assertTrue(sorterPreferringNonNullArch.compare(image64bit, imageArchNull) > 0, "wrong custom image ordering");
       
-      // preferring null has been the default behaviour; 
-      // see comments in TemplateBuilderImpl.DEFAULT_IMAGE_ORDERING
-      doTestResolveImages(Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(
-                image, imageArchNull, image64bit)),
-             image64bit, new Function<TemplateBuilderImpl,TemplateBuilderImpl>() {
-                @Override
-                public TemplateBuilderImpl apply(TemplateBuilderImpl input) {
-                    return input.imageChooser(input.imageChooserFromOrdering(sorterPreferringNonNullArch));
-                }
-             });
+      Function<TemplateBuilderImpl, TemplateBuilderImpl> tbCustomiser = new Function<TemplateBuilderImpl, TemplateBuilderImpl>() {
+         @Override
+         public TemplateBuilderImpl apply(TemplateBuilderImpl input) {
+            return input.imageChooser(input.imageChooserFromOrdering(sorterPreferringNonNullArch));
+         }
+      };
+
+      doTestResolveImagesWithTemplateBuilderCustomizer(
+            Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(image, imageArchNull, image64bit)),
+            tbCustomiser, image64bit);
    }
 
    public void testResolveImagesPrefersImageBecauseNameIsLastAlphabetically() {
       // preferring that which comes later alphabetically is the default behaviour;
       // see comments in TemplateBuilderImpl.DEFAULT_IMAGE_ORDERING
-      doTestResolveImages(Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(
-                   imageNameAlt, image)),
-               image, Functions.<TemplateBuilderImpl>identity());
+      doTestResolveImages(
+            Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(imageNameAlt, image)),
+            image);
    }
 
    public void testResolveImagesCustomSorterPreferringAltImage() {
-      doTestResolveImages(Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(
-                imageNameAlt, image, imageArchNull, image64bit)),
-             imageNameAlt, new Function<TemplateBuilderImpl,TemplateBuilderImpl>() {
-                @Override
-                public TemplateBuilderImpl apply(TemplateBuilderImpl input) {
-                    return input.imageChooser(input.imageChooserFromOrdering(new Ordering<Image>() {
-                        private int score(Image img) {
-                            if (img.getName().contains("alternate")) return 10;
-                            return 0;
-                        }
-                        @Override
-                        public int compare(Image left, Image right) {
-                            return score(left) - score(right);
-                        }
-                    }));
-                }
-             });
+      Function<TemplateBuilderImpl, TemplateBuilderImpl> tbSortWithAlternate = new Function<TemplateBuilderImpl, TemplateBuilderImpl>() {
+         @Override
+         public TemplateBuilderImpl apply(TemplateBuilderImpl input) {
+            return input.imageChooser(input.imageChooserFromOrdering(new Ordering<Image>() {
+               private int score(Image img) {
+                  if (img.getName().contains("alternate")) return 10;
+                  return 0;
+               }
+               @Override
+               public int compare(Image left, Image right) {
+                  return score(left) - score(right);
+               }
+            }));
+         }
+      };
+      doTestResolveImagesWithTemplateBuilderCustomizer(
+            Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(imageNameAlt, image, imageArchNull, image64bit)),
+            tbSortWithAlternate, imageNameAlt);
    }
 
    public void testResolveImagesCustomChooserPreferringAltImage() {
-      doTestResolveImages(Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(
-                 imageNameAlt, image, imageArchNull, image64bit)),
-              imageNameAlt, new Function<TemplateBuilderImpl,TemplateBuilderImpl>() {
-                 @Override
-                 public TemplateBuilderImpl apply(TemplateBuilderImpl input) {
-                    return input.imageChooser(new Function<Iterable<? extends Image>, Image>() {
-                       @Override
-                       public Image apply(Iterable<? extends Image> input) {
-                          return Iterables.find(input, new Predicate<Image>() {
-                             @Override
-                             public boolean apply(Image input) {
-                                return input.getName()!=null && input.getName().contains("alternate");
-                             }
-                          });
-                       }
-                    });
-                 }
-              });
-    }
-
+      Function<TemplateBuilderImpl, TemplateBuilderImpl> tbChooseAlternate = new Function<TemplateBuilderImpl, TemplateBuilderImpl>() {
+         @Override
+         public TemplateBuilderImpl apply(TemplateBuilderImpl input) {
+            return input.imageChooser(new Function<Iterable<? extends Image>, Image>() {
+               @Override
+               public Image apply(Iterable<? extends Image> input) {
+                  return Iterables.find(input, new Predicate<Image>() {
+                     @Override
+                     public boolean apply(Image input) {
+                        return input.getName() != null && input.getName().contains("alternate");
+                     }
+                  });
+               }
+            });
+         }
+      };
+      doTestResolveImagesWithTemplateBuilderCustomizer(
+            Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of(imageNameAlt, image, imageArchNull, image64bit)),
+            tbChooseAlternate, imageNameAlt);
+   }
 
    @SuppressWarnings("unchecked")
    @Test