@Override public boolean compliesWithLimits(final String unit, final double value) { final Limit limit = findLimit(unit); if (limit != null && !limit.compliesWith(value)) { return false; } return true; }
@Test(groups = "fast") public void testUsageCapacityInAdvance() { try { final StandaloneCatalog catalog = XMLLoader.getObjectFromString(Resources.getResource("UsageExperimental.xml").toExternalForm(), StandaloneCatalog.class); final Usage[] usages = getUsages(catalog, "capacity-in-advance-monthly"); assertEquals(usages.length, 1); final Usage usage = usages[0]; assertEquals(usage.getName(), "capacity-in-advance-monthly-usage1"); assertEquals(usage.getBillingPeriod(), BillingPeriod.MONTHLY); assertEquals(usage.getUsageType(), UsageType.CAPACITY); assertEquals(usage.getBillingMode(), BillingMode.IN_ADVANCE); assertEquals(usage.getTierBlockPolicy(), TierBlockPolicy.ALL_TIERS); assertEquals(usage.getBlocks().length, 0); assertEquals(usage.getTiers().length, 0); assertEquals(usage.getLimits().length, 1); assertEquals(usage.getLimits()[0].getUnit().getName(), "members"); assertEquals(usage.getLimits()[0].getMax(), new Double("100")); assertEquals(usage.getRecurringPrice().getPrices().length, 1); assertEquals(usage.getRecurringPrice().getPrices()[0].getCurrency(), Currency.BTC); assertEquals(usage.getRecurringPrice().getPrices()[0].getValue(), new BigDecimal("100.00")); } catch (Exception e) { Assert.fail(e.toString()); } }
protected Limit findLimit(String unit) { for (Limit limit : limits) { if (limit.getUnit().getName().equals(unit)) { return limit; } } return null; }
assertEquals(usage.getTiers()[0].getLimits()[0].getUnit().getName(), "bandwith-meg-sec"); assertEquals(usage.getTiers()[0].getLimits()[0].getMax(), new Double("100")); assertEquals(usage.getTiers()[0].getLimits()[1].getUnit().getName(), "members"); assertEquals(usage.getTiers()[0].getLimits()[1].getMax(), new Double("500")); assertEquals(usage.getTiers()[0].getFixedPrice().getPrices().length, 1); assertEquals(usage.getTiers()[0].getFixedPrice().getPrices()[0].getCurrency(), Currency.BTC); assertEquals(usage.getTiers()[0].getRecurringPrice().getPrices()[0].getValue(), new BigDecimal("0.8")); assertEquals(usage.getTiers()[1].getLimits()[0].getUnit().getName(), "bandwith-meg-sec"); assertEquals(usage.getTiers()[1].getLimits()[0].getMax(), new Double("100")); assertEquals(usage.getTiers()[1].getLimits()[1].getUnit().getName(), "members"); assertEquals(usage.getTiers()[1].getLimits()[1].getMax(), new Double("1000")); assertEquals(usage.getTiers()[1].getFixedPrice().getPrices().length, 1); assertEquals(usage.getTiers()[1].getFixedPrice().getPrices()[0].getCurrency(), Currency.BTC);
protected Limit findLimit(String unit) { for (Limit limit : limits) { if (limit.getUnit().getName().equals(unit)) { return limit; } } return null; }
private List<LimitJson> buildLimits(final Limit[] limits) { List<LimitJson> limitsJson = new ArrayList<LimitJson>(); if (limits != null && limits.length > 0) { for (int i = 0; i < limits.length; i++) { limitsJson.add(new LimitJson(limits[i].getUnit().getName(), limits[i].getMax().toString(), limits[i].getMin().toString())); } } return limitsJson; }
@Test(groups = "fast") public void testUsageCapacityInAdvance() { try { final StandaloneCatalog catalog = XMLLoader.getObjectFromString(Resources.getResource("UsageExperimental.xml").toExternalForm(), StandaloneCatalog.class); final Usage[] usages = getUsages(catalog, "capacity-in-advance-monthly"); assertEquals(usages.length, 1); final Usage usage = usages[0]; assertEquals(usage.getName(), "capacity-in-advance-monthly-usage1"); assertEquals(usage.getBillingPeriod(), BillingPeriod.MONTHLY); assertEquals(usage.getUsageType(), UsageType.CAPACITY); assertEquals(usage.getBillingMode(), BillingMode.IN_ADVANCE); assertEquals(usage.getTierBlockPolicy(), TierBlockPolicy.ALL_TIERS); assertEquals(usage.getBlocks().length, 0); assertEquals(usage.getTiers().length, 0); assertEquals(usage.getLimits().length, 1); assertEquals(usage.getLimits()[0].getUnit().getName(), "members"); assertEquals(usage.getLimits()[0].getMax(), new Double("100")); assertEquals(usage.getRecurringPrice().getPrices().length, 1); assertEquals(usage.getRecurringPrice().getPrices()[0].getCurrency(), Currency.BTC); assertEquals(usage.getRecurringPrice().getPrices()[0].getValue(), new BigDecimal("100.00")); } catch (Exception e) { Assert.fail(e.toString()); } }
protected Limit findLimit(String unit) { for (Limit limit : limits) { if (limit.getUnit().getName().equals(unit)) { return limit; } } return null; }
@Override public boolean compliesWithLimits(String unit, double value) { Limit l = findLimit(unit); if (l == null) { return true; } return l.compliesWith(value); }
assertEquals(usage.getTiers()[0].getLimits()[0].getUnit().getName(), "bandwith-meg-sec"); assertEquals(usage.getTiers()[0].getLimits()[0].getMax(), new Double("100")); assertEquals(usage.getTiers()[0].getLimits()[1].getUnit().getName(), "members"); assertEquals(usage.getTiers()[0].getLimits()[1].getMax(), new Double("500")); assertEquals(usage.getTiers()[0].getFixedPrice().getPrices().length, 1); assertEquals(usage.getTiers()[0].getFixedPrice().getPrices()[0].getCurrency(), Currency.BTC); assertEquals(usage.getTiers()[0].getRecurringPrice().getPrices()[0].getValue(), new BigDecimal("0.8")); assertEquals(usage.getTiers()[1].getLimits()[0].getUnit().getName(), "bandwith-meg-sec"); assertEquals(usage.getTiers()[1].getLimits()[0].getMax(), new Double("100")); assertEquals(usage.getTiers()[1].getLimits()[1].getUnit().getName(), "members"); assertEquals(usage.getTiers()[1].getLimits()[1].getMax(), new Double("1000")); assertEquals(usage.getTiers()[1].getFixedPrice().getPrices().length, 1); assertEquals(usage.getTiers()[1].getFixedPrice().getPrices()[0].getCurrency(), Currency.BTC);
protected Limit findLimit(String unit) { for (Limit limit : limits) { if (limit.getUnit().getName().equals(unit)) { return limit; } } return null; }
@Override public boolean compliesWithLimits(final String unit, final double value) { final Limit limit = findLimit(unit); if (limit != null && !limit.compliesWith(value)) { return false; } return true; }
private Limit getTierLimit(final Tier tier, final String unitType) { for (final Limit cur : tier.getLimits()) { if (cur.getUnit().getName().equals(unitType)) { return cur; } } Preconditions.checkState(false, "Could not find unit type " + unitType + " in usage tier "); return null; }
@Override public boolean compliesWithLimits(String unit, double value) { Limit l = findLimit(unit); if (l == null) { return true; } return l.compliesWith(value); }
public static Set<String> getCapacityInArrearUnitTypes(final Usage usage) { Preconditions.checkArgument(usage.getBillingMode() == BillingMode.IN_ARREAR && usage.getUsageType() == UsageType.CAPACITY); Preconditions.checkArgument(usage.getTiers().length > 0); final Set<String> result = new HashSet<String>(); for (Tier tier : usage.getTiers()) { for (Limit limit : tier.getLimits()) { result.add(limit.getUnit().getName()); } } return result; }