@SuppressWarnings("unchecked") @Test public void testHardwareWithImageIdPredicateOnlyAcceptsImageWhenLocationNull() { Hardware hardware = new HardwareBuilder() .id("hardwareId") .supportsImage(ImagePredicates.idEquals(getProviderFormatId("imageId"))) .build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); replay(defaultTemplate, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); template.imageId(getProviderFormatId("imageId")).build(); verify(defaultTemplate, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") public void testHardwareProfilesMustBePresentWhenQuerying() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateOptions defaultOptions = createMock(TemplateOptions.class); expect(optionsProvider.get()).andReturn(defaultOptions); replay(defaultOptions, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.os64Bit(true).build(); fail("Expected IllegalStateException"); } catch (IllegalStateException e) { assertEquals(e.getMessage(), "no hardware profiles present!"); } verify(defaultOptions, 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 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.<Location>of(region)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); replay(defaultTemplate, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, inputImages, hardwares, region, optionsProvider, templateBuilderProvider); template = templateBuilderPerTestCustomizer.apply(template); assertEquals(template.resolveImage(hardware, inputImages.get()), expectedBest); verify(defaultTemplate, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testArchWins() { Hardware hardware = new HardwareBuilder().id("hardwareId").build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image, image64bit)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); replay(defaultTemplate, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); assertEquals(template.smallest().osArchMatches("X86_32").build().getImage(), image); verify(defaultTemplate, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testDefaultLocationWithUnmatchedPredicateExceptionMessageAndLocationNotCalled() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance( ImmutableSet.<Hardware>of(createMock(Hardware.class))); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateOptions defaultOptions = createMock(TemplateOptions.class); expect(optionsProvider.get()).andReturn(defaultOptions); replay(defaultOptions, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageDescriptionMatches("notDescription").build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { // make sure big data is not in the exception message assertEquals( e.getMessage(), "no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),imageDescription(notDescription))"); } verify(defaultOptions, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testDefaultLocationWithNoOptionsNoSuchElement() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance( ImmutableSet.<Hardware>of(createMock(Hardware.class))); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateOptions defaultOptions = createMock(TemplateOptions.class); expect(optionsProvider.get()).andReturn(defaultOptions); replay(defaultOptions, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageId("region/imageId2").build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { // make sure big data is not in the exception message assertEquals(e.getMessage(), "imageId(region/imageId2) not found"); } verify(defaultOptions, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testSuppliedLocationAndOptions() { TemplateOptions from = provideTemplateOptions(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of()); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); expect(optionsProvider.get()).andReturn(from).atLeastOnce(); replay(optionsProvider); replay(templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageId("foo").options(provideTemplateOptions()).locationId("location").build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { } verify(optionsProvider); verify(templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testSuppliedImageLocationWiderThanDefault() { TemplateOptions from = provideTemplateOptions(); Hardware hardware = new HardwareBuilder() .id("hardwareId") .supportsImage(ImagePredicates.idEquals(image.getId())) .build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(provider, region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateOptions defaultOptions = createMock(TemplateOptions.class); expect(optionsProvider.get()).andReturn(from).atLeastOnce(); replay(defaultOptions, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); assertEquals( template.imageId(image.getId()).locationId(provider.getId()).build().getLocation(), region); verify(defaultOptions, optionsProvider, templateBuilderProvider); }
public void testMultiMaxNull() { // we rely on checking nulls in some Orderings, so assert it also does what we expect // (unfortunately can't use ImmutableList here as that doesn't allow nulls) Iterable<String> values = Arrays.asList("1", "3", null, "2", "2"); assertEquals( TemplateBuilderImpl.multiMax(Ordering.natural().nullsLast(), values), Arrays.asList((Object) null)); }
@SuppressWarnings("unchecked") @Test public void testImageIdNullsEverythingElse() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of()); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of()); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Location defaultLocation = createMock(Location.class); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); replay(defaultLocation); replay(optionsProvider); replay(templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, defaultLocation, optionsProvider, templateBuilderProvider); template.imageDescriptionMatches("imageDescriptionMatches"); template.imageNameMatches("imageNameMatches"); template.imageVersionMatches("imageVersionMatches"); template.osDescriptionMatches("osDescriptionMatches"); template.osFamily(OsFamily.CENTOS); template.osArchMatches("osArchMatches"); assertEquals(template.osArch, "osArchMatches"); assertEquals(template.imageDescription, "imageDescriptionMatches"); assertEquals(template.imageName, "imageNameMatches"); assertEquals(template.imageVersion, "imageVersionMatches"); assertEquals(template.osDescription, "osDescriptionMatches"); assertEquals(template.osFamily, OsFamily.CENTOS); assertEquals(template.imageId, null); template.imageId("myid"); assertEquals(template.osArch, null); assertEquals(template.imageDescription, null); assertEquals(template.imageName, null); assertEquals(template.imageVersion, null); assertEquals(template.osDescription, null); assertEquals(template.osFamily, null); assertEquals(template.imageId, "myid"); verify(defaultLocation); verify(optionsProvider); verify(templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testOptionsUsesDefaultTemplateBuilder() { TemplateOptions options = provideTemplateOptions(); TemplateOptions from = provideTemplateOptions(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of()); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of()); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Location defaultLocation = createMock(Location.class); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); expect(templateBuilderProvider.get()).andReturn(defaultTemplate); expect(defaultTemplate.options(from)).andReturn(defaultTemplate); expect(defaultTemplate.build()).andReturn(null); expect(optionsProvider.get()).andReturn(from).atLeastOnce(); replay(defaultTemplate); replay(defaultLocation); replay(optionsProvider); replay(templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, defaultLocation, optionsProvider, templateBuilderProvider); template.options(options).build(); verify(defaultTemplate); verify(defaultLocation); verify(optionsProvider); verify(templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testHardwareIdNullsHypervisor() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of()); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of()); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Location defaultLocation = createMock(Location.class); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); replay(defaultLocation); replay(optionsProvider); replay(templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, defaultLocation, optionsProvider, templateBuilderProvider); template.hypervisorMatches("OpenVZ"); assertEquals(template.hardwareId, null); assertEquals(template.hypervisor, "OpenVZ"); template.hardwareId("myid"); assertEquals(template.hardwareId, "myid"); assertEquals(template.hypervisor, null); verify(defaultLocation); verify(optionsProvider); verify(templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testDefaultLocationWithOptions() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of()); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance( ImmutableSet.<Hardware>of(createMock(Hardware.class))); Location defaultLocation = createMock(Location.class); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); TemplateOptions from = provideTemplateOptions(); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); expect(optionsProvider.get()).andReturn(from); replay(defaultLocation, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, defaultLocation, optionsProvider, templateBuilderProvider); try { template.imageId("region/ami").options(provideTemplateOptions()).build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { } verify(defaultLocation, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testHardwareWithImageIdPredicateOnlyDoesntImage() { Hardware hardware = new HardwareBuilder() .id("hardwareId") .supportsImage(ImagePredicates.idEquals("differentImageId")) .build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); replay(defaultTemplate, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( image, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageId(getProviderFormatId("imageId")).build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { // make sure message is succinct assertEquals( e.getMessage(), "no hardware profiles support images matching params: idEquals(differentImageId)"); verify(defaultTemplate, optionsProvider, templateBuilderProvider); } }
public void testMultiMaxNulls() { Iterable<String> values = Arrays.asList("1", "3", null, "2", "2", null); assertEquals( TemplateBuilderImpl.multiMax(Ordering.natural().nullsLast(), values), Arrays.asList((Object) null, null)); }
public void testMultiMax2() { // check with max buried in the middle Iterable<String> values = ImmutableList.of("1", "3", "2", "2"); assertEquals(TemplateBuilderImpl.multiMax(Ordering.natural(), values), ImmutableList.of("3")); }
public void testMultiMax1() { Iterable<String> values = ImmutableList.of("1", "2", "2", "3"); assertEquals(TemplateBuilderImpl.multiMax(Ordering.natural(), values), ImmutableList.of("3")); }