Commit graph

9 commits

Author SHA1 Message Date
Ruth Linehan
df4e36a1aa (TK-316) Add metrics support
This commit adds metrics support to the http client (clojure and java, sync
and async). A metric registry can optionally be passed into the client as a
client option on creation. If a metric registry is present, timers will be
added to time each request.

By default, a timer is added for the URL (stripped of username, password,
query string, and path fragments) and the URL plus the method used for the
request. In addition, a request can include a `metric-id` option, which takes
a tuple of metric ids. If this request option is specified, a timer will be
created for each element of the metric id tuple - thus if the tuple is [:foo
:bar :baz] there will be a foo timer, a foo.bar timer, and a foo.bar.baz
timer.

In addition, each timer has a "MetricType" - currently there is only one
metric type, bytes-read, which is stopped when the full response has been
read. In the future, we may add "response-init" timers that get stopped when
the first byte of the response has been read.

This commit also adds a `get-client-metrics`/`.getClientMetrics` function that
takes a client instance and returns the http client-specific metrics from the
metric registry and a `get-client-metrics-data`/`.getClientMetricsData`
function for clojure and java sync and async clients to get out metrics data
from the client. This function takes a client instance and returns a map of
metric name to a map of metric data (for clojure) or a ClientMetricData object
(for java), both of which include the mean, count, and aggregate for the timer

These `get-client-metrics*`/`.getClientMetrics*` functions also have versions
that take a url, url and method, or metric id to allow for filtering of the
timers/metrics data returned by these functions.

The clojure versions of these functions take a metric filter map. There are
also metric filter builder functions to build up the type of metric filter
desired from a url, a url and method, or a metric id. These will prevent users
from having to know the specifics of how to build a metric themselves; instead
they can use a convenience function.

An empty metric id can be passed in to the filter to return all metric-id
timers.
2016-04-19 13:13:10 -07:00
Jeremy Barlow
6520abfb1d (TK-134) Updated connection tests to handle Connect or SocketTimeout
This commit updates the short connect timeout tests to tolerate either a
ConnectException or SocketTimeoutException as a success condition.
Connections could fail with either exception depending upon timing or
network setup.
2015-03-16 22:46:07 -07:00
Jeremy Barlow
9b55ed31b6 (TK-134) Add connect and socket timeout client configuration
This commit enables http clients to optionally configure a connect
and/or socket timeout for requests.  For persistent clients, the
timeout values can only be configured at the client and not a
per-request level.  Non-persistent client requests support the
configuration of these timeouts.

This commit also bumps a few dependencies - tk-jetty9 to 1.2.0,
trapperkeeper to 1.10, ssl-utils to 0.8.0, and clojure to 1.6.0 -
and adds the 'test' tk-jetty9 library as a dev dependency for
testing.
2015-03-16 12:22:35 -07:00
Chris Price
c2cbb11d5d (TK-97) Update dependencies to latest versions
Update dependencies (trapperkeeper, trapperkeeper-webserver-jetty9,
etc.) to the latest versions and fix tests accordingly.
2014-10-17 19:50:08 -07:00
Preben Ingvaldsen
d9f2f1d0f3 (PE-5623) Add :force-redirects to clj client
Add a :force-redirects option to the clojure client that will
relax the redirect restrictions put on the client for a POST
or PUT method.
2014-08-25 11:15:22 -07:00
Preben Ingvaldsen
fee17ad543 (TK-29) Use :query-params and change variable names
Use :query-params in the query param ring handler instead of
:params. Also change variable names used for testing.
2014-08-07 10:36:03 -07:00
Preben Ingvaldsen
449c677c9e Reformat query-options variable
Reformat the query-options variable to line things up and
increase readability.
2014-08-06 14:33:26 -07:00
Preben Ingvaldsen
b20b7a58b2 (TK-29) Overwrite parameters set in URL
Overwrite parameters set in the URL of a request if query
parameters are specified in the options map. If no parameters are
set in the options map, any query parameters set in the URL will
NOT be overwritten and will be successfully passed as part of the
request.
2014-08-06 14:23:56 -07:00
Preben Ingvaldsen
e1e283d701 (TK-29) Add query params to Java client
Add query params back into the Java client, along with tests
to validate this functionality is working.
2014-08-06 10:49:48 -07:00