@Test public void testNoTransactionSupport() { Request request = preparePost() .setUri(uriFor("/v1/statement")) .setBodyGenerator(createStaticBodyGenerator("start transaction", UTF_8)) .setHeader(PRESTO_USER, "user") .setHeader(PRESTO_SOURCE, "source") .build(); QueryResults queryResults = client.execute(request, createJsonResponseHandler(QUERY_RESULTS_CODEC)); while (queryResults.getNextUri() != null) { queryResults = client.execute(prepareGet().setUri(queryResults.getNextUri()).build(), createJsonResponseHandler(QUERY_RESULTS_CODEC)); } assertNotNull(queryResults.getError()); assertEquals(queryResults.getError().getErrorCode(), INCOMPATIBLE_CLIENT.toErrorCode().getCode()); }
@Test public void testGetAllNodes() { List<Stats> nodes = client.execute( prepareGet().setUri(server.resolve("/v1/node")).build(), createJsonResponseHandler(listJsonCodec(Stats.class))); // we only have one node and the list never contains the current node assertTrue(nodes.isEmpty()); }
@Test public void testInvalidJson() { String json = "{\"age\": \"foo\"}"; try { handler.handle(null, mockResponse(OK, JSON_UTF_8, json)); } catch (IllegalArgumentException e) { assertEquals(e.getMessage(), format("Unable to create %s from JSON response:\n[%s]", User.class, json)); assertTrue(e.getCause() instanceof IllegalArgumentException); assertEquals(e.getCause().getMessage(), "Invalid JSON bytes for [simple type, class io.airlift.http.client.TestFullJsonResponseHandler$User]"); } }
@Test(expectedExceptions = {UnexpectedResponseException.class}, expectedExceptionsMessageRegExp = ".*404: Not Found") public void testGetQueryStateInfoNo() { client.execute( prepareGet().setUri(server.resolve("/v1/queryState/123")).build(), createJsonResponseHandler(jsonCodec(QueryStateInfo.class))); } }
@Test public void testValidJson() { User user = new User("Joe", 25); User response = handler.handle(null, mockResponse(OK, JSON_UTF_8, codec.toJson(user))); assertEquals(response.getName(), user.getName()); assertEquals(response.getAge(), user.getAge()); }
@Test public void testQuery() throws Exception Request request = preparePost() .setUri(uriFor("/v1/statement")) .setBodyGenerator(createStaticBodyGenerator("show catalogs", UTF_8)) .setHeader(PRESTO_USER, "user") .setHeader(PRESTO_SOURCE, "source") .build(); QueryResults queryResults = client.execute(request, createJsonResponseHandler(jsonCodec(QueryResults.class))); QueryInfo queryInfo = server.getQueryManager().getQueryInfo(new QueryId(queryResults.getId())); assertEquals(queryInfo.getSession().getSystemProperties(), ImmutableMap.builder() .put(QUERY_MAX_MEMORY, "1GB") .put(DISTRIBUTED_JOIN, "true") queryResults = client.execute(prepareGet().setUri(queryResults.getNextUri()).build(), createJsonResponseHandler(jsonCodec(QueryResults.class))); assertEquals(rows, ImmutableList.of(ImmutableList.of("system")));
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*agentId=may not be null.*") public void testValidate() { JsonCodec<AgentStatusRepresentation> agentCodec = JsonCodec.jsonCodec(AgentStatusRepresentation.class); Request request = prepareGet().setUri(URI.create("http://localhost/")).build(); Response response = fakeJsonResponse("{}"); validate(createJsonResponseHandler(agentCodec)).handle(request, response); }
@Test public void testShow() throws Exception { initializeOneAgent(); coordinator.updateAllAgentsAndWait(); Request request = Request.Builder.prepareGet() .setUri(coordinatorUriBuilder().appendPath("/v1/slot").addParameter("!binary", "*:apple:*").build()) .build(); List<SlotStatusRepresentation> actual = httpClient.execute(request, createJsonResponseHandler(slotStatusesCodec, Status.OK.getStatusCode())); List<SlotStatusRepresentation> expected = ImmutableList.of( slotStatusRepresentationFactory.create(bananaSlot.status().changeInstanceId(agentInstanceId))); assertEqualsNoOrder(actual, expected); }
private void runToCompletion(String sql) { URI uri = uriBuilderFrom(server.getBaseUrl().resolve("/v1/statement")).build(); Request request = preparePost() .setHeader(PRESTO_USER, "user") .setUri(uri) .setBodyGenerator(createStaticBodyGenerator(sql, UTF_8)) .build(); QueryResults queryResults = client.execute(request, createJsonResponseHandler(jsonCodec(QueryResults.class))); while (queryResults.getNextUri() != null) { request = prepareGet() .setHeader(PRESTO_USER, "user") .setUri(queryResults.getNextUri()) .build(); queryResults = client.execute(request, createJsonResponseHandler(jsonCodec(QueryResults.class))); } }
ServiceDescriptorsRepresentation serviceDescriptorsRepresentation; if (serviceInventoryUri.getScheme().toLowerCase().startsWith("http")) { Builder requestBuilder = prepareGet() .setUri(serviceInventoryUri) .setHeader("User-Agent", nodeInfo.getNodeId()); serviceDescriptorsRepresentation = httpClient.execute(requestBuilder.build(), createJsonResponseHandler(serviceDescriptorsCodec)); serviceDescriptorsRepresentation = serviceDescriptorsCodec.fromJson(readAllBytes(file.toPath()));
private List<URI> getAllNodes(URI server) { Request request = prepareGet().setUri(uriBuilderFrom(server).replacePath("/v1/service/presto").build()).build(); JsonResponseHandler<ServiceDescriptorsRepresentation> responseHandler = createJsonResponseHandler(jsonCodec(ServiceDescriptorsRepresentation.class)); ServiceDescriptorsRepresentation serviceDescriptors = httpClient.execute(request, responseHandler); ImmutableList.Builder<URI> addresses = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : serviceDescriptors.getServiceDescriptors()) { String httpUri = serviceDescriptor.getProperties().get("http"); if (httpUri != null) { addresses.add(URI.create(httpUri)); } } return addresses.build(); } }
@Override public List<CoordinatorStatusRepresentation> showCoordinators(CoordinatorFilter coordinatorFilter) { URI uri = coordinatorFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("v1/admin/coordinator")); Request request = Request.Builder.prepareGet() .setUri(uri) .build(); List<CoordinatorStatusRepresentation> coordinators = client.execute(request, createJsonResponseHandler(COORDINATORS_CODEC)); return coordinators; }
private List<BasicQueryInfo> getQueryInfos(String path) { Request request = prepareGet().setUri(server.resolve(path)).build(); return client.execute(request, createJsonResponseHandler(listJsonCodec(BasicQueryInfo.class))); }
public static <T> JsonResponseHandler<T> createJsonResponseHandler(JsonCodec<T> jsonCodec, int firstSuccessfulResponseCode, int... otherSuccessfulResponseCodes) { return new JsonResponseHandler<>(jsonCodec, firstSuccessfulResponseCode, otherSuccessfulResponseCodes); }
@Test public void testGetQueryStateInfosForUserNoResult() { List<QueryStateInfo> infos = client.execute( prepareGet().setUri(server.resolve("/v1/queryState?user=user3")).build(), createJsonResponseHandler(listJsonCodec(QueryStateInfo.class))); assertTrue(infos.isEmpty()); }
@Test public void testInvalidJson() { String json = "{\"age\": \"foo\"}"; try { handler.handle(null, mockResponse(OK, JSON_UTF_8, json)); } catch (IllegalArgumentException e) { assertEquals(e.getMessage(), format("Unable to create %s from JSON response:\n[%s]", User.class, json)); assertTrue(e.getCause() instanceof IllegalArgumentException); assertEquals(e.getCause().getMessage(), "Invalid JSON bytes for [simple type, class io.airlift.http.client.TestFullJsonResponseHandler$User]"); } }
@Test public void testGetQueryStateInfo() { QueryStateInfo info = client.execute( prepareGet().setUri(server.resolve("/v1/queryState/" + queryResults.getId())).build(), createJsonResponseHandler(jsonCodec(QueryStateInfo.class))); assertNotNull(info); }
@Test public void testValidJson() { User user = new User("Joe", 25); User response = handler.handle(null, mockResponse(OK, JSON_UTF_8, codec.toJson(user))); assertEquals(response.getName(), user.getName()); assertEquals(response.getAge(), user.getAge()); }