test_helper.exs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. require KVS
  2. :kvs.join()
  3. ExUnit.start()
  4. defmodule BPE.Test do
  5. use ExUnit.Case, async: true
  6. test "basic" do
  7. id1 = {:basic, :kvs.seq([], [])}
  8. id2 = {:basic, :kvs.seq([], [])}
  9. x = 5
  10. :kvs.save(:kvs.writer(id1))
  11. :kvs.save(:kvs.writer(id2))
  12. :lists.map(
  13. fn _ ->
  14. :kvs.save(:kvs.add(KVS.writer(:kvs.writer(id1), args: {:"$msg", [], [], [], [], []})))
  15. end,
  16. :lists.seq(1, x)
  17. )
  18. :lists.map(fn _ -> :kvs.append({:"$msg", [], [], [], [], []}, id2) end, :lists.seq(1, x))
  19. r1 = :kvs.save(:kvs.reader(id1))
  20. r2 = :kvs.save(:kvs.reader(id2))
  21. x1 = :kvs.take(KVS.reader(:kvs.load_reader(KVS.reader(r1, :id)), args: 20))
  22. x2 = :kvs.take(KVS.reader(:kvs.load_reader(KVS.reader(r2, :id)), args: 20))
  23. b = :kvs.feed(id1)
  24. case :application.get_env(:kvs, :dba_st, :kvs_st) do
  25. :kvs_st ->
  26. c = :kvs.all(id2)
  27. assert :lists.reverse(c) == KVS.reader(x2, :args)
  28. _ ->
  29. []
  30. end
  31. assert :lists.reverse(KVS.reader(x1, :args)) == :lists.reverse(b)
  32. assert length(KVS.reader(x1, :args)) == length(KVS.reader(x2, :args))
  33. assert x == length(b)
  34. end
  35. test "take" do
  36. id = {:partial, :kvs.seq([], [])}
  37. x = 5
  38. :kvs.save(:kvs.writer(id))
  39. :lists.map(fn _ -> :kvs.append({:"$msg", [], [], [], [], []}, id) end, :lists.seq(1, x))
  40. r = :kvs.save(:kvs.reader(id))
  41. t = :kvs.take(KVS.reader(:kvs.load_reader(KVS.reader(r, :id)), args: 20))
  42. b = :kvs.feed(id)
  43. # mnesia
  44. assert KVS.reader(t, :args) == b
  45. end
  46. test "partial take" do
  47. id = {:partial, :kvs.seq([], [])}
  48. x = 5
  49. :kvs.save(:kvs.writer(id))
  50. :lists.map(fn _ -> :kvs.append({:"$msg", [], [], [], [], []}, id) end, :lists.seq(1, x))
  51. r = :kvs.save(:kvs.reader(id))
  52. rid = KVS.reader(r, :id)
  53. p = 2
  54. IO.inspect(:kvs.feed(id))
  55. cache = KVS.reader(r, :cache)
  56. t = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
  57. a = :lists.reverse(KVS.reader(t, :args))
  58. r = :kvs.save(t)
  59. IO.inspect({cache, r, a})
  60. assert {:erlang.element(1, hd(a)), :erlang.element(2, hd(a))} == cache
  61. assert length(a) == p
  62. cache = KVS.reader(r, :cache)
  63. t = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
  64. a = :lists.reverse(KVS.reader(t, :args))
  65. r = :kvs.save(t)
  66. IO.inspect({cache, r, a})
  67. assert {:erlang.element(1, hd(a)), :erlang.element(2, hd(a))} == cache
  68. assert length(a) == p
  69. cache = KVS.reader(r, :cache)
  70. t = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
  71. a = :lists.reverse(KVS.reader(t, :args))
  72. r = :kvs.save(t)
  73. assert {:erlang.element(1, hd(a)), :erlang.element(2, hd(a))} == cache
  74. IO.inspect({cache, t, a})
  75. assert length(a) == 1
  76. end
  77. end