Browse Source

update leave/destroy specs.

dxt 4 years ago
parent
commit
1447b12f17
5 changed files with 7 additions and 3 deletions
  1. 1 1
      include/backend.hrl
  2. 1 0
      src/stores/kvs_fs.erl
  3. 1 0
      src/stores/kvs_mnesia.erl
  4. 2 2
      src/stores/kvs_rocks.erl
  5. 2 0
      test/old_test.exs

+ 1 - 1
include/backend.hrl

@@ -1,7 +1,7 @@
 -ifndef(BACKEND_HRL).
 -define(BACKEND_HRL, true).
 -define(BACKEND, [get/2,put/1,delete/2,index/3,dump/0,start/0,stop/0,destroy/0,
-                  join/1,dir/0,create_table/2,add_table_index/2,seq/2,all/1,count/1,version/0]).
+                  join/1,leave/0,dir/0,create_table/2,add_table_index/2,seq/2,all/1,count/1,version/0]).
 -compile({no_auto_import,[get/1,put/2]}).
 -spec put(tuple() | list(tuple())) -> ok | {error,any()}.
 -spec get(term() | any(), any()) -> {ok,any()} | {error,not_found}.

+ 1 - 0
src/stores/kvs_fs.erl

@@ -8,6 +8,7 @@ start()    -> ok.
 stop()     -> ok.
 destroy()  -> ok.
 version()  -> {version,"KVS FS"}.
+leave()    -> ok.
 dir()      -> [ {table,F} || F <- filelib:wildcard("data/*"), filelib:is_dir(F) ].
 join(_Node) -> filelib:ensure_dir("data/"), initialize(). % should be rsync or smth
 initialize() ->

+ 1 - 0
src/stores/kvs_mnesia.erl

@@ -9,6 +9,7 @@
 start()    -> mnesia:start().
 stop()     -> mnesia:stop().
 destroy()  -> [mnesia:delete_table(T)||{_,T}<-kvs:dir()], mnesia:delete_schema([node()]), ok.
+leave()    -> ok.
 version()  -> {version,"KVS MNESIA"}.
 dir()      -> [{table,T}||T<-mnesia:system_info(local_tables)].
 join([])   -> mnesia:start(), mnesia:change_table_copy_type(schema, node(), disc_copies), initialize();

+ 2 - 2
src/stores/kvs_rocks.erl

@@ -10,10 +10,10 @@ bt([])     -> [];
 bt(X)      -> binary_to_term(X).
 start()    -> ok.
 stop()     -> ok.
-destroy()  -> ok.
+destroy()  -> rocksdb:destroy(application:get_env(kvs,rocks_name,"rocksdb")).
 version()  -> {version,"KVS ROCKSDB"}.
 dir()      -> [].
-leave() -> case ref() of [] -> skip; X -> rocksdb:close(X) end.
+leave() -> case ref() of [] -> skip; X -> rocksdb:close(X), application:set_env(kvs,rocks_ref,[]), X end.
 join(_) -> application:start(rocksdb),
            leave(), {ok, Ref} = rocksdb:open(application:get_env(kvs,rocks_name,"rocksdb"), [{create_if_missing, true}]),
            initialize(),

+ 2 - 0
test/old_test.exs

@@ -4,6 +4,8 @@ defmodule OLD.Test do
   use ExUnit.Case, async: true
   require KVS
 
+  setup do: (on_exit(fn -> :ok = :kvs.leave();:ok = :kvs_rocks.destroy() end);:kvs.join())
+
   test "basic" do
     id1 = {:basic, :kvs.seq([], [])}
     id2 = {:basic, :kvs.seq([], [])}