3.5. Developer’s Guide
3.5.1. Running Tests
Tests are located in the test
directory. There you can run:
./test.sh
run the tests
./coverage.sh
run tests, and produce coverage data with gcov.The
fuzz
subdirectory contains 3 fuzzers, and their corpus. Calling./compile.sh
compiles the fuzzers. The you can run fuzzer X with./X_fuzzer X_corpus
.
3.5.2. Understanding Source Code
For the moment, there is no reference documentation, except for the source code itself.
Recommended path to understanding the source:
src/joedb
:
Readable.h
andWritable.h
define the most important base classes.In addition, a few utilities, mainly for error management.
src/joedb/interpreter
: classes to store a database in memory, an implementation of the abstract Readable and Writable.
src/joedb/journal
: for reading and writing journals to files
First
Generic_File
is a bit like joedb’s std::iostream.A few specializations, for Windows, Posix, in-memory, …
Then
Readonly_Journal
andWritable_Journal
are the main classes.Previous elements are enough to understand
joedbi
, located insrc/joedb/io/joedbi.cpp
, like other command-line tools.
src/compiler
: all code related tojoedbc
src/concurrency
: concurrency
src/ssh
: wrappers around the libssh API to provide the ssh port-forwarding channel.