protected Hardware resolveHardware(Set<? extends Hardware> hardwarel, final Iterable<? extends Image> images) { try { return super.resolveHardware(hardwarel, images); } catch (NoSuchElementException ex) { if (minCores <= 0 || minRam == 0 || minDisk < 0) { throw new IllegalArgumentException("No hardware profile matching the given criteria was found. If you" + " want to use exact values, please set the minCores, minRam and minDisk to positive values."); } return automaticHardware(minCores, minRam, minDisk == 0 ? Optional.<Float>absent() : Optional.of((float)minDisk)); } }
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = errorMessage) public void testOnlyRam() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet.of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minRam(4096); templateBuilder.build(); }
@Test public void testOnlyRamMatchHardwareProfile() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet.of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minRam(1024); templateBuilder.build(); assertThat(hardware.getRam()).isEqualTo(2048); assertThat(hardware.getProcessors()).extracting("cores").containsExactly(2.0); assertThat(hardware.getId()).isEqualTo("hardwareId"); }
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = errorMessage) public void testOnlyCores() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet .of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minCores(4); templateBuilder.build(); }
protected Hardware resolveHardware(Set<? extends Hardware> hardwarel, final Iterable<? extends Image> images) { try { return super.resolveHardware(hardwarel, images); } catch (NoSuchElementException ex) { if (minCores <= 0 || minRam == 0 || minDisk < 0) { throw new IllegalArgumentException("No hardware profile matching the given criteria was found. If you" + " want to use exact values, please set the minCores, minRam and minDisk to positive values."); } return automaticHardware(minCores, minRam, minDisk == 0 ? Optional.<Float>absent() : Optional.of((float)minDisk)); } }
@Test public void testExistingHardwareProfileMatchHardwareProfileWithMinCoresMinRam() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet .of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minCores(2); templateBuilder.minRam(1024); Template template = templateBuilder.build(); Hardware hardware = template.getHardware(); assertThat(hardware.getRam()).isEqualTo(2048); assertThat(hardware.getProcessors()).extracting("cores").containsExactly(2.0); assertThat(hardware.getId()).isEqualTo("hardwareId"); }
protected Hardware findHardwareWithId(Set<? extends Hardware> hardwaresToSearch) { try { return super.findHardwareWithId(hardwaresToSearch); } catch (NoSuchElementException ex) { if (isAutomaticId(hardwareId)) { AutomaticHardwareIdSpec spec = parseId(hardwareId); return automaticHardware(spec.getCores(), spec.getRam(), spec.getDisk()); } else { throw ex; } } }
@Test public void testOnlyCoresMatchHardwareProfile() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet .of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minCores(1); templateBuilder.build(); assertThat(hardware.getRam()).isEqualTo(2048); assertThat(hardware.getProcessors()).extracting("cores").containsExactly(2.0); assertThat(hardware.getId()).isEqualTo("hardwareId"); }
protected Hardware findHardwareWithId(Set<? extends Hardware> hardwaresToSearch) { try { return super.findHardwareWithId(hardwaresToSearch); } catch (NoSuchElementException ex) { if (isAutomaticId(hardwareId)) { AutomaticHardwareIdSpec spec = parseId(hardwareId); return automaticHardware(spec.getCores(), spec.getRam(), spec.getDisk()); } else { throw ex; } } }
@Test public void testAutoGeneratedHardwareWithMinCoresAndMinRam(){ Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet.of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minRam(1024); templateBuilder.minCores(4); Template template = templateBuilder.build(); Hardware hardware = template.getHardware(); assertThat(hardware.getRam()).isEqualTo(1024); assertThat(hardware.getProcessors()).extracting("cores").containsExactly(4.0); assertThat(hardware.getId()).isEqualTo("automatic:cores=4.0;ram=1024"); }
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = errorMessage) public void testAutoGeneratedHardwareWithMinCoresMinRamAndInvalidMinDisk() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minCores(2); templateBuilder.minRam(4096); templateBuilder.minDisk(-100f); Template template = templateBuilder.build(); Hardware hardware = template.getHardware(); assertThat(hardware.getId()).isEqualTo("automatic:cores=2.0;ram=4096;disk=-100"); }
@Test public void testAutoGeneratedHardwareWithMinCoresMinRamAndMinDisk() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); templateBuilder.minCores(2); templateBuilder.minRam(2048); templateBuilder.minDisk(100); Template template = templateBuilder.build(); Hardware hardware = template.getHardware(); assertThat(hardware.getRam()).isEqualTo(2048); assertThat(hardware.getProcessors()).extracting("cores").containsExactly(2.0); assertThat(hardware.getId()).isEqualTo("automatic:cores=2.0;ram=2048;disk=100"); assertThat(hardware.getVolumes().get(0).getSize()).isEqualTo(100); }
@Test public void testAutoGeneratedHardwareFromId(){ Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet .of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.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); GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null); replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy); TemplateBuilderImpl templateBuilder = new ArbitraryCpuRamTemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60, Atomics.<AuthorizationException>newReference(), Providers.of(getImageStrategy)), hardwares, Suppliers.ofInstance(region), optionsProvider, templateBuilderProvider); Hardware hardware = templateBuilder.hardwareId("automatic:cores=2;ram=256").build().getHardware(); assertThat(hardware.getRam()).isEqualTo(256); assertThat(hardware.getProcessors()).extracting("cores").containsExactly(2.0); assertThat(hardware.getId()).isEqualTo("automatic:cores=2.0;ram=256"); Hardware hardware2 = templateBuilder.hardwareId("automatic:cores=2;ram=256;disk=100").build().getHardware(); assertThat(hardware2.getRam()).isEqualTo(256); assertThat(hardware2.getProcessors()).extracting("cores").containsExactly(2.0); assertThat(hardware2.getId()).isEqualTo("automatic:cores=2.0;ram=256;disk=100"); assertThat(hardware2.getVolumes().get(0).getSize()).isEqualTo(100); }