use of org.ligoj.app.plugin.prov.model.ProvInstancePrice in project plugin-prov-azure by ligoj.
the class ProvAzurePriceImportResourceTest method installOffLine.
@Test
public void installOffLine() throws Exception {
// Install a new configuration
final QuoteVo quote = install();
// Check the whole quote
final ProvQuoteInstance instance = check(quote, 157.096, 150.28d);
// Check the spot
final QuoteInstanceLookup lookup = qiResource.lookup(instance.getConfiguration().getSubscription().getId(), 2, 1741, true, VmOs.LINUX, null, true, null, null);
Assertions.assertEquals(150.28, lookup.getCost(), DELTA);
Assertions.assertEquals(150.28, lookup.getPrice().getCost(), DELTA);
Assertions.assertEquals("base-three-year", lookup.getPrice().getTerm().getName());
Assertions.assertFalse(lookup.getPrice().getTerm().isEphemeral());
Assertions.assertEquals("ds4v2", lookup.getPrice().getType().getName());
Assertions.assertEquals(10, ipRepository.countBy("term.name", "base-three-year"));
Assertions.assertEquals("europe-north", lookup.getPrice().getLocation().getName());
Assertions.assertEquals("North Europe", lookup.getPrice().getLocation().getDescription());
checkImportStatus();
// Install again to check the update without change
resetImportTask();
resource.install();
provResource.updateCost(subscription);
check(provResource.getConfiguration(subscription), 157.096d, 150.28d);
checkImportStatus();
// Now, change a price within the remote catalog
// Point to another catalog with different prices
configuration.saveOrUpdate(ProvAzurePriceImportResource.CONF_API_PRICES, "http://localhost:" + MOCK_PORT + "/v2");
// Install the new catalog, update occurs
resetImportTask();
resource.install();
provResource.updateCost(subscription);
// Check the new price
final QuoteVo newQuote = provResource.getConfiguration(subscription);
Assertions.assertEquals(171.837d, newQuote.getCost().getMin(), DELTA);
// Storage price is updated
final ProvQuoteStorage storage = newQuote.getStorages().get(0);
Assertions.assertEquals(1.537d, storage.getCost(), DELTA);
Assertions.assertEquals(5, storage.getSize(), DELTA);
// Compute price is updated
final ProvQuoteInstance instance2 = newQuote.getInstances().get(0);
Assertions.assertEquals(164.92d, instance2.getCost(), DELTA);
ProvInstancePrice price = instance2.getPrice();
Assertions.assertNull(price.getInitialCost());
Assertions.assertEquals(VmOs.LINUX, price.getOs());
Assertions.assertEquals(ProvTenancy.SHARED, price.getTenancy());
Assertions.assertEquals(164.92d, price.getCost(), DELTA);
final ProvInstancePriceTerm priceType = price.getTerm();
Assertions.assertEquals("base-three-year", priceType.getName());
Assertions.assertFalse(priceType.isEphemeral());
Assertions.assertEquals(36, priceType.getPeriod());
ProvInstanceType type = price.getType();
Assertions.assertEquals("ds4v2", type.getName());
Assertions.assertEquals("series:Dsv2, disk:56GiB", type.getDescription());
// Check rating of "ds4v2"
Assertions.assertEquals(Rate.GOOD, type.getRamRate());
Assertions.assertEquals(Rate.GOOD, type.getCpuRate());
Assertions.assertEquals(Rate.MEDIUM, type.getNetworkRate());
Assertions.assertEquals(Rate.GOOD, type.getStorageRate());
// Check rating of "f1"
type = itRepository.findByName("f1");
Assertions.assertEquals(Rate.GOOD, type.getRamRate());
Assertions.assertEquals(Rate.MEDIUM, type.getCpuRate());
Assertions.assertEquals(Rate.MEDIUM, type.getNetworkRate());
Assertions.assertEquals(Rate.GOOD, type.getStorageRate());
Assertions.assertEquals("series:F, disk:16GiB", type.getDescription());
// Check rating of "ds15v2" (dedicated)
price = iptRepository.findBy("type.name", "ds15v2");
Assertions.assertEquals(ProvTenancy.DEDICATED, price.getTenancy());
// Check status
checkImportStatus();
// Check some prices
final ProvInstancePrice price2 = ipRepository.findBy("code", "europe-west-lowpriority-windows-a1-lowpriority");
final ProvInstancePriceTerm term = price2.getTerm();
Assertions.assertEquals("lowpriority", term.getName());
Assertions.assertEquals(0, term.getPeriod());
Assertions.assertEquals("europe-west", price2.getLocation().getName());
Assertions.assertEquals(VmOs.WINDOWS, price2.getOs());
Assertions.assertTrue(term.isEphemeral());
}
Aggregations