diff --git a/src/erlfdb_sandbox.erl b/src/erlfdb_sandbox.erl new file mode 100644 index 0000000..7c58703 --- /dev/null +++ b/src/erlfdb_sandbox.erl @@ -0,0 +1,27 @@ +-module(erlfdb_sandbox). + +-define(DOCATTRS, ?OTP_RELEASE >= 27). +-if(?DOCATTRS). +-moduledoc """ +Creates a database that is to be used as a sandbox. + +The sandbox database is contructed using a single +fdbserver process and some default settings are selected. +""". +-endif. + +-export([open/0]). + +-define(Options, [ + {dir, <<".erlfdb_sandbox">>}, + {cluster_name, <<"erlfdbsandbox">>}, + {cluster_id, <<"erlfdbsandbox">>} +]). + +-if(?DOCATTRS). +-doc """ +Opens the sandbox database. +""". +-endif. +open() -> + erlfdb_util:get_test_db(?Options). diff --git a/src/erlfdb_util.erl b/src/erlfdb_util.erl index 6369156..c4257ea 100644 --- a/src/erlfdb_util.erl +++ b/src/erlfdb_util.erl @@ -19,6 +19,8 @@ -endif. -export([ + fdbcli/1, + get_test_db/0, get_test_db/1, @@ -285,14 +287,28 @@ get_monitor_path() -> end, filename:join(PrivDir, "monitor.py"). +% Look for fdbcli on PATH, but also check /usr/local/bin explicitly +% since that is the common location. +fdbcli(Options) -> + case ?MODULE:get(Options, fdbcli_bin, false) of + false -> + case os:find_executable("fdbcli") of + false -> + case os:find_executable("fdbcli", "/usr/local/bin") of + false -> + erlang:error(fdbcli_not_found); + Exec -> + Exec + end; + _Exec -> + "fdbcli" + end; + C -> + C + end. + init_fdb_db(ClusterFile, Options) -> - DefaultFDBCli = os:find_executable("fdbcli"), - FDBCli = - case ?MODULE:get(Options, fdbcli_bin, DefaultFDBCli) of - false -> erlang:error(fdbcli_not_found); - DefaultFDBCli -> "fdbcli"; - FDBCli0 -> FDBCli0 - end, + FDBCli = fdbcli(Options), Storage = get_storage(), Fmt = "~s -C ~s --exec \"configure new single ~s tenant_mode=optional_experimental\"",