diff options
author | Konrad Kaplita <[email protected]> | 2013-12-03 14:40:11 +0100 |
---|---|---|
committer | Konrad Kaplita <[email protected]> | 2013-12-03 17:11:42 +0100 |
commit | f610a7efe07fe47bec1bbc86d82545b094514ad9 (patch) | |
tree | 4eede2d8c0a8e8a766e8b524150b111359261051 /test | |
parent | 04a0d907ae17cdc9b9c62130a009138b8580ff43 (diff) | |
download | relx-f610a7efe07fe47bec1bbc86d82545b094514ad9.tar.gz relx-f610a7efe07fe47bec1bbc86d82545b094514ad9.tar.bz2 relx-f610a7efe07fe47bec1bbc86d82545b094514ad9.zip |
Accelerate `rlx_prv_discover` provider
Introduce option `enable_shallow_app_discovery` which is disabled by
default.
When enabled searching for `*.app` files is done by using
`filelib:wildcard/1` and doesn't recursively traverse all directories
under `libs_dir` root dirs.
Instead its assumed that each directory on `libs_dir` list contains a
flat list of application dirs or is an app itself.
Diffstat (limited to 'test')
-rw-r--r-- | test/rlx_discover_SUITE.erl | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/test/rlx_discover_SUITE.erl b/test/rlx_discover_SUITE.erl index e75ea36..846c62b 100644 --- a/test/rlx_discover_SUITE.erl +++ b/test/rlx_discover_SUITE.erl @@ -26,7 +26,9 @@ all/0, normal_case/1, no_beam_case/1, - bad_ebin_case/1]). + bad_ebin_case/1, + shallow_app_discovery/1 + ]). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). @@ -53,7 +55,7 @@ init_per_testcase(_, Config) -> all() -> - [normal_case, no_beam_case, bad_ebin_case]. + [normal_case, no_beam_case, bad_ebin_case, shallow_app_discovery]. normal_case(Config) -> LibDir1 = proplists:get_value(lib1, Config), @@ -83,8 +85,7 @@ normal_case(Config) -> lists:foreach(fun(App) -> ?assertMatch(true, lists:member(App, rlx_state:available_apps(State2))) end, Apps2), - Length = erlang:length(Apps2) + - erlang:length(Apps2), + Length = erlang:length(Apps1) + erlang:length(Apps2), ?assertMatch(Length, erlang:length(rlx_state:available_apps(State2))). no_beam_case(Config) -> @@ -144,6 +145,38 @@ bad_ebin_case(Config) -> ?assertMatch([], [App || App <- rlx_state:available_apps(State2), BadName =:= rlx_app_info:name(App)]). +shallow_app_discovery(Config) -> + LibDir1 = proplists:get_value(lib1, Config), + Apps1 = [(fun({Name, Vsn}) -> + create_app(LibDir1, Name, Vsn) + end)(App) + || + App <- + [{create_random_name("lib_app1_"), create_random_vsn()} + || _ <- lists:seq(1, 100)]], + + LibDir2 = proplists:get_value(lib2, Config), + Apps2 = [(fun({Name, Vsn}) -> + create_app(LibDir2, Name, Vsn) + end)(App) + || App <- + [{create_random_name("lib_app2_"), create_random_vsn()} + || _ <- lists:seq(1, 100)]], + State0 = rlx_state:put(proplists:get_value(state, Config), + default_libs, false), + State1 = rlx_state:put(State0, enable_shallow_app_discovery, true), + {DiscoverProvider, {ok, State2}} = rlx_provider:new(rlx_prv_discover, State1), + {ok, State3} = rlx_provider:do(DiscoverProvider, State2), + lists:foreach(fun(App) -> + ?assertMatch(true, lists:member(App, rlx_state:available_apps(State3))) + end, Apps1), + + lists:foreach(fun(App) -> + ?assertMatch(true, lists:member(App, rlx_state:available_apps(State3))) + end, Apps2), + Length = erlang:length(Apps1) + erlang:length(Apps2), + ?assertMatch(Length, erlang:length(rlx_state:available_apps(State3))). + %%%=================================================================== %%% Helper functions %%%=================================================================== |