Commit graph

50 commits

Author SHA1 Message Date
Nate Wolfe
e164bb12d7 (SERVER-101) Upgrade jvm-ca dependency to 0.7.0
This commit changes the usages to reflect the new name of the library
and API.
2015-01-23 17:33:02 -08:00
Jeremy Barlow
137ae4bd48 (TK-103) Restored redirect-test-async tests
This commit restores several of the `rediret-test-async` tests, using a
client to make the requests since the client-less single-request async
APIs are no longer available.
2014-11-15 14:37:00 -08:00
Jeremy Barlow
91f679a795 (TK-103) Restored query-params-test-async tests
This commit restores the `query-params-test-async` tests, using a client
to make the requests since the client-less single-request async APIs are
no longer available.
2014-11-14 15:54:02 -08:00
Jeremy Barlow
4e56352c44 (TK-103) Restore client close tests
This commit restores some of the client close tests which had been
disabled temporarily per some of the refactoring for TK-108.
2014-11-12 14:20:50 -08:00
Jeremy Barlow
c1abea3e37 (TK-103) Remove AsyncClose class and references
This commit removes the `AsyncClose` class and references to it.  These
changes are in preparation for making the close call after the response
has been dereferenced - to be done in a later commit.  The `persistent`
flag/option was also removed from request handling as it will no longer
be used for determining whether or not the client should be closed
following a request.
2014-11-12 11:37:44 -08:00
Jeremy Barlow
d437646203 (TK-103) Remove non-client based async APIs
This commit removes the non-client based APIs for doing async requests.
2014-11-12 11:04:11 -08:00
Preben Ingvaldsen
c77e449f11 (TK-108) Remove failing close test
Remove the tests to ensure that the persistent async and sync
Java clients close correctly due to a race condition that
was present in the tests.
2014-11-11 09:45:18 -08:00
Preben Ingvaldsen
fb6772b623 (TK-108) Return interface in createClient methods
Return interfaces in the createClient methods rather than the
implementation classes themselves.
2014-11-10 11:24:36 -08:00
Preben Ingvaldsen
8126f13100 (TK-108) Add SimpleRequestOptions class
Add SimpleRequestOptions class, which unifies the Client and
Request options under a single class used for the simple API
calls.
2014-11-10 11:05:15 -08:00
Preben Ingvaldsen
c6ce8dd301 (TK-108) Add a persistent sync Java client
Add a PersistentSyncHttpClient class, which is a wrapper around
CloseableHttpAsyncClient and allows multiple requests to be made
with a persistent synchronous client.
2014-11-10 10:08:13 -08:00
Preben Ingvaldsen
018fe70153 (TK-108) Add a persistent async Java client
Add a new class, PersistentAsyncHttpClient, that is a wrapped
CloseableHttpAsyncClient that is persistent.
2014-11-07 13:29:17 -08:00
Preben Ingvaldsen
972de1e9e9 (TK-108) Separate Java RequestOptions class
Separate the Java RequestOptions class into two new classes:
RequestOptions, which contains options related to the request,
and ClientOptions, which contains options related to the client.
Both are now required when calling the request methods in
AsyncHttpClient and SyncHttpClient.
2014-11-07 10:44:20 -08:00
Kevin Corcoran
fa852c9b7c Merge pull request #21 from camlow325/bug/master/TK-101-clients-leaked-on-fail
(TK-101) Move closing of http clients to a separate thread
2014-10-21 15:36:35 -07:00
Chris Price
b70ac50b17 (TK-97) Fix bug in tests on Oracle JDKs
The test code related to the configurable SSL protocols was
written using some ciphers that are available in OpenJDK, but
are not available by default in Oracle JDK.  This caused the
tests to fail on Oracle JDKs.

