sc_test.exs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. ExUnit.start()
  2. defmodule Sc.Test do
  3. use ExUnit.Case, async: false
  4. require KVS
  5. import Record
  6. @moduledoc """
  7. refined old scenarios
  8. """
  9. defrecord(:msg, id: [], body: [])
  10. setup do: (on_exit(fn -> :ok = :kvs.leave();:ok = :kvs.destroy() end);:kvs.join())
  11. setup kvs, do: [
  12. id0: :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/crm/duck") end, :lists.seq(1,10)),
  13. id1: :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/crm/luck") end, :lists.seq(1,10)),
  14. id2: :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/crm/truck") end, :lists.seq(1,10)),
  15. id3: :lists.map(fn _ -> :kvs.save(:kvs.add(KVS.writer(:kvs.writer(:sym),
  16. args: msg(id: :kvs.seq([],[]))))) end, :lists.seq(1,10))]
  17. test "basic", kvs do
  18. id1 = "/crm/luck"
  19. id2 = "/crm/truck"
  20. :kvs.save(:kvs.writer(id1))
  21. :kvs.save(:kvs.writer(id2))
  22. KVS.reader(id: rid1) = :kvs.save(:kvs.reader(id1))
  23. KVS.reader(id: rid2) = :kvs.save(:kvs.reader(id2))
  24. x1 = :kvs.take(KVS.reader(:kvs.load_reader(rid1), args: 20))
  25. x2 = :kvs.take(KVS.reader(:kvs.load_reader(rid2), args: 20))
  26. b = :kvs.feed(id1)
  27. assert 10 == length(b)
  28. assert :kvs.all("/crm/truck") == KVS.reader(x2, :args)
  29. assert KVS.reader(x1, :args) == b
  30. assert length(KVS.reader(x1, :args)) == length(KVS.reader(x2, :args))
  31. end
  32. test "sym",kvs do
  33. :kvs.save(:kvs.writer(:sym))
  34. KVS.writer(args: last) = Enum.at(kvs[:id3],-1)
  35. {:ok, KVS.writer(id: :sym, count: 10, cache: last)} = :kvs.get(:writer, :sym)
  36. end
  37. test "take back full" do
  38. feed = "/crm/duck"
  39. :kvs.save(:kvs.writer(feed))
  40. KVS.reader(id: rid) = :kvs.save(:kvs.reader(feed))
  41. t = KVS.reader(args: a1) = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: 10))
  42. assert a1 == :kvs.feed(feed)
  43. :kvs.save(KVS.reader(t, dir: 1))
  44. KVS.reader(args: a2) = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: 10))
  45. assert :lists.reverse(a2) == :kvs.feed(feed)
  46. end
  47. defp log(x), do: IO.puts '#{inspect(x)}'
  48. defp log(m, x), do: IO.puts '#{m} #{inspect(x)}'
  49. end