[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1759?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15548211#comment-15548211
 ] 

Oleg Kalnichevski commented on HTTPCLIENT-1759:
-----------------------------------------------

If needed I can move URLEncodedUtils to HttpCore. The class is not client side 
specific.

In HTTP/2 there is no longer such constructs as a request line and a status 
line. I made {{HttpRequest}}  and {{HttpResponse}} interfaces more HTTP version 
neutral. You can use {{HttpRequest#getUri()}} and {{HttpRequest#getVersion()}} 
instead.

Oleg

> Contribute new tests that use the in-process HttpServer
> -------------------------------------------------------
>
>                 Key: HTTPCLIENT-1759
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1759
>             Project: HttpComponents HttpClient
>          Issue Type: Test
>          Components: HttpClient (classic)
>    Affects Versions: 5.0 Alpha2
>            Reporter: John Lewis
>            Assignee: Oleg Kalnichevski
>              Labels: patch, test
>             Fix For: Future
>
>         Attachments: patch.txt
>
>
> Please accept this contribution of new tests that use the in-process 
> HttpServer similar to the way it is used with the LocalServerTestBase.  A 
> special request handler is used to check HTTP requests.  Before the request 
> is sent, the request handler is told what to expect in the request as far as 
> headers, parameters, path, content type, and body are concerned.  The handler 
> checks the request against the expectations.  Then, the handler is also told 
> what response to return, and the response is checked when the HTTP client 
> receives the response.
> Every HTTP method is tested in this way.
> The tests use a testing framework that is is designed to work with any HTTP 
> client.  For instance Groovy's HttpBuilder and RESTClient use the Apache 
> HttpClient to make HTTP requests.  The testing framework here can test the 
> HttpBuilder and RESTClient as well as HttpClient.  There just has to be an 
> adapter for each HTTP client.  I have included one for Apache HttpClient5.
> Since I would like to reuse the test framework for other projects, I have not 
> put the framework in the test area so it can potentially be used for any 
> project that uses HttpClient to run the same tests or create new tests.  Care 
> has been taken to make sure no testing dependency such as JUnit or EasyMock 
> is used in the framework.
> I used test-first development when creating this test framework.  So, I have 
> submitted a lot of tests which I put under the test area.
> Usage.  Generally, the idea is that you specify a test with a set of List's 
> and Map's.  If you write the test with Groovy, it could look something like 
> this:
> {noformat}
>           final HttpServerTestingFramework framework = new 
> HttpServerTestingFramework(new HttpClient5TestingAdapter());
>           framework.addTest(
>                               request: [
>                                   path: '/stuff',
>                                   method:'GET',
>                                   query: [param : 'something'],
>                                   headers: [header1:'stuff', 
> header2:'more-stuff'],
>                                   contentType: 'text/plain; charset=us-ascii',
>                                   body: 'What is the meaning of life?',
>                               ],
>                               response: [
>                                   status:201,
>                                   headers: [header3:'header_stuff',],
>                                   contentType: 'text/html; charset=us-ascii',
>                                   body: '<HTML>42</HTML>',
>                               ],
>           )
>           framework.runTests();
> {noformat}
> There is also a set of tests that are created by default that exercise all of 
> the HTTP methods.  If you don't want these tests to run, then just delete the 
> tests after creating the framework:
>           framework.deleteTests();
> You can see TestHttpServerTestingFramework.java to see how the framework is 
> used to test HttpClient5.  Especially the defaultTests() test:
> {noformat}
>     @Test
>     public void defaultTests() throws Exception {
>         final HttpServerTestingAdapter adapter = new 
> HttpClient5TestingAdapter();
>         // create the framework without deleting the default tests.
>         final HttpServerTestingFramework framework = new 
> HttpServerTestingFramework();
>         framework.setAdapter(adapter);
>         framework.runTests();
>     }
> {noformat}
> I have submitted a patch file.  There are no changes to the existing 
> HttpClient code.  All files in the patch are new, and they do not interfere 
> with the current functionality of HttpClient.  I created a new package called 
> org.apache.hc.client5.http.*testframework*.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to