This commit changes the test to use some older ciphers that
are available in the Oracle JDK out of the box.
2014-10-21 15:08:15 -07:00
Jeremy Barlow
f859bd907a (TK-101) Move closing of http clients to a separate thread
This commit moves each close call made on a `CloseableHttpAsyncClient`
from the thread on which the request callback is made over to a
different thread in order to avoid a deadlock.

Previously, the client close call was made in the context of thread from
which the callback was invoked.  The Apache HTTP async client library
makes these calls from one of its i/o reactor threads.  In the case of a
"failed" request, e.g., failure to make the client connection, this call
occurs in the context of the primary i/o reactor thread.  The client
close call does an indefinite join on the primary i/o reactor thread
and, therefore, this call causes a deadlock.  The client never closes
and all resources associated with it - threads, file descriptors, etc. -
remain open until the process is shutdown.

This commit introduces a new class, `AsyncClose`, which manages a small,
fixed size thread pool from which client close calls can be executed.
The `async` Clojure and `JavaClient` APIs were updated to use `AsyncClose`
whenever a client needs to be closed from a callback.
2014-10-20 14:22:56 -07:00
Chris Price
251d859d10 (TK-97) Expose configuration settings for protocols/cipher suites
This commit adds configuration settings for the SSL protocols
and cipher suites, in both the java and clojure clients.  It
also adds a list of default protocols which will be used if
the protocols setting is not explicitly set.
2014-10-17 23:35:05 -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
Jeremy Barlow
f83d7821ad (PE-6019) Encode string request body per Content-Type header
This commit encodes a request body string per the content of the
Content-Type header.  In the event that no charset is specified in the
Content-Type header, the charset is set to UTF-8.  Previously, the
request body string was always encoded to ISO-8859-1 and was not
necessarily in sync with the value of the Content-Type header.
2014-09-18 17:02:00 -07:00
Chris Price
cbb3984368 Merge pull request #14 from fpringvaldsen/PE-5623-follow-redirects
(PE-5623) Add force-redirects option
2014-08-27 10:38:07 -07:00
Preben Ingvaldsen
73292ab690 (PE-5623) Add followRedirects option to Java client
Add followRedirects option to Java client, which functions
the same as the :follow-redirects option in the clj client.
2014-08-26 16:49:36 -07:00
Preben Ingvaldsen
06636b461e (PE-5623) Add :follow-redirects option clj clients
Add a :follow-redirects option to the clj clients which, when
set to false, will prevent the client from following a redirect.
2014-08-26 16:36:47 -07:00
Preben Ingvaldsen
4bd7d25403 (PE-5623) Add forceRedirects option to Java client
Add a forceRedirects option to the Java client that allows it to
follow redirects on POST and PUT requests.
2014-08-25 11:57:39 -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
9e37eeeabe Add RequestOptions constructor with string
Add a RequestOptions constructor that takes a string instead
of a URI. Modify the basic-test function to use the string
constructor.
2014-08-22 14:46:06 -07:00
Chris Price
88a6e83d48 (PE-5567) Fix bug if content-type header has no charset
Prior to this commit, the Java client API would throw an NPE if
it got a response from a server where the Content-Type header
did not include a charset.
2014-08-22 08:03:36 -07:00
Preben Ingvaldsen
606754bc81 (TK-29) Move to URI instead of String
Have the RequestOptions constructor take a URI instead of a
string. Add signature to the HTTP request methods that take
a URI.
2014-08-08 16:32:48 -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
c439b2ed87 (TK-29) Add query params option to clj client
Add query parameter support to the clojure client. User can now
specify a :query-params option in the options map containing a
map of query parameters.
2014-08-06 14:02:10 -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
Preben Ingvaldsen
6fe97dee92 (TK-27) Add test for sync client close
Add test to make sure that a sync client is closed properly.
2014-07-23 10:20:15 -07:00
Preben Ingvaldsen
0aeaf73dd9 (TK-27) Add tests for request-with-client
Add asynchronous and synchronous tests for request-with-client.
2014-07-17 14:03:39 -07:00
Preben Ingvaldsen
e586ea53c8 (TK-27) Add request-with-client functions
Add request-with-client functions to the async and sync
namespaces. These now do all the work of the request functions,
so that the request functions cannot directly be passed a client
by the user.
2014-07-17 13:28:33 -07:00
Preben Ingvaldsen
81cd0eabaf (TK-27) Remove persistent namespaces
Remove persistent-async and persistent-sync namespaces,
moving their contents into async and sync, respectively.
2014-07-17 11:06:13 -07:00
Preben Ingvaldsen
b807083c5a (TK-27) Refactor client protocols
Refactor the async and sync client protocols into a single
protocol which resides in a new file, common.clj.
2014-07-15 16:46:20 -07:00
Preben Ingvaldsen
0b2755eef5 (TK-27) Add persistent sync client
Add a persistent sync client to the persistent-sync namespace.
With this namespace, a user can now create a persistent
sync client for reuse. Also, add persistent sync client test.
2014-07-15 16:01:36 -07:00
Preben Ingvaldsen
cebaeb9eb6 (TK-27) Move test
Move persistent async client test back into the
async-plaintext-test file.
2014-07-15 15:07:43 -07:00
Preben Ingvaldsen
27d5838ce3 (TK-27) Put persistent client in own ns
Put the persistent client in its own namespace. Remove the
persistent- prefix from the front of the persistent client
http request functions.
2014-07-15 15:04:28 -07:00
Preben Ingvaldsen
54fa3d77fd (TK-27) Add test for persistent async client
Add test for persistent async client. This test creates a
persistent async client, then uses it to make each kind of HTTP
request.
2014-07-15 14:06:28 -07:00
Preben Ingvaldsen
f3f3c5b6af Fix typo in test comment
Fix typo in test comment, which was referring to an async client
as a sync client.
2014-07-14 13:45:43 -07:00
Chris Price
729af72491 (TK-23) Cleanups based on PR feedback 2014-07-03 09:21:42 -07:00
Chris Price
186b226512 (TK-23) Port to apache HttpAsyncClient
* Ports the code over to use the Apache HttpAsyncClient library
  instead of http-kit, as we were getting some weird and inconsistent
  SSL errors from http-kit, and
