@Override public FactPartitionBasedQueryCost add(final FactPartitionBasedQueryCost other) { return new FactPartitionBasedQueryCost(partitionCost + other.partitionCost); }
@Override public String toString() { return getQueryCostType() + "(" + getEstimatedResourceUsage() + ")"; }
@Override public FactPartitionBasedQueryCost add(final FactPartitionBasedQueryCost other) { return new FactPartitionBasedQueryCost(partitionCost + other.partitionCost); }
@Override public String toString() { return getQueryCostType() + "(" + getEstimatedResourceUsage() + ")"; }
@Override public FactPartitionBasedQueryCost parse(String value) { return new FactPartitionBasedQueryCost(Double.parseDouble(value)); } }
@Override public FactPartitionBasedQueryCost parse(String value) { return new FactPartitionBasedQueryCost(Double.parseDouble(value)); } }
@Override public QueryCost calculateCost(final AbstractQueryContext queryContext, LensDriver driver) throws LensException { Double cost = getTotalPartitionCost(queryContext, driver); return cost == null ? null : new FactPartitionBasedQueryCost(cost); }
@Override public QueryCost getCost() { return new FactPartitionBasedQueryCost(0); } }
@Override public QueryLaunchingConstraint create(Configuration conf) { final Double costCeiling = Double.parseDouble(conf.get(TOTAL_QUERY_COST_CEILING_PER_USER_KEY)); Optional<QueryCost> totalQueryCostCeilingPerUser = Optional.absent(); if (costCeiling >= 0.0) { totalQueryCostCeilingPerUser = Optional.<QueryCost>of(new FactPartitionBasedQueryCost(costCeiling)); } return new TotalQueryCostCeilingConstraint(totalQueryCostCeilingPerUser); } }
@Override public QueryCost calculateCost(AbstractQueryContext queryContext, LensDriver driver) throws LensException { return new FactPartitionBasedQueryCost(10.0); } }
@Override public QueryCost estimate(AbstractQueryContext qctx) throws LensException { return new FactPartitionBasedQueryCost(0); }
@Test(expectedExceptions = {IllegalArgumentException.class}) public void testInvalid() { new FactPartitionBasedQueryCost(-0.5); }
private QueryCost calculateQueryCost(AbstractQueryContext qctx) throws LensException { if (qctx.isOlapQuery()) { QueryCost cost = queryCostCalculator.calculateCost(qctx, this); if (cost != null) { return cost; } } return new FactPartitionBasedQueryCost(Double.MAX_VALUE); }
private QueryCost calculateQueryCost(AbstractQueryContext qctx) throws LensException { if (qctx.isOlapQuery()) { QueryCost cost = queryCostCalculator.calculateCost(qctx, this); if (cost != null) { return cost; } } return new FactPartitionBasedQueryCost(Double.MAX_VALUE); }
@DataProvider public Object[][] dpTestCreate() { return new Object[][] { {"-1.0", new TotalQueryCostCeilingConstraint(Optional.<QueryCost>absent())}, {"0.0", new TotalQueryCostCeilingConstraint(Optional.<QueryCost>of(new FactPartitionBasedQueryCost(0.0)))}, {"90.0", new TotalQueryCostCeilingConstraint(Optional.<QueryCost>of(new FactPartitionBasedQueryCost(90.0)))}, }; } @Test(dataProvider = "dpTestCreate")
@Override public QueryCost calculateCost(final AbstractQueryContext queryContext, LensDriver driver) throws LensException { Double cost = getTotalPartitionCost(queryContext, driver); QueryCost queryCost = cost == null ? null : new FactPartitionBasedQueryCost(cost); if (queryCost != null) { queryCost.setQueryCostType(queryCostTypeDecider.decideCostType(queryCost)); } return queryCost; }
@Test public void testAdd() throws Exception { assertEquals(cost1.add(cost2), new FactPartitionBasedQueryCost(0.5)); }
@Test(dataProvider = "provideData") public void testHook(Double cost, boolean success) throws Exception { when(ctx.getDriverQueryCost(driver)).thenReturn(new FactPartitionBasedQueryCost(cost)); try { hook.postEstimate(ctx); assertTrue(success); } catch (Exception e) { assertFalse(success); } } }
@Test(dataProvider = "provideParsingData") public void testParse(String rangeString, Double[] includes, Double[] excludes) { RangeSet<FactPartitionBasedQueryCost> range = hook.parseRangeSet(rangeString); for (Double cost : includes) { assertTrue(range.contains(new FactPartitionBasedQueryCost(cost))); } for (Double cost : excludes) { assertFalse(range.contains(new FactPartitionBasedQueryCost(cost))); } }
public static QueryContext createQueryInstanceWithQueryHandleAndCostStubbing(String handlePrefix, int index, double queryCost) { QueryContext mockQuery = mock(QueryContext.class); when(mockQuery.getQueryHandle()).thenReturn(QueryHandle.fromString(handlePrefix + index)); when(mockQuery.getSelectedDriverQueryCost()).thenReturn(new FactPartitionBasedQueryCost(queryCost)); return mockQuery; }