|
25 | 25 | -export([main/1]). |
26 | 26 | -export([add_deps/1]). |
27 | 27 |
|
| 28 | +-ifdef(TEST). |
| 29 | +-include_lib("eunit/include/eunit.hrl"). |
| 30 | +-endif. |
| 31 | + |
28 | 32 | main(Args) -> |
29 | 33 | %% TODO Should we use clique? -jsb |
30 | 34 | %% Parse command line arguments ... |
@@ -104,12 +108,25 @@ generate_test_lists(UseGiddyUp, ParsedArgs) -> |
104 | 108 | %% test metadata |
105 | 109 |
|
106 | 110 | TestData = compose_test_data(ParsedArgs), |
107 | | - Backends = [proplists:get_value(backend, ParsedArgs, bitcask)], |
| 111 | + CmdLineBackends = rt_util:backend_to_atom_list(proplists:get_value(backend, ParsedArgs)), |
| 112 | + Backends = determine_backends(CmdLineBackends, UseGiddyUp), |
108 | 113 | {Tests, NonTests} = wrap_test_in_test_plan(UseGiddyUp, Backends, TestData), |
109 | 114 | Offset = rt_config:get(offset, undefined), |
110 | 115 | Workers = rt_config:get(workers, undefined), |
111 | 116 | shuffle_tests(Tests, NonTests, Offset, Workers). |
112 | 117 |
|
| 118 | +%% @doc Which backends should be tested? |
| 119 | +%% Use the command-line specified backend, otherwise default to bitcask |
| 120 | +%% If running under GiddyUp, then default to ALL backends |
| 121 | +%% First argument is a list of command-line backends and second is whether or not in GiddyUp mode |
| 122 | +-spec(determine_backends(atom(), boolean()) -> list()). |
| 123 | +determine_backends(undefined, true) -> |
| 124 | + [memory, bitcask, eleveldb]; |
| 125 | +determine_backends(undefined, _) -> |
| 126 | + [bitcask]; |
| 127 | +determine_backends(Backends, _) -> |
| 128 | + Backends. |
| 129 | + |
113 | 130 | %% @doc Set values in the configuration with values specified on the command line |
114 | 131 | maybe_override_setting(Argument, Value, Arguments) -> |
115 | 132 | maybe_override_setting(proplists:is_defined(Argument, Arguments), Argument, |
@@ -385,16 +402,6 @@ match_group_attributes(Attributes, Groups) -> |
385 | 402 | || Group <- Groups, TestType <- TestTypes ]) |
386 | 403 | end. |
387 | 404 |
|
388 | | -backend_list(Backend) when is_atom(Backend) -> |
389 | | - atom_to_list(Backend); |
390 | | -backend_list(Backends) when is_list(Backends) -> |
391 | | - FoldFun = fun(X, []) -> |
392 | | - atom_to_list(X); |
393 | | - (X, Acc) -> |
394 | | - Acc ++ "," ++ atom_to_list(X) |
395 | | - end, |
396 | | - lists:foldl(FoldFun, [], Backends). |
397 | | - |
398 | 405 | load_tests_in_dir(Dir, Groups, SkipTests) -> |
399 | 406 | case filelib:is_dir(Dir) of |
400 | 407 | true -> |
@@ -470,3 +477,19 @@ stop_giddyup(true) -> |
470 | 477 | stop_giddyup(_) -> |
471 | 478 | ok. |
472 | 479 |
|
| 480 | +-ifdef(TEST). |
| 481 | +%% Make sure that bitcask is the default backend |
| 482 | +default_backend_test() -> |
| 483 | + ?assertEqual([bitcask], determine_backends(undefined, false)). |
| 484 | + |
| 485 | +%% Make sure that GiddyUp supports all backends |
| 486 | +default_giddyup_backend_test() -> |
| 487 | + ?assertEqual([bitcask, eleveldb, memory], lists:sort(determine_backends(undefined, true))). |
| 488 | + |
| 489 | +%% Command-line backends should always rule |
| 490 | +cmdline_backend_test() -> |
| 491 | + ?assertEqual([memory], determine_backends([memory], false)), |
| 492 | + ?assertEqual([memory], determine_backends([memory], true)), |
| 493 | + ?assertEqual([eleveldb, memory], lists:sort(determine_backends([memory, eleveldb], false))), |
| 494 | + ?assertEqual([eleveldb, memory], lists:sort(determine_backends([memory, eleveldb], true))). |
| 495 | +-endif. |
0 commit comments