* Simplify the API (by eliminating a lot of the supported configuration
  options).  Some of these options we'll eventually want to add back in,
  but for now, getting rid of them makes the API less cluttered and
  also gives us the opportunity to do a better job writing tests
  for new options when we do add support for them.

For now it only supports constructing a new client on every request.
I intend to add API for creating a client explicitly, and a protocol
for how to interact with the client.  This will allow users to
re-use an existing client as they see fit... but this hasn't been
implemented yet.
2014-07-03 08:58:46 -07:00
Chris Price
f9a7a9fd49 Cleanup and additional test based on PR feedback 2014-04-11 13:56:09 -07:00
Chris Price
cc3633b428 Support SSLContext configured with only CA cert 2014-04-08 17:21:13 -07:00
Chris Price
d21158f807 (PE-3377) Use certificate-authority lib for ssl instead of KS 2014-04-08 14:26:44 -07:00
Chris Price
db53a75f34 Add integration tests for sync clients
Prior to this commit, we didn't actually have any tests that
started a real web server and made a real request.  This
commit adds tests that do this for the clojure and Java
synchronous clients, using SSL.
2014-03-28 17:33:27 -07:00
Patrick Carlisle
96ad26b054 Reorganize sync and async clients. 2014-03-11 17:59:07 -07:00
Patrick Carlisle
79631d28bd Make SSL configuration more flexible and refactor
This makes it possible to pass in an SSLEngine, SSLContext or set of PEM
files. It also significantly refactors the wrapper and leaves the default
methods async.
2014-03-11 17:19:37 -07:00
Patrick Carlisle
3c5ea542ea Initial commit 2014-03-10 17:24:22 -07:00