aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-04-10Optimize gen_event_SUITE:hibernate/1Björn Gustavsson
The running time for gen_event_SUITE:hibernate/1 is about 20 seconds because of 1000 ms sleeps in the test case. Introduce helper functions to avoid sleeping more than necessary. While we are it, also remove all ?line macros in the test case.
2015-04-10Optimize gen_fsm_SUITE:hibernate/1Björn Gustavsson
The running time for gen_fsm_SUITE:hibernate/1 is almost 30 seconds because of 1000 ms sleeps in the test case. Introduce helper functions to avoid sleeping more than necessary. While we are it, also remove all ?line macros in the test case.
2015-04-10Optimize unicode_SUITE:ex_binaries_errors* test casesBjörn Gustavsson
Refactor the code so that the error test cases for utf16 can share the code for big and little endian. Do the same for utf32. The major optimization is the observation that the following code: byte_size(unicode:characters_to_binary(List, unicode, {utf16,big}) can be replaced with: 2*length(List) which is much faster. (That optimization is not safe in general, but for the lists used in the error tests cases, it is.)
2015-04-10Optimize unicode_SUITE:binaries_errors/1Björn Gustavsson
unicode_SUITE:binaries_errors/1 is the slowest test case in unicode_SUITE. Its running time is about 50 seconds on my computer. Break apart unicode_SUITE:binaries_errors/1 into several test cases that can run in parallel.
2015-04-10binary_module_SUITE: Remove unnecessary calls to the binref moduleBjörn Gustavsson
The compile_pattern/1 function in the binref module is a dummy function. Therefore, calling binref:match/2 once with the plain pattern and once with a "pre-compiled" pattern will take twice as long, but will not help us find more errors. I shaved off one fourth of the running time for random_ref_comp/1 by eliminating the unnecessary calls to the binref module.
2015-03-26Optimize binary_module:random_ref_comp/1Björn Gustavsson
The most expensive part of random_ref_comp/1 is do_matches_loop_comp/4. The running time was reduced from roughly 80 seconds to roughly 40 seconds on my computer when I modified the caller to pre-compile the pattern.
2015-03-26Optimize io_proto_SUITE:unicode_options_gen/1Björn Gustavsson
The time to run io_proto_SUITE:unicode_options_gen/1 on my computer was about 110 seconds. After modifying the test case so that it does several file operations in parallel the time was reduced to about 60 seconds.
2015-03-25Merge branch 'bjorn/doc'Björn Gustavsson
* bjorn/doc: cerl_trees: Fix incorrect EDoc reference to the cerl module cerl: Correct incorrect EDoc references
2015-03-25Merge branch 'rickard/time_api/OTP-11997'Rickard Green
* rickard/time_api/OTP-11997: Skip not updated test-cases Fixes and cleanup
2015-03-25Skip not updated test-casesRickard Green
2015-03-25Fixes and cleanupRickard Green
2015-03-25Merge branch 'erland/OTP18/inets/time_api/OTP-12441'Erland Schönbeck
* erland/OTP18/inets/time_api/OTP-12441: inets: Add new module inets_time_compat with new time API The new module is backwards compatible.
2015-03-25Merge branch 'erland/ssh/OTP18/time_api/OTP-12444'Erland Schönbeck
* erland/ssh/OTP18/time_api/OTP-12444: ssh: Use new time API
2015-03-25Merge branch 'sverk/hamt-term2bin-bug/OTP-12585'Sverker Eriksson
* sverk/hamt-term2bin-bug/OTP-12585: erts: Optimize hashmap_get erts: Remove HAMT_SUBTAG_NODE_ARRAY erts: Fix bug in binary_to_term for hamt when yielding erts: Rename to flatmap_from_validated_list
2015-03-25Merge branch 'maint'Björn-Egil Dahlberg
Conflicts: erts/emulator/beam/erl_map.c erts/emulator/test/map_SUITE.erl
2015-03-25Merge branch 'egil/fix-term-cmp/OTP-12623' into maintBjörn-Egil Dahlberg
* egil/fix-term-cmp/OTP-12623: erts: Fix comparison of exact terms
2015-03-25Merge branch 'maint'Erland Schönbeck
2015-03-25Merge branch 'erland/diameter/time_api_change/OTP-12439' into maintErland Schönbeck
* erland/diameter/time_api_change/OTP-12439: Update with changes in new time api otp_SUITE: change filter för diameter
2015-03-24erts: Optimize hashmap_getSverker Eriksson
2015-03-24erts: Remove HAMT_SUBTAG_NODE_ARRAYSverker Eriksson
This will also fix a bug in term_to_binary treating full nodes as tuples and emiting LIST_EXT for leafs.
2015-03-24erts: Fix bug in binary_to_term for hamt when yieldingSverker Eriksson
Must save hamt_list in context.
2015-03-24erts: Fix comparison of exact termsBjörn-Egil Dahlberg
Comparison of exact terms could cause faulty term tests. This was caused by a faulty (too small) internal type. Symptom: -1 = erts_internal:cmp_term(2147483648,0). %% wrong Correct: 1 = erts_internal:cmp_term(2147483648,0). Reported-by: Jesper Louis Andersen
2015-03-24Merge branch 'rickard/time_api/OTP-11997'Rickard Green
* rickard/time_api/OTP-11997: Better OS system time implementation Documentation adjustments Fix zero timout timers erts_sys_hrtime() for lcnt Better support for poor os monotonic sources Conflicts: erts/preloaded/ebin/erlang.beam
2015-03-24Better OS system time implementationRickard Green
2015-03-24inets: Add new module inets_time_compat with new time APIErland Schönbeck
The new module is backwards compatible.
2015-03-24cerl_trees: Fix incorrect EDoc reference to the cerl moduleBjörn Gustavsson
2015-03-24Merge branch 'maint'Anders Svensson
2015-03-24Merge branch 'anders/diameter/17.5/OTP-12435' into maintAnders Svensson
* anders/diameter/17.5/OTP-12435: vsn -> 1.9 Update appup for 17.5 Minor doc fix
2015-03-24vsn -> 1.9Anders Svensson
2015-03-24Update appup for 17.5Anders Svensson
Required load order by ticket. - OTP-11492, answer messages discarded - OTP-12415, retransmission failure - OTP-12475, grouped AVP decode - OTP-12543, no requests after DPR none - OTP-12412, shutdown issues diameter_lib diameter_service - OTP-12428, transport_opt() pool_size diameter_lib diameter_service diameter, diameter_config diameter_{tcp,sctp} diameter, diameter_config - OTP-12439, new time api in Erlang/OTP 18 diameter_lib diameter_{config,peer,reg,service,session,stats,sync,watchdog,sctp} - OTP-11952, service_opt() decode_string - OTP-12589, DiameterURI encode/decode diameter_{capx,codec,peer} diameter_types diameter_traffic diameter_{service,peer_fsm} diameter_watchdog diameter, diameter_config - OTP-12542, DPR with diameter:call/4 diameter_{peer_fsm,watchdog} diameter, diameter_config - OTP-12609, transport_opt() dpr_timeout diameter_peer_fsm diameter, diameter_config
2015-03-24Minor doc fixAnders Svensson
2015-03-24Merge branch 'maint'Anders Svensson
2015-03-24Merge branch 'anders/diameter/dpr/OTP-12609' into maintAnders Svensson
* anders/diameter/dpr/OTP-12609: Discard incoming/outgoing requests after incoming DPR Add transport_opt() dpr_timeout Be lenient with errors in incoming DPR
2015-03-24Merge branch 'anders/diameter/DiameterURI/OTP-12589' into maintAnders Svensson
* anders/diameter/DiameterURI/OTP-12589: Adapt to changed DiameterURI defaults in RFC 6733 Reject transport=udp;protocol=diameter at DiameterURI encode
2015-03-24Adapt to changed DiameterURI defaults in RFC 6733Anders Svensson
Despite claims of full backwards compatibility, the text of RFC 6733 changes the interpretation of unspecified values in a DiameterURI. In particular, 3588 says that the default port and transport are 3868 and sctp respectively, while 6733 says it's either 3868/tcp (aaa) or 5658/tcp (aaas). The 3588 defaults were used regardless, but now use them only if the common dictionary is diameter_gen_base_rfc3588. The 6733 defaults are used otherwise. This kind of change in the standard can lead to interop problems, since a node has to know which RFC its peer is following to know that it will properly interpret missing URI components. Encode of a URI includes all components to avoid such confusion. That said, note that the defaults in the diameter_uri record have *not* been changed. This avoids breaking code that depends on them, but the risk is that such code sends inappropriate values. The record defaults may be changed in a future release, to force values to be explicitly specified.
2015-03-24Reject transport=udp;protocol=diameter at DiameterURI encodeAnders Svensson
Both RFC 3588 and 6733 disallow the combination. Make its encode fail.
2015-03-24Merge branch 'anders/diameter/string_decode/OTP-11952' into maintAnders Svensson
* anders/diameter/string_decode/OTP-11952: Let examples override default service options Set {restrict_connections, false} in example server Set {string_decode, false} in examples Test {string_decode, false} in traffic suite Add service_opt() string_decode Strip potentially large terms when sending outgoing Diameter messages Improve language consistency in diameter(1)
2015-03-24Merge branch 'anders/diameter/route_record/OTP-12551' into maintAnders Svensson
* anders/diameter/route_record/OTP-12551: Fix ordering of AVPs in relayed messages
2015-03-24Let examples override default service optionsAnders Svensson
To make them a bit more flexible. Can now do things like this: server:start([{'Product-Name', "Bob"}]), server:listen({tcp, [{capx_timeout, 2000}]}) Beware that the latter is completely different from this: server:listen(tcp, [{capx_timeout, 2000}])
2015-03-24Set {restrict_connections, false} in example serverAnders Svensson
Since there's no reason to reject a client that wants to establish multiple connections, given that diameter can handle it.
2015-03-24Set {string_decode, false} in examplesAnders Svensson
So as to do what's now recommended in diameter(1), in the grandparent commit.
2015-03-24Test {string_decode, false} in traffic suiteAnders Svensson
By adding string decode or not in the server or client as another combination. Run all traffic cases in parallel: remove the sequential tests. Common test seems unable to deal with {group, X, [parallel]} within a group.
2015-03-24Add service_opt() string_decodeAnders Svensson
To control whether stringish Diameter types are decoded to string or left as binary. The motivation is the same as in the parent commit: to avoid large strings being copied when incoming Diameter messages are passed between processes; or *if* in the case of messages destined for handle_request and handle_answer callbacks, since these are decoded in the dedicated processes that the callbacks take place in. It would be possible to do something about other messages without requiring an option, but disabling the decode is the most effective. The value is a boolean(), true being the default for backwards compatibility. Setting false causes both diameter_caps records and decoded messages to contain binary() in relevant places that previously had string(): diameter_app(3) callbacks need to be prepared for the change. The Diameter types affected are OctetString and the derived types that can contain arbitrarily large values: OctetString, UTF8String, DiameterIdentity, DiameterURI, IPFilterRule, and QoSFilterRule. Time and Address are unaffected. The DiameterURI decode has been redone using re(3), which both simplifies and does away with a vulnerability resulting from the conversion of arbitrary strings to atom. The solution continues the use and abuse of the process dictionary for encode/decode purposes, last seen in commit 0f9cdba.
2015-03-24Documentation adjustmentsRickard Green
2015-03-24ssh: Use new time APIErland Schönbeck
2015-03-24Fix zero timout timersRickard Green
2015-03-23erts_sys_hrtime() for lcntRickard Green
2015-03-23erts: Rename to flatmap_from_validated_listSverker Eriksson
from map_to_validated_list
2015-03-23Strip potentially large terms when sending outgoing Diameter messagesAnders Svensson
Both incoming and outgoing Diameter messages pass through two or three processes, depending on whether they're incoming or outgoing: the transport process and corresponding peer_fsm process and (for incoming) watchdog processes. Since terms other than binary are copied when passing process boundaries, large terms lead to copying that can be problematic, if frequent enough. Since only the bin and transport_data fields of a diameter_packet record are needed by the transport process, discard others when sending outgoing messages. Strictly speaking, the statement that only the aforementioned fields are needed by the transport process depends on the transport process. It's true of those implemented by diameter (in diameter_tcp and diameter_sctp), but an implementation that makes use of other fields is assuming more than the documentation in diameter_transport(3) promises.
2015-03-23Better support for poor os monotonic sourcesRickard Green