diff options
Diffstat (limited to 'test/mem_utils_test.erl')
-rw-r--r-- | test/mem_utils_test.erl | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/test/mem_utils_test.erl b/test/mem_utils_test.erl new file mode 100644 index 00000000..b884d94e --- /dev/null +++ b/test/mem_utils_test.erl @@ -0,0 +1,97 @@ +-module(mem_utils_test). + +-include_lib("eunit/include/eunit.hrl"). + + +join_type_test() -> + Options = [{replace,node3}], + ?assertEqual({replace,node3}, mem_utils:join_type(dummy,dummy,Options)). + + +pmap_from_full_test() -> + ?assertEqual([{n1,0},{n2,1},{n3,2},{n4,3}], + mem_utils:pmap_from_full(t_fullmap(0))). + + +fix_mappings_nodedown_test() -> + {PMap0, Fullmap0} = mem_utils:fix_mappings(nodedown, n3, t_fullmap(0)), + % with n3 down, n1 takes over + ?assertEqual([{n1,0},{n2,1},{n1,2},{n4,3}], PMap0), + ?assertEqual(t_fullmap(1), lists:sort(Fullmap0)). + + +fix_mappings_rejoin_test() -> + {PMap0, Fullmap0} = mem_utils:fix_mappings(nodedown, n3, t_fullmap(0)), + % with n3 down, n1 takes over + ?assertEqual([{n1,0},{n2,1},{n1,2},{n4,3}], PMap0), + ?assertEqual(t_fullmap(1), lists:sort(Fullmap0)), + % now have n3 rejoin + {PMap1, Fullmap1} = mem_utils:fix_mappings(rejoin, n3, Fullmap0), + ?assertEqual([{n1,0},{n2,1},{n3,2},{n4,3}], PMap1), + ?assertEqual(lists:sort(t_fullmap(0)), lists:sort(Fullmap1)). + + +fix_mappings_replace_test() -> + {PMap0, Fullmap0} = mem_utils:fix_mappings(nodedown, n3, t_fullmap(0)), + % with n3 down, n1 takes over + ?assertEqual([{n1,0},{n2,1},{n1,2},{n4,3}], PMap0), + ?assertEqual(t_fullmap(1), lists:sort(Fullmap0)), + % now replace n3 with n5 + {PMap2, Fullmap2} = mem_utils:fix_mappings(replace, {n3,n5}, Fullmap0), + ?assertEqual([{n1,0},{n2,1},{n5,2},{n4,3}], PMap2), + ?assertEqual(lists:sort(t_fullmap(2)), lists:sort(Fullmap2)). + + +fix_mappings_already_down_test() -> + {_PMap0, Fullmap0} = mem_utils:fix_mappings(nodedown, n3, t_fullmap(1)), + ?assertEqual(t_fullmap(1), lists:sort(Fullmap0)). + + +was_i_nodedown_test() -> + ?assertEqual(true, mem_utils:was_i_nodedown(n3, t_fullmap(1))), + ?assertEqual(false, mem_utils:was_i_nodedown(n3, t_fullmap(0))). + + +%% test helper funs + +t_fullmap(0) -> % four node, four part fullmap (unsorted) + [{n1,0,primary}, + {n2,0,partner}, + {n3,0,partner}, + {n2,1,primary}, + {n3,1,partner}, + {n4,1,partner}, + {n3,2,primary}, + {n4,2,partner}, + {n1,2,partner}, + {n4,3,primary}, + {n1,3,partner}, + {n2,3,partner}]; +t_fullmap(1) -> % like (0) above, but n3 is down (sorted) + [{n1,0,primary}, + {n1,2,partner}, + {n1,3,partner}, + {n2,0,partner}, + {n2,1,primary}, + {n2,3,partner}, + {n3,0,{nodedown,partner}}, + {n3,1,{nodedown,partner}}, + {n3,2,{nodedown,primary}}, + {n4,1,partner}, + {n4,2,partner}, + {n4,3,primary}]; +t_fullmap(2) -> % like (0) above, but n3 is replaced w/ n5 (unsorted) + [{n1,0,primary}, + {n2,0,partner}, + {n5,0,partner}, + {n2,1,primary}, + {n5,1,partner}, + {n4,1,partner}, + {n5,2,primary}, + {n4,2,partner}, + {n1,2,partner}, + {n4,3,primary}, + {n1,3,partner}, + {n2,3,partner}]; +t_fullmap(_Huh) -> + huh. |