summaryrefslogtreecommitdiff
path: root/erts/test
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2023-02-13 19:09:48 +0100
committerRickard Green <rickard@erlang.org>2023-02-13 19:09:48 +0100
commita108f991c0489675938eb0958f69a98d18a4460f (patch)
tree614360b228b48b19e2e66a877459b65f7583966f /erts/test
parent3c3fb9a6e4cb8c10950e53763bf27b53da77cbec (diff)
parent302362b29d56df3ee412742b205aef02d3551467 (diff)
downloaderlang-a108f991c0489675938eb0958f69a98d18a4460f.tar.gz
Merge branch 'rickard/60bit-pids/OTP-18435'
* rickard/60bit-pids/OTP-18435: [erts] Fix test cases for new internal pids
Diffstat (limited to 'erts/test')
-rw-r--r--erts/test/Makefile5
-rw-r--r--erts/test/erl_print_SUITE.erl116
2 files changed, 25 insertions, 96 deletions
diff --git a/erts/test/Makefile b/erts/test/Makefile
index addf5f89c5..a60b3ce81d 100644
--- a/erts/test/Makefile
+++ b/erts/test/Makefile
@@ -41,7 +41,10 @@ MODULES= \
upgrade_SUITE \
parallel_messages_SUITE
-ERL_FILES= $(MODULES:%=%.erl)
+ERTS_MODULES= erts_test_utils
+
+ERL_FILES= $(MODULES:%=%.erl) \
+ $(ERTS_MODULES:%=$(ERL_TOP)/erts/emulator/test/%.erl)
TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
diff --git a/erts/test/erl_print_SUITE.erl b/erts/test/erl_print_SUITE.erl
index 84e99675a0..95293e75c6 100644
--- a/erts/test/erl_print_SUITE.erl
+++ b/erts/test/erl_print_SUITE.erl
@@ -96,10 +96,18 @@ erlang_display(Config) when is_list(Config) ->
MyCre = my_cre(),
+ {Ser1, Ser2, LPort} = case erlang:system_info(wordsize) of
+ 4 -> {0, 0, 1 bsl 27};
+ 8 -> {42, 1 bsl 30, 1 bsl 40}
+ end,
+
%% pids
- chk_display(mk_pid_xstr({node(), MyCre}, 4711, 42)),
+ chk_display(mk_pid_xstr({node(), MyCre}, 4711, Ser1)),
+ chk_display(mk_pid_xstr({node(), MyCre}, 1 bsl 27, Ser2)),
chk_display(mk_pid_xstr({node(), oth_cre(MyCre)}, 4711, 42)),
+ chk_display(mk_pid_xstr({node(), oth_cre(MyCre)}, 1 bsl 27, Ser2)),
chk_display(mk_pid_xstr({node(), oth_cre(oth_cre(MyCre))}, 4711, 42)),
+ chk_display(mk_pid_xstr({node(), oth_cre(oth_cre(MyCre))}, 1 bsl 27, Ser2)),
chk_display(mk_pid_xstr({a@b, MyCre}, 4711, 42)),
chk_display(mk_pid_xstr({a@b, oth_cre(MyCre)}, 4711, 42)),
@@ -107,12 +115,18 @@ erlang_display(Config) when is_list(Config) ->
%% ports
chk_display(mk_port_xstr({node(), MyCre}, 4711)),
+ chk_display(mk_port_xstr({node(), MyCre}, LPort)),
chk_display(mk_port_xstr({node(), oth_cre(MyCre)}, 4711)),
+ chk_display(mk_port_xstr({node(), oth_cre(MyCre)}, LPort)),
chk_display(mk_port_xstr({node(), oth_cre(oth_cre(MyCre))}, 4711)),
+ chk_display(mk_port_xstr({node(), oth_cre(oth_cre(MyCre))}, LPort)),
chk_display(mk_port_xstr({c@d, MyCre}, 4711)),
+ chk_display(mk_port_xstr({c@d, MyCre}, LPort)),
chk_display(mk_port_xstr({c@d, oth_cre(MyCre)}, 4711)),
+ chk_display(mk_port_xstr({c@d, oth_cre(MyCre)}, LPort)),
chk_display(mk_port_xstr({c@d, oth_cre(oth_cre(MyCre))}, 4711)),
+ chk_display(mk_port_xstr({c@d, oth_cre(oth_cre(MyCre))}, LPort)),
%% refs
chk_display(mk_ref_xstr({node(), MyCre}, [1,2,3])),
@@ -316,102 +330,14 @@ run_case(Config, TestArgs, Fun) ->
ct:fail({open_port_failed, Error})
end.
+mk_pid(Node, Number, Serial) ->
+ erts_test_utils:mk_ext_pid(Node, Number, Serial).
--define(VERSION_MAGIC, 131).
-
--define(ATOM_EXT, 100).
--define(REFERENCE_EXT, 101).
--define(PORT_EXT, 102).
--define(PID_EXT, 103).
--define(NEW_REFERENCE_EXT, 114).
--define(NEW_PID_EXT, $X).
--define(NEW_PORT_EXT, $Y).
--define(NEWER_REFERENCE_EXT, $Z).
-
-uint32_be(Uint) when is_integer(Uint), 0 =< Uint, Uint < 1 bsl 32 ->
- [(Uint bsr 24) band 16#ff,
- (Uint bsr 16) band 16#ff,
- (Uint bsr 8) band 16#ff,
- Uint band 16#ff];
-uint32_be(Uint) ->
- exit({badarg, uint32_be, [Uint]}).
-
-
-uint16_be(Uint) when is_integer(Uint), 0 =< Uint, Uint < 1 bsl 16 ->
- [(Uint bsr 8) band 16#ff,
- Uint band 16#ff];
-uint16_be(Uint) ->
- exit({badarg, uint16_be, [Uint]}).
-
-uint8(Uint) when is_integer(Uint), 0 =< Uint, Uint < 1 bsl 8 ->
- Uint band 16#ff;
-uint8(Uint) ->
- exit({badarg, uint8, [Uint]}).
-
-
-
-mk_pid({NodeName, Creation}, Number, Serial) when is_atom(NodeName) ->
- mk_pid({atom_to_list(NodeName), Creation}, Number, Serial);
-mk_pid({NodeName, Creation}, Number, Serial) ->
- case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?NEW_PID_EXT,
- ?ATOM_EXT,
- uint16_be(length(NodeName)),
- NodeName,
- uint32_be(Number),
- uint32_be(Serial),
- uint32_be(Creation)])) of
- Pid when is_pid(Pid) ->
- Pid;
- {'EXIT', {badarg, _}} ->
- exit({badarg, mk_pid, [{NodeName, Creation}, Number, Serial]});
- Other ->
- exit({unexpected_binary_to_term_result, Other})
- end.
-
-mk_port({NodeName, Creation}, Number) when is_atom(NodeName) ->
- mk_port({atom_to_list(NodeName), Creation}, Number);
-mk_port({NodeName, Creation}, Number) ->
- case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?NEW_PORT_EXT,
- ?ATOM_EXT,
- uint16_be(length(NodeName)),
- NodeName,
- uint32_be(Number),
- uint32_be(Creation)])) of
- Port when is_port(Port) ->
- Port;
- {'EXIT', {badarg, _}} ->
- exit({badarg, mk_port, [{NodeName, Creation}, Number]});
- Other ->
- exit({unexpected_binary_to_term_result, Other})
- end.
+mk_port(Node, Number) ->
+ erts_test_utils:mk_ext_port(Node, Number).
-mk_ref({NodeName, Creation}, Numbers) when is_atom(NodeName),
- is_integer(Creation),
- is_list(Numbers) ->
- mk_ref({atom_to_list(NodeName), Creation}, Numbers);
-mk_ref({NodeName, Creation}, Numbers) when is_list(NodeName),
- is_integer(Creation),
- is_list(Numbers) ->
- case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?NEWER_REFERENCE_EXT,
- uint16_be(length(Numbers)),
- ?ATOM_EXT,
- uint16_be(length(NodeName)),
- NodeName,
- uint32_be(Creation),
- lists:map(fun (N) ->
- uint32_be(N)
- end,
- Numbers)])) of
- Ref when is_reference(Ref) ->
- Ref;
- {'EXIT', {badarg, _}} ->
- exit({badarg, mk_ref, [{NodeName, Creation}, Numbers]});
- Other ->
- exit({unexpected_binary_to_term_result, Other})
- end.
+mk_ref(Node, Numbers) ->
+ erts_test_utils:mk_ext_ref(Node, Numbers).
my_cre() -> erlang:system_info(creation).