/
unittest_helper_SUITE.erl
79 lines (63 loc) · 2.34 KB
/
unittest_helper_SUITE.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
% @copyright 2011 Zuse Institute Berlin
% 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
%
% 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.
%%% @author Nico Kruber <kruber@zib.de>
%%% @doc : Unit tests for unittest_helper
%%% @end
-module(unittest_helper_SUITE).
-author('kruber@zib.de').
-vsn('$Id$').
-compile(export_all).
-include("unittest.hrl").
-include("scalaris.hrl").
all() ->
[tester_make_ring_with_ids].
suite() ->
[
{timetrap, {seconds, 30}}
].
init_per_testcase(_TestCase, Config) ->
unittest_helper:stop_ring(),
Config.
end_per_testcase(_TestCase, Config) ->
unittest_helper:stop_ring(),
Config.
init_per_suite(Config) ->
unittest_helper:init_per_suite(Config).
end_per_suite(Config) ->
_ = unittest_helper:end_per_suite(Config),
ok.
-spec prop_make_ring_with_ids(IDs::[?RT:key(),...]) -> true.
prop_make_ring_with_ids(IDs) ->
UniqueIDs = lists:usort(IDs),
unittest_helper:make_ring_with_ids(UniqueIDs, [{config, [pdb:get(log_path, ?MODULE)]}]),
DHTNodes = pid_groups:find_all(dht_node),
?equals(length(DHTNodes), length(UniqueIDs)),
ActualIds = [begin
comm:send_local(DhtNode,
{get_node_details, comm:this(), [node]}),
% note: no timeout possible - can not leave messages in queue!
receive
{get_node_details_response, NodeDetails} ->
node:id(node_details:get(NodeDetails, node))
%% after 500 -> timeout
end
end || DhtNode <- DHTNodes],
?equals(lists:sort(ActualIds), lists:sort(UniqueIDs)),
unittest_helper:stop_ring(),
% wait a bit for all processes to stop
timer:sleep(100),
true.
tester_make_ring_with_ids(Config) ->
{priv_dir, PrivDir} = lists:keyfind(priv_dir, 1, Config),
pdb:set({log_path, PrivDir}, ?MODULE),
tester:test(?MODULE, prop_make_ring_with_ids, 1, 10).