Age | Commit message (Collapse) | Author |
|
Rewrite the code to measure and print elapsed time instead of just
printing timestamps for the start and stop of each operation.
|
|
Use erlang:unique_integer/1 instead.
|
|
Use erlang:monotonic_time/1 instead of now/0.
|
|
Use erlang:timestamp/0 instead now/0 when seeding the random
number generator.
|
|
In big_test/1, there is 9 seconds sleep before spawning any timers.
Why? Before the sleep nrev processes are started, but they are likely
to finish running before the 9 seconds have elapsed.
Since I see no reason at all for the sleep, I will remove it.
|
|
The single test case in timer_SUITE is annoyingly slow. On average,
its running time is about 4 minutes (estimated by a
back-of-the-envelope calculation).
Scale down the delay times in the main loop and the length of timers
started. The running average time should now be around 80 seconds.
|
|
The running time for gen_server_SUITE:hibernate/1 is about 12 seconds
because of 1000 ms sleeps in the test case. Introduce a helper
function to avoid sleeping more than necessary.
While we are it, also remove all ?line macros in the test case.
|
|
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.
|
|
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.
|
|
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.)
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
* bjorn/doc:
cerl_trees: Fix incorrect EDoc reference to the cerl module
cerl: Correct incorrect EDoc references
|
|
* rickard/time_api/OTP-11997:
Skip not updated test-cases
Fixes and cleanup
|
|
|
|
|
|
* erland/OTP18/inets/time_api/OTP-12441:
inets: Add new module inets_time_compat with new time API The new module is backwards compatible.
|
|
* erland/ssh/OTP18/time_api/OTP-12444:
ssh: Use new time API
|
|
* 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
|
|
Conflicts:
erts/emulator/beam/erl_map.c
erts/emulator/test/map_SUITE.erl
|
|
* egil/fix-term-cmp/OTP-12623:
erts: Fix comparison of exact terms
|
|
|
|
* erland/diameter/time_api_change/OTP-12439:
Update with changes in new time api otp_SUITE: change filter för diameter
|
|
|
|
This will also fix a bug in term_to_binary
treating full nodes as tuples and emiting LIST_EXT for leafs.
|
|
Must save hamt_list in context.
|
|
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
|
|
* 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
|
|
|
|
The new module is backwards compatible.
|
|
|
|
|
|
* anders/diameter/17.5/OTP-12435:
vsn -> 1.9
Update appup for 17.5
Minor doc fix
|
|
|
|
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
|
|
|
|
|
|
* anders/diameter/dpr/OTP-12609:
Discard incoming/outgoing requests after incoming DPR
Add transport_opt() dpr_timeout
Be lenient with errors in incoming DPR
|
|
* anders/diameter/DiameterURI/OTP-12589:
Adapt to changed DiameterURI defaults in RFC 6733
Reject transport=udp;protocol=diameter at DiameterURI encode
|
|
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.
|
|
Both RFC 3588 and 6733 disallow the combination. Make its encode fail.
|
|
* 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)
|
|
* anders/diameter/route_record/OTP-12551:
Fix ordering of AVPs in relayed messages
|
|
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}])
|
|
Since there's no reason to reject a client that wants to establish
multiple connections, given that diameter can handle it.
|
|
So as to do what's now recommended in diameter(1), in the grandparent
commit.
|
|
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.
|
|
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.
|