diff options
Diffstat (limited to 'lib/mnesia')
-rw-r--r-- | lib/mnesia/examples/mnesia_tpcb.erl | 56 | ||||
-rw-r--r-- | lib/mnesia/src/mnesia_controller.erl | 15 | ||||
-rw-r--r-- | lib/mnesia/src/mnesia_event.erl | 2 | ||||
-rw-r--r-- | lib/mnesia/src/mnesia_locker.erl | 6 | ||||
-rw-r--r-- | lib/mnesia/src/mnesia_recover.erl | 66 | ||||
-rw-r--r-- | lib/mnesia/src/mnesia_tm.erl | 3 | ||||
-rw-r--r-- | lib/mnesia/test/Makefile | 3 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia.spec.vxworks | 362 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_bench.spec | 1 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_bench_SUITE.erl | 69 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_recovery_test.erl | 92 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_test_lib.erl | 16 |
12 files changed, 227 insertions, 464 deletions
diff --git a/lib/mnesia/examples/mnesia_tpcb.erl b/lib/mnesia/examples/mnesia_tpcb.erl index 903c53a21c..f36b43a495 100644 --- a/lib/mnesia/examples/mnesia_tpcb.erl +++ b/lib/mnesia/examples/mnesia_tpcb.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2010. 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 @@ -99,9 +99,13 @@ replica_test/1, sticky_replica_test/1, remote_test/1, - remote_frag2_test/1 + remote_frag2_test/1, + + conflict_benchmark/1 ]). +-include_lib("common_test/include/ct_event.hrl"). + -define(SECOND, 1000000). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -191,8 +195,10 @@ driver_nodes = [node()], n_drivers_per_node = 1, use_running_mnesia = false, + seed, stop_after = timer:minutes(15), % Minimum 15 min report_interval = timer:minutes(1), + send_bench_report = false, use_sticky_locks = false, spawn_near_branch = false, activity_type = transaction, @@ -397,8 +403,30 @@ config(remote_frag2_test, ReplicaType) -> {stop_after, timer:minutes(1)}, {report_interval, timer:seconds(10)}, {reuse_history_id, true} + ]; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Ten drivers per node, tables replicated to all nodes, single branch + +config(conflict_benchmark, ReplicaType) -> + Remote = nodes(), + Local = node(), + Nodes = [Local | Remote], + [{seed, {1326,448637,337711}}, + {db_nodes, Nodes}, + {driver_nodes, Nodes}, + {replica_nodes, Nodes}, + {n_drivers_per_node, 10}, + {n_branches, 1}, + {n_accounts_per_branch, 10}, + {replica_type, ReplicaType}, + {stop_after, timer:minutes(1)}, + {report_interval, timer:seconds(10)}, + {send_bench_report, true}, + {reuse_history_id, true} ]. + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% start(What, ReplicaType) -> @@ -422,6 +450,9 @@ remote_test(ReplicaType) -> remote_frag2_test(ReplicaType) -> start(remote_frag2_test, ReplicaType). +conflict_benchmark(ReplicaType) -> + start(config(conflict_benchmark, ReplicaType)). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Args is a list of {Key, Val} tuples where Key is a field name %% in either the record tab_config or run_config. Unknown keys are ignored. @@ -866,6 +897,7 @@ add_time(Acc, New) -> show_report(State) -> Now = now_to_micros(erlang:now()), Iters = State#reporter_state.n_iters, + Cfg = State#reporter_state.run_config, Time = State#reporter_state.curr, Max = Time#time.max_time, N = Time#time.n_trans, @@ -888,7 +920,17 @@ show_report(State) -> "duration of longest transaction was ~p milliseconds~n", [Tps, BruttoTps, Max div 1000]) end, - State#reporter_state{prev_tps = Tps, prev_micros = Now}. + case Cfg#run_config.send_bench_report of + true -> + ct_event:notify( + #event{name = benchmark_data, + data = [{suite,"mnesia_tpcb"}, + {value,Tps}]}); + _ -> + ok + end, + + State#reporter_state{prev_tps = Tps, prev_micros = Now}. signed_diff(Iters, Curr, Prev) -> case Iters > 1 of @@ -955,7 +997,13 @@ alloc_local_branches([], Specs, OrphanBranches) -> {Specs, OrphanBranches}. driver_init(DS, AllBranches) -> - Seed = erlang:now(), + case (DS#driver_state.run_config)#run_config.seed of + undefined -> + Seed = erlang:now(); + Seed -> + Seed + end, + DS2 = if DS#driver_state.n_local_branches =:= 0 -> diff --git a/lib/mnesia/src/mnesia_controller.erl b/lib/mnesia/src/mnesia_controller.erl index d488a33d67..ec67d9ec12 100644 --- a/lib/mnesia/src/mnesia_controller.erl +++ b/lib/mnesia/src/mnesia_controller.erl @@ -593,6 +593,12 @@ multicall(Nodes, Msg) -> {PatchedGood, Bad}. %% Make the replies look like rpc:multicalls.. %% rpc:multicall(Nodes, ?MODULE, call, [Msg]). +next_async_dump_log() -> + Interval = mnesia_monitor:get_env(dump_log_time_threshold), + Msg = {next_async_dump_log, time_threshold}, + Ref = erlang:send_after(Interval, self(), Msg), + Ref. + %%%---------------------------------------------------------------------- %%% Callback functions from gen_server %%%---------------------------------------------------------------------- @@ -614,9 +620,7 @@ init([Parent]) -> mnesia_lib:unset(original_nodes), mnesia_recover:connect_nodes(Diff), - Interval = mnesia_monitor:get_env(dump_log_time_threshold), - Msg = {async_dump_log, time_threshold}, - {ok, Ref} = timer:send_interval(Interval, Msg), + Ref = next_async_dump_log(), mnesia_dumper:start_regulator(), Empty = gb_trees:empty(), @@ -1121,6 +1125,11 @@ handle_sync_tabs([], _From) -> %% {stop, Reason, State} (terminate/2 is called) %%---------------------------------------------------------------------- +handle_info({next_async_dump_log, InitBy}, State) -> + async_dump_log(InitBy), + Ref = next_async_dump_log(), + noreply(State#state{dump_log_timer_ref=Ref}); + handle_info({async_dump_log, InitBy}, State) -> Worker = #dump_log{initiated_by = InitBy}, State2 = add_worker(Worker, State), diff --git a/lib/mnesia/src/mnesia_event.erl b/lib/mnesia/src/mnesia_event.erl index 8085155fd5..9fd0342d31 100644 --- a/lib/mnesia/src/mnesia_event.erl +++ b/lib/mnesia/src/mnesia_event.erl @@ -153,7 +153,7 @@ handle_system_event({mnesia_down, Node}, State) -> end; handle_system_event({mnesia_overload, Details}, State) -> - report_warning("Mnesia is overloaded: ~p~n", [Details]), + report_warning("Mnesia is overloaded: ~w~n", [Details]), {ok, State}; handle_system_event({mnesia_info, Format, Args}, State) -> diff --git a/lib/mnesia/src/mnesia_locker.erl b/lib/mnesia/src/mnesia_locker.erl index a22c95d454..14011003d3 100644 --- a/lib/mnesia/src/mnesia_locker.erl +++ b/lib/mnesia/src/mnesia_locker.erl @@ -1177,9 +1177,9 @@ system_code_change(State, _Module, _OldVsn, _Extra) -> %% AXD301 patch sort pids according to R9B sort order %%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Om R9B == true, g�rs j�mf�relsen som i R9B plain. -%% Om R9B == false, g�rs j�mf�relsen som i alla andra releaser. -%% cmp_tid(T1, T2) returnerar -1 om T1 < T2, 0 om T1 = T2 och 1 om T1 > T2. +%% Om R9B == true, the comparison is done as in R9B plain. +%% Om R9B == false, the comparison is done as in any other release. +%% cmp_tid(T1, T2) returns -1 if T1 < T2, 0 if T1 = T2 and 1 if T1 > T2. -define(VERSION_MAGIC, 131). -define(ATOM_EXT, 100). diff --git a/lib/mnesia/src/mnesia_recover.erl b/lib/mnesia/src/mnesia_recover.erl index 4750291a10..b64f428f15 100644 --- a/lib/mnesia/src/mnesia_recover.erl +++ b/lib/mnesia/src/mnesia_recover.erl @@ -45,7 +45,8 @@ note_log_decision/2, outcome/2, start/0, - start_garb/0, + next_garb/0, + next_check_overload/0, still_pending/1, sync_trans_tid_serial/1, sync/0, @@ -91,10 +92,38 @@ start() -> init() -> call(init). -start_garb() -> +next_garb() -> Pid = whereis(mnesia_recover), - {ok, _} = timer:send_interval(timer:minutes(2), Pid, garb_decisions), - {ok, _} = timer:send_interval(timer:seconds(10), Pid, check_overload). + erlang:send_after(timer:minutes(2), Pid, garb_decisions). + +next_check_overload() -> + Pid = whereis(mnesia_recover), + erlang:send_after(timer:seconds(10), Pid, check_overload). + + +do_check_overload(S) -> + %% Time to check if mnesia_tm is overloaded + case whereis(mnesia_tm) of + Pid when is_pid(Pid) -> + Threshold = 100, + Prev = S#state.tm_queue_len, + {message_queue_len, Len} = + process_info(Pid, message_queue_len), + if + Len > Threshold, Prev > Threshold -> + What = {mnesia_tm, message_queue_len, [Prev, Len]}, + mnesia_lib:report_system_event({mnesia_overload, What}), + mnesia_lib:overload_set(mnesia_tm, true), + S#state{tm_queue_len = 0}; + Len > Threshold -> + S#state{tm_queue_len = Len}; + true -> + mnesia_lib:overload_set(mnesia_tm, false), + S#state{tm_queue_len = 0} + end; + undefined -> + S + end. allow_garb() -> cast(allow_garb). @@ -853,34 +882,13 @@ handle_info({connect_nodes, Ns, From}, State) -> handle_call({connect_nodes,Ns},From,State); handle_info(check_overload, S) -> - %% Time to check if mnesia_tm is overloaded - case whereis(mnesia_tm) of - Pid when is_pid(Pid) -> - - Threshold = 100, - Prev = S#state.tm_queue_len, - {message_queue_len, Len} = - process_info(Pid, message_queue_len), - if - Len > Threshold, Prev > Threshold -> - What = {mnesia_tm, message_queue_len, [Prev, Len]}, - mnesia_lib:report_system_event({mnesia_overload, What}), - mnesia_lib:overload_set(mnesia_tm, true), - {noreply, S#state{tm_queue_len = 0}}; - - Len > Threshold -> - {noreply, S#state{tm_queue_len = Len}}; - - true -> - mnesia_lib:overload_set(mnesia_tm, false), - {noreply, S#state{tm_queue_len = 0}} - end; - undefined -> - {noreply, S} - end; + State2 = do_check_overload(S), + next_check_overload(), + {noreply, State2}; handle_info(garb_decisions, State) -> do_garb_decisions(), + next_garb(), {noreply, State}; handle_info({force_decision, Tid}, State) -> diff --git a/lib/mnesia/src/mnesia_tm.erl b/lib/mnesia/src/mnesia_tm.erl index 0af7f55c06..b5b14ac05b 100644 --- a/lib/mnesia/src/mnesia_tm.erl +++ b/lib/mnesia/src/mnesia_tm.erl @@ -103,7 +103,8 @@ init(Parent) -> end, mnesia_schema:purge_tmp_files(), - mnesia_recover:start_garb(), + mnesia_recover:next_garb(), + mnesia_recover:next_check_overload(), ?eval_debug_fun({?MODULE, init}, [{nodes, AllOthers}]), diff --git a/lib/mnesia/test/Makefile b/lib/mnesia/test/Makefile index 509dddc85d..45ce5b1983 100644 --- a/lib/mnesia/test/Makefile +++ b/lib/mnesia/test/Makefile @@ -26,6 +26,7 @@ include $(ERL_TOP)/make/$(TARGET)/otp.mk MODULES= \ mt \ mnesia_SUITE \ + mnesia_bench_SUITE \ mnesia_test_lib \ mnesia_install_test \ mnesia_registry_test \ @@ -117,7 +118,7 @@ release_spec: opt release_tests_spec: opt $(INSTALL_DIR) "$(RELSYSDIR)" - $(INSTALL_DATA) mnesia.spec mnesia.cover $(ERL_FILES) $(HRL_FILES) "$(RELSYSDIR)" + $(INSTALL_DATA) mnesia.spec mnesia_bench.spec mnesia.cover $(ERL_FILES) $(HRL_FILES) "$(RELSYSDIR)" $(INSTALL_SCRIPT) mt $(INSTALL_PROGS) "$(RELSYSDIR)" # chmod -R u+w "$(RELSYSDIR)" # @tar cf - *_SUITE_data | (cd "$(RELSYSDIR)"; tar xf -) diff --git a/lib/mnesia/test/mnesia.spec.vxworks b/lib/mnesia/test/mnesia.spec.vxworks deleted file mode 100644 index 11c01ea3fe..0000000000 --- a/lib/mnesia/test/mnesia.spec.vxworks +++ /dev/null @@ -1,362 +0,0 @@ -{topcase, {dir, "../mnesia_test"}}. -{require_nodenames, 3}. -{diskless, true}. -{skip, {mnesia_measure_test, all, "Too heavy"}}. -%{mnesia_install_test, silly_durability} 'IMPL' -%{mnesia_install_test, silly_move} 'IMPL' -{skip, {mnesia_install_test, silly_upgrade, "Uses disk"}}. -%{mnesia_install_test, conflict} 'IMPL' -%{mnesia_install_test, dist} 'IMPL' -{skip, {mnesia_examples_test, all, "Uses disk"}}. -{skip, {mnesia_nice_coverage_test, all, "Uses disk"}}. - -%{mnesia_evil_coverage_test, system_info} 'IMPL' -%{mnesia_evil_coverage_test, table_info} 'IMPL' -%{mnesia_evil_coverage_test, error_description} 'IMPL' -{skip, {mnesia_evil_coverage_test, db_node_lifecycle, "Uses disk"}}. -{skip, {mnesia_evil_coverage_test, local_content, "Uses disk"}}. -%{mnesia_evil_coverage_test, start_and_stop} 'IMPL' -%{mnesia_evil_coverage_test, transaction} 'IMPL' -{skip, {mnesia_evil_coverage_test, checkpoint, "Uses disk"}}. -{skip, {mnesia_evil_backup, backup, "Uses disk"}}. -{skip, {mnesia_evil_backup, global_backup_checkpoint, "Uses disk"}}. -{skip, {mnesia_evil_backup, incremental_backup_checkpoint, "Uses disk"}}. -{skip, {mnesia_evil_backup, local_backup_checkpoint, "Uses disk"}}. -{skip, {mnesia_evil_backup, selective_backup_checkpoint, "Uses disk"}}. -{skip, {mnesia_evil_backup, restore_errors, "Uses disk"}}. -{skip, {mnesia_evil_backup, restore_clear, "Uses disk"}}. -{skip, {mnesia_evil_backup, restore_keep, "Uses disk"}}. -{skip, {mnesia_evil_backup, restore_recreate, "Uses disk"}}. -{skip, {mnesia_evil_backup, traverse_backup, "Uses disk"}}. -{skip, {mnesia_evil_backup, install_fallback, "Uses disk"}}. -{skip, {mnesia_evil_backup, uninstall_fallback, "Uses disk"}}. -{skip, {mnesia_evil_backup, local_fallback, "Uses disk"}}. -%{mnesia_evil_coverage_test, table_lifecycle} 'IMPL' -{skip, {mnesia_evil_coverage_test, replica_management, "Uses disk"}}. -%{mnesia_evil_coverage_test, change_table_access_mode} 'IMPL' -%{mnesia_evil_coverage_test, change_table_load_order} 'IMPL' -{skip, {mnesia_evil_coverage_test, set_master_nodes, "Uses disk"}}. -{skip, {mnesia_evil_coverage_test, offline_set_master_nodes, "Uses disk"}}. -{skip, {mnesia_evil_coverage_test, replica_location, "Uses disk"}}. -%{mnesia_evil_coverage_test, add_table_index_ram} 'IMPL' -{skip, {mnesia_trans_access_test, add_table_index_disc, "Uses disc"}}. -{skip, {mnesia_trans_access_test, add_table_index_disc_only, "Uses disc"}}. -%{mnesia_evil_coverage_test, create_live_table_index_ram} 'IMPL' -{skip, {mnesia_trans_access_test, create_live_table_index_disc, "Uses disc"}}. -{skip, {mnesia_trans_access_test, create_live_table_index_disc_only, "Uses disc"}}. -%{mnesia_evil_coverage_test, del_table_index_ram} 'IMPL' -{skip, {mnesia_trans_access_test, del_table_index_disc, "Uses disc"}}. -{skip, {mnesia_trans_access_test, del_table_index_disc_only, "Uses disc"}}. -{skip, {mnesia_trans_access_test, idx_schema_changes_ram, "Uses disk"}}. -{skip, {mnesia_trans_access_test, idx_schema_changes_disc, "Uses disc"}}. -{skip, {mnesia_trans_access_test, idx_schema_changes_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_write_ram} 'IMPL' - -{skip, {mnesia_dirty_access_test, dirty_write_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_write_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_read_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_read_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_read_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_update_counter_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_update_counter_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_update_counter_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_delete_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_delete_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_delete_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_delete_object_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_delete_object_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_delete_object_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_match_object_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_match_object_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_match_object_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_index_match_object_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_index_match_object_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_index_match_object_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_index_read_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_index_read_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_index_read_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_index_update_set_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_index_update_set_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_index_update_set_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_index_update_bag_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_index_update_bag_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_index_update_bag_disc_only, "Uses disc"}}. -%{mnesia_dirty_access_test, dirty_iter_ram} 'IMPL' -{skip, {mnesia_dirty_access_test, dirty_iter_disc, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, dirty_iter_disc_only, "Uses disc"}}. -{skip, {mnesia_dirty_access_test, admin_tests, "Uses disk"}}. - -%{mnesia_trans_access_test, write} 'IMPL' -%{mnesia_trans_access_test, read} 'IMPL' -%{mnesia_trans_access_test, wread} 'IMPL' -%{mnesia_trans_access_test, delete} 'IMPL' -%{mnesia_trans_access_test, delete_object} 'IMPL' -%{mnesia_trans_access_test, match_object} 'IMPL' -%{mnesia_trans_access_test, all_keys} 'IMPL' -%{mnesia_trans_access_test, index_match_object} 'IMPL' -%{mnesia_trans_access_test, index_read} 'IMPL' -%{mnesia_trans_access_test, index_update_set} 'IMPL' -%{mnesia_trans_access_test, index_update_bag} 'IMPL' -{skip, {mnesia_evil_coverage_test, dump_tables, "Uses disk"}}. -{skip, {mnesia_evil_coverage_test, dump_log, "Uses disk"}}. -%{mnesia_evil_coverage_test, wait_for_tables} 'IMPL' -{skip, {mnesia_evil_coverage_test, force_load_table, "Uses disk"}}. -%{mnesia_evil_coverage_test, user_properties} 'IMPL' -%{mnesia_evil_coverage_test, record_name_dirty_access_ram} 'IMPL' -{skip, {mnesia_evil_coverage_test, record_name_dirty_access_disc, "Uses disc"}}. -{skip, {mnesia_evil_coverage_test, record_name_dirty_access_disc_only, "Uses disc"}}. -%{mnesia_evil_coverage_test, snmp_open_table} 'IMPL' -%{mnesia_evil_coverage_test, snmp_close_table} 'IMPL' -%{mnesia_evil_coverage_test, snmp_get_next_index} 'IMPL' -%{mnesia_evil_coverage_test, snmp_get_row} 'IMPL' -%{mnesia_evil_coverage_test, snmp_get_mnesia_key} 'IMPL' -%{mnesia_evil_coverage_test, snmp_update_counter} 'IMPL' -%{mnesia_evil_coverage_test, info} 'IMPL' -%{mnesia_evil_coverage_test, schema_0} 'IMPL' -%{mnesia_evil_coverage_test, schema_1} 'IMPL' -%{mnesia_evil_coverage_test, view_0} 'IMPL' -{skip, {mnesia_evil_coverage_test, view_1, "Uses disk"}}. -{skip, {mnesia_evil_coverage_test, view_2, "Uses disk"}}. -%{mnesia_evil_coverage_test, lkill} 'IMPL' -%{mnesia_evil_coverage_test, kill} 'IMPL' - -%{mnesia_config_test, access_module} 'IMPL' -%{mnesia_config_test, auto_repair} 'IMPL' -{skip, {mnesia_config_test, backup_module, "Uses disk"}}. -{skip, {mnesia_config_test, dynamic_connect, "Uses disk"}}. -%{mnesia_config_test, debug} 'IMPL' -%{mnesia_config_test, dir} 'IMPL' -{skip, {mnesia_config_test, dump_log_load_regulation, "Uses disk"}}. -{skip, {mnesia_config_test, dump_log_time_threshold, "Uses disk"}}. -{skip, {mnesia_config_test, dump_log_write_threshold, "Uses disk"}}. -{skip, {mnesia_config_test, dump_log_update_in_place, "Uses disk"}}. -{skip, {mnesia_config_test, embedded_mnemosyne, "Uses Mnemosyne"}}. -%{mnesia_config_test, event_module} 'IMPL' -{skip, {mnesia_config_test, ignore_fallback_at_startup, "Not Yet impl"}}. -%{mnesia_config_test, inconsistent_database} 'IMPL' -{skip, {mnesia_config_test, max_wait_for_decision, "Not Yet impl"}}. -{skip, {mnesia_config_test, start_one_disc_full_then_one_disc_less, "Uses disc"}}. -{skip, {mnesia_config_test, start_first_one_disc_less_then_one_disc_full, "Uses disc"}}. -%%{skip, {mnesia_config_test, start_first_one_disc_less_then_two_more_disc_less, "Uses disc"}}. -{skip, {mnesia_config_test, schema_location_and_extra_db_nodes_combinations, "Uses disk"}}. -{skip, {mnesia_config_test, table_load_to_disc_less_nodes, "Uses disc"}}. -{skip, {mnesia_config_test, schema_merge, "Uses Disc"}}. -%{mnesia_config_test, unknown_config} 'IMPL' -%{mnesia_registry_test, good_dump} 'IMPL' -%{mnesia_registry_test, bad_dump} 'IMPL' - -%{mnesia_atomicity_test, explicit_abort_in_middle_of_trans} 'IMPL' -%{mnesia_atomicity_test, runtime_error_in_middle_of_trans} 'IMPL' -%{mnesia_atomicity_test, kill_self_in_middle_of_trans} 'IMPL' -%{mnesia_atomicity_test, throw_in_middle_of_trans} 'IMPL' -%{mnesia_atomicity_test, mnesia_down_during_infinite_trans} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_sw_rt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_sw_wt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wr_r} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_sw_sw} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_sw_w} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_sw_wr} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wr_wt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wr_sw} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wr_w} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_r_sw} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_r_w} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_r_wt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_rt_sw} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_rt_w} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_rt_wt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wt_r} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wt_w} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wt_rt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wt_wt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wt_wr} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_wt_sw} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_w_wr} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_w_sw} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_w_r} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_w_w} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_w_rt} 'IMPL' -%{mnesia_atomicity_test, lock_waiter_w_wt} 'IMPL' -%{mnesia_atomicity_test, restart_r_one} 'IMPL' -%{mnesia_atomicity_test, restart_w_one} 'IMPL' -%{mnesia_atomicity_test, restart_rt_one} 'IMPL' -%{mnesia_atomicity_test, restart_wt_one} 'IMPL' -%{mnesia_atomicity_test, restart_wr_one} 'IMPL' -%{mnesia_atomicity_test, restart_sw_one} 'IMPL' -%{mnesia_atomicity_test, restart_r_two} 'IMPL' -%{mnesia_atomicity_test, restart_w_two} 'IMPL' -%{mnesia_atomicity_test, restart_rt_two} 'IMPL' -%{mnesia_atomicity_test, restart_wt_two} 'IMPL' -%{mnesia_atomicity_test, restart_wr_two} 'IMPL' -%{mnesia_atomicity_test, restart_sw_two} 'IMPL' - -%{mnesia_isolation_test, no_conflict} 'IMPL' -%{mnesia_isolation_test, simple_queue_conflict} 'IMPL' -%{mnesia_isolation_test, advanced_queue_conflict} 'IMPL' -%{mnesia_isolation_test, simple_deadlock_conflict} 'IMPL' -%{mnesia_isolation_test, advanced_deadlock_conflict} 'IMPL' -%{mnesia_isolation_test, lock_burst} 'IMPL' -%{mnesia_isolation_test, basic_sticky_functionality} 'IMPL' -%{mnesia_isolation_test, create_table} 'IMPL' -%{mnesia_isolation_test, delete_table} 'IMPL' -%{mnesia_isolation_test, move_table_copy} 'IMPL' -%{mnesia_isolation_test, add_table_index} 'IMPL' -%{mnesia_isolation_test, del_table_index} 'IMPL' -%{mnesia_isolation_test, transform_table} 'IMPL' -%{mnesia_isolation_test, snmp_open_table} 'IMPL' -%{mnesia_isolation_test, snmp_close_table} 'IMPL' -{skip, {mnesia_isolation_test, change_table_copy_type, "Uses disk"}}. -%{mnesia_isolation_test, change_table_access} 'IMPL' -%{mnesia_isolation_test, add_table_copy} 'IMPL' -%{mnesia_isolation_test, del_table_copy} 'IMPL' -{skip, {mnesia_isolation_test, dump_tables, "Uses disk"}}. -{skip, {mnesia_isolation_test, extra_admin_tests, "Uses disk"}}. -%{mnesia_isolation_test, del_table_copy_1} 'IMPL' -%{mnesia_isolation_test, del_table_copy_2} 'IMPL' -%{mnesia_isolation_test, del_table_copy_3} 'IMPL' -%{mnesia_isolation_test, add_table_copy_1} 'IMPL' -%{mnesia_isolation_test, add_table_copy_2} 'IMPL' -%{mnesia_isolation_test, add_table_copy_3} 'IMPL' -%{mnesia_isolation_test, add_table_copy_4} 'IMPL' -%{mnesia_isolation_test, move_table_copy_1} 'IMPL' -%{mnesia_isolation_test, move_table_copy_2} 'IMPL' -%{mnesia_isolation_test, move_table_copy_3} 'IMPL' -%{mnesia_isolation_test, move_table_copy_4} 'IMPL' -%{mnesia_isolation_test, dirty_updates_visible_direct} 'IMPL' -%{mnesia_isolation_test, dirty_reads_regardless_of_trans} 'IMPL' -%{mnesia_isolation_test, trans_update_invisibible_outside_trans} 'IMPL' -%{mnesia_isolation_test, trans_update_visible_inside_trans} 'IMPL' -%{mnesia_isolation_test, write_shadows} 'IMPL' -%{mnesia_isolation_test, delete_shadows} 'IMPL' -%{mnesia_isolation_test, write_delete_shadows_bag} 'IMPL' - -{skip, {mnesia_durability_test, all, "Uses disk "}}. -%{mnesia_durability_test, load_local_contents_directly} 'IMPL' -%{mnesia_durability_test, load_directly_when_all_are_ram_copiesA} 'IMPL' -%{mnesia_durability_test, load_directly_when_all_are_ram_copiesB} 'IMPL' -%{skip, {mnesia_durability_test, late_load_when_all_are_ram_copies_on_ram_nodes1, "Uses disk schema"}}. -%{skip, {mnesia_durability_test, late_load_when_all_are_ram_copies_on_ram_nodes2, "Uses disk schema"}}. -%{skip, {mnesia_durability_test, load_when_last_replica_becomes_available, "Uses disk"}}. -%{skip, {mnesia_durability_test, load_when_we_have_down_from_all_other_replica_nodes, "Uses disk"}}. -%{skip, {mnesia_durability_test, late_load_transforms_into_disc_load, "Uses disc"}}. -%{mnesia_durability_test, late_load_leads_to_hanging} 'IMPL' -%{mnesia_durability_test, force_load_when_nobody_intents_to_load} 'IMPL' -%{mnesia_durability_test, force_load_when_someone_has_decided_to_load} 'IMPL' -%{mnesia_durability_test, force_load_when_someone_else_already_has_loaded} 'IMPL' -%{mnesia_durability_test, force_load_when_we_has_loaded} 'IMPL' -%{mnesia_durability_test, force_load_on_a_non_local_table} 'IMPL' -%{mnesia_durability_test, force_load_when_the_table_does_not_exist} 'IMPL' -%{mnesia_durability_test, master_nodes} 'IMPL' -%{mnesia_durability_test, master_on_non_local_tables} 'IMPL' -%{mnesia_durability_test, remote_force_load_with_local_master_node} 'IMPL' -%{mnesia_durability_test, dump_ram_copies} 'IMPL' -%{skip, {mnesia_durability_test, dump_disc_copies, "Uses disc"}}. -%{skip, {mnesia_durability_test, dump_disc_only, "Uses disc"}}. -%{skip, {mnesia_durability_test, durability_of_disc_copies, "Uses disc"}}. -%{skip, {mnesia_durability_test, durability_of_disc_only_copies, "Uses disc"}}. - -{skip, {mnesia_recovery_test, mnesia_down, "Uses Disk"}}. -%{mnesia_recovery_test, no_master_2} 'IMPL' -%{mnesia_recovery_test, no_master_3} 'IMPL' -%{mnesia_recovery_test, one_master_2} 'IMPL' -%{mnesia_recovery_test, one_master_3} 'IMPL' -%{mnesia_recovery_test, two_master_2} 'IMPL' -%{mnesia_recovery_test, two_master_3} 'IMPL' -%{mnesia_recovery_test, all_master_2} 'IMPL' -%{mnesia_recovery_test, all_master_3} 'IMPL' -{skip, {mnesia_recovery_test, mnesia_down_during_startup_disk_ram, "Uses disk"}}. -%{mnesia_recovery_test, mnesia_down_during_startup_init_ram} 'IMPL' -{skip, {mnesia_recovery_test, mnesia_down_during_startup_init_disc, "Uses disc"}}. -{skip, {mnesia_recovery_test, mnesia_down_during_startup_init_disc_only, "Uses disc"}}. -%{mnesia_recovery_test, mnesia_down_during_startup_tm_ram} 'IMPL' -{skip, {mnesia_recovery_test, mnesia_down_during_startup_tm_disc, "Uses disc"}}. -{skip, {mnesia_recovery_test, mnesia_down_during_startup_tm_disc_only, "Uses disc"}}. -%{mnesia_recovery_test, explicit_stop_during_snmp} 'IMPL' - -{skip, {mnesia_recovery_test, schema_trans, "Uses Disk, needs disk log"}}. -{skip, {mnesia_recovery_test, async_dirty, "Uses disc"}}. -{skip, {mnesia_recovery_test, sync_dirty, "Uses disc"}}. -{skip, {mnesia_recovery_test, sym_trans, "Uses disc"}}. -{skip, {mnesia_recovery_test, asym_trans, "Uses disc"}}. - -{skip, {mnesia_recovery_test, after_full_disc_partition, "Not Yet impl"}}. -{skip, {mnesia_recovery_test, after_corrupt_files, "Uses disk"}}. - -%{mnesia_evil_coverage_test, subscriptions} 'IMPL' -%{mnesia_evil_coverage_test, nested_trans_both_ok} 'IMPL' -%{mnesia_evil_coverage_test, nested_trans_child_dies} 'IMPL' -%{mnesia_evil_coverage_test, nested_trans_parent_dies} 'IMPL' -%{mnesia_evil_coverage_test, nested_trans_both_dies} 'IMPL' -%{mnesia_evil_coverage_test, mix_of_trans_sync_dirty} 'IMPL' -%{mnesia_evil_coverage_test, mix_of_trans_async_dirty} 'IMPL' -%{mnesia_evil_coverage_test, mix_of_trans_ets} 'IMPL' - -{skip, {mnesia_recovery_test, disc_less, "Uses disc (on the other nodes)"}}. -{skip, {mnesia_recovery_test, system_upgrade, "Not Yet impl"}}. -%{mnesia_consistency_test, consistency_after_restart_1_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_restart_1_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_restart_1_disc_only, "Uses disc"}}. -%{mnesia_consistency_test, consistency_after_restart_2_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_restart_2_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_restart_2_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_dump_tables_1_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, consistency_after_dump_tables_2_ram, "Uses disk"}}. -%{mnesia_consistency_test, consistency_after_add_replica_2_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_add_replica_2_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_add_replica_2_disc_only, "Uses disc"}}. -%{mnesia_consistency_test, consistency_after_add_replica_3_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_add_replica_3_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_add_replica_3_disc_only, "Uses disc"}}. -%{mnesia_consistency_test, consistency_after_del_replica_2_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_del_replica_2_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_del_replica_2_disc_only, "Uses disc"}}. -%{mnesia_consistency_test, consistency_after_del_replica_3_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_del_replica_3_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_del_replica_3_disc_only, "Uses disc"}}. -%{mnesia_consistency_test, consistency_after_move_replica_2_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_move_replica_2_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_move_replica_2_disc_only, "Uses disc"}}. -%{mnesia_consistency_test, consistency_after_move_replica_3_ram} 'IMPL' -{skip, {mnesia_consistency_test, consistency_after_move_replica_3_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_move_replica_3_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_transform_table, "Not yet implemented"}}. -{skip, {mnesia_consistency_test, consistency_after_change_table_copy_type, "Not yet implemented"}}. -{skip, {mnesia_consistency_test, consistency_after_fallback_2_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, consistency_after_fallback_2_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_fallback_2_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_fallback_3_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, consistency_after_fallback_3_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_fallback_3_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_restore_clear_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, consistency_after_restore_clear_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_restore_clear_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_restore_recreate_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, consistency_after_restore_recreate_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_restore_recreate_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, consistency_after_rename_of_node, "Not yet implemented"}}. -{skip, {mnesia_consistency_test, updates_during_checkpoint_activation, "Uses disk"}}. -%{skip, {mnesia_consistency_test, updates_during_checkpoint_activation_2_disc, "Uses disc"}}. -%{skip, {mnesia_consistency_test, updates_during_checkpoint_activation_2_disc_only, "Uses disc"}}. -%%{mnesia_consistency_test, updates_during_checkpoint_activation_3_ram} 'IMPL' -%{skip, {mnesia_consistency_test, updates_during_checkpoint_activation_3_disc, "Uses disc"}}. -%{skip, {mnesia_consistency_test, updates_during_checkpoint_activation_3_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, updates_during_checkpoint_iteration, "Uses disk"}}. -%{skip, {mnesia_consistency_test, updates_during_checkpoint_iteration_2_disc, "Uses disc"}}. -%{skip, {mnesia_consistency_test, updates_during_checkpoint_iteration_2_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, load_table_with_activated_checkpoint_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, load_table_with_activated_checkpoint_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, load_table_with_activated_checkpoint_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, add_table_copy_to_table_with_activated_checkpoint_ram, "Uses disk"}}. -{skip, {mnesia_consistency_test, add_table_copy_to_table_with_activated_checkpoint_disc, "Uses disc"}}. -{skip, {mnesia_consistency_test, add_table_copy_to_table_with_activated_checkpoint_disc_only, "Uses disc"}}. -{skip, {mnesia_consistency_test, inst_fallback_process_dies, "Uses disk"}}. -{skip, {mnesia_consistency_test, fatal_when_inconsistency, "Uses disk"}}. -{skip, {mnesia_consistency_test, after_delete, "Uses disk"}}. -{skip, {mnesia_consistency_test, mnesia_down_during_backup_causes_switch, "Uses disk"}}. -{skip, {mnesia_consistency_test, mnesia_down_during_backup_causes_abort, "Uses disk"}}. -%{mnesia_consistency_test, cause_switch_after} 'IMPL' -%{mnesia_consistency_test, cause_abort_before} 'IMPL' -%{mnesia_consistency_test, cause_abort_after} 'IMPL' -%{mnesia_consistency_test, change_schema_before} 'IMPL' -%{mnesia_consistency_test, change_schema_after} 'IMPL' - diff --git a/lib/mnesia/test/mnesia_bench.spec b/lib/mnesia/test/mnesia_bench.spec new file mode 100644 index 0000000000..7b17cb5c4e --- /dev/null +++ b/lib/mnesia/test/mnesia_bench.spec @@ -0,0 +1 @@ +{suites,"../mnesia_test",[mnesia_bench_SUITE]}.
\ No newline at end of file diff --git a/lib/mnesia/test/mnesia_bench_SUITE.erl b/lib/mnesia/test/mnesia_bench_SUITE.erl new file mode 100644 index 0000000000..7cbf77f046 --- /dev/null +++ b/lib/mnesia/test/mnesia_bench_SUITE.erl @@ -0,0 +1,69 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2012. 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/. +%% +%% 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. +%% +%% %CopyrightEnd% +%% + +%% +-module(mnesia_bench_SUITE). +-author('[email protected]'). +-compile(export_all). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +suite() -> [{ct_hooks,[{ts_install_cth,[{nodenames,2}]}]}]. + + +all() -> + [{group,tpcb}]. + +groups() -> + [{tpcb,[{repeat,2}],[tpcb_conflict_ramcopies, + tpcb_conflict_disk_only_copies]}]. + +init_per_group(_GroupName, Config) -> + Config. + +end_per_group(_GroupName, Config) -> + Config. + +init_per_suite(Config) -> + Config. + +end_per_suite(Config) -> + Config. + +init_per_testcase(_Func, Conf) -> + Conf. + +end_per_testcase(_Func, _Conf) -> + ok. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +tpcb_conflict_ramcopies(_Config) -> + mnesia_tpcb:conflict_benchmark(ram_copies). + +tpcb_conflict_disk_only_copies(_Config) -> + mnesia_tpcb:conflict_benchmark(disc_only_copies). + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + diff --git a/lib/mnesia/test/mnesia_recovery_test.erl b/lib/mnesia/test/mnesia_recovery_test.erl index 625e6e824c..c4910a4b11 100644 --- a/lib/mnesia/test/mnesia_recovery_test.erl +++ b/lib/mnesia/test/mnesia_recovery_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2012. 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 @@ -99,21 +99,21 @@ groups() -> async_dirty_post_kill_coord_node, async_dirty_post_kill_coord_pid]}, {asym_trans, [], - [asym_trans_kill_part_ask, - asym_trans_kill_part_commit_vote, - asym_trans_kill_part_pre_commit, - asym_trans_kill_part_log_commit, - asym_trans_kill_part_do_commit, - asym_trans_kill_coord_got_votes, - asym_trans_kill_coord_pid_got_votes, - asym_trans_kill_coord_log_commit_rec, - asym_trans_kill_coord_pid_log_commit_rec, - asym_trans_kill_coord_log_commit_dec, - asym_trans_kill_coord_pid_log_commit_dec, - asym_trans_kill_coord_rec_acc_pre_commit_log_commit, - asym_trans_kill_coord_pid_rec_acc_pre_commit_log_commit, - asym_trans_kill_coord_rec_acc_pre_commit_done_commit, - asym_trans_kill_coord_pid_rec_acc_pre_commit_done_commit]}, + [asymtrans_part_ask, + asymtrans_part_commit_vote, + asymtrans_part_pre_commit, + asymtrans_part_log_commit, + asymtrans_part_do_commit, + asymtrans_coord_got_votes, + asymtrans_coord_pid_got_votes, + asymtrans_coord_log_commit_rec, + asymtrans_coord_pid_log_commit_rec, + asymtrans_coord_log_commit_dec, + asymtrans_coord_pid_log_commit_dec, + asymtrans_coord_rec_acc_pre_commit_log_commit, + asymtrans_coord_pid_rec_acc_pre_commit_log_commit, + asymtrans_coord_rec_acc_pre_commit_done_commit, + asymtrans_coord_pid_rec_acc_pre_commit_done_commit]}, {after_corrupt_files, [], [after_corrupt_files_decision_log_head, after_corrupt_files_decision_log_tail, @@ -978,8 +978,8 @@ do_async_dirty([Tab], _Fahter) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -asym_trans_kill_part_ask(suite) -> []; -asym_trans_kill_part_ask(Config) when is_list(Config) -> +asymtrans_part_ask(suite) -> []; +asymtrans_part_ask(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -989,8 +989,8 @@ asym_trans_kill_part_ask(Config) when is_list(Config) -> kill_after_debug_point(Part1, {Part1, {mnesia_tm, doit_ask_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_part_commit_vote(suite) -> []; -asym_trans_kill_part_commit_vote(Config) when is_list(Config) -> +asymtrans_part_commit_vote(suite) -> []; +asymtrans_part_commit_vote(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1000,8 +1000,8 @@ asym_trans_kill_part_commit_vote(Config) when is_list(Config) -> kill_after_debug_point(Part1, {Part1, {mnesia_tm, commit_participant, vote_yes}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_part_pre_commit(suite) -> []; -asym_trans_kill_part_pre_commit(Config) when is_list(Config) -> +asymtrans_part_pre_commit(suite) -> []; +asymtrans_part_pre_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1011,8 +1011,8 @@ asym_trans_kill_part_pre_commit(Config) when is_list(Config) -> kill_after_debug_point(Part1, {Part1, {mnesia_tm, commit_participant, pre_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_part_log_commit(suite) -> []; -asym_trans_kill_part_log_commit(Config) when is_list(Config) -> +asymtrans_part_log_commit(suite) -> []; +asymtrans_part_log_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1022,8 +1022,8 @@ asym_trans_kill_part_log_commit(Config) when is_list(Config) -> kill_after_debug_point(Part1, {Part1, {mnesia_tm, commit_participant, log_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_part_do_commit(suite) -> []; -asym_trans_kill_part_do_commit(Config) when is_list(Config) -> +asymtrans_part_do_commit(suite) -> []; +asymtrans_part_do_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1033,8 +1033,8 @@ asym_trans_kill_part_do_commit(Config) when is_list(Config) -> kill_after_debug_point(Part1, {Part1, {mnesia_tm, commit_participant, do_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_got_votes(suite) -> []; -asym_trans_kill_coord_got_votes(Config) when is_list(Config) -> +asymtrans_coord_got_votes(suite) -> []; +asymtrans_coord_got_votes(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1044,8 +1044,8 @@ asym_trans_kill_coord_got_votes(Config) when is_list(Config) -> kill_after_debug_point(Coord, {Coord, {mnesia_tm, multi_commit_asym_got_votes}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_pid_got_votes(suite) -> []; -asym_trans_kill_coord_pid_got_votes(Config) when is_list(Config) -> +asymtrans_coord_pid_got_votes(suite) -> []; +asymtrans_coord_pid_got_votes(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1055,8 +1055,8 @@ asym_trans_kill_coord_pid_got_votes(Config) when is_list(Config) -> kill_after_debug_point(coord_pid, {Coord, {mnesia_tm, multi_commit_asym_got_votes}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_log_commit_rec(suite) -> []; -asym_trans_kill_coord_log_commit_rec(Config) when is_list(Config) -> +asymtrans_coord_log_commit_rec(suite) -> []; +asymtrans_coord_log_commit_rec(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1066,8 +1066,8 @@ asym_trans_kill_coord_log_commit_rec(Config) when is_list(Config) -> kill_after_debug_point(Coord, {Coord, {mnesia_tm, multi_commit_asym_log_commit_rec}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_pid_log_commit_rec(suite) -> []; -asym_trans_kill_coord_pid_log_commit_rec(Config) when is_list(Config) -> +asymtrans_coord_pid_log_commit_rec(suite) -> []; +asymtrans_coord_pid_log_commit_rec(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1077,8 +1077,8 @@ asym_trans_kill_coord_pid_log_commit_rec(Config) when is_list(Config) -> kill_after_debug_point(coord_pid, {Coord, {mnesia_tm, multi_commit_asym_log_commit_rec}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_log_commit_dec(suite) -> []; -asym_trans_kill_coord_log_commit_dec(Config) when is_list(Config) -> +asymtrans_coord_log_commit_dec(suite) -> []; +asymtrans_coord_log_commit_dec(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1088,8 +1088,8 @@ asym_trans_kill_coord_log_commit_dec(Config) when is_list(Config) -> kill_after_debug_point(Coord, {Coord, {mnesia_tm, multi_commit_asym_log_commit_dec}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_pid_log_commit_dec(suite) -> []; -asym_trans_kill_coord_pid_log_commit_dec(Config) when is_list(Config) -> +asymtrans_coord_pid_log_commit_dec(suite) -> []; +asymtrans_coord_pid_log_commit_dec(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1099,8 +1099,8 @@ asym_trans_kill_coord_pid_log_commit_dec(Config) when is_list(Config) -> kill_after_debug_point(coord_pid, {Coord, {mnesia_tm, multi_commit_asym_log_commit_dec}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_rec_acc_pre_commit_log_commit(suite) -> []; -asym_trans_kill_coord_rec_acc_pre_commit_log_commit(Config) when is_list(Config) -> +asymtrans_coord_rec_acc_pre_commit_log_commit(suite) -> []; +asymtrans_coord_rec_acc_pre_commit_log_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1110,8 +1110,8 @@ asym_trans_kill_coord_rec_acc_pre_commit_log_commit(Config) when is_list(Config) kill_after_debug_point(Coord, {Coord, {mnesia_tm, rec_acc_pre_commit_log_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_pid_rec_acc_pre_commit_log_commit(suite) -> []; -asym_trans_kill_coord_pid_rec_acc_pre_commit_log_commit(Config) when is_list(Config) -> +asymtrans_coord_pid_rec_acc_pre_commit_log_commit(suite) -> []; +asymtrans_coord_pid_rec_acc_pre_commit_log_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1121,8 +1121,8 @@ asym_trans_kill_coord_pid_rec_acc_pre_commit_log_commit(Config) when is_list(Con kill_after_debug_point(coord_pid, {Coord, {mnesia_tm, rec_acc_pre_commit_log_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_rec_acc_pre_commit_done_commit(suite) -> []; -asym_trans_kill_coord_rec_acc_pre_commit_done_commit(Config) when is_list(Config) -> +asymtrans_coord_rec_acc_pre_commit_done_commit(suite) -> []; +asymtrans_coord_rec_acc_pre_commit_done_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, @@ -1132,8 +1132,8 @@ asym_trans_kill_coord_rec_acc_pre_commit_done_commit(Config) when is_list(Config kill_after_debug_point(Coord, {Coord, {mnesia_tm, rec_acc_pre_commit_done_commit}}, TransFun, [Tab1, Tab2], Nodes). -asym_trans_kill_coord_pid_rec_acc_pre_commit_done_commit(suite) -> []; -asym_trans_kill_coord_pid_rec_acc_pre_commit_done_commit(Config) when is_list(Config) -> +asymtrans_coord_pid_rec_acc_pre_commit_done_commit(suite) -> []; +asymtrans_coord_pid_rec_acc_pre_commit_done_commit(Config) when is_list(Config) -> ?is_debug_compiled, Nodes = ?acquire_nodes(3, Config ++ [{tc_timeout, timer:minutes(2)}]), [Coord, Part1, Part2] = Nodes, diff --git a/lib/mnesia/test/mnesia_test_lib.erl b/lib/mnesia/test/mnesia_test_lib.erl index ba5bf84e24..57cbc61495 100644 --- a/lib/mnesia/test/mnesia_test_lib.erl +++ b/lib/mnesia/test/mnesia_test_lib.erl @@ -272,25 +272,13 @@ slave_start_link(Host, Name, Retries) -> end. starter(Host, Name, Args) -> - case os:type() of - vxworks -> - X = test_server:start_node(Name, slave, [{args,Args}]), - timer:sleep(5000), - X; - _ -> - slave:start(Host, Name, Args) - end. + slave:start(Host, Name, Args). slave_sup() -> process_flag(trap_exit, true), receive {'EXIT', _, _} -> - case os:type() of - vxworks -> - erlang:halt(); - _ -> - ignore - end + ignore end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |