Package org.jclouds.softlayer.compute.functions

Source Code of org.jclouds.softlayer.compute.functions.ProductItemsToHardwareTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jclouds.softlayer.compute.functions;

import static com.google.inject.name.Names.bindProperties;
import static org.jclouds.softlayer.compute.functions.ProductItemsToHardware.hardwareId;
import static org.testng.AssertJUnit.assertEquals;

import java.util.List;

import org.jclouds.compute.domain.Hardware;
import org.jclouds.compute.domain.Processor;
import org.jclouds.compute.domain.Volume;
import org.jclouds.softlayer.SoftLayerProviderMetadata;
import org.jclouds.softlayer.domain.ProductItem;
import org.jclouds.softlayer.domain.ProductItemCategory;
import org.jclouds.softlayer.domain.ProductItemPrice;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;

/**
* Tests {@code ProductItemsToHardware}
*
* @author Jason King
*/
@Test(groups = "unit")
public class ProductItemsToHardwareTest {

   private ProductItemsToHardware toHardware;
   private ProductItem cpuItem;
   private ProductItem ramItem;
   private ProductItem volumeItem;

   @BeforeMethod
   public void setup() {

      toHardware = Guice.createInjector(new AbstractModule() {
         @Override
         protected void configure() {
            bindProperties(binder(), new SoftLayerProviderMetadata().getDefaultProperties());
         }
      }).getInstance(ProductItemsToHardware.class);


      cpuItem = ProductItem.builder()
            .id(1)
            .description("2 x 2.0 GHz Cores")
            .capacity(2F)
            .categories(ProductItemCategory.builder().categoryCode("guest_core").build())
            .prices(ProductItemPrice.builder().id(123).build())
            .build();

      ramItem = ProductItem.builder().id(2).description("2GB ram").capacity(2F).categories(
            ProductItemCategory.builder().categoryCode("ram").build()).prices(
            ProductItemPrice.builder().id(456).build()).build();

      volumeItem = ProductItem.builder().id(3).description("100 GB (SAN)").capacity(100F).prices(
            ProductItemPrice.builder().id(789).build()).categories(
            ProductItemCategory.builder().categoryCode("guest_disk0").build()).build();


   }

   @Test
   public void testHardwareId() {
      ProductItem item1 = ProductItem.builder().prices(ProductItemPrice.builder().id(123).build()).build();
      ProductItem item2 = ProductItem.builder().prices(ProductItemPrice.builder().id(456).build()).build();
      ProductItem item3 = ProductItem.builder().prices(ProductItemPrice.builder().id(789).build()).build();

      String id = hardwareId().apply(ImmutableList.of(item1, item2, item3));
      assertEquals("123,456,789", id);
   }

   @Test
   public void testHardware() {

      Hardware hardware = toHardware.apply(ImmutableSet.of(cpuItem, ramItem, volumeItem));

      assertEquals("123,456,789", hardware.getId());

      List<? extends Processor> processors = hardware.getProcessors();
      assertEquals(1, processors.size());
      assertEquals(2.0, processors.get(0).getCores());

      assertEquals(2, hardware.getRam());

      List<? extends Volume> volumes = hardware.getVolumes();
      assertEquals(1, volumes.size());
      Volume volume = volumes.get(0);
      assertEquals(100F, volume.getSize());
      assertEquals(Volume.Type.SAN, volume.getType());
      assertEquals(true, volume.isBootDevice());

   }

   @Test
   public void testHardwareWithPrivateCore() {

     cpuItem = cpuItem.toBuilder()
           .description("Private 2 x 2.0 GHz Cores")
           .build();

     Hardware hardware = toHardware.apply(ImmutableSet.of(cpuItem, ramItem, volumeItem));

     assertEquals("123,456,789", hardware.getId());

     List<? extends Processor> processors = hardware.getProcessors();
     assertEquals(1, processors.size());
     assertEquals(2.0, processors.get(0).getCores());

     assertEquals(2, hardware.getRam());

     List<? extends Volume> volumes = hardware.getVolumes();
     assertEquals(1, volumes.size());
     assertEquals(100F, volumes.get(0).getSize());
   }

   @Test
   public void testHardwareWithTwoDisks() {
      ProductItem localVolumeItem = ProductItem.builder().id(4).description("25 GB").capacity(25F).prices(
            ProductItemPrice.builder().id(987).build()).categories(
            ProductItemCategory.builder().categoryCode("guest_disk1").build()).build();

      Hardware hardware = toHardware.apply(ImmutableSet.of(cpuItem, ramItem, volumeItem,localVolumeItem));

      List<? extends Volume> volumes = hardware.getVolumes();
      assertEquals(2, volumes.size());
      Volume volume = volumes.get(0);
      assertEquals(100F, volume.getSize());
      assertEquals(Volume.Type.SAN, volume.getType());
      assertEquals(true, volume.isBootDevice());

      Volume volume1 = volumes.get(1);
      assertEquals(25F, volume1.getSize());
      assertEquals(Volume.Type.LOCAL, volume1.getType());
      assertEquals(false, volume1.isBootDevice());
   }
}
TOP

Related Classes of org.jclouds.softlayer.compute.functions.ProductItemsToHardwareTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.