mirror of
https://github.com/valitydev/riak_test.git
synced 2024-11-06 16:45:29 +00:00
99 lines
3.4 KiB
Erlang
99 lines
3.4 KiB
Erlang
%% -------------------------------------------------------------------
|
|
%%
|
|
%% Copyright (c) 2015 Basho Technologies, Inc.
|
|
%%
|
|
%% This file is provided to you 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
|
|
%%
|
|
%% 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.
|
|
%%
|
|
%% -------------------------------------------------------------------
|
|
%%% @doc
|
|
%%% riak_test for github issue riak 727.
|
|
%%%
|
|
%%% Running a riak-2.0.x node with a default 1.4.x app.config causes
|
|
%%% the default bucket properties for allow_mult=true and
|
|
%%% dvv_enabled=true when they should be false.
|
|
%%%
|
|
%%% @end
|
|
|
|
-module(riak727).
|
|
-behavior(riak_test).
|
|
-export([confirm/0]).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-define(HARNESS, (rt_config:get(rt_harness))).
|
|
-define(TYPE1, <<"bob">>).
|
|
-define(TYPE2, <<"fred">>).
|
|
-define(DEF_APP_CONF, "1.4-default-app.config").
|
|
-define(APP_CONF, "app.config").
|
|
|
|
confirm() ->
|
|
[Node] = rt:build_cluster([current]),
|
|
|
|
verify_default_bucket_props(Node, ?TYPE1),
|
|
add_one_four_config(Node),
|
|
verify_default_bucket_props(Node, ?TYPE2),
|
|
|
|
pass.
|
|
|
|
%% @private check that the default bucket props for both <<"default">>
|
|
%% typed, and custom typed buckets are as expected.
|
|
-spec verify_default_bucket_props(node(), binary()) -> ok | no_return().
|
|
verify_default_bucket_props(Node, Type) ->
|
|
%% Once in a blue moon we'll try to create a bucket type before
|
|
%% all capabilities have been registered. Bucket type creation
|
|
%% fails if this one isn't present yet.
|
|
rt:wait_until_capability(Node, {riak_core,bucket_types}, true),
|
|
|
|
rt:create_and_activate_bucket_type(Node, Type, [{nonsense, <<"value">>}]),
|
|
|
|
DefProps = get_props(Node, <<"default">>),
|
|
TypeProps = get_props(Node, Type),
|
|
|
|
?assertEqual(false, proplists:get_value(allow_mult, DefProps)),
|
|
?assertEqual(false, proplists:get_value(dvv_enabled, DefProps)),
|
|
?assertEqual(true, proplists:get_value(allow_mult, TypeProps)),
|
|
?assertEqual(true, proplists:get_value(dvv_enabled, TypeProps)).
|
|
|
|
%% @private copy the default 1.4 app.config file to the node under
|
|
%% test.
|
|
-spec add_one_four_config(node()) -> ok.
|
|
add_one_four_config(Node) ->
|
|
rt:stop_and_wait(Node),
|
|
ok = copy(app_config_file(), node_config_file(Node)),
|
|
rt:start_and_wait(Node).
|
|
|
|
-spec copy(file:filename(), file:filename()) -> ok.
|
|
copy(File, DestDir) ->
|
|
lager:info("Copying ~p to ~p~n", [File, DestDir]),
|
|
{ok, _} = file:copy(File, DestDir),
|
|
ok.
|
|
|
|
-spec app_config_file() -> file:filename().
|
|
app_config_file() ->
|
|
filename:join(rt:priv_dir(), ?DEF_APP_CONF).
|
|
|
|
-spec node_config_file(node()) -> file:filename().
|
|
node_config_file(Node) ->
|
|
ConfPath = ?HARNESS:get_riak_conf(Node),
|
|
filename:join(filename:dirname(ConfPath), ?APP_CONF).
|
|
|
|
-spec get_props(node(), binary()) -> proplists:proplist() | no_return().
|
|
get_props(Node, Type) ->
|
|
case rpc:call(Node, riak_core_bucket_type, get, [Type]) of
|
|
{badrpc, Reason} ->
|
|
throw({badrpc, Reason});
|
|
Props ->
|
|
Props
|
|
end.
|