@Override public QueryCost estimate(final AbstractQueryContext ctx) throws LensException { LensConf lensConf = ctx.getLensConf(); String driverSleep = lensConf.getProperty("mock.driver.sleep"); if (ctx.getUserQuery().contains("fail")) { return new FactPartitionBasedQueryCost(0.0); } else if (driverSleep != null && driverSleep.equals("true")) { try { String sleepMS = lensConf.getProperty("mock.driver.sleep.ms"); if (sleepMS != null && !sleepMS.isEmpty()) { Thread.sleep(Long.parseLong(sleepMS)); } } catch (InterruptedException e) { log.error("Sleeping thread interrupted", e); } return new FactPartitionBasedQueryCost(0.0); } else { throw new LensException("Simulated Estimate Failure"); } }
private String getDriverProperty(QueryContext ctx, String name) { return ctx.getLensConf().getProperty("driver." + this.getFullyQualifiedName() + "." + name); }
/** * Tests whether the driver configuration updated by mock query driver hook is * 1. updated in LensConf wherever applicable and * 2. is persisted and available even after server startup. * * @param queryService * @param handle * @param afterRestart */ private void testMockDriverQueryHookPostDriverSelection(QueryExecutionServiceImpl queryService, QueryHandle handle, boolean afterRestart){ QueryContext ctx = queryService.getQueryContext(handle); assertNotNull(ctx, "Make sure that the query has not been purged"); assertTrue(ctx.getStatus().queued(), "Make sure query is still in QUEUED state"); LensConf lensQueryConf = queryService.getQueryContext(handle).getLensConf(); Configuration driverConf = queryService.getQueryContext(handle).getSelectedDriverConf(); assertEquals(driverConf.get(KEY_POST_SELECT), VALUE_POST_SELECT); assertEquals(lensQueryConf.getProperty(KEY_POST_SELECT), VALUE_POST_SELECT); if (afterRestart) { assertEquals(driverConf.get(LensConfConstants.RESULT_SET_PARENT_DIR), "target/hive-lens-results"); //This will be unavailable since if was not updated in LensConf by MockDriverQueryHook assertNull(driverConf.get(UNSAVED_KEY_POST_SELECT)); } else { assertEquals(driverConf.get(UNSAVED_KEY_POST_SELECT), UNSAVED_VALUE_POST_SELECT); } assertNull(lensQueryConf.getProperty(UNSAVED_KEY_POST_SELECT)); }
@Override public QueryCost estimate(AbstractQueryContext qctx) throws LensException { String cost = qctx.getLensConf().getProperty("driver." + this.getFullyQualifiedName() + ".cost"); if (cost == null) { throw new LensException("Can't run query"); } return new FactPartitionBasedQueryCost(Double.parseDouble(cost)); } }
@Test(dataProvider = "testIterableHttpResultSetDP") public void testHttpResultSet(String query, Map<String, String> queryConf, boolean isResultZipped, int columnNamesExpected, int rowsExpected) throws Exception { for (Map.Entry<String, String> e : queryConf.entrySet()) { client.setConnectionParam(e.getKey(), e.getValue()); } LensConf conf = new LensConf(); Map<String, String> confProps = new HashMap<>(); confProps.put("custom.property.for.validation", "present"); conf.addProperties(confProps); QueryHandle handle = client.executeQueryAsynch(query, "testQuery", conf); client.getStatement().waitForQueryToComplete(handle); assertTrue(client.getStatement().wasQuerySuccessful()); LensQuery persistedQuery = client.getQueryDetails(handle); Assert.assertNotNull(persistedQuery.getQueryConf()); Assert.assertEquals(persistedQuery.getQueryConf().getProperty("custom.property.for.validation"), "present"); ResultSet result = null; boolean isHeaderRowPresent = columnNamesExpected > 0 ? true : false; result = client.getHttpResultSet(handle); assertNotNull(result); validateResult(result, columnNamesExpected, rowsExpected); }
Assert.assertEquals(actual.getConf().getProperty("prop"), "value");