Packages
kvs
8.10.4
13.5.22-aleph
13.4.16
13.4.15
13.4.14
13.4.13
13.3.1
13.2.28
11.9.1
10.8.3
10.8.2
10.3.0
9.9.2
9.9.1
9.9.0
9.8.0
9.7.0
9.4.8
9.4.7
9.4.6
9.4.5
9.4.4
9.4.3
9.4.2
9.4.1
9.4.0
8.12.0
8.11.2
8.11.1
8.10.4
8.10.3
8.10.2
8.10.1
8.10.0
8.5.2
8.5.1
8.5.0
8.4.1
8.4.0
8.3.1
8.3.0
7.11.5
7.9.1
7.7.0
7.1.3
7.1.2
7.1.1
6.12.11
6.12.10
6.12.9
6.12.8
6.12.7
6.12.6
6.12.5
6.12.4
6.12.3
6.12.2
6.12.1
6.12.0
6.11.2
6.11.1
6.11.0
6.10.2
6.10.1
6.10.0
6.9.2
6.9.1
6.9.0
6.7.7
6.7.6
6.7.5
6.7.4
6.7.3
6.7.2
6.7.1
6.7.0
6.6.0
2.1.0
0.12.1
retired
KVS Key-Value Store Abstraction Layer
Current section
Files
Jump to
Current section
Files
test/sn_test.exs
ExUnit.start()
defmodule Sn.Test do
use ExUnit.Case, async: false
import Record
require KVS
defrecord(:msg, id: [], body: [])
setup do: (on_exit(fn -> :ok = :kvs.leave();:ok = :kvs_rocks.destroy() end);:kvs.join())
setup kvs, do: [
id0: :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/crm/duck") end, :lists.seq(1,10)),
id1: :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/crm/luck") end, :lists.seq(1,10)),
id2: :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/crm/truck") end, :lists.seq(1,10))]
#% @tag :ignore
#% test "1", kvs do
#% :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])), "/aco/thug") end, :lists.seq(1,7))
#% log "all", :kvs.all("/aco/thug")
#% r = KVS.reader(id: rid) = :kvs.save(:kvs.reader("/aco/thug"))
#% log "real readers are good", r
#% r1 = :kvs.take(KVS.reader(r, args: 5, dir: 0))
#% log "take 5", r1
#% r3 = :kvs.take(KVS.reader(r1, args: 5, dir: 0))
#% log "take 2", r3
#% r5 = KVS.reader(args: args) = :kvs.take(KVS.reader(r3, args: 5, dir: 1))
#% log "back 5", r5
#% log "is pretty good", args
#% r6 = :kvs.take(KVS.reader(r5, args: 5, dir: 1))
#% log "back 2", r6
#% end
#% @tag :ignore
#% test "2" do
#% {t1,_} = :timer.tc( fn ->
#% :lists.map(fn _ -> :kvs.append(msg(id: :kvs.seq([],[])),
#% "АТУ/ЧЕРНІГІВСЬКА ОБЛАСТЬ/МІСТА СНОВСЬКОГО РАЙОНУ/СНОВСЬК/РАЙОНИ ШОТО ТАМ") end, :lists.seq(1,10000))
#% end)
#% {t,_} = :timer.tc(fn ->
#% :kvs.all("АТУ/ЧЕРНІГІВСЬКА ОБЛАСТЬ/МІСТА СНОВСЬКОГО РАЙОНУ/СНОВСЬК/РАЙОНИ ШОТО ТАМ")
#% end)
#% log "put:", :erlang.float_to_binary(t1 / 1_000_000, [:compact, {:decimals, 10}])
#% log "all:", :erlang.float_to_binary(t / 1_000_000, [:compact, {:decimals, 10}])
#% end
test "removed writer" do
prev = :kvs.all("/crm/duck")
KVS.writer(cache: ch) = w = :kvs.writer("/crm/duck")
w1 = KVS.writer(w, cache: {:msg, "unknown", "/corrupted"})
:ok = :kvs_rocks.put(w1)
w2 = :kvs.writer("/crm/duck")
assert {:ok, ^w2} = :kvs.get(:writer, "/crm/duck")
assert w1 == w2
assert prev = :kvs.all("/crm/duck")
{:ok,_} = :kvs.get(:writer, "/crm/duck")
:ok = :kvs.delete(:writer, "/crm/duck")
{:error, :not_found} = :kvs.get(:writer, "/crm/duck")
assert prev = :kvs.all("/crm/duck")
end
#% feed(Feed) -> feed(fun(#reader{}=R) -> take(R#reader{args=4}) end, top(reader(Feed)),[]).
#% feed(F,#reader{cache=C1}=R,Acc) ->
#% #reader{args=A, cache=Ch, feed=Feed} = R1 = F(R),
#% case Ch of
#% C1 -> Acc ++ A;
#% {_,_,K} when binary_part(K,{0,byte_size(Feed)}) == Feed
#% andalso length(A) == 4
#% -> feed(F, R1, Acc ++ A);
#% _ -> Acc ++ A
#% end.
defp log(x), do: IO.puts '#{inspect(x)}'
defp log(m, x), do: IO.puts '#{m} #{inspect(x)}'
end