/src/tr.erl

https://github.com/seth/testriak · Erlang · 75 lines · 63 code · 11 blank · 1 comment · 0 complexity · d92afb9e16ec9ef4dc72ba9be077b698 MD5 · raw file

  1. -module(tr).
  2. -compile([export_all]).
  3. -define(riak_ip, "127.0.0.1").
  4. -define(riak_port, 8081).
  5. -define(bucket, <<"STUFF">>).
  6. -include_lib("eunit/include/eunit.hrl").
  7. riak_client() ->
  8. case get(the_client) of
  9. {ok, Pid} ->
  10. Pid;
  11. undefined ->
  12. {ok, Pid} = riakc_pb_socket:start(?riak_ip, ?riak_port),
  13. pong = riakc_pb_socket:ping(Pid),
  14. put(the_client, {ok, Pid})
  15. end,
  16. Pid.
  17. create_stuff(DS, Id, Item) ->
  18. {Obj, {stuff, Items}} =
  19. case riakc_pb_socket:get(DS, ?bucket, Id) of
  20. {error, notfound} ->
  21. S = {stuff, []},
  22. {riakc_obj:new(?bucket, Id, term_to_binary(S),
  23. "application/octet-stream"), S};
  24. {ok, O} ->
  25. {O, binary_to_term(riakc_obj:get_value(O))}
  26. end,
  27. NewStuff = {stuff, [Item|Items]},
  28. ObjToPut = riakc_obj:update_value(Obj, term_to_binary(NewStuff)),
  29. case riakc_pb_socket:put(DS, ObjToPut, [{w, 3}]) of
  30. ok ->
  31. error_logger:info_report({created_stuff, Item}),
  32. ok;
  33. Reason ->
  34. {error, Reason}
  35. end.
  36. get_stuff(DS, Id) ->
  37. case riakc_pb_socket:get(DS, ?bucket, Id) of
  38. {error, notfound} ->
  39. {error, notfound};
  40. {ok, O} ->
  41. binary_to_term(riakc_obj:get_value(O))
  42. end.
  43. % eunit tests
  44. rt_1_test() ->
  45. Pid = riak_client(),
  46. ?debugVal(Pid),
  47. Id = <<"123">>,
  48. ok = riakc_pb_socket:delete(Pid, ?bucket, Id),
  49. ok = create_stuff(Pid, Id, [1, 2, 3]),
  50. ?assertMatch({stuff, [[1, 2, 3]]}, get_stuff(Pid, Id)).
  51. rt_2_test() ->
  52. Pid = riak_client(),
  53. ?debugVal(Pid),
  54. Id = <<"abc">>,
  55. ok = riakc_pb_socket:delete(Pid, ?bucket, Id),
  56. ok = create_stuff(Pid, Id, [a, b, c]),
  57. ?assertMatch({stuff, [[a, b, c]]}, get_stuff(Pid, Id)).
  58. rt_3_test() ->
  59. Pid = riak_client(),
  60. ?debugVal(Pid),
  61. Id = <<"xyz">>,
  62. ok = riakc_pb_socket:delete(Pid, ?bucket, Id),
  63. ok = create_stuff(Pid, Id, [x, y, z]),
  64. ?assertMatch({stuff, [[x, y, z]]}, get_stuff(Pid, Id)).