commit | 2f6b6484e472ee805c0eb3253ad66a2a1b5a2e29 | [log] [tgz] |
---|---|---|
author | Adam Kocoloski <kocolosk@apache.org> | Wed Nov 10 13:59:44 2021 -0500 |
committer | Adam Kocoloski <kocolosk@apache.org> | Wed Nov 17 10:42:45 2021 -0500 |
tree | 7dbf5f01be2306d471b312b885bcd5e616e71aa6 | |
parent | 111367c830f504d5bb7bb8d63abbe69a0ea5c5fb [diff] |
Enable code coverage for eunit + bindingtester The EUnit coverage is on by default. The bindingtester can be enabled by defining the COVER_ENABLED environment variable. It writes to the same directory that EUnit does; namely "_build/test/cover/" if ERL_LIBS is defined to point to the "test" profile for erlfdb (as it should be for code coverage analysis). For example: COVER_ENABLED=1 ERL_LIBS=_build/test/lib/erlfdb /usr/src/foundationdb/bindings/bindingtester/bindingtester.py erlang --test-name api --instruction-prefix api --num-ops 10000 We could try to be a little smarter here and align to rebar3's config options, but I didn't bother with that for now.
This project is a NIF wrapper for the FoundationDB C API. Documentation on the main API can be found here.
This project also provides a conforming implementation of the Tuple and Directory layers.
Assuming you have installed the FoundationDB C API library, building erlfdb is as simple as:
$ make
Alternatively, adding erlfdb as a rebar dependency should Just Work ®.
Documentation for installing FoundationDB can be found here for macOS or here for Linux.
A simple example showing how to open a database and read and write keys:
Eshell V9.3.3.6 (abort with ^G) 1> Db = erlfdb:open(<<"/usr/local/etc/foundationdb/fdb.cluster">>). {erlfdb_database,#Ref<0.2859661758.3941466120.85406>} 2> ok = erlfdb:set(Db, <<"foo">>, <<"bar">>). ok 3> erlfdb:get(Db, <<"foo">>). <<"bar">> 4> erlfdb:get(Db, <<"bar">>). not_found
FoundationDB has a custom binding tester that can be used to test whether changes have broken compatibility. See the BINDING_TESTER documentation for instructions on building and running that system.