Commit Graph

142 Commits

Author SHA1 Message Date
Aliaksandr Valialkin bbcdceaa76 Added benchmark for net/http client with fake fast server 2015-11-13 19:50:31 +02:00
Aliaksandr Valialkin 69f3c67fce Added benchmark for measuring the maximum client throughput 2015-11-13 19:38:46 +02:00
Aliaksandr Valialkin 6edf440c99 Added SetRequestURI* helpers to Request 2015-11-13 19:33:28 +02:00
Aliaksandr Valialkin be5a9ddeaf Added helper functions to RequestCtx 2015-11-13 19:32:33 +02:00
Aliaksandr Valialkin b6c8cea99b Mention that client never sets BodyStream on response 2015-11-13 17:58:08 +02:00
Aliaksandr Valialkin af2218ffaf Add optional Dial callback and TLSConfig to Client 2015-11-13 17:55:54 +02:00
Aliaksandr Valialkin 8a44f0c563 Added end-to-end benchmarks for fasthttp and net/http 2015-11-13 16:56:16 +02:00
Aliaksandr Valialkin 3648ae63f7 Optimized updating lastUseTime 2015-11-13 16:43:55 +02:00
Aliaksandr Valialkin f8bfa12215 Added Post() method to client 2015-11-13 16:13:22 +02:00
Aliaksandr Valialkin 48fd01e5e0 Empty request method is equivalent to GET 2015-11-13 16:12:58 +02:00
Aliaksandr Valialkin 1bbce02863 Added IsGet(), IsPost() and IsHead() helpers to RequestCtx 2015-11-13 16:10:22 +02:00
Aliaksandr Valialkin fd177d7f63 Added global Serve* helpers 2015-11-13 15:08:22 +02:00
Aliaksandr Valialkin 25eefed74c Test concurrent access to http and https servers 2015-11-13 13:51:21 +02:00
Aliaksandr Valialkin f1e8e6bf25 Added support for identity responses. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4 for details 2015-11-13 13:33:32 +02:00
Aliaksandr Valialkin 16632cbaa4 Set ConnectionClose for non-http/1.1 requests/responses. Do not support Connection: keep-alive for http/1.0 intentionally, since it will complicate the code without measurable benefits 2015-11-13 12:27:47 +02:00
Aliaksandr Valialkin 15cd28e255 do not update HostClient.MaxConns 2015-11-13 11:57:39 +02:00
Aliaksandr Valialkin 51135320b2 Update ContentLength in header after request/response body has been read 2015-11-13 11:53:44 +02:00
Aliaksandr Valialkin efbdc8fa7f Added ListenAndServe and ListenAndServeTLS helper functions to Server 2015-11-12 23:21:46 +02:00
Aliaksandr Valialkin 2cb5ae6a34 Added missing snakeoil ssl certificates for client tests 2015-11-12 21:51:14 +02:00
Aliaksandr Valialkin 3f0794bcd1 Added RequestCtx.LocalAddr() for determining server address for the current connection 2015-11-12 21:50:44 +02:00
Aliaksandr Valialkin b81ce4977b Added https support to client 2015-11-12 21:42:16 +02:00
Aliaksandr Valialkin e7ed62d38f Added client test for multi-server setup 2015-11-12 20:32:00 +02:00
Aliaksandr Valialkin af69d3830f Added initial tests for Client 2015-11-12 20:23:57 +02:00
Aliaksandr Valialkin ad3c1b72d8 Added basic tests for HostClient 2015-11-12 20:09:21 +02:00
Aliaksandr Valialkin aba783b596 Return nil from Server.Serve*() on expected errors such as io.EOF aond errConnClosing 2015-11-12 20:07:21 +02:00
Aliaksandr Valialkin 33c0dd1fe2 Do not log 'use of closed network connection' error when closing listener in Server.Serve* 2015-11-12 19:53:17 +02:00
Aliaksandr Valialkin 039f2d074e Added support for request's 'Connection: close' header into http client 2015-11-12 19:16:32 +02:00
Aliaksandr Valialkin 6bd9b01126 Added support for 'connection: close' request header 2015-11-12 18:54:15 +02:00
Aliaksandr Valialkin 0ba628eacc Document how server to be requested is determined by client 2015-11-12 14:57:27 +02:00
Aliaksandr Valialkin 5dd815b3d8 Added ability to set client name (aka User-Agent) 2015-11-12 14:37:09 +02:00
Aliaksandr Valialkin f8ae53ae49 Allow whitespaces in request uri, since certain stupid http clients do not bother escaping request uri :) 2015-11-12 14:14:30 +02:00
Aliaksandr Valialkin 6e4b32182e Fixed panic when WorkerFunc returns error and Conn is closed 2015-11-12 14:01:04 +02:00
Aliaksandr Valialkin 86115595ab Allow setting body length for Response.BodyStream via ResponseHeader.ContentLength 2015-11-12 13:30:27 +02:00
Aliaksandr Valialkin d30241c539 Added Get() to http client 2015-11-11 20:00:08 +02:00
Aliaksandr Valialkin 07e319a14f Move request validation and preparation down the stack to HostClient 2015-11-11 19:34:42 +02:00
Aliaksandr Valialkin 6bb8d1108f Initial implementation of http client 2015-11-11 19:17:51 +02:00
Aliaksandr Valialkin 5460e53c17 Subsitute empty RequestURI with slash 2015-11-11 19:15:54 +02:00
Aliaksandr Valialkin f4223fbb70 Added missing unlock when stopping worker pool 2015-11-11 18:08:15 +02:00
Aliaksandr Valialkin 2ae796311b Cleanup: removed dubious and hard-to-use-properly ReadTimeout from Request and Response. Use SetReadDeadline on the underlying conn instead 2015-11-11 16:52:32 +02:00
Aliaksandr Valialkin 429d60e13a ErrReadTimeout -> ErrTimeout 2015-11-11 16:44:53 +02:00
Aliaksandr Valialkin a4e8e226ff Removed dubious loop for obtaining free worker - just increase the number of workers if 'no free workers' error occur 2015-11-11 16:39:59 +02:00
Aliaksandr Valialkin 69758b81d6 Accept net.Conn instead of io.ReadWriteCloser in Serve*() methods, since in reality we use net.Conn methods such as RemoteAddr, SetReadDeadline and SetWriteDeadline 2015-11-11 16:17:12 +02:00
Aliaksandr Valialkin ae6a7cc17c Extracted workerPool from server.go into workerpool.go 2015-11-11 15:27:27 +02:00
Aliaksandr Valialkin 02d312eb54 Added BodyStream to Response, so RequestHandler may set BodyStream instead of Body when it needs response body streaming 2015-11-11 12:54:49 +02:00
Aliaksandr Valialkin 89e1feae77 Reference TimeoutHandler in RequestHandler docs 2015-11-11 11:42:17 +02:00
Aliaksandr Valialkin 0d0e179d7b Added RequestCtx.SetResponseBody helper function 2015-11-11 11:09:31 +02:00
Aliaksandr Valialkin 04ec7b22d0 Added a test for AppendHTTPDate 2015-11-11 11:04:54 +02:00
Aliaksandr Valialkin 9735e0127b Exported ParseUint, ParseUfloat and AppendHTTPDate, which may be frequently used in http apps 2015-11-11 11:00:22 +02:00
Aliaksandr Valialkin ad3452a2e5 Removed dubious Cache from RequestCtx - use sync.Pool instead 2015-11-11 10:47:16 +02:00
Aliaksandr Valialkin b6adf1cd39 Clean least recently used workers in a separate goroutine. This cleans stale workers even on idle server 2015-11-10 17:59:19 +02:00