use of org.apache.http.HttpRequest in project metrics by dropwizard.
the class HttpClientMetricNameStrategiesTest method hostAndMethodWithNameInWrappedRequest.
@Test
public void hostAndMethodWithNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPost("http://my.host.com/whatever"));
assertThat(HOST_AND_METHOD.getNameFor("some-service", request), is("org.apache.http.client.HttpClient.some-service.my.host.com.post-requests"));
}
use of org.apache.http.HttpRequest in project metrics by dropwizard.
the class HttpClientMetricNameStrategiesTest method querylessUrlAndMethodWithNameInWrappedRequest.
@Test
public void querylessUrlAndMethodWithNameInWrappedRequest() throws URISyntaxException {
HttpRequest request = rewriteRequestURI(new HttpPut("https://thing.com:8090/my/path?ignore=this&and=this"));
assertThat(QUERYLESS_URL_AND_METHOD.getNameFor("some-service", request), is("org.apache.http.client.HttpClient.some-service.https://thing.com:8090/my/path.put-requests"));
}
use of org.apache.http.HttpRequest in project stocator by SparkTC.
the class SwiftConnectionManager method getRetryHandler.
/**
* Creates custom retry handler to be used if HTTP exception happens
*
* @return retry handler
*/
private HttpRequestRetryHandler getRetryHandler() {
final HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
if (executionCount >= connectionConfiguration.getExecutionCount()) {
// Do not retry if over max retry count
LOG.debug("Execution count {} is bigger than threshold. Stop", executionCount);
return false;
}
if (exception instanceof NoHttpResponseException) {
LOG.debug("NoHttpResponseException exception. Retry count {}", executionCount);
return true;
}
if (exception instanceof UnknownHostException) {
LOG.debug("UnknownHostException. Retry count {}", executionCount);
return true;
}
if (exception instanceof ConnectTimeoutException) {
LOG.debug("ConnectTimeoutException. Retry count {}", executionCount);
return true;
}
if (exception instanceof SocketTimeoutException || exception.getClass() == SocketTimeoutException.class || exception.getClass().isInstance(SocketTimeoutException.class)) {
// Connection refused
LOG.debug("socketTimeoutException Retry count {}", executionCount);
return true;
}
if (exception instanceof InterruptedIOException) {
// Timeout
LOG.debug("InterruptedIOException Retry count {}", executionCount);
return true;
}
if (exception instanceof SSLException) {
LOG.debug("SSLException Retry count {}", executionCount);
return true;
}
final HttpClientContext clientContext = HttpClientContext.adapt(context);
final HttpRequest request = clientContext.getRequest();
boolean idempotent = !(request instanceof HttpEntityEnclosingRequest);
if (idempotent) {
LOG.debug("HttpEntityEnclosingRequest. Retry count {}", executionCount);
return true;
}
LOG.debug("Retry stopped. Retry count {}", executionCount);
return false;
}
};
return myRetryHandler;
}
use of org.apache.http.HttpRequest in project cxf by apache.
the class AsyncHTTPConduitFactory method setupNIOClient.
public synchronized void setupNIOClient(HTTPClientPolicy clientPolicy) throws IOReactorException {
if (client != null) {
return;
}
IOReactorConfig config = IOReactorConfig.custom().setIoThreadCount(ioThreadCount).setSelectInterval(selectInterval).setInterestOpQueued(interestOpQueued).setSoLinger(soLinger).setSoTimeout(soTimeout).setSoKeepAlive(soKeepalive).setTcpNoDelay(tcpNoDelay).build();
Registry<SchemeIOSessionStrategy> ioSessionFactoryRegistry = RegistryBuilder.<SchemeIOSessionStrategy>create().register("http", NoopIOSessionStrategy.INSTANCE).register("https", SSLIOSessionStrategy.getSystemDefaultStrategy()).build();
ManagedNHttpClientConnectionFactory connectionFactory = new ManagedNHttpClientConnectionFactory();
DefaultConnectingIOReactor ioreactor = new DefaultConnectingIOReactor(config);
connectionManager = new PoolingNHttpClientConnectionManager(ioreactor, connectionFactory, ioSessionFactoryRegistry, DefaultSchemePortResolver.INSTANCE, SystemDefaultDnsResolver.INSTANCE, connectionTTL, TimeUnit.MILLISECONDS);
connectionManager.setDefaultMaxPerRoute(maxPerRoute);
connectionManager.setMaxTotal(maxConnections);
ConnectionConfig connectionConfig = ConnectionConfig.custom().setBufferSize(clientPolicy.getChunkLength() > 0 ? clientPolicy.getChunkLength() : 16332).build();
connectionManager.setDefaultConnectionConfig(connectionConfig);
RedirectStrategy redirectStrategy = new RedirectStrategy() {
public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) throws ProtocolException {
return false;
}
public HttpUriRequest getRedirect(HttpRequest request, HttpResponse response, HttpContext context) throws ProtocolException {
return null;
}
};
HttpAsyncClientBuilder httpAsyncClientBuilder = HttpAsyncClients.custom().setConnectionManager(connectionManager).setRedirectStrategy(redirectStrategy).setDefaultCookieStore(new BasicCookieStore() {
private static final long serialVersionUID = 1L;
public void addCookie(Cookie cookie) {
}
});
adaptClientBuilder(httpAsyncClientBuilder);
client = httpAsyncClientBuilder.build();
// Start the client thread
client.start();
// Always start the idle checker thread to validate pending requests and
// use the ConnectionMaxIdle to close the idle connection
new CloseIdleConnectionThread(connectionManager, client).start();
}
use of org.apache.http.HttpRequest in project acceptance-test-harness by jenkinsci.
the class MockUpdateCenter method ensureRunning.
public void ensureRunning(Jenkins jenkins) {
if (original != null) {
return;
}
JsonNode ucNode = new UpdateCenter(jenkins).getJson("tree=sites[url,id]");
List<String> sites = ucNode.findValuesAsText("url");
List<String> ids = ucNode.findValuesAsText("id");
if (sites.size() != 1) {
// TODO ideally it would rather delegate to all of them, but that implies deprecating CachedUpdateCenterMetadataLoader.url and using whatever site(s) Jenkins itself specifies
LOGGER.log(Level.WARNING, "found an unexpected number of update sites: {0}", sites);
return;
} else if (!"default".equals(ids.get(0))) {
LOGGER.log(Level.WARNING, "the default update site has been replaced by a site with id: {0}. Will not setup the mock update center", ids.get(0));
return;
}
UpdateCenterMetadata ucm;
try {
ucm = ucmd.get(jenkins);
} catch (IOException x) {
throw new Error("cannot load data for mock update center", x);
}
JSONObject all;
try {
all = new JSONObject(ucm.originalJSON);
all.remove("signature");
JSONObject plugins = all.getJSONObject("plugins");
LOGGER.info(() -> "editing JSON with " + plugins.length() + " plugins to reflect " + ucm.plugins.size() + " possible overrides");
for (PluginMetadata meta : ucm.plugins.values()) {
String name = meta.getName();
String version = meta.getVersion();
JSONObject plugin = plugins.optJSONObject(name);
if (plugin == null) {
LOGGER.log(Level.INFO, "adding plugin {0}", name);
plugin = new JSONObject().accumulate("name", name);
plugins.put(name, plugin);
}
plugin.put("url", name + ".hpi");
updating(plugin, "version", version);
updating(plugin, "gav", meta.gav);
updating(plugin, "requiredCore", meta.requiredCore().toString());
updating(plugin, "dependencies", new JSONArray(meta.getDependencies().stream().map(d -> {
try {
return new JSONObject().accumulate("name", d.name).accumulate("version", d.version).accumulate("optional", d.optional);
} catch (JSONException x) {
throw new AssertionError(x);
}
}).collect(Collectors.toList())));
// The fingerprints are not going to match after injecting different binary so we need to fix/recalculate
// - For JUT before 2.168, only sha1 is checked if present, so let's simply remove it
plugin.remove("sha1");
// - For JUT after 2.168, it is enough to recalculate the strongest cypher
if (meta instanceof PluginMetadata.ModifyingMetadata) {
String sha512 = ((PluginMetadata.ModifyingMetadata) meta).getSha512Checksum(injector);
plugin.put("sha512", sha512);
}
}
} catch (JSONException | NoSuchAlgorithmException | IOException x) {
LOGGER.log(Level.WARNING, "cannot prepare mock update center", x);
return;
}
HttpProcessor proc = HttpProcessorBuilder.create().add(new ResponseServer("MockUpdateCenter")).add(new ResponseContent()).add(new RequestConnControl()).build();
UriHttpRequestHandlerMapper handlerMapper = new UriHttpRequestHandlerMapper();
String json = "updateCenter.post(\n" + all + "\n);";
handlerMapper.register("/update-center.json", (HttpRequest request, HttpResponse response, HttpContext context) -> {
response.setStatusCode(HttpStatus.SC_OK);
response.setEntity(new StringEntity(json, ContentType.APPLICATION_JSON));
});
handlerMapper.register("*.hpi", (HttpRequest request, HttpResponse response, HttpContext context) -> {
String plugin = request.getRequestLine().getUri().replaceFirst("^/(.+)[.]hpi$", "$1");
PluginMetadata meta = ucm.plugins.get(plugin);
if (meta == null) {
LOGGER.log(Level.WARNING, "no such plugin {0}", plugin);
response.setStatusCode(HttpStatus.SC_NOT_FOUND);
return;
}
File local = meta.resolve(injector, meta.getVersion());
LOGGER.log(Level.INFO, "serving {0}", local);
response.setStatusCode(HttpStatus.SC_OK);
response.setEntity(new FileEntity(local));
});
handlerMapper.register("*", (HttpRequest request, HttpResponse response, HttpContext context) -> {
String location = original.replace("/update-center.json", request.getRequestLine().getUri());
LOGGER.log(Level.INFO, "redirect to {0}", location);
/* TODO for some reason DownloadService.loadJSONHTML does not seem to process the redirect, despite calling setInstanceFollowRedirects(true):
response.setStatusCode(HttpStatus.SC_MOVED_TEMPORARILY);
response.setHeader("Location", location);
*/
HttpURLConnection uc = (HttpURLConnection) new URL(location).openConnection();
uc.setInstanceFollowRedirects(true);
// TODO consider caching these downloads locally like CachedUpdateCenterMetadataLoader does for the main update-center.json
byte[] data = IOUtils.toByteArray(uc);
String contentType = uc.getContentType();
response.setStatusCode(HttpStatus.SC_OK);
response.setEntity(new ByteArrayEntity(data, ContentType.create(contentType)));
});
server = ServerBootstrap.bootstrap().setHttpProcessor(proc).setHandlerMapper(handlerMapper).setExceptionLogger(serverExceptionHandler()).create();
try {
server.start();
} catch (IOException x) {
LOGGER.log(Level.WARNING, "cannot start mock update center", x);
return;
}
original = sites.get(0);
// TODO figure out how to deal with Docker-based controllers which would need to have an IP address for the host
String override = "http://" + server.getInetAddress().getHostAddress() + ":" + server.getLocalPort() + "/update-center.json";
LOGGER.log(Level.INFO, "replacing update site {0} with {1}", new Object[] { original, override });
jenkins.runScript("DownloadService.signatureCheck = false; Jenkins.instance.updateCenter.sites.replaceBy([new UpdateSite(UpdateCenter.ID_DEFAULT, '%s')])", override);
}
Aggregations