aboutsummaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Collapse)Author
2017-06-07Update Copyright to 20171.4.0Loïc Hoguin
2017-05-31Remove a warning when building tests on recent OTPLoïc Hoguin
2017-05-31Deprecated ranch:start_listener/6 and child_spec/6Loïc Hoguin
The NumAcceptors argument has been moved to transport option num_acceptor, which defaults to 10. The functions now take one less argument. The old functions are still here, though deprecated.
2017-01-31Format eacces errors in a more readable wayMichael Klishin
Amended with small whitespace changes and removing an unused clause.
2016-11-25Small variable name tweak for better EnglishLoïc Hoguin
2016-11-24Fix a test error on FreeBSDLoïc Hoguin
2016-11-24Wait before calling ranch:info() in testsLoïc Hoguin
Otherwise gen_tcp doesn't have enough time to connect.
2016-11-24Add ranch:info/0 and ranch:procs/2Loïc Hoguin
Provides detailed information about Ranch listeners
2016-11-24Update copyright yearLoïc Hoguin
2016-11-15Add a test for double removal of connectionsLoïc Hoguin
2016-11-15Improve error reportingAlexey Lebedeff
Simplify some return values, improve error messages for eaddrinuse and no_cert. Amended to add tests and simpler code. Also hides the contents of cert and key transport options, if any.
2016-11-15Add ssl to the list of dependenciesLoïc Hoguin
2016-11-08Check for the SSL version for SNI instead of MakefileLoïc Hoguin
2016-11-08Skip SNI tests on OTP<18 in CILoïc Hoguin
2016-11-08Allow listening with only SNI optionsLoïc Hoguin
Cert/certfile is no longer required if SNI options are provided.
2016-10-10Start tracing before starting the listener in testsLoïc Hoguin
2015-08-22Print a warning when discarding an option on listener startupLoïc Hoguin
2015-08-20More test suites refactoringLoïc Hoguin
They are now properly documented and the listener name is automatically specified thanks to a new ct_helper function.
2015-08-20Fix another intermittent test issueLoïc Hoguin
2015-08-20Hopefully fix an intermittent test failureLoïc Hoguin
2015-08-20Ensure ranch_conns_sup doesn't crash on protocol start crashLoïc Hoguin
2015-08-20Add tests and more docs about separate supervisor/connectionLoïc Hoguin
2015-08-20Alphabetical order testsLoïc Hoguin
2015-08-17Beginnings of modernizing the test suiteLoïc Hoguin
Merging because I have to do other work but this is still a nice enough improvement.
2014-06-03Fix inherit listen options for accepted socketSlava Yurin
Order of options in listen is undocumented but significant. Now user option will replace default value if user set it.
2013-12-07Gracefully shutdown when stop_listener/1 is calledLoïc Hoguin
Implements the `shutdown` option as documented previously.
2013-11-26Add accept_ack on all transports and ack_timeout transport optionLoïc Hoguin
Doing this in the connection process allows us to free acceptors to start accepting more connections quicker, especially under load.
2013-08-16Add Transport:sendfile/4,/5James Fish
Adds offset based sendfile to transports. Same behaviour as file:sendfile/4,/5 except socket and file arguments are reversed and either a raw file or a filename can be used. sendfile/2,/4,/5 now compulsory callbacks in ranch_transport. ranch_tcp:sendfile/2 now defaults to a chunk_size of 8191 - the default for ranch_ssl:sendfile/2. The same default is used for both ranch_tcp:sendfile/4,5 and ranch_ssl:sendfile/4,5.
2013-06-20Add asn1 to the list of applications that need to be started for SSLLoïc Hoguin
2013-05-01Use ct_helper to generate SSL certificates for testingLoïc Hoguin
2013-04-28Allow ranch_ssl to use DER cert/key/ca options.Geoff Cant
The Erlang SSL library allows keys, certs and cacerts to be passed either as DER encoded binaries or in PEM encoded files. This patch allows ranch_ssl to be configured in either manner.
2013-04-02Fix ranch_server:set_connections_sup/2 race conditionsJames Fish
A ranch_conns_sup could be (re)started and call ranch_server:set_connections_sup/2 before ranch_server has handled the predecessor's exit. This would cause the ranch_server to crash because ets:insert_new/2 would return false. This change allows ranch_server to handle this case by crashing the calling process instead of itself.
2013-04-02Merge branch 'server-state-recover' of git://github.com/fishcakez/ranchLoïc Hoguin
2013-04-02Add ranch_server state recoveryJames Fish
When ranch_server crashes it will now remonitor previously registered ranch_conns_sup processes so they can be removed from the registry when they die.
2013-04-02Add test to check setting max conenctions does not crash any processesJames Fish
This is a regression test to prevent a previous bug.
2013-04-01Remove ranch_listener and replace ListenerPid by RefLoïc Hoguin
We just don't need this process anymore. Less, simpler code! API changes: * Protocols start_link first argument is now Ref instead of ListenerPid * ranch:accept_ack/1 argument is now Ref instead of ListenerPid * ranch_listener:remove_connection/1 becomes ranch:remove_connection/1 and its argument is now Ref instead of ListenerPid Ref is the name of the listener given as first argument to start_listener/6.
2013-03-31Use a custom supervisor for ranch_conns_supLoïc Hoguin
This change was designed so that we don't have this supervisor and ranch_listener performing the same job, namely monitoring connection processes, the first through links and the second through monitors. This change also makes possible various optimizations: * Acceptors don't need to know about options, maximum number of connections, or anything else. They can just accept, pass the socket to the supervisor, and when the supervisor replies continue accepting connections. * The supervisor holds most of the information that will be passed to created processes. This reduces copying. * The supervisor temporarily takes ownership of the socket, then creates the connection process and gives it ownership, streamlining the creation. * The supervisor can hold acceptors in their receive loop if max_connections is reached. When this number gets below the limit it can then send a message to a sleeping acceptor to make it resume its operations. * Because we know that all connection process creations are made from the local Erlang node, we can greatly reduce the number operations to be made when calling the supervisor. * Because all acceptors die if this supervisor dies, we can remove even more operations from the calling code. We do not need to monitor or wait for a timeout. This reduces the call code to two statements: send and receive. (Thanks James Fish for helping with that.) * The supervisor only needs to keep track of a list of pids. There is no children specification to be maintained, we do not need to handle restart strategy (no process can be restarted because the socket dies with it). We are using the process dictionary for storing the pids as it proved to be the simplest and fastest solution. * The supervisor maintains a count of current connections, but also of processes (including the ones that removed themselves from the pool), making any query of these values very fast. The supervisor should still be compatible with OTP principles. It responds to calls from the supervisor module as expected, although some of them are disabled and an error will be returned, for example supervisor:start_child/2. It is also started with proc_lib and handles system messages. sys:get_status/1 can thus be used as expected. We can see a great increase in the number of requests/s, a great improvement in the latency of requests, and we can simply accept requests faster than before. It will probably have a bigger increase under virtualized environments, although that's only a guess. As a result of this, we don't write much anymore in the ranch_server ets table, so the write_concurrency option was removed. Tests were also slightly improved to prevent race conditions.
2013-02-04Remove pointless sleep from tcp_upgrade testJames Fish
2013-01-17Do not require rebar to build RanchLoïc Hoguin
All is done in the Makefile, like with Cowboy.
2013-01-15Ignore tracking of requests when MaxConn = infinityFred Hebert
There is no need to contact the server and track requests unless being asked to do so by the user. It's going to be faster and more efficient to not track anything when being told tracking doesn't matter. Whenever the max connections is set to infinity, the connections counting key is not created, or is deleted if it existed already. When using a numeric value, the connection count is created or maintained if it existed already. Moreover, trying to reduce a listener's counter while the max connection number is set to `infinity` will return 0 and avoid all counting operations as they are meaningless.
2012-12-24Add ranch:set_max_connections/2 and get_max_connections/1Loïc Hoguin
2012-12-21Assure we manually close right socket in testcasesAndrew Majorov
Concerning supervisor tests subtle issue. Before we just presumed that last port in the global list of ports is the listening socket. From now we trace the return value of the `ranch_tcp:listen` call.
2012-12-21Test cases for the listener supervisor behaviorAndrew Majorov
2012-12-20Merge branch 'adt-socket-transport-opt' of git://github.com/basho/ranchLoïc Hoguin
2012-12-20Add {socket, Socket} transport option, for accepting on existing socketsAndrew Thompson
2012-12-20Return {error, badarg} if start_listener got a bad transport moduleLoïc Hoguin
2012-11-20Error out if Ranch can't be started in the test suiteLoïc Hoguin
2012-08-20Add the 'ranch_protocol' behaviourLoïc Hoguin
2012-08-15Add tests for {active, once} for both TCP and SSLLoïc Hoguin
2012-08-06Check the accept/2 return value for errorsLoïc Hoguin
Distinguish the errors from transport_accept and ssl_accept in ranch_ssl. {error, closed} for the first one means the listening socket got closed; for the second one it means the connection socket was. Ignore all errors except when the listening socket got closed, where we want to crash to allow opening the socket again.