diff options
author | Sverker Eriksson <[email protected]> | 2015-05-13 17:10:00 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2015-05-13 17:10:00 +0200 |
commit | c6d38c93b80395ee9dbe65d6dd6751254402ea21 (patch) | |
tree | 802e5283e95900fa4aa421a65d428d9800c676b7 /lib/stdlib/test | |
parent | 545890576542e4be630df8772654b99bd0306f62 (diff) | |
download | otp-c6d38c93b80395ee9dbe65d6dd6751254402ea21.tar.gz otp-c6d38c93b80395ee9dbe65d6dd6751254402ea21.tar.bz2 otp-c6d38c93b80395ee9dbe65d6dd6751254402ea21.zip |
stdlib: Add 'sync' option to ets:tab2file/3
to improve the chance of some real disk persistence
before tab2file returns.
Diffstat (limited to 'lib/stdlib/test')
-rw-r--r-- | lib/stdlib/test/ets_SUITE.erl | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl index 8dc8b2c291..7eadc4ab02 100644 --- a/lib/stdlib/test/ets_SUITE.erl +++ b/lib/stdlib/test/ets_SUITE.erl @@ -3969,12 +3969,22 @@ tab2file(doc) -> ["Check the ets:tab2file function on an empty " "ets table."]; tab2file(suite) -> []; tab2file(Config) when is_list(Config) -> + ?line FName = filename:join([?config(priv_dir, Config),"tab2file_case"]), + tab2file_do(FName, []), + tab2file_do(FName, [{sync,true}]), + tab2file_do(FName, [{sync,false}]), + {'EXIT',{{badmatch,{error,_}},_}} = (catch tab2file_do(FName, [{sync,yes}])), + {'EXIT',{{badmatch,{error,_}},_}} = (catch tab2file_do(FName, [sync])), + ok. + +tab2file_do(FName, Opts) -> %% Write an empty ets table to a file, read back and check properties. ?line Tab = ets_new(ets_SUITE_foo_tab, [named_table, set, private, {keypos, 2}]), - ?line FName = filename:join([?config(priv_dir, Config),"tab2file_case"]), - ?line ok = ets:tab2file(Tab, FName), - ?line true = ets:delete(Tab), + catch file:delete(FName), + Res = ets:tab2file(Tab, FName, Opts), + true = ets:delete(Tab), + ok = Res, % ?line EtsMem = etsmem(), ?line {ok, Tab2} = ets:file2tab(FName), @@ -3984,6 +3994,7 @@ tab2file(Config) when is_list(Config) -> ?line set = ets:info(Tab2, type), ?line true = ets:delete(Tab2), ?line verify_etsmem(EtsMem). + tab2file2(doc) -> ["Check the ets:tab2file function on a ", "filled set/bag type ets table."]; |