diff options
Diffstat (limited to 'lib/mnesia/test/mnesia_atomicity_test.erl')
| -rw-r--r-- | lib/mnesia/test/mnesia_atomicity_test.erl | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/lib/mnesia/test/mnesia_atomicity_test.erl b/lib/mnesia/test/mnesia_atomicity_test.erl index 06c4d16d71..cc32ba3826 100644 --- a/lib/mnesia/test/mnesia_atomicity_test.erl +++ b/lib/mnesia/test/mnesia_atomicity_test.erl @@ -1,18 +1,19 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2016. All Rights Reserved. %% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %% %% %CopyrightEnd% %% @@ -556,8 +557,8 @@ start_lock_waiter(BlockOpA, BlockOpB, Config) -> ?verify_mnesia([N1], [N2]). mk_tab_name(Prefix) -> - {Mega, Sec, Micro} = erlang:now(), - list_to_atom(lists:concat([Prefix , Mega, '_', Sec, '_', Micro])). + Count = erlang:unique_integer([monotonic,positive]), + list_to_atom(lists:concat([Prefix , '_', Count])). lock_waiter_fun(Op, TabName, Val) -> case Op of @@ -699,11 +700,19 @@ start_restart_check(RestartOp, ReplicaNeed, Config) -> %% mnesia shall be killed at that node, where A is reading %% the information from - kill_where_to_read(TabName, N1, [N2, N3]), + Read = kill_where_to_read(TabName, N1, [N2, N3]), %% wait some time to let mnesia go down and spread those news around %% fun A shall be able to finish its job before being restarted - wait(500), + Wait = fun(Loop) -> + wait(300), + sys:get_status(mnesia_monitor), + case lists:member(Read, mnesia_lib:val({current, db_nodes})) of + true -> Loop(Loop); + false -> ok + end + end, + Wait(Wait), A ! go_ahead, %% the sticky write doesnt work on remote nodes !!! @@ -771,10 +780,12 @@ kill_where_to_read(TabName, N1, Nodes) -> Read = rpc:call(N1,mnesia,table_info, [TabName, where_to_read]), case lists:member(Read, Nodes) of true -> - mnesia_test_lib:kill_mnesia([Read]); + mnesia_test_lib:kill_mnesia([Read]), + Read; false -> ?error("Fault while killing Mnesia: ~p~n", [Read]), - mnesia_test_lib:kill_mnesia(Nodes) + mnesia_test_lib:kill_mnesia(Nodes), + Read end. sync_tid_release() -> |
