5HT 5 years ago
parent
commit
5aede3611d
2 changed files with 19 additions and 3 deletions
  1. 3 2
      src/stores/kvs_st.erl
  2. 16 1
      test/test_helper.exs

+ 3 - 2
src/stores/kvs_st.erl

@@ -79,7 +79,7 @@ take(#reader{args=N,feed=Feed,cache={T,O},dir=0}=C) -> % 1
         {[],_} -> C#reader{args=[],cache=[]};
         {[H],A} when element(2,KK) == O -> C#reader{args=Res,pos=Last,cache={e(1,H),e(2,H)}}; % 2
         {[H|X],A} when A < N + 1 orelse N == -1 -> C#reader{args=Res,cache={e(1,H),e(2,H)},pos=Last};
-        {[H|X],A} when A == N -> C#reader{args=[bt(BERT)|X],cache={e(1,H),e(2,H)}};
+        {[H|X],A} when A == N -> C#reader{args=[bt(BERT)|X],cache={e(1,H),e(2,H)},pos=Last};
         {[H|X],_} -> C#reader{args=X,cache={e(1,H),e(2,H)}} end;
 
 % TODO: try to remove lists:reverse and abstract both branches
@@ -91,11 +91,12 @@ take(#reader{args=N,feed=Feed,cache={T,O},dir=1}=C) -> % 1
    {ok,K,BERT} = rocksdb:iterator_move(I, {seek,feed_key({T,O},Feed)}),
    {KK,Res} = kvs_rocks:prev2(I,Key,size(Key),K,BERT,[],case N of -1 -> -1; J -> J + 1 end,0),
    Last = last(KK,O,'begin'),
+   io:format("Debug: ~p~n",[{KK,O,Res}]),
    case {lists:reverse(Res),length(Res)} of
         {[],_} -> C#reader{args=[],cache=[]};
         {[H],A} when element(2,KK) == O -> C#reader{args=Res,pos=Last,cache={e(1,H),e(2,H)}}; % 2
         {[H|X],A} when A < N - 1 orelse N == -1 -> [HX|_] = Res, C#reader{args=Res,cache={e(1,HX),e(2,HX)},pos=Last};
-        {[H|X],A} when A == N -> [HX|TL] = Res, C#reader{args=[bt(BERT)|X],cache={e(1,HX),e(2,HX)}};
+        {[H|X],A} when A == N -> [HX|TL] = Res, C#reader{args=[bt(BERT)|X],cache={e(1,HX),e(2,HX)},pos=Last};
         {[H|X],_} -> [HX|TL] = Res, C#reader{args=lists:reverse(TL),cache={e(1,HX),e(2,HX)}} end.
 
 last(KK,O,Atom) ->

+ 16 - 1
test/test_helper.exs

@@ -160,38 +160,51 @@ defmodule BPE.Test do
     :lists.map(fn _ -> :kvs.append({:"$msg", :kvs.seq([],[]), [], [], [], []}, id) end, :lists.seq(1, x))
     r = :kvs.save(:kvs.reader(id))
     rid = KVS.reader(r, :id)
+    IO.inspect :kvs.all(id)
 
     #next
     t1 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p, dir: 0))
     z1 = KVS.reader(t1, :args)
     r = :kvs.save(t1)
+    IO.inspect "t1:"
+    IO.inspect t1
 
     #next
     t2 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
     z2 = KVS.reader(t2, :args)
     r = :kvs.save(t2)
+    IO.inspect "t2:"
+    IO.inspect t2
 
     #next
     t3 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
     z3 = KVS.reader(t3, :args)
     :kvs.save(KVS.reader(t3, dir: 1, pos: 0))
+    IO.inspect "t3:"
+    IO.inspect t3
 
-    assert z3 == []   
+    assert z3 == []
 
     #prev
     n1 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
     nz1 = KVS.reader(n1, :args)
     :kvs.save n1
+    IO.inspect "n1:"
+    IO.inspect n1
 
     #prev
     n2 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
     nz2 = KVS.reader(n2, :args)
     :kvs.save n2
+    IO.inspect "n2:"
+    IO.inspect n2
 
     #prev
     n3 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p))
     nz3 = KVS.reader(n3, :args)
     :kvs.save(KVS.reader(n3, dir: 0))
+    IO.inspect "n3:"
+    IO.inspect n3
 
     assert nz3 == []
 
@@ -199,6 +212,8 @@ defmodule BPE.Test do
     t4 = :kvs.take(KVS.reader(:kvs.load_reader(rid), args: p, dir: 0))
     z4 = KVS.reader(t4, :args)
     r = :kvs.save(t4)
+    IO.inspect "t4:"
+    IO.inspect t4
 
     assert length(z4) == p