Packages
rocksdb
0.22.0
3.1.1
3.1.0
3.0.0
2.6.2
2.6.1
retired
2.6.0
retired
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
0.26.2
0.26.1
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
RocksDB for Erlang
Current section
Files
Jump to
Current section
Files
test/batch.erl
-module(batch).
-compile([export_all/1]).
-include_lib("eunit/include/eunit.hrl").
destroy_reopen(DbName, Options) ->
_ = rocksdb:destroy(DbName, []),
{ok, Db} = rocksdb:open(DbName, Options),
Db.
close_destroy(Db, DbName) ->
rocksdb:close(Db),
rocksdb:destroy(DbName, []).
basic_test() ->
Db = destroy_reopen("test.db", [{create_if_missing, true}]),
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:batch_put(Batch, <<"b">>, <<"v2">>),
?assertEqual(2, rocksdb:batch_count(Batch)),
?assertEqual(not_found, rocksdb:get(Db, <<"a">>, [])),
?assertEqual(not_found, rocksdb:get(Db, <<"b">>, [])),
ok = rocksdb:write_batch(Db, Batch, []),
?assertEqual({ok, <<"v1">>}, rocksdb:get(Db, <<"a">>, [])),
?assertEqual({ok, <<"v2">>}, rocksdb:get(Db, <<"b">>, [])),
ok = rocksdb:release_batch(Batch),
close_destroy(Db, "test.db"),
ok.
delete_test() ->
Db = destroy_reopen("test.db", [{create_if_missing, true}]),
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:batch_put(Batch, <<"b">>, <<"v2">>),
ok = rocksdb:batch_delete(Batch, <<"b">>),
?assertEqual(3, rocksdb:batch_count(Batch)),
?assertEqual(not_found, rocksdb:get(Db, <<"a">>, [])),
?assertEqual(not_found, rocksdb:get(Db, <<"b">>, [])),
ok = rocksdb:write_batch(Db, Batch, []),
?assertEqual({ok, <<"v1">>}, rocksdb:get(Db, <<"a">>, [])),
?assertEqual(not_found, rocksdb:get(Db, <<"b">>, [])),
ok = rocksdb:release_batch(Batch),
close_destroy(Db, "test.db"),
ok.
single_delete_test() ->
Db = destroy_reopen("test.db", [{create_if_missing, true}]),
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:write_batch(Db, Batch, []),
?assertEqual({ok, <<"v1">>}, rocksdb:get(Db, <<"a">>, [])),
ok = rocksdb:release_batch(Batch),
{ok, Batch1} = rocksdb:batch(),
ok = rocksdb:batch_single_delete(Batch1, <<"a">>),
ok = rocksdb:write_batch(Db, Batch1, []),
ok = rocksdb:release_batch(Batch1),
?assertEqual(not_found, rocksdb:get(Db, <<"a">>, [])),
close_destroy(Db, "test.db"),
ok.
delete_with_notfound_test() ->
Db = destroy_reopen("test.db", [{create_if_missing, true}]),
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:batch_put(Batch, <<"b">>, <<"v2">>),
ok = rocksdb:batch_delete(Batch, <<"c">>),
?assertEqual(3, rocksdb:batch_count(Batch)),
?assertEqual(not_found, rocksdb:get(Db, <<"a">>, [])),
?assertEqual(not_found, rocksdb:get(Db, <<"b">>, [])),
ok = rocksdb:write_batch(Db, Batch, []),
?assertEqual({ok, <<"v1">>}, rocksdb:get(Db, <<"a">>, [])),
?assertEqual({ok, <<"v2">>}, rocksdb:get(Db, <<"b">>, [])),
ok = rocksdb:release_batch(Batch),
close_destroy(Db, "test.db"),
ok.
tolist_test() ->
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:batch_put(Batch, <<"b">>, <<"v2">>),
?assertEqual(2, rocksdb:batch_count(Batch)),
?assertEqual([{put, <<"a">>, <<"v1">>}, {put, <<"b">>, <<"v2">>}], rocksdb:batch_tolist(Batch)),
ok = rocksdb:release_batch(Batch),
ok.
rollback_test() ->
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:batch_put(Batch, <<"b">>, <<"v2">>),
ok = rocksdb:batch_savepoint(Batch),
ok = rocksdb:batch_put(Batch, <<"c">>, <<"v3">>),
?assertEqual(3, rocksdb:batch_count(Batch)),
?assertEqual([{put, <<"a">>, <<"v1">>},
{put, <<"b">>, <<"v2">>},
{put, <<"c">>, <<"v3">>}], rocksdb:batch_tolist(Batch)),
ok = rocksdb:batch_rollback(Batch),
?assertEqual(2, rocksdb:batch_count(Batch)),
?assertEqual([{put, <<"a">>, <<"v1">>},
{put, <<"b">>, <<"v2">>}], rocksdb:batch_tolist(Batch)),
ok = rocksdb:release_batch(Batch).
rollback_over_savepoint_test() ->
{ok, Batch} = rocksdb:batch(),
ok = rocksdb:batch_put(Batch, <<"a">>, <<"v1">>),
ok = rocksdb:batch_put(Batch, <<"b">>, <<"v2">>),
ok = rocksdb:batch_savepoint(Batch),
ok = rocksdb:batch_put(Batch, <<"c">>, <<"v3">>),
?assertEqual(3, rocksdb:batch_count(Batch)),
?assertEqual([{put, <<"a">>, <<"v1">>},
{put, <<"b">>, <<"v2">>},
{put, <<"c">>, <<"v3">>}], rocksdb:batch_tolist(Batch)),
ok = rocksdb:batch_rollback(Batch),
?assertEqual(2, rocksdb:batch_count(Batch)),
?assertEqual([{put, <<"a">>, <<"v1">>},
{put, <<"b">>, <<"v2">>}], rocksdb:batch_tolist(Batch)),
?assertMatch({error, _}, rocksdb:batch_rollback(Batch)),
ok = rocksdb:release_batch(Batch).